diff options
Diffstat (limited to 'src')
2757 files changed, 0 insertions, 173733 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index deb79c7b..00000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -# Generated from src.pro. - -add_subdirectory(quicktemplates2) -add_subdirectory(quickcontrols2impl) -add_subdirectory(quickcontrols2) -add_subdirectory(quickdialogs2) -add_subdirectory(quicknativestyle) -add_subdirectory(labs) diff --git a/src/labs/CMakeLists.txt b/src/labs/CMakeLists.txt deleted file mode 100644 index 72b278fe..00000000 --- a/src/labs/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ -add_subdirectory(platform) - diff --git a/src/labs/platform/CMakeLists.txt b/src/labs/platform/CMakeLists.txt deleted file mode 100644 index 7fc542d3..00000000 --- a/src/labs/platform/CMakeLists.txt +++ /dev/null @@ -1,89 +0,0 @@ -##################################################################### -## qtlabsplatformplugin Plugin: -##################################################################### - -qt_internal_add_qml_module(qtlabsplatformplugin - URI "Qt.labs.platform" - VERSION "1.1" - CLASS_NAME QtLabsPlatformPlugin - PLUGIN_TARGET qtlabsplatformplugin - NO_PLUGIN_OPTIONAL - NO_GENERATE_PLUGIN_SOURCE - SOURCES - qquickplatformcolordialog.cpp qquickplatformcolordialog_p.h - qquickplatformdialog.cpp qquickplatformdialog_p.h - qquickplatformfiledialog.cpp qquickplatformfiledialog_p.h - qquickplatformfolderdialog.cpp qquickplatformfolderdialog_p.h - qquickplatformfontdialog.cpp qquickplatformfontdialog_p.h - qquickplatformicon.cpp qquickplatformicon_p.h - qquickplatformiconloader.cpp qquickplatformiconloader_p.h - qquickplatformmenu.cpp qquickplatformmenu_p.h - qquickplatformmenubar.cpp qquickplatformmenubar_p.h - qquickplatformmenuitem.cpp qquickplatformmenuitem_p.h - qquickplatformmenuitemgroup.cpp qquickplatformmenuitemgroup_p.h - qquickplatformmenuseparator.cpp qquickplatformmenuseparator_p.h - qquickplatformmessagedialog.cpp qquickplatformmessagedialog_p.h - qquickplatformstandardpaths.cpp qquickplatformstandardpaths_p.h - qtlabsplatformplugin.cpp - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickPrivate - Qt::QuickTemplates2Private -) - -qt_internal_extend_target(qtlabsplatformplugin CONDITION TARGET Qt::Widgets - SOURCES - widgets/qwidgetplatform_p.h - LIBRARIES - Qt::Widgets -) - -qt_internal_extend_target(qtlabsplatformplugin CONDITION TARGET Qt::Widgets AND QT_FEATURE_systemtrayicon AND TARGET Qt::Widgets # special case - SOURCES - widgets/qwidgetplatformsystemtrayicon.cpp widgets/qwidgetplatformsystemtrayicon_p.h -) - -qt_internal_extend_target(qtlabsplatformplugin CONDITION TARGET Qt::Widgets AND (QT_FEATURE_colordialog OR QT_FEATURE_filedialog OR QT_FEATURE_fontdialog OR QT_FEATURE_messagebox) - SOURCES - widgets/qwidgetplatformdialog.cpp widgets/qwidgetplatformdialog_p.h -) - -qt_internal_extend_target(qtlabsplatformplugin CONDITION TARGET Qt::Widgets AND QT_FEATURE_colordialog AND TARGET Qt::Widgets # special case - SOURCES - widgets/qwidgetplatformcolordialog.cpp widgets/qwidgetplatformcolordialog_p.h -) - -qt_internal_extend_target(qtlabsplatformplugin CONDITION TARGET Qt::Widgets AND QT_FEATURE_filedialog AND TARGET Qt::Widgets # special case - SOURCES - widgets/qwidgetplatformfiledialog.cpp widgets/qwidgetplatformfiledialog_p.h -) - -qt_internal_extend_target(qtlabsplatformplugin CONDITION TARGET Qt::Widgets AND QT_FEATURE_fontdialog AND TARGET Qt::Widgets # special case - SOURCES - widgets/qwidgetplatformfontdialog.cpp widgets/qwidgetplatformfontdialog_p.h -) - -qt_internal_extend_target(qtlabsplatformplugin CONDITION TARGET Qt::Widgets AND QT_FEATURE_menu AND TARGET Qt::Widgets # special case - SOURCES - widgets/qwidgetplatformmenu.cpp widgets/qwidgetplatformmenu_p.h - widgets/qwidgetplatformmenuitem.cpp widgets/qwidgetplatformmenuitem_p.h -) - -qt_internal_extend_target(qtlabsplatformplugin CONDITION TARGET Qt::Widgets AND QT_FEATURE_messagebox AND TARGET Qt::Widgets # special case - SOURCES - widgets/qwidgetplatformmessagedialog.cpp widgets/qwidgetplatformmessagedialog_p.h -) - -qt_internal_extend_target(qtlabsplatformplugin CONDITION QT_FEATURE_systemtrayicon - SOURCES - qquickplatformsystemtrayicon.cpp qquickplatformsystemtrayicon_p.h -) - -qt_internal_add_docs(qtlabsplatformplugin - doc/qtlabsplatform.qdocconf -) diff --git a/src/labs/platform/doc/images/qtlabsplatform-colordialog-gtk.png b/src/labs/platform/doc/images/qtlabsplatform-colordialog-gtk.png Binary files differdeleted file mode 100644 index 12197f7f..00000000 --- a/src/labs/platform/doc/images/qtlabsplatform-colordialog-gtk.png +++ /dev/null diff --git a/src/labs/platform/doc/images/qtlabsplatform-filedialog-gtk.png b/src/labs/platform/doc/images/qtlabsplatform-filedialog-gtk.png Binary files differdeleted file mode 100644 index 9360d747..00000000 --- a/src/labs/platform/doc/images/qtlabsplatform-filedialog-gtk.png +++ /dev/null diff --git a/src/labs/platform/doc/images/qtlabsplatform-folderdialog-gtk.png b/src/labs/platform/doc/images/qtlabsplatform-folderdialog-gtk.png Binary files differdeleted file mode 100644 index 45f0585c..00000000 --- a/src/labs/platform/doc/images/qtlabsplatform-folderdialog-gtk.png +++ /dev/null diff --git a/src/labs/platform/doc/images/qtlabsplatform-fontdialog-gtk.png b/src/labs/platform/doc/images/qtlabsplatform-fontdialog-gtk.png Binary files differdeleted file mode 100644 index 0c6217bd..00000000 --- a/src/labs/platform/doc/images/qtlabsplatform-fontdialog-gtk.png +++ /dev/null diff --git a/src/labs/platform/doc/images/qtlabsplatform-menu.png b/src/labs/platform/doc/images/qtlabsplatform-menu.png Binary files differdeleted file mode 100644 index 7945b45f..00000000 --- a/src/labs/platform/doc/images/qtlabsplatform-menu.png +++ /dev/null diff --git a/src/labs/platform/doc/images/qtlabsplatform-menubar.png b/src/labs/platform/doc/images/qtlabsplatform-menubar.png Binary files differdeleted file mode 100644 index 7faa8141..00000000 --- a/src/labs/platform/doc/images/qtlabsplatform-menubar.png +++ /dev/null diff --git a/src/labs/platform/doc/images/qtlabsplatform-messagedialog-android.png b/src/labs/platform/doc/images/qtlabsplatform-messagedialog-android.png Binary files differdeleted file mode 100644 index 3986694f..00000000 --- a/src/labs/platform/doc/images/qtlabsplatform-messagedialog-android.png +++ /dev/null diff --git a/src/labs/platform/doc/images/qtlabsplatform-messagedialog-informative-android.png b/src/labs/platform/doc/images/qtlabsplatform-messagedialog-informative-android.png Binary files differdeleted file mode 100644 index b2d3cd37..00000000 --- a/src/labs/platform/doc/images/qtlabsplatform-messagedialog-informative-android.png +++ /dev/null diff --git a/src/labs/platform/doc/images/qtlabsplatform-systemtrayicon-menu.png b/src/labs/platform/doc/images/qtlabsplatform-systemtrayicon-menu.png Binary files differdeleted file mode 100644 index 670df8ed..00000000 --- a/src/labs/platform/doc/images/qtlabsplatform-systemtrayicon-menu.png +++ /dev/null diff --git a/src/labs/platform/doc/images/qtlabsplatform-systemtrayicon-message.png b/src/labs/platform/doc/images/qtlabsplatform-systemtrayicon-message.png Binary files differdeleted file mode 100644 index beaeed92..00000000 --- a/src/labs/platform/doc/images/qtlabsplatform-systemtrayicon-message.png +++ /dev/null diff --git a/src/labs/platform/doc/images/qtlabsplatform-systemtrayicon.png b/src/labs/platform/doc/images/qtlabsplatform-systemtrayicon.png Binary files differdeleted file mode 100644 index 2f7a851c..00000000 --- a/src/labs/platform/doc/images/qtlabsplatform-systemtrayicon.png +++ /dev/null diff --git a/src/labs/platform/doc/qtlabsplatform.qdocconf b/src/labs/platform/doc/qtlabsplatform.qdocconf deleted file mode 100644 index 54ed8204..00000000 --- a/src/labs/platform/doc/qtlabsplatform.qdocconf +++ /dev/null @@ -1,41 +0,0 @@ -include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) -include($QT_INSTALL_DOCS/config/exampleurl-qtquickcontrols2.qdocconf) - -project = QtLabsPlatform -description = Qt Labs Platform Reference Documentation -version = $QT_VERSION - -qhp.projects = QtLabsPlatform - -qhp.QtLabsPlatform.file = qtlabsplatform.qhp -qhp.QtLabsPlatform.namespace = org.qt-project.qtlabsplatform.$QT_VERSION_TAG -qhp.QtLabsPlatform.virtualFolder = qtlabsplatform -qhp.QtLabsPlatform.indexTitle = Qt Labs Platform -qhp.QtLabsPlatform.indexRoot = - -qhp.QtLabsPlatform.filterAttributes = qtlabsplatform $QT_VERSION qtrefdoc -qhp.QtLabsPlatform.customFilters.Qt.name = QtLabsPlatform $QT_VERSION -qhp.QtLabsPlatform.customFilters.Qt.filterAttributes = qtlabsplatform $QT_VERSION - -qhp.QtLabsPlatform.subprojects = qmltypes -qhp.QtLabsPlatform.subprojects.qmltypes.title = QML Types -qhp.QtLabsPlatform.subprojects.qmltypes.indexTitle = Qt Labs Platform QML Types -qhp.QtLabsPlatform.subprojects.qmltypes.selectors = qmlclass -qhp.QtLabsPlatform.subprojects.qmltypes.sortPages = true - -depends = qtcore qtgui qtdoc qtqml qtqmlmodels qtquick qtquickcontrols qtwidgets - -# This module has no documented C++ types, clear the module header -moduleheader = - -headerdirs += ../ -sourcedirs += ../ - -imagedirs += images - -navigation.landingpage = "Qt Labs Platform" -navigation.qmltypespage = "Qt Labs Platform QML Types" - -tagfile = qtlabsplatform.tags - -macro.labs = "\\note \\e{Types in Qt.labs modules are not guaranteed to remain compatible in future versions.}" diff --git a/src/labs/platform/doc/src/includes/widgets.qdocinc b/src/labs/platform/doc/src/includes/widgets.qdocinc deleted file mode 100644 index 44ebba6d..00000000 --- a/src/labs/platform/doc/src/includes/widgets.qdocinc +++ /dev/null @@ -1,28 +0,0 @@ -//! [1] -The Qt Labs Platform module uses Qt Widgets as a fallback on platforms that -do not have a native implementation available. Therefore, applications that -use types from the Qt Labs Platform module should link to QtWidgets and use -\l QApplication instead of \l QGuiApplication. - -To link against the QtWidgets library, add the following to your qmake project -file: - -\code -QT += widgets -\endcode - -Create an instance of \l QApplication in \c main(): - -\code -#include <QApplication> -#include <QQmlApplicationEngine> - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - QQmlApplicationEngine engine; - engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); - return app.exec(); -} -\endcode -//! [1] diff --git a/src/labs/platform/doc/src/qt6-changes.qdoc b/src/labs/platform/doc/src/qt6-changes.qdoc deleted file mode 100644 index de1c7a29..00000000 --- a/src/labs/platform/doc/src/qt6-changes.qdoc +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquicklabsplatform-changes-qt6.html - \title Changes to Qt Quick Labs Platform - \ingroup changes-qt-5-to-6 - \brief Migrate Qt Quick Labs Platform to Qt 6. - - Qt 6 is a result of the conscious effort to make the framework more - efficient and easy to use. - - We try to maintain compatibility for all the public APIs in each release. - Some changes were inevitable in an effort to make Qt a better framework. - - In this topic we summarize those changes in Qt Quick Labs Platform, and - provide guidance to handle them. - - \section1 The Menu type - - The deprecated \c iconName and \c iconSource properties were removed. Use - the \l {Menu::}{icon} property instead. - - \section1 The MenuItem type - - The deprecated \c iconName and \c iconSource properties were removed. Use - the \l {MenuItem::}{icon} property instead. - - \section1 The SystemTrayIcon type - - The deprecated \c iconName and \c iconSource properties were removed. Use - the \l {SystemTrayIcon::}{icon} property instead. -*/ diff --git a/src/labs/platform/doc/src/qtlabsplatform-index.qdoc b/src/labs/platform/doc/src/qtlabsplatform-index.qdoc deleted file mode 100644 index c6eff0ba..00000000 --- a/src/labs/platform/doc/src/qtlabsplatform-index.qdoc +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtlabsplatform-index.html - \title Qt Labs Platform - - \brief The experimental Qt Labs Platform module provides QML types for - native platform extensions. - - The experimental Qt Labs Platform module provides QML types for native - platform extensions. The module was introduced in Qt 5.8. - - \section1 QML Types - - \generatelist {qmltypesbymodule Qt.labs.platform} - - \labs - - \section1 Module Evolution - \l{Changes to Qt Quick Labs Platform} lists important changes in the - module API and functionality that were done for the Qt 6 series of Qt. - - \section1 Related Information - - \list - \li \l{Qt Quick} - \li \l{Qt Quick Controls} - \endlist -*/ diff --git a/src/labs/platform/doc/src/qtlabsplatform-qmltypes.qdoc b/src/labs/platform/doc/src/qtlabsplatform-qmltypes.qdoc deleted file mode 100644 index 51b7601a..00000000 --- a/src/labs/platform/doc/src/qtlabsplatform-qmltypes.qdoc +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \qmlmodule Qt.labs.platform 1.1 - \title Qt Labs Platform QML Types - \ingroup qmlmodules - \brief Provides QML types for native platform extensions. - - The experimental \l{Qt Labs Platform} module provides QML types for native - platform extensions. These QML types work in conjunction with \l{Qt Quick} - and \l{Qt Quick Controls}. - - The QML types can be imported into your application using the - following import statement in your .qml file: - - \qml - import Qt.labs.platform - \endqml - - \section1 QML Types - - \generatelist {qmltypesbymodule Qt.labs.platform} - - \labs - - \section1 Related Information - - \list - \li \l {Qt Quick Controls QML Types} - \endlist - - \noautolist -*/ diff --git a/src/labs/platform/platform.pri b/src/labs/platform/platform.pri deleted file mode 100644 index ec6e8616..00000000 --- a/src/labs/platform/platform.pri +++ /dev/null @@ -1,39 +0,0 @@ -HEADERS += \ - $$PWD/qquickplatformcolordialog_p.h \ - $$PWD/qquickplatformdialog_p.h \ - $$PWD/qquickplatformfiledialog_p.h \ - $$PWD/qquickplatformfolderdialog_p.h \ - $$PWD/qquickplatformfontdialog_p.h \ - $$PWD/qquickplatformicon_p.h \ - $$PWD/qquickplatformiconloader_p.h \ - $$PWD/qquickplatformmenu_p.h \ - $$PWD/qquickplatformmenubar_p.h \ - $$PWD/qquickplatformmenuitem_p.h \ - $$PWD/qquickplatformmenuitemgroup_p.h \ - $$PWD/qquickplatformmenuseparator_p.h \ - $$PWD/qquickplatformmessagedialog_p.h \ - $$PWD/qquickplatformstandardpaths_p.h - -SOURCES += \ - $$PWD/qquickplatformcolordialog.cpp \ - $$PWD/qquickplatformdialog.cpp \ - $$PWD/qquickplatformfiledialog.cpp \ - $$PWD/qquickplatformfolderdialog.cpp \ - $$PWD/qquickplatformfontdialog.cpp \ - $$PWD/qquickplatformicon.cpp \ - $$PWD/qquickplatformiconloader.cpp \ - $$PWD/qquickplatformmenu.cpp \ - $$PWD/qquickplatformmenubar.cpp \ - $$PWD/qquickplatformmenuitem.cpp \ - $$PWD/qquickplatformmenuitemgroup.cpp \ - $$PWD/qquickplatformmenuseparator.cpp \ - $$PWD/qquickplatformmessagedialog.cpp \ - $$PWD/qquickplatformstandardpaths.cpp - - -qtConfig(systemtrayicon) { - HEADERS += \ - $$PWD/qquickplatformsystemtrayicon_p.h - SOURCES += \ - $$PWD/qquickplatformsystemtrayicon.cpp -} diff --git a/src/labs/platform/qquickplatformcolordialog.cpp b/src/labs/platform/qquickplatformcolordialog.cpp deleted file mode 100644 index 04a5e079..00000000 --- a/src/labs/platform/qquickplatformcolordialog.cpp +++ /dev/null @@ -1,206 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformcolordialog_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ColorDialog - \inherits Dialog -//! \instantiates QQuickPlatformColorDialog - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief A native color dialog. - - The ColorDialog type provides a QML API for native platform color dialogs. - - \image qtlabsplatform-colordialog-gtk.png - - To show a color dialog, construct an instance of ColorDialog, set the - desired properties, and call \l {Dialog::}{open()}. The \l currentColor - property can be used to determine the currently selected color in the - dialog. The \l color property is updated only after the final selection - has been made by accepting the dialog. - - \code - MenuItem { - text: "Color" - onTriggered: colorDialog.open() - } - - ColorDialog { - id: colorDialog - currentColor: document.color - } - - MyDocument { - id: document - color: colorDialog.color - } - \endcode - - \section2 Availability - - A native platform color dialog is currently available on the following platforms: - - \list - \li macOS - \li Linux (when running with the GTK+ platform theme) - \endlist - - \input includes/widgets.qdocinc 1 - - \labs -*/ - -QQuickPlatformColorDialog::QQuickPlatformColorDialog(QObject *parent) - : QQuickPlatformDialog(QPlatformTheme::ColorDialog, parent), - m_options(QColorDialogOptions::create()) -{ -} - -/*! - \qmlproperty color Qt.labs.platform::ColorDialog::color - - This property holds the final accepted color. - - Unlike the \l currentColor property, the \c color property is not updated - while the user is selecting colors in the dialog, but only after the final - selection has been made. That is, when the user has clicked \uicontrol OK - to accept a color. Alternatively, the \l {Dialog::}{accepted()} signal - can be handled to get the final selection. - - \sa currentColor, {Dialog::}{accepted()} -*/ -QColor QQuickPlatformColorDialog::color() const -{ - return m_color; -} - -void QQuickPlatformColorDialog::setColor(const QColor &color) -{ - if (m_color == color) - return; - - m_color = color; - setCurrentColor(color); - emit colorChanged(); -} - -/*! - \qmlproperty color Qt.labs.platform::ColorDialog::currentColor - - This property holds the currently selected color in the dialog. - - Unlike the \l color property, the \c currentColor property is updated - while the user is selecting colors in the dialog, even before the final - selection has been made. - - \sa color -*/ -QColor QQuickPlatformColorDialog::currentColor() const -{ - if (QPlatformColorDialogHelper *colorDialog = qobject_cast<QPlatformColorDialogHelper *>(handle())) - return colorDialog->currentColor(); - return m_currentColor; -} - -void QQuickPlatformColorDialog::setCurrentColor(const QColor &color) -{ - if (QPlatformColorDialogHelper *colorDialog = qobject_cast<QPlatformColorDialogHelper *>(handle())) - colorDialog->setCurrentColor(color); - m_currentColor = color; -} - -/*! - \qmlproperty flags Qt.labs.platform::ColorDialog::options - - This property holds the various options that affect the look and feel of the dialog. - - By default, all options are disabled. - - Options should be set before showing the dialog. Setting them while the dialog is - visible is not guaranteed to have an immediate effect on the dialog (depending on - the option and on the platform). - - Available options: - \value ColorDialog.ShowAlphaChannel Allow the user to select the alpha component of a color. - \value ColorDialog.NoButtons Don't display \uicontrol OK and \uicontrol Cancel buttons (useful for "live dialogs"). -*/ -QColorDialogOptions::ColorDialogOptions QQuickPlatformColorDialog::options() const -{ - return m_options->options(); -} - -void QQuickPlatformColorDialog::setOptions(QColorDialogOptions::ColorDialogOptions options) -{ - if (options == m_options->options()) - return; - - m_options->setOptions(options); - emit optionsChanged(); -} - -bool QQuickPlatformColorDialog::useNativeDialog() const -{ - return QQuickPlatformDialog::useNativeDialog() - && !m_options->testOption(QColorDialogOptions::DontUseNativeDialog); -} - -void QQuickPlatformColorDialog::onCreate(QPlatformDialogHelper *dialog) -{ - if (QPlatformColorDialogHelper *colorDialog = qobject_cast<QPlatformColorDialogHelper *>(dialog)) { - connect(colorDialog, &QPlatformColorDialogHelper::currentColorChanged, this, &QQuickPlatformColorDialog::currentColorChanged); - colorDialog->setOptions(m_options); - colorDialog->setCurrentColor(m_currentColor); - } -} - -void QQuickPlatformColorDialog::onShow(QPlatformDialogHelper *dialog) -{ - m_options->setWindowTitle(title()); - if (QPlatformColorDialogHelper *colorDialog = qobject_cast<QPlatformColorDialogHelper *>(dialog)) - colorDialog->setOptions(m_options); -} - -void QQuickPlatformColorDialog::accept() -{ - setColor(currentColor()); - QQuickPlatformDialog::accept(); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/qquickplatformcolordialog_p.h b/src/labs/platform/qquickplatformcolordialog_p.h deleted file mode 100644 index 1df047d9..00000000 --- a/src/labs/platform/qquickplatformcolordialog_p.h +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMCOLORDIALOG_P_H -#define QQUICKPLATFORMCOLORDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qquickplatformdialog_p.h" -#include <QtGui/qcolor.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QQuickPlatformColorDialog : public QQuickPlatformDialog -{ - Q_OBJECT - Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL) - Q_PROPERTY(QColor currentColor READ currentColor WRITE setCurrentColor NOTIFY currentColorChanged FINAL) - Q_PROPERTY(QColorDialogOptions::ColorDialogOptions options READ options WRITE setOptions NOTIFY optionsChanged FINAL) - Q_FLAGS(QColorDialogOptions::ColorDialogOptions) - -public: - explicit QQuickPlatformColorDialog(QObject *parent = nullptr); - - QColor color() const; - void setColor(const QColor &color); - - QColor currentColor() const; - void setCurrentColor(const QColor &color); - - QColorDialogOptions::ColorDialogOptions options() const; - void setOptions(QColorDialogOptions::ColorDialogOptions options); - -Q_SIGNALS: - void colorChanged(); - void currentColorChanged(); - void optionsChanged(); - -protected: - bool useNativeDialog() const override; - void onCreate(QPlatformDialogHelper *dialog) override; - void onShow(QPlatformDialogHelper *dialog) override; - void accept() override; - -private: - QColor m_color; - QColor m_currentColor; // TODO: QColorDialogOptions::initialColor - QSharedPointer<QColorDialogOptions> m_options; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformColorDialog) - -#endif // QQUICKPLATFORMCOLORDIALOG_P_H diff --git a/src/labs/platform/qquickplatformdialog.cpp b/src/labs/platform/qquickplatformdialog.cpp deleted file mode 100644 index 06a26237..00000000 --- a/src/labs/platform/qquickplatformdialog.cpp +++ /dev/null @@ -1,411 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformdialog_p.h" - -#include <QtCore/qloggingcategory.h> -#include <QtGui/private/qguiapplication_p.h> -#include <QtQuick/qquickitem.h> -#include <QtQuick/qquickwindow.h> - -#include "widgets/qwidgetplatform_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Dialog - \inherits QtObject -//! \instantiates QQuickPlatformDialog - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief The base class of native dialogs. - - The Dialog type provides common QML API for native platform dialogs. - - To show a native dialog, construct an instance of one of the concrete - Dialog implementations, set the desired properties, and call \l open(). - Dialog emits \l accepted() or \l rejected() when the user is done with - the dialog. - - \labs -*/ - -/*! - \qmlsignal void Qt.labs.platform::Dialog::accepted() - - This signal is emitted when the dialog has been accepted either - interactively or by calling \l accept(). - - \note This signal is \e not emitted when closing the dialog with \l close(). - - \sa rejected() -*/ - -/*! - \qmlsignal void Qt.labs.platform::Dialog::rejected() - - This signal is emitted when the dialog has been rejected either - interactively or by calling \l reject(). - - \note This signal is \e not emitted when closing the dialog with \l close(). - - \sa accepted() -*/ - -Q_DECLARE_LOGGING_CATEGORY(qtLabsPlatformDialogs) - -QQuickPlatformDialog::QQuickPlatformDialog(QPlatformTheme::DialogType type, QObject *parent) - : QObject(parent), - m_visible(false), - m_complete(false), - m_result(0), - m_parentWindow(nullptr), - m_flags(Qt::Dialog), - m_modality(Qt::WindowModal), - m_type(type), - m_handle(nullptr) -{ -} - -QQuickPlatformDialog::~QQuickPlatformDialog() -{ - destroy(); -} - -QPlatformDialogHelper *QQuickPlatformDialog::handle() const -{ - return m_handle; -} - -/*! - \qmldefault - \qmlproperty list<Object> Qt.labs.platform::Dialog::data - - This default property holds the list of all objects declared as children of - the dialog. -*/ -QQmlListProperty<QObject> QQuickPlatformDialog::data() -{ - return QQmlListProperty<QObject>(this, &m_data); -} - -/*! - \qmlproperty Window Qt.labs.platform::Dialog::parentWindow - - This property holds the parent window of the dialog. - - Unless explicitly set, the window is automatically resolved by iterating - the QML parent objects until a \l Window or an \l Item that has a window - is found. -*/ -QWindow *QQuickPlatformDialog::parentWindow() const -{ - return m_parentWindow; -} - -void QQuickPlatformDialog::setParentWindow(QWindow *window) -{ - if (m_parentWindow == window) - return; - - m_parentWindow = window; - emit parentWindowChanged(); -} - -/*! - \qmlproperty string Qt.labs.platform::Dialog::title - - This property holds the title of the dialog. -*/ -QString QQuickPlatformDialog::title() const -{ - return m_title; -} - -void QQuickPlatformDialog::setTitle(const QString &title) -{ - if (m_title == title) - return; - - m_title = title; - emit titleChanged(); -} - -/*! - \qmlproperty Qt::WindowFlags Qt.labs.platform::Dialog::flags - - This property holds the window flags of the dialog. The default value is \c Qt.Dialog. -*/ -Qt::WindowFlags QQuickPlatformDialog::flags() const -{ - return m_flags; -} - -void QQuickPlatformDialog::setFlags(Qt::WindowFlags flags) -{ - if (m_flags == flags) - return; - - m_flags = flags; - emit flagsChanged(); -} - -/*! - \qmlproperty Qt::WindowModality Qt.labs.platform::Dialog::modality - - This property holds the modality of the dialog. The default value is \c Qt.WindowModal. - - Available values: - \value Qt.NonModal The dialog is not modal and does not block input to other windows. - \value Qt.WindowModal The dialog is modal to a single window hierarchy and blocks input to its parent window, all grandparent windows, and all siblings of its parent and grandparent windows. - \value Qt.ApplicationModal The dialog is modal to the application and blocks input to all windows. -*/ -Qt::WindowModality QQuickPlatformDialog::modality() const -{ - return m_modality; -} - -void QQuickPlatformDialog::setModality(Qt::WindowModality modality) -{ - if (m_modality == modality) - return; - - m_modality = modality; - emit modalityChanged(); -} - -/*! - \qmlproperty bool Qt.labs.platform::Dialog::visible - - This property holds the visibility of the dialog. The default value is \c false. - - \sa open(), close() -*/ -bool QQuickPlatformDialog::isVisible() const -{ - return m_handle && m_visible; -} - -void QQuickPlatformDialog::setVisible(bool visible) -{ - if (visible) - open(); - else - close(); -} - -/*! - \qmlproperty int Qt.labs.platform::Dialog::result - - This property holds the result code. - - Standard result codes: - \value Dialog.Accepted - \value Dialog.Rejected - - \note MessageDialog sets the result to the value of the clicked standard - button instead of using the standard result codes. -*/ -int QQuickPlatformDialog::result() const -{ - return m_result; -} - -void QQuickPlatformDialog::setResult(int result) -{ - if (m_result == result) - return; - - m_result = result; - emit resultChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::Dialog::open() - - Opens the dialog. - - \sa visible, close() -*/ -void QQuickPlatformDialog::open() -{ - if (m_visible || !create()) - return; - - onShow(m_handle); - m_visible = m_handle->show(m_flags, m_modality, m_parentWindow); - if (m_visible) - emit visibleChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::Dialog::close() - - Closes the dialog. - - \sa visible, open() -*/ -void QQuickPlatformDialog::close() -{ - if (!m_handle || !m_visible) - return; - - onHide(m_handle); - m_handle->hide(); - m_visible = false; - emit visibleChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::Dialog::accept() - - Closes the dialog and emits the \l accepted() signal. - - \sa reject() -*/ -void QQuickPlatformDialog::accept() -{ - done(Accepted); -} - -/*! - \qmlmethod void Qt.labs.platform::Dialog::reject() - - Closes the dialog and emits the \l rejected() signal. - - \sa accept() -*/ -void QQuickPlatformDialog::reject() -{ - done(Rejected); -} - -/*! - \qmlmethod void Qt.labs.platform::Dialog::done(int result) - - Closes the dialog and sets the \a result. - - \sa accept(), reject(), result -*/ -void QQuickPlatformDialog::done(int result) -{ - close(); - setResult(result); - - if (result == Accepted) - emit accepted(); - else if (result == Rejected) - emit rejected(); -} - -void QQuickPlatformDialog::classBegin() -{ -} - -void QQuickPlatformDialog::componentComplete() -{ - m_complete = true; - if (!m_parentWindow) - setParentWindow(findParentWindow()); -} - -static const char *qmlTypeName(const QObject *object) -{ - return object->metaObject()->className() + qstrlen("QQuickPlatform"); -} - -bool QQuickPlatformDialog::create() -{ - if (!m_handle) { - if (useNativeDialog()) - m_handle = QGuiApplicationPrivate::platformTheme()->createPlatformDialogHelper(m_type); - if (!m_handle) - m_handle = QWidgetPlatform::createDialog(m_type, this); - qCDebug(qtLabsPlatformDialogs) << qmlTypeName(this) << "->" << m_handle; - if (m_handle) { - onCreate(m_handle); - connect(m_handle, &QPlatformDialogHelper::accept, this, &QQuickPlatformDialog::accept); - connect(m_handle, &QPlatformDialogHelper::reject, this, &QQuickPlatformDialog::reject); - } - } - return m_handle; -} - -void QQuickPlatformDialog::destroy() -{ - delete m_handle; - m_handle = nullptr; -} - -bool QQuickPlatformDialog::useNativeDialog() const -{ - return !QCoreApplication::testAttribute(Qt::AA_DontUseNativeDialogs) - && QGuiApplicationPrivate::platformTheme()->usePlatformNativeDialog(m_type); -} - -void QQuickPlatformDialog::onCreate(QPlatformDialogHelper *dialog) -{ - Q_UNUSED(dialog); -} - -void QQuickPlatformDialog::onShow(QPlatformDialogHelper *dialog) -{ - Q_UNUSED(dialog); -} - -void QQuickPlatformDialog::onHide(QPlatformDialogHelper *dialog) -{ - Q_UNUSED(dialog); -} - -QWindow *QQuickPlatformDialog::findParentWindow() const -{ - QObject *obj = parent(); - while (obj) { - QWindow *window = qobject_cast<QWindow *>(obj); - if (window) - return window; - QQuickItem *item = qobject_cast<QQuickItem *>(obj); - if (item && item->window()) - return item->window(); - obj = obj->parent(); - } - return nullptr; -} - -QT_END_NAMESPACE - -#include "moc_qquickplatformdialog_p.cpp" diff --git a/src/labs/platform/qquickplatformdialog_p.h b/src/labs/platform/qquickplatformdialog_p.h deleted file mode 100644 index 55a54937..00000000 --- a/src/labs/platform/qquickplatformdialog_p.h +++ /dev/null @@ -1,153 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMDIALOG_P_H -#define QQUICKPLATFORMDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtGui/qpa/qplatformdialoghelper.h> -#include <QtQml/qqmlparserstatus.h> -#include <QtQml/qqmllist.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QWindow; -class QPlatformDialogHelper; - -class QQuickPlatformDialog : public QObject, public QQmlParserStatus -{ - Q_OBJECT - Q_INTERFACES(QQmlParserStatus) - Q_PROPERTY(QQmlListProperty<QObject> data READ data FINAL) - Q_PROPERTY(QWindow *parentWindow READ parentWindow WRITE setParentWindow NOTIFY parentWindowChanged FINAL) - Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL) - Q_PROPERTY(Qt::WindowFlags flags READ flags WRITE setFlags NOTIFY flagsChanged FINAL) - Q_PROPERTY(Qt::WindowModality modality READ modality WRITE setModality NOTIFY modalityChanged FINAL) - Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) - Q_PROPERTY(int result READ result WRITE setResult NOTIFY resultChanged FINAL) - Q_CLASSINFO("DefaultProperty", "data") - -public: - explicit QQuickPlatformDialog(QPlatformTheme::DialogType type, QObject *parent = nullptr); - ~QQuickPlatformDialog(); - - QPlatformDialogHelper *handle() const; - - QQmlListProperty<QObject> data(); - - QWindow *parentWindow() const; - void setParentWindow(QWindow *window); - - QString title() const; - void setTitle(const QString &title); - - Qt::WindowFlags flags() const; - void setFlags(Qt::WindowFlags flags); - - Qt::WindowModality modality() const; - void setModality(Qt::WindowModality modality); - - bool isVisible() const; - void setVisible(bool visible); - - enum StandardCode { Rejected, Accepted }; - Q_ENUM(StandardCode) - - int result() const; - void setResult(int result); - -public Q_SLOTS: - void open(); - void close(); - virtual void accept(); - virtual void reject(); - virtual void done(int result); - -Q_SIGNALS: - void accepted(); - void rejected(); - void parentWindowChanged(); - void titleChanged(); - void flagsChanged(); - void modalityChanged(); - void visibleChanged(); - void resultChanged(); - -protected: - void classBegin() override; - void componentComplete() override; - - bool create(); - void destroy(); - - virtual bool useNativeDialog() const; - virtual void onCreate(QPlatformDialogHelper *dialog); - virtual void onShow(QPlatformDialogHelper *dialog); - virtual void onHide(QPlatformDialogHelper *dialog); - - QWindow *findParentWindow() const; - -private: - bool m_visible; - bool m_complete; - int m_result; - QWindow *m_parentWindow; - QString m_title; - Qt::WindowFlags m_flags; - Qt::WindowModality m_modality; - QPlatformTheme::DialogType m_type; - QList<QObject *> m_data; - QPlatformDialogHelper *m_handle; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformDialog) - -#endif // QQUICKPLATFORMDIALOG_P_H diff --git a/src/labs/platform/qquickplatformfiledialog.cpp b/src/labs/platform/qquickplatformfiledialog.cpp deleted file mode 100644 index 8bfcfc93..00000000 --- a/src/labs/platform/qquickplatformfiledialog.cpp +++ /dev/null @@ -1,662 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformfiledialog_p.h" - -#include <QtCore/qlist.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype FileDialog - \inherits Dialog -//! \instantiates QQuickPlatformFileDialog - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief A native file dialog. - - The FileDialog type provides a QML API for native platform file dialogs. - - \image qtlabsplatform-filedialog-gtk.png - - To show a file dialog, construct an instance of FileDialog, set the - desired properties, and call \l {Dialog::}{open()}. The \l currentFile - or \l currentFiles properties can be used to determine the currently - selected file(s) in the dialog. The \l file and \l files properties - are updated only after the final selection has been made by accepting - the dialog. - - \code - MenuItem { - text: "Open..." - onTriggered: fileDialog.open() - } - - FileDialog { - id: fileDialog - currentFile: document.source - folder: StandardPaths.writableLocation(StandardPaths.DocumentsLocation) - } - - MyDocument { - id: document - source: fileDialog.file - } - \endcode - - \section2 Availability - - A native platform file dialog is currently available on the following platforms: - - \list - \li iOS - \li Linux (when running with the GTK+ platform theme) - \li macOS - \li Windows - \endlist - - \input includes/widgets.qdocinc 1 - - \labs - - \sa FolderDialog, StandardPaths -*/ - -QQuickPlatformFileDialog::QQuickPlatformFileDialog(QObject *parent) - : QQuickPlatformDialog(QPlatformTheme::FileDialog, parent), - m_fileMode(OpenFile), - m_options(QFileDialogOptions::create()), - m_selectedNameFilter(nullptr) -{ - m_options->setFileMode(QFileDialogOptions::ExistingFile); - m_options->setAcceptMode(QFileDialogOptions::AcceptOpen); -} - -/*! - \qmlproperty enumeration Qt.labs.platform::FileDialog::fileMode - - This property holds the mode of the dialog. - - Available values: - \value FileDialog.OpenFile The dialog is used to select an existing file (default). - \value FileDialog.OpenFiles The dialog is used to select multiple existing files. - \value FileDialog.SaveFile The dialog is used to select any file. The file does not have to exist. -*/ -QQuickPlatformFileDialog::FileMode QQuickPlatformFileDialog::fileMode() const -{ - return m_fileMode; -} - -void QQuickPlatformFileDialog::setFileMode(FileMode mode) -{ - if (mode == m_fileMode) - return; - - switch (mode) { - case OpenFile: - m_options->setFileMode(QFileDialogOptions::ExistingFile); - m_options->setAcceptMode(QFileDialogOptions::AcceptOpen); - break; - case OpenFiles: - m_options->setFileMode(QFileDialogOptions::ExistingFiles); - m_options->setAcceptMode(QFileDialogOptions::AcceptOpen); - break; - case SaveFile: - m_options->setFileMode(QFileDialogOptions::AnyFile); - m_options->setAcceptMode(QFileDialogOptions::AcceptSave); - break; - default: - break; - } - - m_fileMode = mode; - emit fileModeChanged(); -} - -/*! - \qmlproperty url Qt.labs.platform::FileDialog::file - - This property holds the final accepted file. - - Unlike the \l currentFile property, the \c file property is not updated - while the user is selecting files in the dialog, but only after the final - selection has been made. That is, when the user has clicked \uicontrol OK - to accept a file. Alternatively, the \l {Dialog::}{accepted()} signal - can be handled to get the final selection. - - \sa currentFile, {Dialog::}{accepted()} -*/ -QUrl QQuickPlatformFileDialog::file() const -{ - return addDefaultSuffix(m_files.value(0)); -} - -void QQuickPlatformFileDialog::setFile(const QUrl &file) -{ - setFiles(QList<QUrl>() << file); -} - -/*! - \qmlproperty list<url> Qt.labs.platform::FileDialog::files - - This property holds the final accepted files. - - Unlike the \l currentFiles property, the \c files property is not updated - while the user is selecting files in the dialog, but only after the final - selection has been made. That is, when the user has clicked \uicontrol OK - to accept files. Alternatively, the \l {Dialog::}{accepted()} signal - can be handled to get the final selection. - - \sa currentFiles, {Dialog::}{accepted()} -*/ -QList<QUrl> QQuickPlatformFileDialog::files() const -{ - return addDefaultSuffixes(m_files); -} - -void QQuickPlatformFileDialog::setFiles(const QList<QUrl> &files) -{ - if (m_files == files) - return; - - bool firstChanged = m_files.value(0) != files.value(0); - m_files = files; - if (firstChanged) - emit fileChanged(); - emit filesChanged(); -} - -/*! - \qmlproperty url Qt.labs.platform::FileDialog::currentFile - - This property holds the currently selected file in the dialog. - - Unlike the \l file property, the \c currentFile property is updated - while the user is selecting files in the dialog, even before the final - selection has been made. - - \sa file, currentFiles -*/ -QUrl QQuickPlatformFileDialog::currentFile() const -{ - return currentFiles().value(0); -} - -void QQuickPlatformFileDialog::setCurrentFile(const QUrl &file) -{ - setCurrentFiles(QList<QUrl>() << file); -} - -/*! - \qmlproperty list<url> Qt.labs.platform::FileDialog::currentFiles - - This property holds the currently selected files in the dialog. - - Unlike the \l files property, the \c currentFiles property is updated - while the user is selecting files in the dialog, even before the final - selection has been made. - - \sa files, currentFile -*/ -QList<QUrl> QQuickPlatformFileDialog::currentFiles() const -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) - return fileDialog->selectedFiles(); - return m_options->initiallySelectedFiles(); -} - -void QQuickPlatformFileDialog::setCurrentFiles(const QList<QUrl> &files) -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) { - for (const QUrl &file : files) - fileDialog->selectFile(file); - } - m_options->setInitiallySelectedFiles(files); -} - -/*! - \qmlproperty url Qt.labs.platform::FileDialog::folder - - This property holds the folder where files are selected. - For selecting a folder, use FolderDialog instead. - - \sa FolderDialog -*/ -QUrl QQuickPlatformFileDialog::folder() const -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) - return fileDialog->directory(); - return m_options->initialDirectory(); -} - -void QQuickPlatformFileDialog::setFolder(const QUrl &folder) -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) - fileDialog->setDirectory(folder); - m_options->setInitialDirectory(folder); -} - -/*! - \qmlproperty flags Qt.labs.platform::FileDialog::options - - This property holds the various options that affect the look and feel of the dialog. - - By default, all options are disabled. - - Options should be set before showing the dialog. Setting them while the dialog is - visible is not guaranteed to have an immediate effect on the dialog (depending on - the option and on the platform). - - Available options: - \value FileDialog.DontResolveSymlinks Don't resolve symlinks in the file dialog. By default symlinks are resolved. - \value FileDialog.DontConfirmOverwrite Don't ask for confirmation if an existing file is selected. By default confirmation is requested. - \value FileDialog.ReadOnly Indicates that the dialog doesn't allow creating directories. - \value FileDialog.HideNameFilterDetails Indicates if the file name filter details are hidden or not. -*/ -QFileDialogOptions::FileDialogOptions QQuickPlatformFileDialog::options() const -{ - return m_options->options(); -} - -void QQuickPlatformFileDialog::setOptions(QFileDialogOptions::FileDialogOptions options) -{ - if (options == m_options->options()) - return; - - m_options->setOptions(options); - emit optionsChanged(); -} - -void QQuickPlatformFileDialog::resetOptions() -{ - setOptions({}); -} - -/*! - \qmlproperty list<string> Qt.labs.platform::FileDialog::nameFilters - - This property holds the filters that restrict the types of files that - can be selected. - - \code - FileDialog { - nameFilters: ["Text files (*.txt)", "HTML files (*.html *.htm)"] - } - \endcode - - \note \b{*.*} is not a portable filter, because the historical assumption - that the file extension determines the file type is not consistent on every - operating system. It is possible to have a file with no dot in its name (for - example, \c Makefile). In a native Windows file dialog, \b{*.*} will match - such files, while in other types of file dialogs it may not. So it is better - to use \b{*} if you mean to select any file. - - \sa selectedNameFilter -*/ -QStringList QQuickPlatformFileDialog::nameFilters() const -{ - return m_options->nameFilters(); -} - -void QQuickPlatformFileDialog::setNameFilters(const QStringList &filters) -{ - if (filters == m_options->nameFilters()) - return; - - m_options->setNameFilters(filters); - if (m_selectedNameFilter) { - int index = m_selectedNameFilter->index(); - if (index < 0 || index >= filters.count()) - index = 0; - m_selectedNameFilter->update(filters.value(index)); - } - emit nameFiltersChanged(); -} - -void QQuickPlatformFileDialog::resetNameFilters() -{ - setNameFilters(QStringList()); -} - -/*! - \qmlproperty int Qt.labs.platform::FileDialog::selectedNameFilter.index - \qmlproperty string Qt.labs.platform::FileDialog::selectedNameFilter.name - \qmlproperty list<string> Qt.labs.platform::FileDialog::selectedNameFilter.extensions - - These properties hold the currently selected name filter. - - \table - \header - \li Name - \li Description - \row - \li \b index : int - \li This property determines which \l {nameFilters}{name filter} is selected. - The specified filter is selected when the dialog is opened. The value is - updated when the user selects another filter. - \row - \li [read-only] \b name : string - \li This property holds the name of the selected filter. In the - example below, the name of the first filter is \c {"Text files"} - and the second is \c {"HTML files"}. - \row - \li [read-only] \b extensions : list<string> - \li This property holds the list of extensions of the selected filter. - In the example below, the list of extensions of the first filter is - \c {["txt"]} and the second is \c {["html", "htm"]}. - \endtable - - \code - FileDialog { - id: fileDialog - selectedNameFilter.index: 1 - nameFilters: ["Text files (*.txt)", "HTML files (*.html *.htm)"] - } - - MyDocument { - id: document - fileType: fileDialog.selectedNameFilter.extensions[0] - } - \endcode - - \sa nameFilters -*/ -QQuickPlatformFileNameFilter *QQuickPlatformFileDialog::selectedNameFilter() const -{ - if (!m_selectedNameFilter) { - QQuickPlatformFileDialog *that = const_cast<QQuickPlatformFileDialog *>(this); - m_selectedNameFilter = new QQuickPlatformFileNameFilter(that); - m_selectedNameFilter->setOptions(m_options); - } - return m_selectedNameFilter; -} - -/*! - \qmlproperty string Qt.labs.platform::FileDialog::defaultSuffix - - This property holds a suffix that is added to selected files that have - no suffix specified. The suffix is typically used to indicate the file - type (e.g. "txt" indicates a text file). - - If the first character is a dot ('.'), it is removed. -*/ -QString QQuickPlatformFileDialog::defaultSuffix() const -{ - return m_options->defaultSuffix(); -} - -void QQuickPlatformFileDialog::setDefaultSuffix(const QString &suffix) -{ - if (suffix == m_options->defaultSuffix()) - return; - - m_options->setDefaultSuffix(suffix); - emit defaultSuffixChanged(); -} - -void QQuickPlatformFileDialog::resetDefaultSuffix() -{ - setDefaultSuffix(QString()); -} - -/*! - \qmlproperty string Qt.labs.platform::FileDialog::acceptLabel - - This property holds the label text shown on the button that accepts the dialog. - - When set to an empty string, the default label of the underlying platform is used. - The default label is typically \uicontrol Open or \uicontrol Save depending on which - \l fileMode the dialog is used in. - - The default value is an empty string. - - \sa rejectLabel -*/ -QString QQuickPlatformFileDialog::acceptLabel() const -{ - return m_options->labelText(QFileDialogOptions::Accept); -} - -void QQuickPlatformFileDialog::setAcceptLabel(const QString &label) -{ - if (label == m_options->labelText(QFileDialogOptions::Accept)) - return; - - m_options->setLabelText(QFileDialogOptions::Accept, label); - emit acceptLabelChanged(); -} - -void QQuickPlatformFileDialog::resetAcceptLabel() -{ - setAcceptLabel(QString()); -} - -/*! - \qmlproperty string Qt.labs.platform::FileDialog::rejectLabel - - This property holds the label text shown on the button that rejects the dialog. - - When set to an empty string, the default label of the underlying platform is used. - The default label is typically \uicontrol Cancel. - - The default value is an empty string. - - \sa acceptLabel -*/ -QString QQuickPlatformFileDialog::rejectLabel() const -{ - return m_options->labelText(QFileDialogOptions::Reject); -} - -void QQuickPlatformFileDialog::setRejectLabel(const QString &label) -{ - if (label == m_options->labelText(QFileDialogOptions::Reject)) - return; - - m_options->setLabelText(QFileDialogOptions::Reject, label); - emit rejectLabelChanged(); -} - -void QQuickPlatformFileDialog::resetRejectLabel() -{ - setRejectLabel(QString()); -} - -bool QQuickPlatformFileDialog::useNativeDialog() const -{ - return QQuickPlatformDialog::useNativeDialog() - && !m_options->testOption(QFileDialogOptions::DontUseNativeDialog); -} - -void QQuickPlatformFileDialog::onCreate(QPlatformDialogHelper *dialog) -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) { - // TODO: emit currentFileChanged only when the first entry in currentFiles changes - connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, this, &QQuickPlatformFileDialog::currentFileChanged); - connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, this, &QQuickPlatformFileDialog::currentFilesChanged); - connect(fileDialog, &QPlatformFileDialogHelper::directoryEntered, this, &QQuickPlatformFileDialog::folderChanged); - fileDialog->setOptions(m_options); - } -} - -void QQuickPlatformFileDialog::onShow(QPlatformDialogHelper *dialog) -{ - m_options->setWindowTitle(title()); - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) { - fileDialog->setOptions(m_options); // setOptions only assigns a member and isn't virtual - if (m_firstShow && m_options->initialDirectory().isValid()) - fileDialog->setDirectory(m_options->initialDirectory()); - if (m_selectedNameFilter) { - const int index = m_selectedNameFilter->index(); - const QString filter = m_options->nameFilters().value(index); - m_options->setInitiallySelectedNameFilter(filter); - fileDialog->selectNameFilter(filter); - connect(fileDialog, &QPlatformFileDialogHelper::filterSelected, m_selectedNameFilter, &QQuickPlatformFileNameFilter::update); - } - } - if (m_firstShow) - m_firstShow = false; -} - -void QQuickPlatformFileDialog::onHide(QPlatformDialogHelper *dialog) -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) { - if (m_selectedNameFilter) - disconnect(fileDialog, &QPlatformFileDialogHelper::filterSelected, m_selectedNameFilter, &QQuickPlatformFileNameFilter::update); - } -} - -void QQuickPlatformFileDialog::accept() -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) - setFiles(fileDialog->selectedFiles()); - QQuickPlatformDialog::accept(); -} - -QUrl QQuickPlatformFileDialog::addDefaultSuffix(const QUrl &file) const -{ - QUrl url = file; - const QString path = url.path(); - const QString suffix = m_options->defaultSuffix(); - if (!suffix.isEmpty() && !path.endsWith(QLatin1Char('/')) && path.lastIndexOf(QLatin1Char('.')) == -1) - url.setPath(path + QLatin1Char('.') + suffix); - return url; -} - -QList<QUrl> QQuickPlatformFileDialog::addDefaultSuffixes(const QList<QUrl> &files) const -{ - QList<QUrl> urls; - urls.reserve(files.size()); - for (const QUrl &file : files) - urls += addDefaultSuffix(file); - return urls; -} - -QQuickPlatformFileNameFilter::QQuickPlatformFileNameFilter(QObject *parent) - : QObject(parent), m_index(-1) -{ -} - -int QQuickPlatformFileNameFilter::index() const -{ - return m_index; -} - -void QQuickPlatformFileNameFilter::setIndex(int index) -{ - if (m_index == index) - return; - - m_index = index; - emit indexChanged(index); -} - -QString QQuickPlatformFileNameFilter::name() const -{ - return m_name; -} - -QStringList QQuickPlatformFileNameFilter::extensions() const -{ - return m_extensions; -} - -QSharedPointer<QFileDialogOptions> QQuickPlatformFileNameFilter::options() const -{ - return m_options; -} - -void QQuickPlatformFileNameFilter::setOptions(const QSharedPointer<QFileDialogOptions> &options) -{ - m_options = options; -} - -static QString extractName(const QString &filter) -{ - return filter.left(filter.indexOf(QLatin1Char('(')) - 1); -} - -static QString extractExtension(QStringView filter) -{ - return filter.mid(filter.indexOf(QLatin1Char('.')) + 1).toString(); -} - -static QStringList extractExtensions(QStringView filter) -{ - QStringList extensions; - const int from = filter.indexOf(QLatin1Char('(')); - const int to = filter.lastIndexOf(QLatin1Char(')')) - 1; - if (from >= 0 && from < to) { - const QStringView ref = filter.mid(from + 1, to - from); - const QList<QStringView> exts = ref.split(QLatin1Char(' '), Qt::SkipEmptyParts); - for (const QStringView &ref : exts) - extensions += extractExtension(ref); - } - - return extensions; -} - -void QQuickPlatformFileNameFilter::update(const QString &filter) -{ - const QStringList filters = nameFilters(); - - const int oldIndex = m_index; - const QString oldName = m_name; - const QStringList oldExtensions = m_extensions; - - m_index = filters.indexOf(filter); - m_name = extractName(filter); - m_extensions = extractExtensions(filter); - - if (oldIndex != m_index) - emit indexChanged(m_index); - if (oldName != m_name) - emit nameChanged(m_name); - if (oldExtensions != m_extensions) - emit extensionsChanged(m_extensions); -} - -QStringList QQuickPlatformFileNameFilter::nameFilters() const -{ - return m_options ? m_options->nameFilters() : QStringList(); -} - -QString QQuickPlatformFileNameFilter::nameFilter(int index) const -{ - return m_options ? m_options->nameFilters().value(index) : QString(); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/qquickplatformfiledialog_p.h b/src/labs/platform/qquickplatformfiledialog_p.h deleted file mode 100644 index b867f3c8..00000000 --- a/src/labs/platform/qquickplatformfiledialog_p.h +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMFILEDIALOG_P_H -#define QQUICKPLATFORMFILEDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qquickplatformdialog_p.h" -#include <QtCore/qurl.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QQuickPlatformFileNameFilter; - -class QQuickPlatformFileDialog : public QQuickPlatformDialog -{ - Q_OBJECT - Q_PROPERTY(FileMode fileMode READ fileMode WRITE setFileMode NOTIFY fileModeChanged FINAL) - Q_PROPERTY(QUrl file READ file WRITE setFile NOTIFY fileChanged FINAL) - Q_PROPERTY(QList<QUrl> files READ files WRITE setFiles NOTIFY filesChanged FINAL) - Q_PROPERTY(QUrl currentFile READ currentFile WRITE setCurrentFile NOTIFY currentFileChanged FINAL) - Q_PROPERTY(QList<QUrl> currentFiles READ currentFiles WRITE setCurrentFiles NOTIFY currentFilesChanged FINAL) - Q_PROPERTY(QUrl folder READ folder WRITE setFolder NOTIFY folderChanged FINAL) - Q_PROPERTY(QFileDialogOptions::FileDialogOptions options READ options WRITE setOptions RESET resetOptions NOTIFY optionsChanged FINAL) - Q_PROPERTY(QStringList nameFilters READ nameFilters WRITE setNameFilters RESET resetNameFilters NOTIFY nameFiltersChanged FINAL) - Q_PROPERTY(QQuickPlatformFileNameFilter *selectedNameFilter READ selectedNameFilter CONSTANT) - Q_PROPERTY(QString defaultSuffix READ defaultSuffix WRITE setDefaultSuffix RESET resetDefaultSuffix NOTIFY defaultSuffixChanged FINAL) - Q_PROPERTY(QString acceptLabel READ acceptLabel WRITE setAcceptLabel RESET resetAcceptLabel NOTIFY acceptLabelChanged FINAL) - Q_PROPERTY(QString rejectLabel READ rejectLabel WRITE setRejectLabel RESET resetRejectLabel NOTIFY rejectLabelChanged FINAL) - Q_FLAGS(QFileDialogOptions::FileDialogOptions) - -public: - explicit QQuickPlatformFileDialog(QObject *parent = nullptr); - - enum FileMode { - OpenFile, - OpenFiles, - SaveFile - }; - Q_ENUM(FileMode) - - FileMode fileMode() const; - void setFileMode(FileMode fileMode); - - QUrl file() const; - void setFile(const QUrl &file); - - QList<QUrl> files() const; - void setFiles(const QList<QUrl> &files); - - QUrl currentFile() const; - void setCurrentFile(const QUrl &file); - - QList<QUrl> currentFiles() const; - void setCurrentFiles(const QList<QUrl> &files); - - QUrl folder() const; - void setFolder(const QUrl &folder); - - QFileDialogOptions::FileDialogOptions options() const; - void setOptions(QFileDialogOptions::FileDialogOptions options); - void resetOptions(); - - QStringList nameFilters() const; - void setNameFilters(const QStringList &filters); - void resetNameFilters(); - - QQuickPlatformFileNameFilter *selectedNameFilter() const; - - QString defaultSuffix() const; - void setDefaultSuffix(const QString &suffix); - void resetDefaultSuffix(); - - QString acceptLabel() const; - void setAcceptLabel(const QString &label); - void resetAcceptLabel(); - - QString rejectLabel() const; - void setRejectLabel(const QString &label); - void resetRejectLabel(); - -Q_SIGNALS: - void fileModeChanged(); - void fileChanged(); - void filesChanged(); - void currentFileChanged(); - void currentFilesChanged(); - void folderChanged(); - void optionsChanged(); - void nameFiltersChanged(); - void defaultSuffixChanged(); - void acceptLabelChanged(); - void rejectLabelChanged(); - -protected: - bool useNativeDialog() const override; - void onCreate(QPlatformDialogHelper *dialog) override; - void onShow(QPlatformDialogHelper *dialog) override; - void onHide(QPlatformDialogHelper *dialog) override; - void accept() override; - -private: - QUrl addDefaultSuffix(const QUrl &file) const; - QList<QUrl> addDefaultSuffixes(const QList<QUrl> &files) const; - - FileMode m_fileMode; - QList<QUrl> m_files; - bool m_firstShow = true; - QSharedPointer<QFileDialogOptions> m_options; - mutable QQuickPlatformFileNameFilter *m_selectedNameFilter; -}; - -class QQuickPlatformFileNameFilter : public QObject -{ - Q_OBJECT - Q_PROPERTY(int index READ index WRITE setIndex NOTIFY indexChanged FINAL) - Q_PROPERTY(QString name READ name NOTIFY nameChanged FINAL) - Q_PROPERTY(QStringList extensions READ extensions NOTIFY extensionsChanged FINAL) - -public: - explicit QQuickPlatformFileNameFilter(QObject *parent = nullptr); - - int index() const; - void setIndex(int index); - - QString name() const; - QStringList extensions() const; - - QSharedPointer<QFileDialogOptions> options() const; - void setOptions(const QSharedPointer<QFileDialogOptions> &options); - - void update(const QString &filter); - -Q_SIGNALS: - void indexChanged(int index); - void nameChanged(const QString &name); - void extensionsChanged(const QStringList &extensions); - -private: - QStringList nameFilters() const; - QString nameFilter(int index) const; - - int m_index; - QString m_name; - QStringList m_extensions; - QSharedPointer<QFileDialogOptions> m_options; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformFileDialog) - -#endif // QQUICKPLATFORMFILEDIALOG_P_H diff --git a/src/labs/platform/qquickplatformfolderdialog.cpp b/src/labs/platform/qquickplatformfolderdialog.cpp deleted file mode 100644 index a28dc828..00000000 --- a/src/labs/platform/qquickplatformfolderdialog.cpp +++ /dev/null @@ -1,280 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformfolderdialog_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype FolderDialog - \inherits Dialog -//! \instantiates QQuickPlatformFolderDialog - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief A native folder dialog. - - The FolderDialog type provides a QML API for native platform folder dialogs. - - \image qtlabsplatform-folderdialog-gtk.png - - To show a folder dialog, construct an instance of FolderDialog, set the - desired properties, and call \l {Dialog::}{open()}. The \l currentFolder - property can be used to determine the currently selected folder in the - dialog. The \l folder property is updated only after the final selection - has been made by accepting the dialog. - - \code - MenuItem { - text: "Open..." - onTriggered: folderDialog.open() - } - - FolderDialog { - id: folderDialog - currentFolder: viewer.folder - folder: StandardPaths.standardLocations(StandardPaths.PicturesLocation)[0] - } - - MyViewer { - id: viewer - folder: folderDialog.folder - } - \endcode - - \section2 Availability - - A native platform folder dialog is currently available on the following platforms: - - \list - \li iOS - \li Linux (when running with the GTK+ platform theme) - \li macOS - \li Windows - \endlist - - \input includes/widgets.qdocinc 1 - - \labs - - \sa FileDialog, StandardPaths -*/ - -QQuickPlatformFolderDialog::QQuickPlatformFolderDialog(QObject *parent) - : QQuickPlatformDialog(QPlatformTheme::FileDialog, parent), - m_options(QFileDialogOptions::create()) -{ - m_options->setFileMode(QFileDialogOptions::Directory); - m_options->setAcceptMode(QFileDialogOptions::AcceptOpen); -} - -/*! - \qmlproperty url Qt.labs.platform::FolderDialog::folder - - This property holds the final accepted folder. - - Unlike the \l currentFolder property, the \c folder property is not updated - while the user is selecting folders in the dialog, but only after the final - selection has been made. That is, when the user has clicked \uicontrol OK - to accept a folder. Alternatively, the \l {Dialog::}{accepted()} signal - can be handled to get the final selection. - - \sa currentFolder, {Dialog::}{accepted()} -*/ -QUrl QQuickPlatformFolderDialog::folder() const -{ - return m_folder; -} - -void QQuickPlatformFolderDialog::setFolder(const QUrl &folder) -{ - if (m_folder == folder) - return; - - m_folder = folder; - setCurrentFolder(folder); - emit folderChanged(); -} - -/*! - \qmlproperty url Qt.labs.platform::FolderDialog::currentFolder - - This property holds the currently selected folder in the dialog. - - Unlike the \l folder property, the \c currentFolder property is updated - while the user is selecting folders in the dialog, even before the final - selection has been made. - - \sa folder -*/ -QUrl QQuickPlatformFolderDialog::currentFolder() const -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) - return fileDialog->directory(); - return m_options->initialDirectory(); -} - -void QQuickPlatformFolderDialog::setCurrentFolder(const QUrl &folder) -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) - fileDialog->setDirectory(folder); - m_options->setInitialDirectory(folder); -} - -/*! - \qmlproperty flags Qt.labs.platform::FolderDialog::options - - This property holds the various options that affect the look and feel of the dialog. - - By default, all options are disabled. - - Options should be set before showing the dialog. Setting them while the dialog is - visible is not guaranteed to have an immediate effect on the dialog (depending on - the option and on the platform). - - Available options: - \value FolderDialog.ShowDirsOnly Only show directories in the folder dialog. By default both folders and directories are shown. - \value FolderDialog.DontResolveSymlinks Don't resolve symlinks in the folder dialog. By default symlinks are resolved. - \value FolderDialog.ReadOnly Indicates that the dialog doesn't allow creating directories. -*/ -QFileDialogOptions::FileDialogOptions QQuickPlatformFolderDialog::options() const -{ - return m_options->options(); -} - -void QQuickPlatformFolderDialog::setOptions(QFileDialogOptions::FileDialogOptions options) -{ - if (options == m_options->options()) - return; - - m_options->setOptions(options); - emit optionsChanged(); -} - -void QQuickPlatformFolderDialog::resetOptions() -{ - setOptions({}); -} - -/*! - \qmlproperty string Qt.labs.platform::FolderDialog::acceptLabel - - This property holds the label text shown on the button that accepts the dialog. - - When set to an empty string, the default label of the underlying platform is used. - The default label is typically \uicontrol Open. - - The default value is an empty string. - - \sa rejectLabel -*/ -QString QQuickPlatformFolderDialog::acceptLabel() const -{ - return m_options->labelText(QFileDialogOptions::Accept); -} - -void QQuickPlatformFolderDialog::setAcceptLabel(const QString &label) -{ - if (label == m_options->labelText(QFileDialogOptions::Accept)) - return; - - m_options->setLabelText(QFileDialogOptions::Accept, label); - emit acceptLabelChanged(); -} - -void QQuickPlatformFolderDialog::resetAcceptLabel() -{ - setAcceptLabel(QString()); -} - -/*! - \qmlproperty string Qt.labs.platform::FolderDialog::rejectLabel - - This property holds the label text shown on the button that rejects the dialog. - - When set to an empty string, the default label of the underlying platform is used. - The default label is typically \uicontrol Cancel. - - The default value is an empty string. - - \sa acceptLabel -*/ -QString QQuickPlatformFolderDialog::rejectLabel() const -{ - return m_options->labelText(QFileDialogOptions::Reject); -} - -void QQuickPlatformFolderDialog::setRejectLabel(const QString &label) -{ - if (label == m_options->labelText(QFileDialogOptions::Reject)) - return; - - m_options->setLabelText(QFileDialogOptions::Reject, label); - emit rejectLabelChanged(); -} - -void QQuickPlatformFolderDialog::resetRejectLabel() -{ - setRejectLabel(QString()); -} - -bool QQuickPlatformFolderDialog::useNativeDialog() const -{ - return QQuickPlatformDialog::useNativeDialog() - && !m_options->testOption(QFileDialogOptions::DontUseNativeDialog); -} - -void QQuickPlatformFolderDialog::onCreate(QPlatformDialogHelper *dialog) -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) { - connect(fileDialog, &QPlatformFileDialogHelper::directoryEntered, this, &QQuickPlatformFolderDialog::currentFolderChanged); - fileDialog->setOptions(m_options); - } -} - -void QQuickPlatformFolderDialog::onShow(QPlatformDialogHelper *dialog) -{ - m_options->setWindowTitle(title()); - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) - fileDialog->setOptions(m_options); -} - -void QQuickPlatformFolderDialog::accept() -{ - setFolder(currentFolder()); - QQuickPlatformDialog::accept(); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/qquickplatformfolderdialog_p.h b/src/labs/platform/qquickplatformfolderdialog_p.h deleted file mode 100644 index 69878cb9..00000000 --- a/src/labs/platform/qquickplatformfolderdialog_p.h +++ /dev/null @@ -1,110 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMFOLDERDIALOG_P_H -#define QQUICKPLATFORMFOLDERDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This folder is not part of the Qt API. It exists purely as an -// implementation detail. This header folder may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qquickplatformdialog_p.h" -#include <QtCore/qurl.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QQuickPlatformFolderDialog : public QQuickPlatformDialog -{ - Q_OBJECT - Q_PROPERTY(QUrl folder READ folder WRITE setFolder NOTIFY folderChanged FINAL) - Q_PROPERTY(QUrl currentFolder READ currentFolder WRITE setCurrentFolder NOTIFY currentFolderChanged FINAL) - Q_PROPERTY(QFileDialogOptions::FileDialogOptions options READ options WRITE setOptions RESET resetOptions NOTIFY optionsChanged FINAL) - Q_PROPERTY(QString acceptLabel READ acceptLabel WRITE setAcceptLabel RESET resetAcceptLabel NOTIFY acceptLabelChanged FINAL) - Q_PROPERTY(QString rejectLabel READ rejectLabel WRITE setRejectLabel RESET resetRejectLabel NOTIFY rejectLabelChanged FINAL) - Q_FLAGS(QFileDialogOptions::FileDialogOptions) - -public: - explicit QQuickPlatformFolderDialog(QObject *parent = nullptr); - - QUrl folder() const; - void setFolder(const QUrl &folder); - - QUrl currentFolder() const; - void setCurrentFolder(const QUrl &folder); - - QFileDialogOptions::FileDialogOptions options() const; - void setOptions(QFileDialogOptions::FileDialogOptions options); - void resetOptions(); - - QString acceptLabel() const; - void setAcceptLabel(const QString &label); - void resetAcceptLabel(); - - QString rejectLabel() const; - void setRejectLabel(const QString &label); - void resetRejectLabel(); - -Q_SIGNALS: - void folderChanged(); - void currentFolderChanged(); - void optionsChanged(); - void acceptLabelChanged(); - void rejectLabelChanged(); - -protected: - bool useNativeDialog() const override; - void onCreate(QPlatformDialogHelper *dialog) override; - void onShow(QPlatformDialogHelper *dialog) override; - void accept() override; - -private: - QUrl m_folder; - QSharedPointer<QFileDialogOptions> m_options; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformFolderDialog) - -#endif // QQUICKPLATFORMFOLDERDIALOG_P_H diff --git a/src/labs/platform/qquickplatformfontdialog.cpp b/src/labs/platform/qquickplatformfontdialog.cpp deleted file mode 100644 index f3eca2c3..00000000 --- a/src/labs/platform/qquickplatformfontdialog.cpp +++ /dev/null @@ -1,208 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformfontdialog_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype FontDialog - \inherits Dialog -//! \instantiates QQuickPlatformFontDialog - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief A native font dialog. - - The FontDialog type provides a QML API for native platform font dialogs. - - \image qtlabsplatform-fontdialog-gtk.png - - To show a font dialog, construct an instance of FontDialog, set the - desired properties, and call \l {Dialog::}{open()}. The \l currentFont - property can be used to determine the currently selected font in the - dialog. The \l font property is updated only after the final selection - has been made by accepting the dialog. - - \code - MenuItem { - text: "Font" - onTriggered: fontDialog.open() - } - - FontDialog { - id: fontDialog - currentFont.family: document.font - } - - MyDocument { - id: document - font: fontDialog.font - } - \endcode - - \section2 Availability - - A native platform font dialog is currently available on the following platforms: - - \list - \li macOS - \li Linux (when running with the GTK+ platform theme) - \endlist - - \input includes/widgets.qdocinc 1 - - \labs -*/ - -QQuickPlatformFontDialog::QQuickPlatformFontDialog(QObject *parent) - : QQuickPlatformDialog(QPlatformTheme::FontDialog, parent), - m_options(QFontDialogOptions::create()) -{ -} - -/*! - \qmlproperty font Qt.labs.platform::FontDialog::font - - This property holds the final accepted font. - - Unlike the \l currentFont property, the \c font property is not updated - while the user is selecting fonts in the dialog, but only after the final - selection has been made. That is, when the user has clicked \uicontrol OK - to accept a font. Alternatively, the \l {Dialog::}{accepted()} signal - can be handled to get the final selection. - - \sa currentFont, {Dialog::}{accepted()} -*/ -QFont QQuickPlatformFontDialog::font() const -{ - return m_font; -} - -void QQuickPlatformFontDialog::setFont(const QFont &font) -{ - if (m_font == font) - return; - - m_font = font; - setCurrentFont(font); - emit fontChanged(); -} - -/*! - \qmlproperty font Qt.labs.platform::FontDialog::currentFont - - This property holds the currently selected font in the dialog. - - Unlike the \l font property, the \c currentFont property is updated - while the user is selecting fonts in the dialog, even before the final - selection has been made. - - \sa font -*/ -QFont QQuickPlatformFontDialog::currentFont() const -{ - if (QPlatformFontDialogHelper *fontDialog = qobject_cast<QPlatformFontDialogHelper *>(handle())) - return fontDialog->currentFont(); - return m_currentFont; -} - -void QQuickPlatformFontDialog::setCurrentFont(const QFont &font) -{ - if (QPlatformFontDialogHelper *fontDialog = qobject_cast<QPlatformFontDialogHelper *>(handle())) - fontDialog->setCurrentFont(font); - m_currentFont = font; -} - -/*! - \qmlproperty flags Qt.labs.platform::FontDialog::options - - This property holds the various options that affect the look and feel of the dialog. - - By default, all options are disabled. - - Options should be set before showing the dialog. Setting them while the dialog is - visible is not guaranteed to have an immediate effect on the dialog (depending on - the option and on the platform). - - Available options: - \value FontDialog.ScalableFonts Show scalable fonts. - \value FontDialog.NonScalableFonts Show non-scalable fonts. - \value FontDialog.MonospacedFonts Show monospaced fonts. - \value FontDialog.ProportionalFonts Show proportional fonts. - \value FontDialog.NoButtons Don't display \uicontrol OK and \uicontrol Cancel buttons (useful for "live dialogs"). -*/ -QFontDialogOptions::FontDialogOptions QQuickPlatformFontDialog::options() const -{ - return m_options->options(); -} - -void QQuickPlatformFontDialog::setOptions(QFontDialogOptions::FontDialogOptions options) -{ - if (options == m_options->options()) - return; - - m_options->setOptions(options); - emit optionsChanged(); -} - -bool QQuickPlatformFontDialog::useNativeDialog() const -{ - return QQuickPlatformDialog::useNativeDialog() - && !m_options->testOption(QFontDialogOptions::DontUseNativeDialog); -} - -void QQuickPlatformFontDialog::onCreate(QPlatformDialogHelper *dialog) -{ - if (QPlatformFontDialogHelper *fontDialog = qobject_cast<QPlatformFontDialogHelper *>(dialog)) { - connect(fontDialog, &QPlatformFontDialogHelper::currentFontChanged, this, &QQuickPlatformFontDialog::currentFontChanged); - fontDialog->setOptions(m_options); - } -} - -void QQuickPlatformFontDialog::onShow(QPlatformDialogHelper *dialog) -{ - m_options->setWindowTitle(title()); - if (QPlatformFontDialogHelper *fontDialog = qobject_cast<QPlatformFontDialogHelper *>(dialog)) - fontDialog->setOptions(m_options); -} - -void QQuickPlatformFontDialog::accept() -{ - setFont(currentFont()); - QQuickPlatformDialog::accept(); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/qquickplatformfontdialog_p.h b/src/labs/platform/qquickplatformfontdialog_p.h deleted file mode 100644 index e7946477..00000000 --- a/src/labs/platform/qquickplatformfontdialog_p.h +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMFONTDIALOG_P_H -#define QQUICKPLATFORMFONTDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qquickplatformdialog_p.h" -#include <QtGui/qfont.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QQuickPlatformFontDialog : public QQuickPlatformDialog -{ - Q_OBJECT - Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged FINAL) - Q_PROPERTY(QFont currentFont READ currentFont WRITE setCurrentFont NOTIFY currentFontChanged FINAL) - Q_PROPERTY(QFontDialogOptions::FontDialogOptions options READ options WRITE setOptions NOTIFY optionsChanged FINAL) - Q_FLAGS(QFontDialogOptions::FontDialogOptions) - -public: - explicit QQuickPlatformFontDialog(QObject *parent = nullptr); - - QFont font() const; - void setFont(const QFont &font); - - QFont currentFont() const; - void setCurrentFont(const QFont &font); - - QFontDialogOptions::FontDialogOptions options() const; - void setOptions(QFontDialogOptions::FontDialogOptions options); - -Q_SIGNALS: - void fontChanged(); - void currentFontChanged(); - void optionsChanged(); - -protected: - bool useNativeDialog() const override; - void onCreate(QPlatformDialogHelper *dialog) override; - void onShow(QPlatformDialogHelper *dialog) override; - void accept() override; - -private: - QFont m_font; - QFont m_currentFont; // TODO: QFontDialogOptions::initialFont - QSharedPointer<QFontDialogOptions> m_options; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformFontDialog) - -#endif // QQUICKPLATFORMFONTDIALOG_P_H diff --git a/src/labs/platform/qquickplatformicon.cpp b/src/labs/platform/qquickplatformicon.cpp deleted file mode 100644 index 7096ff8a..00000000 --- a/src/labs/platform/qquickplatformicon.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformicon_p.h" - -QT_BEGIN_NAMESPACE - -QUrl QQuickPlatformIcon::source() const -{ - return m_source; -} - -void QQuickPlatformIcon::setSource(const QUrl& source) -{ - m_source = source; -} - -QString QQuickPlatformIcon::name() const -{ - return m_name; -} - -void QQuickPlatformIcon::setName(const QString& name) -{ - m_name = name; -} - -bool QQuickPlatformIcon::isMask() const -{ - return m_mask; -} - -void QQuickPlatformIcon::setMask(bool mask) -{ - m_mask = mask; -} - -bool QQuickPlatformIcon::operator==(const QQuickPlatformIcon &other) const -{ - return m_source == other.m_source && m_name == other.m_name && m_mask == other.m_mask; -} - -bool QQuickPlatformIcon::operator!=(const QQuickPlatformIcon &other) const -{ - return !(*this == other); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/qquickplatformicon_p.h b/src/labs/platform/qquickplatformicon_p.h deleted file mode 100644 index 9add9d6e..00000000 --- a/src/labs/platform/qquickplatformicon_p.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMICON_P_H -#define QQUICKPLATFORMICON_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qurl.h> -#include <QtCore/qstring.h> - -QT_BEGIN_NAMESPACE - -class QObject; - -class QQuickPlatformIcon -{ - Q_GADGET - Q_PROPERTY(QUrl source READ source WRITE setSource) - Q_PROPERTY(QString name READ name WRITE setName) - Q_PROPERTY(bool mask READ isMask WRITE setMask) - -public: - QUrl source() const; - void setSource(const QUrl &source); - - QString name() const; - void setName(const QString &name); - - bool isMask() const; - void setMask(bool mask); - - bool operator==(const QQuickPlatformIcon &other) const; - bool operator!=(const QQuickPlatformIcon &other) const; - -private: - bool m_mask = false; - QUrl m_source; - QString m_name; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPLATFORMICON_P_H diff --git a/src/labs/platform/qquickplatformiconloader.cpp b/src/labs/platform/qquickplatformiconloader.cpp deleted file mode 100644 index c7b699b2..00000000 --- a/src/labs/platform/qquickplatformiconloader.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformiconloader_p.h" - -#include <QtCore/qobject.h> -#include <QtCore/qmetaobject.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -QQuickPlatformIconLoader::QQuickPlatformIconLoader(int slot, QObject *parent) - : m_parent(parent), - m_slot(slot), - m_enabled(false) -{ - Q_ASSERT(slot != -1 && parent); -} - -bool QQuickPlatformIconLoader::isEnabled() const -{ - return m_enabled; -} - -void QQuickPlatformIconLoader::setEnabled(bool enabled) -{ - m_enabled = enabled; - if (m_enabled) - loadIcon(); -} - -QIcon QQuickPlatformIconLoader::toQIcon() const -{ - QIcon fallback = QPixmap::fromImage(image()); - QIcon icon = QIcon::fromTheme(m_icon.name(), fallback); - icon.setIsMask(m_icon.isMask()); - return icon; -} - -QQuickPlatformIcon QQuickPlatformIconLoader::icon() const -{ - return m_icon; -} - -void QQuickPlatformIconLoader::setIcon(const QQuickPlatformIcon& icon) -{ - m_icon = icon; - if (m_enabled) - loadIcon(); -} - -void QQuickPlatformIconLoader::loadIcon() -{ - if (m_icon.source().isEmpty()) { - clear(m_parent); - } else { - load(qmlEngine(m_parent), m_icon.source()); - if (m_slot != -1 && isLoading()) { - connectFinished(m_parent, m_slot); - m_slot = -1; - } - } - - if (!isLoading()) - m_parent->metaObject()->method(m_slot).invoke(m_parent); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/qquickplatformiconloader_p.h b/src/labs/platform/qquickplatformiconloader_p.h deleted file mode 100644 index d284a513..00000000 --- a/src/labs/platform/qquickplatformiconloader_p.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMICONLOADER_P_H -#define QQUICKPLATFORMICONLOADER_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qurl.h> -#include <QtCore/qstring.h> -#include <QtGui/qicon.h> -#include <QtQuick/private/qquickpixmapcache_p.h> - -#include "qquickplatformicon_p.h" - -QT_BEGIN_NAMESPACE - -class QObject; - -class QQuickPlatformIconLoader : public QQuickPixmap -{ -public: - QQuickPlatformIconLoader(int slot, QObject *parent); - - bool isEnabled() const; - void setEnabled(bool enabled); - - QIcon toQIcon() const; - - QQuickPlatformIcon icon() const; - void setIcon(const QQuickPlatformIcon &icon); - -private: - void loadIcon(); - - QObject *m_parent; - int m_slot; - bool m_enabled; - QQuickPlatformIcon m_icon; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPLATFORMICONLOADER_P_H diff --git a/src/labs/platform/qquickplatformmenu.cpp b/src/labs/platform/qquickplatformmenu.cpp deleted file mode 100644 index 16dffd5e..00000000 --- a/src/labs/platform/qquickplatformmenu.cpp +++ /dev/null @@ -1,895 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformmenu_p.h" -#include "qquickplatformmenubar_p.h" -#include "qquickplatformmenuitem_p.h" -#include "qquickplatformiconloader_p.h" - -#include <QtCore/qloggingcategory.h> -#include <QtGui/qicon.h> -#include <QtGui/qcursor.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtGui/private/qguiapplication_p.h> -#include <QtGui/private/qhighdpiscaling_p.h> -#include <QtQml/private/qqmlengine_p.h> -#include <QtQml/private/qv4scopedvalue_p.h> -#include <QtQml/private/qv4qobjectwrapper_p.h> -#include <QtQuick/qquickrendercontrol.h> -#include <QtQuick/qquickwindow.h> -#include <QtQuick/qquickitem.h> - -#include "widgets/qwidgetplatform_p.h" - -#if QT_CONFIG(systemtrayicon) -#include "qquickplatformsystemtrayicon_p.h" -#endif - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Menu - \inherits QtObject -//! \instantiates QQuickPlatformMenu - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief A native menu. - - The Menu type provides a QML API for native platform menu popups. - - \image qtlabsplatform-menu.png - - Menu can be used in a \l MenuBar, or as a stand-alone context menu. - The following example shows how to open a context menu on right mouse - click: - - \code - MouseArea { - anchors.fill: parent - acceptedButtons: Qt.RightButton - onClicked: zoomMenu.open() - } - - Menu { - id: zoomMenu - - MenuItem { - text: qsTr("Zoom In") - shortcut: StandardKey.ZoomIn - onTriggered: zoomIn() - } - - MenuItem { - text: qsTr("Zoom Out") - shortcut: StandardKey.ZoomOut - onTriggered: zoomOut() - } - } - \endcode - - \section2 Submenus - - To create submenus, declare a Menu as a child of another Menu: - - \qml - Menu { - title: qsTr("Edit") - - Menu { - title: qsTr("Advanced") - - MenuItem { - text: qsTr("Auto-indent Selection") - onTriggered: autoIndentSelection() - } - - MenuItem { - text: qsTr("Rewrap Paragraph") - onTriggered: rewrapParagraph() - } - } - } - \endqml - - \section2 Dynamically Generating Menu Items - - It is possible to dynamically generate menu items. One of the easiest ways - to do so is with \l Instantiator. For example, to implement a - "Recent Files" submenu, where the items are based on a list of files stored - in settings, the following code could be used: - - \qml - Menu { - title: qsTr("File") - - Menu { - id: recentFilesSubMenu - title: qsTr("Recent Files") - enabled: recentFilesInstantiator.count > 0 - - Instantiator { - id: recentFilesInstantiator - model: settings.recentFiles - delegate: MenuItem { - text: settings.displayableFilePath(modelData) - onTriggered: loadFile(modelData) - } - - onObjectAdded: recentFilesSubMenu.insertItem(index, object) - onObjectRemoved: recentFilesSubMenu.removeItem(object) - } - - MenuSeparator {} - - MenuItem { - text: qsTr("Clear Recent Files") - onTriggered: settings.clearRecentFiles() - } - } - } - \endqml - - \section2 Availability - - A native platform menu is currently available on the following platforms: - - \list - \li macOS - \li iOS - \li Android - \li Linux (only available as a stand-alone context menu when running with the GTK+ platform theme) - \endlist - - \input includes/widgets.qdocinc 1 - - \labs - - \sa MenuItem, MenuSeparator, MenuBar -*/ - -/*! - \qmlsignal Qt.labs.platform::Menu::aboutToShow() - - This signal is emitted when the menu is about to be shown to the user. -*/ - -/*! - \qmlsignal Qt.labs.platform::Menu::aboutToHide() - - This signal is emitted when the menu is about to be hidden from the user. -*/ - -Q_DECLARE_LOGGING_CATEGORY(qtLabsPlatformMenus) - -QQuickPlatformMenu::QQuickPlatformMenu(QObject *parent) - : QObject(parent), - m_complete(false), - m_enabled(true), - m_visible(true), - m_minimumWidth(-1), - m_type(QPlatformMenu::DefaultMenu), - m_menuBar(nullptr), - m_parentMenu(nullptr), - m_systemTrayIcon(nullptr), - m_menuItem(nullptr), - m_iconLoader(nullptr), - m_handle(nullptr) -{ -} - -QQuickPlatformMenu::~QQuickPlatformMenu() -{ - if (m_menuBar) - m_menuBar->removeMenu(this); - if (m_parentMenu) - m_parentMenu->removeMenu(this); - - unparentSubmenus(); - - delete m_iconLoader; - m_iconLoader = nullptr; - delete m_handle; - m_handle = nullptr; -} - -void QQuickPlatformMenu::unparentSubmenus() -{ - for (QQuickPlatformMenuItem *item : qAsConst(m_items)) { - if (QQuickPlatformMenu *subMenu = item->subMenu()) - subMenu->setParentMenu(nullptr); - item->setMenu(nullptr); - } -} - -QPlatformMenu *QQuickPlatformMenu::handle() const -{ - return m_handle; -} - -QPlatformMenu * QQuickPlatformMenu::create() -{ - if (!m_handle) { - if (m_menuBar && m_menuBar->handle()) - m_handle = m_menuBar->handle()->createMenu(); - else if (m_parentMenu && m_parentMenu->handle()) - m_handle = m_parentMenu->handle()->createSubMenu(); -#if QT_CONFIG(systemtrayicon) - else if (m_systemTrayIcon && m_systemTrayIcon->handle()) - m_handle = m_systemTrayIcon->handle()->createMenu(); -#endif - - // TODO: implement ^ - // - QCocoaMenuBar::createMenu() - // - QCocoaMenu::createSubMenu() - // - QCocoaSystemTrayIcon::createMenu() - if (!m_handle) - m_handle = QGuiApplicationPrivate::platformTheme()->createPlatformMenu(); - - if (!m_handle) - m_handle = QWidgetPlatform::createMenu(); - - qCDebug(qtLabsPlatformMenus) << "Menu ->" << m_handle; - - if (m_handle) { - connect(m_handle, &QPlatformMenu::aboutToShow, this, &QQuickPlatformMenu::aboutToShow); - connect(m_handle, &QPlatformMenu::aboutToHide, this, &QQuickPlatformMenu::aboutToHide); - - for (QQuickPlatformMenuItem *item : qAsConst(m_items)) - m_handle->insertMenuItem(item->create(), nullptr); - - if (m_menuItem) { - if (QPlatformMenuItem *handle = m_menuItem->create()) - handle->setMenu(m_handle); - } - } - } - return m_handle; -} - -void QQuickPlatformMenu::destroy() -{ - if (!m_handle) - return; - - // Ensure that all submenus are unparented before we are destroyed, - // so that they don't try to access a destroyed menu. - unparentSubmenus(); - - delete m_handle; - m_handle = nullptr; -} - -void QQuickPlatformMenu::sync() -{ - if (!m_complete || !create()) - return; - - m_handle->setText(m_title); - m_handle->setEnabled(m_enabled); - m_handle->setVisible(m_visible); - m_handle->setMinimumWidth(m_minimumWidth); - m_handle->setMenuType(m_type); - m_handle->setFont(m_font); - - if (m_menuBar && m_menuBar->handle()) - m_menuBar->handle()->syncMenu(m_handle); -#if QT_CONFIG(systemtrayicon) - else if (m_systemTrayIcon && m_systemTrayIcon->handle()) - m_systemTrayIcon->handle()->updateMenu(m_handle); -#endif - - for (QQuickPlatformMenuItem *item : qAsConst(m_items)) - item->sync(); -} - -/*! - \qmldefault - \qmlproperty list<Object> Qt.labs.platform::Menu::data - - This default property holds the list of all objects declared as children of - the menu. The data property includes objects that are not \l MenuItem instances, - such as \l Timer and \l QtObject. - - \sa items -*/ -QQmlListProperty<QObject> QQuickPlatformMenu::data() -{ - return QQmlListProperty<QObject>(this, nullptr, data_append, data_count, data_at, data_clear); -} - -/*! - \qmlproperty list<MenuItem> Qt.labs.platform::Menu::items - - This property holds the list of items in the menu. -*/ -QQmlListProperty<QQuickPlatformMenuItem> QQuickPlatformMenu::items() -{ - return QQmlListProperty<QQuickPlatformMenuItem>(this, nullptr, items_append, items_count, items_at, items_clear); -} - -/*! - \readonly - \qmlproperty MenuBar Qt.labs.platform::Menu::menuBar - - This property holds the menubar that the menu belongs to, or \c null if the - menu is not in a menubar. -*/ -QQuickPlatformMenuBar *QQuickPlatformMenu::menuBar() const -{ - return m_menuBar; -} - -void QQuickPlatformMenu::setMenuBar(QQuickPlatformMenuBar *menuBar) -{ - if (m_menuBar == menuBar) - return; - - m_menuBar = menuBar; - destroy(); - emit menuBarChanged(); -} - -/*! - \readonly - \qmlproperty Menu Qt.labs.platform::Menu::parentMenu - - This property holds the parent menu that the menu belongs to, or \c null if the - menu is not a sub-menu. -*/ -QQuickPlatformMenu *QQuickPlatformMenu::parentMenu() const -{ - return m_parentMenu; -} - -void QQuickPlatformMenu::setParentMenu(QQuickPlatformMenu *menu) -{ - if (m_parentMenu == menu) - return; - - m_parentMenu = menu; - destroy(); - emit parentMenuChanged(); -} - -/*! - \readonly - \qmlproperty SystemTrayIcon Qt.labs.platform::Menu::systemTrayIcon - - This property holds the system tray icon that the menu belongs to, or \c null - if the menu is not in a system tray icon. -*/ -QQuickPlatformSystemTrayIcon *QQuickPlatformMenu::systemTrayIcon() const -{ - return m_systemTrayIcon; -} - -void QQuickPlatformMenu::setSystemTrayIcon(QQuickPlatformSystemTrayIcon *icon) -{ - if (m_systemTrayIcon == icon) - return; - - m_systemTrayIcon = icon; - destroy(); - emit systemTrayIconChanged(); -} - -/*! - \readonly - \qmlproperty MenuItem Qt.labs.platform::Menu::menuItem - - This property holds the item that presents the menu (in a parent menu). -*/ -QQuickPlatformMenuItem *QQuickPlatformMenu::menuItem() const -{ - if (!m_menuItem) { - QQuickPlatformMenu *that = const_cast<QQuickPlatformMenu *>(this); - m_menuItem = new QQuickPlatformMenuItem(that); - m_menuItem->setSubMenu(that); - m_menuItem->setText(m_title); - m_menuItem->setIcon(icon()); - m_menuItem->setVisible(m_visible); - m_menuItem->setEnabled(m_enabled); - m_menuItem->componentComplete(); - } - return m_menuItem; -} - -/*! - \qmlproperty bool Qt.labs.platform::Menu::enabled - - This property holds whether the menu is enabled. The default value is \c true. -*/ -bool QQuickPlatformMenu::isEnabled() const -{ - return m_enabled; -} - -void QQuickPlatformMenu::setEnabled(bool enabled) -{ - if (m_enabled == enabled) - return; - - if (m_menuItem) - m_menuItem->setEnabled(enabled); - - m_enabled = enabled; - sync(); - emit enabledChanged(); -} - -/*! - \qmlproperty bool Qt.labs.platform::Menu::visible - - This property holds whether the menu is visible. The default value is \c true. -*/ -bool QQuickPlatformMenu::isVisible() const -{ - return m_visible; -} - -void QQuickPlatformMenu::setVisible(bool visible) -{ - if (m_visible == visible) - return; - - if (m_menuItem) - m_menuItem->setVisible(visible); - - m_visible = visible; - sync(); - emit visibleChanged(); -} - -/*! - \qmlproperty int Qt.labs.platform::Menu::minimumWidth - - This property holds the minimum width of the menu. The default value is \c -1 (no minimum width). -*/ -int QQuickPlatformMenu::minimumWidth() const -{ - return m_minimumWidth; -} - -void QQuickPlatformMenu::setMinimumWidth(int width) -{ - if (m_minimumWidth == width) - return; - - m_minimumWidth = width; - sync(); - emit minimumWidthChanged(); -} - -/*! - \qmlproperty enumeration Qt.labs.platform::Menu::type - - This property holds the type of the menu. - - Available values: - \value Menu.DefaultMenu A normal menu (default). - \value Menu.EditMenu An edit menu with pre-populated cut, copy and paste items. -*/ -QPlatformMenu::MenuType QQuickPlatformMenu::type() const -{ - return m_type; -} - -void QQuickPlatformMenu::setType(QPlatformMenu::MenuType type) -{ - if (m_type == type) - return; - - m_type = type; - sync(); - emit typeChanged(); -} - -/*! - \qmlproperty string Qt.labs.platform::Menu::title - - This property holds the menu's title. -*/ -QString QQuickPlatformMenu::title() const -{ - return m_title; -} - -void QQuickPlatformMenu::setTitle(const QString &title) -{ - if (m_title == title) - return; - - if (m_menuItem) - m_menuItem->setText(title); - - m_title = title; - sync(); - emit titleChanged(); -} - -/*! - \qmlproperty font Qt.labs.platform::Menu::font - - This property holds the menu's font. - - \sa text -*/ -QFont QQuickPlatformMenu::font() const -{ - return m_font; -} - -void QQuickPlatformMenu::setFont(const QFont& font) -{ - if (m_font == font) - return; - - m_font = font; - sync(); - emit fontChanged(); -} - -/*! - \since Qt.labs.platform 1.1 (Qt 5.12) - \qmlproperty url Qt.labs.platform::Menu::icon.source - \qmlproperty string Qt.labs.platform::Menu::icon.name - \qmlproperty bool Qt.labs.platform::Menu::icon.mask - - This property holds the menu item's icon. -*/ -QQuickPlatformIcon QQuickPlatformMenu::icon() const -{ - if (!m_iconLoader) - return QQuickPlatformIcon(); - - return iconLoader()->icon(); -} - -void QQuickPlatformMenu::setIcon(const QQuickPlatformIcon &icon) -{ - if (iconLoader()->icon() == icon) - return; - - if (m_menuItem) - m_menuItem->setIcon(icon); - - iconLoader()->setIcon(icon); - emit iconChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::Menu::addItem(MenuItem item) - - Adds an \a item to the end of the menu. -*/ -void QQuickPlatformMenu::addItem(QQuickPlatformMenuItem *item) -{ - insertItem(m_items.count(), item); -} - -/*! - \qmlmethod void Qt.labs.platform::Menu::insertItem(int index, MenuItem item) - - Inserts an \a item at the specified \a index in the menu. -*/ -void QQuickPlatformMenu::insertItem(int index, QQuickPlatformMenuItem *item) -{ - if (!item || m_items.contains(item)) - return; - - m_items.insert(index, item); - m_data.append(item); - item->setMenu(this); - if (m_handle && item->create()) { - QQuickPlatformMenuItem *before = m_items.value(index + 1); - m_handle->insertMenuItem(item->handle(), before ? before->create() : nullptr); - } - sync(); - emit itemsChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::Menu::removeItem(MenuItem item) - - Removes an \a item from the menu. -*/ -void QQuickPlatformMenu::removeItem(QQuickPlatformMenuItem *item) -{ - if (!item || !m_items.removeOne(item)) - return; - - m_data.removeOne(item); - if (m_handle) - m_handle->removeMenuItem(item->handle()); - item->setMenu(nullptr); - sync(); - emit itemsChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::Menu::addMenu(Menu submenu) - - Adds a \a submenu to the end of the menu. -*/ -void QQuickPlatformMenu::addMenu(QQuickPlatformMenu *menu) -{ - insertMenu(m_items.count(), menu); -} - -/*! - \qmlmethod void Qt.labs.platform::Menu::insertMenu(int index, Menu submenu) - - Inserts a \a submenu at the specified \a index in the menu. -*/ -void QQuickPlatformMenu::insertMenu(int index, QQuickPlatformMenu *menu) -{ - if (!menu) - return; - - menu->setParentMenu(this); - insertItem(index, menu->menuItem()); -} - -/*! - \qmlmethod void Qt.labs.platform::Menu::removeMenu(Menu submenu) - - Removes a \a submenu from the menu. -*/ -void QQuickPlatformMenu::removeMenu(QQuickPlatformMenu *menu) -{ - if (!menu) - return; - - menu->setParentMenu(nullptr); - removeItem(menu->menuItem()); -} - -/*! - \qmlmethod void Qt.labs.platform::Menu::clear() - - Removes all items from the menu. -*/ -void QQuickPlatformMenu::clear() -{ - if (m_items.isEmpty()) - return; - - for (QQuickPlatformMenuItem *item : qAsConst(m_items)) { - m_data.removeOne(item); - if (m_handle) - m_handle->removeMenuItem(item->handle()); - item->setMenu(nullptr); - delete item; - } - - m_items.clear(); - sync(); - emit itemsChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::Menu::open(MenuItem item) - - Opens the menu at the current mouse position, optionally aligned to a menu \a item. -*/ - -/*! - \qmlmethod void Qt.labs.platform::Menu::open(Item target, MenuItem item) - - Opens the menu at the specified \a target item, optionally aligned to a menu \a item. -*/ -void QQuickPlatformMenu::open(QQmlV4Function *args) -{ - if (!m_handle) - return; - - if (args->length() > 2) { - args->v4engine()->throwTypeError(); - return; - } - - QV4::ExecutionEngine *v4 = args->v4engine(); - QV4::Scope scope(v4); - - QQuickItem *targetItem = nullptr; - if (args->length() > 0) { - QV4::ScopedValue value(scope, (*args)[0]); - QV4::Scoped<QV4::QObjectWrapper> object(scope, value->as<QV4::QObjectWrapper>()); - if (object) - targetItem = qobject_cast<QQuickItem *>(object->object()); - } - - QQuickPlatformMenuItem *menuItem = nullptr; - if (args->length() > 1) { - QV4::ScopedValue value(scope, (*args)[1]); - QV4::Scoped<QV4::QObjectWrapper> object(scope, value->as<QV4::QObjectWrapper>()); - if (object) - menuItem = qobject_cast<QQuickPlatformMenuItem *>(object->object()); - } - - QPoint offset; - QWindow *window = findWindow(targetItem, &offset); - - QRect targetRect; - if (targetItem) { - QRectF sceneBounds = targetItem->mapRectToScene(targetItem->boundingRect()); - targetRect = sceneBounds.toAlignedRect().translated(offset); - } else { -#if QT_CONFIG(cursor) - QPoint pos = QCursor::pos(); - if (window) - pos = window->mapFromGlobal(pos); - targetRect.moveTo(pos); -#endif - } - m_handle->showPopup(window, - QHighDpi::toNativePixels(targetRect, window), - menuItem ? menuItem->handle() : nullptr); -} - -/*! - \qmlmethod void Qt.labs.platform::Menu::close() - - Closes the menu. -*/ -void QQuickPlatformMenu::close() -{ - if (m_handle) - m_handle->dismiss(); -} - -void QQuickPlatformMenu::classBegin() -{ -} - -void QQuickPlatformMenu::componentComplete() -{ - m_complete = true; - if (m_handle && m_iconLoader) - m_iconLoader->setEnabled(true); - sync(); -} - -QQuickPlatformIconLoader *QQuickPlatformMenu::iconLoader() const -{ - if (!m_iconLoader) { - QQuickPlatformMenu *that = const_cast<QQuickPlatformMenu *>(this); - static int slot = staticMetaObject.indexOfSlot("updateIcon()"); - m_iconLoader = new QQuickPlatformIconLoader(slot, that); - m_iconLoader->setEnabled(m_complete); - } - return m_iconLoader; -} - -static QWindow *effectiveWindow(QWindow *window, QPoint *offset) -{ - QQuickWindow *quickWindow = qobject_cast<QQuickWindow *>(window); - if (quickWindow) { - QWindow *renderWindow = QQuickRenderControl::renderWindowFor(quickWindow, offset); - if (renderWindow) - return renderWindow; - } - return window; -} - -QWindow *QQuickPlatformMenu::findWindow(QQuickItem *target, QPoint *offset) const -{ - if (target) - return effectiveWindow(target->window(), offset); - - if (m_menuBar && m_menuBar->window()) - return effectiveWindow(m_menuBar->window(), offset); - - QObject *obj = parent(); - while (obj) { - QWindow *window = qobject_cast<QWindow *>(obj); - if (window) - return effectiveWindow(window, offset); - - QQuickItem *item = qobject_cast<QQuickItem *>(obj); - if (item && item->window()) - return effectiveWindow(item->window(), offset); - - obj = obj->parent(); - } - return nullptr; -} - -void QQuickPlatformMenu::data_append(QQmlListProperty<QObject> *property, QObject *object) -{ - QQuickPlatformMenu *menu = static_cast<QQuickPlatformMenu *>(property->object); - if (QQuickPlatformMenuItem *item = qobject_cast<QQuickPlatformMenuItem *>(object)) - menu->addItem(item); - else if (QQuickPlatformMenu *subMenu = qobject_cast<QQuickPlatformMenu *>(object)) - menu->addMenu(subMenu); - else - menu->m_data.append(object); -} - -qsizetype QQuickPlatformMenu::data_count(QQmlListProperty<QObject> *property) -{ - QQuickPlatformMenu *menu = static_cast<QQuickPlatformMenu *>(property->object); - return menu->m_data.count(); -} - -QObject *QQuickPlatformMenu::data_at(QQmlListProperty<QObject> *property, qsizetype index) -{ - QQuickPlatformMenu *menu = static_cast<QQuickPlatformMenu *>(property->object); - return menu->m_data.value(index); -} - -void QQuickPlatformMenu::data_clear(QQmlListProperty<QObject> *property) -{ - QQuickPlatformMenu *menu = static_cast<QQuickPlatformMenu *>(property->object); - menu->m_data.clear(); -} - -void QQuickPlatformMenu::items_append(QQmlListProperty<QQuickPlatformMenuItem> *property, QQuickPlatformMenuItem *item) -{ - QQuickPlatformMenu *menu = static_cast<QQuickPlatformMenu *>(property->object); - menu->addItem(item); -} - -qsizetype QQuickPlatformMenu::items_count(QQmlListProperty<QQuickPlatformMenuItem> *property) -{ - QQuickPlatformMenu *menu = static_cast<QQuickPlatformMenu *>(property->object); - return menu->m_items.count(); -} - -QQuickPlatformMenuItem *QQuickPlatformMenu::items_at(QQmlListProperty<QQuickPlatformMenuItem> *property, qsizetype index) -{ - QQuickPlatformMenu *menu = static_cast<QQuickPlatformMenu *>(property->object); - return menu->m_items.value(index); -} - -void QQuickPlatformMenu::items_clear(QQmlListProperty<QQuickPlatformMenuItem> *property) -{ - QQuickPlatformMenu *menu = static_cast<QQuickPlatformMenu *>(property->object); - menu->clear(); -} - -void QQuickPlatformMenu::updateIcon() -{ - if (!m_handle || !m_iconLoader) - return; - - m_handle->setIcon(m_iconLoader->toQIcon()); - sync(); -} - -QT_END_NAMESPACE - -#include "moc_qquickplatformmenu_p.cpp" diff --git a/src/labs/platform/qquickplatformmenu_p.h b/src/labs/platform/qquickplatformmenu_p.h deleted file mode 100644 index fc66b61b..00000000 --- a/src/labs/platform/qquickplatformmenu_p.h +++ /dev/null @@ -1,213 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMMENU_P_H -#define QQUICKPLATFORMMENU_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtCore/qurl.h> -#include <QtGui/qfont.h> -#include <QtGui/qpa/qplatformmenu.h> -#include <QtQml/qqmlparserstatus.h> -#include <QtQml/qqmllist.h> -#include <QtQml/qqml.h> - -#include "qquickplatformicon_p.h" - -QT_BEGIN_NAMESPACE - -class QIcon; -class QWindow; -class QQuickItem; -class QPlatformMenu; -class QQmlV4Function; -class QQuickPlatformMenuBar; -class QQuickPlatformMenuItem; -class QQuickPlatformIconLoader; -class QQuickPlatformSystemTrayIcon; - -class QQuickPlatformMenu : public QObject, public QQmlParserStatus -{ - Q_OBJECT - Q_INTERFACES(QQmlParserStatus) - Q_PROPERTY(QQmlListProperty<QObject> data READ data FINAL) - Q_PROPERTY(QQmlListProperty<QQuickPlatformMenuItem> items READ items NOTIFY itemsChanged FINAL) - Q_PROPERTY(QQuickPlatformMenuBar *menuBar READ menuBar NOTIFY menuBarChanged FINAL) - Q_PROPERTY(QQuickPlatformMenu *parentMenu READ parentMenu NOTIFY parentMenuChanged FINAL) - Q_PROPERTY(QQuickPlatformSystemTrayIcon *systemTrayIcon READ systemTrayIcon NOTIFY systemTrayIconChanged FINAL) - Q_PROPERTY(QQuickPlatformMenuItem *menuItem READ menuItem CONSTANT FINAL) - Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged FINAL) - Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) - Q_PROPERTY(int minimumWidth READ minimumWidth WRITE setMinimumWidth NOTIFY minimumWidthChanged FINAL) - Q_PROPERTY(QPlatformMenu::MenuType type READ type WRITE setType NOTIFY typeChanged FINAL) - Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL) - Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged FINAL) - Q_PROPERTY(QQuickPlatformIcon icon READ icon WRITE setIcon NOTIFY iconChanged FINAL REVISION(1, 1)) - Q_ENUMS(QPlatformMenu::MenuType) - Q_CLASSINFO("DefaultProperty", "data") - -public: - explicit QQuickPlatformMenu(QObject *parent = nullptr); - ~QQuickPlatformMenu(); - - QPlatformMenu *handle() const; - QPlatformMenu *create(); - void destroy(); - void sync(); - - QQmlListProperty<QObject> data(); - QQmlListProperty<QQuickPlatformMenuItem> items(); - - QQuickPlatformMenuBar *menuBar() const; - void setMenuBar(QQuickPlatformMenuBar *menuBar); - - QQuickPlatformMenu *parentMenu() const; - void setParentMenu(QQuickPlatformMenu *menu); - - QQuickPlatformSystemTrayIcon *systemTrayIcon() const; - void setSystemTrayIcon(QQuickPlatformSystemTrayIcon *icon); - - QQuickPlatformMenuItem *menuItem() const; - - bool isEnabled() const; - void setEnabled(bool enabled); - - bool isVisible() const; - void setVisible(bool visible); - - int minimumWidth() const; - void setMinimumWidth(int width); - - QPlatformMenu::MenuType type() const; - void setType(QPlatformMenu::MenuType type); - - QString title() const; - void setTitle(const QString &title); - - QFont font() const; - void setFont(const QFont &font); - - QQuickPlatformIcon icon() const; - void setIcon(const QQuickPlatformIcon &icon); - - Q_INVOKABLE void addItem(QQuickPlatformMenuItem *item); - Q_INVOKABLE void insertItem(int index, QQuickPlatformMenuItem *item); - Q_INVOKABLE void removeItem(QQuickPlatformMenuItem *item); - - Q_INVOKABLE void addMenu(QQuickPlatformMenu *menu); - Q_INVOKABLE void insertMenu(int index, QQuickPlatformMenu *menu); - Q_INVOKABLE void removeMenu(QQuickPlatformMenu *menu); - - Q_INVOKABLE void clear(); - -public Q_SLOTS: - void open(QQmlV4Function *args); - void close(); - -Q_SIGNALS: - void aboutToShow(); - void aboutToHide(); - - void itemsChanged(); - void menuBarChanged(); - void parentMenuChanged(); - void systemTrayIconChanged(); - void titleChanged(); - void enabledChanged(); - void visibleChanged(); - void minimumWidthChanged(); - void fontChanged(); - void typeChanged(); - Q_REVISION(2, 1) void iconChanged(); - -protected: - void classBegin() override; - void componentComplete() override; - - QQuickPlatformIconLoader *iconLoader() const; - - QWindow *findWindow(QQuickItem *target, QPoint *offset) const; - - static void data_append(QQmlListProperty<QObject> *property, QObject *object); - static qsizetype data_count(QQmlListProperty<QObject> *property); - static QObject *data_at(QQmlListProperty<QObject> *property, qsizetype index); - static void data_clear(QQmlListProperty<QObject> *property); - - static void items_append(QQmlListProperty<QQuickPlatformMenuItem> *property, QQuickPlatformMenuItem *item); - static qsizetype items_count(QQmlListProperty<QQuickPlatformMenuItem> *property); - static QQuickPlatformMenuItem *items_at(QQmlListProperty<QQuickPlatformMenuItem> *property, qsizetype index); - static void items_clear(QQmlListProperty<QQuickPlatformMenuItem> *property); - -private Q_SLOTS: - void updateIcon(); - -private: - void unparentSubmenus(); - - bool m_complete; - bool m_enabled; - bool m_visible; - int m_minimumWidth; - QPlatformMenu::MenuType m_type; - QString m_title; - QFont m_font; - QList<QObject *> m_data; - QList<QQuickPlatformMenuItem *> m_items; - QQuickPlatformMenuBar *m_menuBar; - QQuickPlatformMenu *m_parentMenu; - QQuickPlatformSystemTrayIcon *m_systemTrayIcon; - mutable QQuickPlatformMenuItem *m_menuItem; - mutable QQuickPlatformIconLoader *m_iconLoader; - QPlatformMenu *m_handle; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformMenu) -Q_DECLARE_METATYPE(QPlatformMenu::MenuType) - -#endif // QQUICKPLATFORMMENU_P_H diff --git a/src/labs/platform/qquickplatformmenubar.cpp b/src/labs/platform/qquickplatformmenubar.cpp deleted file mode 100644 index 3b1f4b74..00000000 --- a/src/labs/platform/qquickplatformmenubar.cpp +++ /dev/null @@ -1,333 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformmenubar_p.h" -#include "qquickplatformmenu_p.h" - -#include <QtCore/qloggingcategory.h> -#include <QtGui/qpa/qplatformmenu.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtGui/private/qguiapplication_p.h> -#include <QtQuick/qquickwindow.h> -#include <QtQuick/qquickitem.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype MenuBar - \inherits QtObject -//! \instantiates QQuickPlatformMenuBar - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief A native menubar. - - The MenuBar type provides a QML API for native platform menubars. - - \image qtlabsplatform-menubar.png - - A menubar consists of a list of drop-down menus. - - \code - MenuBar { - id: menuBar - - Menu { - id: fileMenu - title: qsTr("File") - // ... - } - - Menu { - id: editMenu - title: qsTr("&Edit") - // ... - } - - Menu { - id: viewMenu - title: qsTr("&View") - // ... - } - - Menu { - id: helpMenu - title: qsTr("&Help") - // ... - } - } - \endcode - - MenuBar is currently available on the following platforms: - - \list - \li macOS - \li Android - \li Linux (only available on desktop environments that provide a global D-Bus menu bar) - \endlist - - \labs - - \sa Menu -*/ - -Q_DECLARE_LOGGING_CATEGORY(qtLabsPlatformMenus) - -QQuickPlatformMenuBar::QQuickPlatformMenuBar(QObject *parent) - : QObject(parent), - m_complete(false), - m_window(nullptr), - m_handle(nullptr) -{ - m_handle = QGuiApplicationPrivate::platformTheme()->createPlatformMenuBar(); - qCDebug(qtLabsPlatformMenus) << "MenuBar ->" << m_handle; -} - -QQuickPlatformMenuBar::~QQuickPlatformMenuBar() -{ - for (QQuickPlatformMenu *menu : qAsConst(m_menus)) - menu->setMenuBar(nullptr); - delete m_handle; - m_handle = nullptr; -} - -QPlatformMenuBar *QQuickPlatformMenuBar::handle() const -{ - return m_handle; -} - -/*! - \qmldefault - \qmlproperty list<Object> Qt.labs.platform::MenuBar::data - - This default property holds the list of all objects declared as children of - the menubar. The data property includes objects that are not \l Menu instances, - such as \l Timer and \l QtObject. - - \sa menus -*/ -QQmlListProperty<QObject> QQuickPlatformMenuBar::data() -{ - return QQmlListProperty<QObject>(this, nullptr, data_append, data_count, data_at, data_clear); -} - -/*! - \qmlproperty list<Menu> Qt.labs.platform::MenuBar::menus - - This property holds the list of menus in the menubar. -*/ -QQmlListProperty<QQuickPlatformMenu> QQuickPlatformMenuBar::menus() -{ - return QQmlListProperty<QQuickPlatformMenu>(this, nullptr, menus_append, menus_count, menus_at, menus_clear); -} - -/*! - \qmlproperty Window Qt.labs.platform::MenuBar::window - - This property holds the menubar's window. - - Unless explicitly set, the window is automatically resolved by iterating - the QML parent objects until a \l Window or an \l Item that has a window - is found. -*/ -QWindow *QQuickPlatformMenuBar::window() const -{ - return m_window; -} - -void QQuickPlatformMenuBar::setWindow(QWindow *window) -{ - if (m_window == window) - return; - - if (m_handle) - m_handle->handleReparent(window); - - m_window = window; - emit windowChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::MenuBar::addMenu(Menu menu) - - Adds a \a menu to end of the menubar. -*/ -void QQuickPlatformMenuBar::addMenu(QQuickPlatformMenu *menu) -{ - insertMenu(m_menus.count(), menu); -} - -/*! - \qmlmethod void Qt.labs.platform::MenuBar::insertMenu(int index, Menu menu) - - Inserts a \a menu at the specified \a index in the menubar. -*/ -void QQuickPlatformMenuBar::insertMenu(int index, QQuickPlatformMenu *menu) -{ - if (!menu || m_menus.contains(menu)) - return; - - QQuickPlatformMenu *before = m_menus.value(index); - m_menus.insert(index, menu); - m_data.append(menu); - menu->setMenuBar(this); - if (m_handle) - m_handle->insertMenu(menu->create(), before ? before->handle() : nullptr); - menu->sync(); - emit menusChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::MenuBar::removeMenu(Menu menu) - - Removes a \a menu from the menubar. -*/ -void QQuickPlatformMenuBar::removeMenu(QQuickPlatformMenu *menu) -{ - if (!menu || !m_menus.removeOne(menu)) - return; - - m_data.removeOne(menu); - if (m_handle) - m_handle->removeMenu(menu->handle()); - menu->setMenuBar(nullptr); - emit menusChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::MenuBar::clear() - - Removes all menus from the menubar. -*/ -void QQuickPlatformMenuBar::clear() -{ - if (m_menus.isEmpty()) - return; - - for (QQuickPlatformMenu *menu : qAsConst(m_menus)) { - m_data.removeOne(menu); - if (m_handle) - m_handle->removeMenu(menu->handle()); - menu->setMenuBar(nullptr); - delete menu; - } - - m_menus.clear(); - emit menusChanged(); -} - -void QQuickPlatformMenuBar::classBegin() -{ -} - -void QQuickPlatformMenuBar::componentComplete() -{ - m_complete = true; - for (QQuickPlatformMenu *menu : qAsConst(m_menus)) - menu->sync(); - if (!m_window) - setWindow(findWindow()); -} - -QWindow *QQuickPlatformMenuBar::findWindow() const -{ - QObject *obj = parent(); - while (obj) { - QWindow *window = qobject_cast<QWindow *>(obj); - if (window) - return window; - QQuickItem *item = qobject_cast<QQuickItem *>(obj); - if (item && item->window()) - return item->window(); - obj = obj->parent(); - } - return nullptr; -} - -void QQuickPlatformMenuBar::data_append(QQmlListProperty<QObject> *property, QObject *object) -{ - QQuickPlatformMenuBar *menuBar = static_cast<QQuickPlatformMenuBar *>(property->object); - QQuickPlatformMenu *menu = qobject_cast<QQuickPlatformMenu *>(object); - if (menu) - menuBar->addMenu(menu); - else - menuBar->m_data.append(object); -} - -qsizetype QQuickPlatformMenuBar::data_count(QQmlListProperty<QObject> *property) -{ - QQuickPlatformMenuBar *menuBar = static_cast<QQuickPlatformMenuBar *>(property->object); - return menuBar->m_data.count(); -} - -QObject *QQuickPlatformMenuBar::data_at(QQmlListProperty<QObject> *property, qsizetype index) -{ - QQuickPlatformMenuBar *menuBar = static_cast<QQuickPlatformMenuBar *>(property->object); - return menuBar->m_data.value(index); -} - -void QQuickPlatformMenuBar::data_clear(QQmlListProperty<QObject> *property) -{ - QQuickPlatformMenuBar *menuBar = static_cast<QQuickPlatformMenuBar *>(property->object); - menuBar->m_data.clear(); -} - -void QQuickPlatformMenuBar::menus_append(QQmlListProperty<QQuickPlatformMenu> *property, QQuickPlatformMenu *menu) -{ - QQuickPlatformMenuBar *menuBar = static_cast<QQuickPlatformMenuBar *>(property->object); - menuBar->addMenu(menu); -} - -qsizetype QQuickPlatformMenuBar::menus_count(QQmlListProperty<QQuickPlatformMenu> *property) -{ - QQuickPlatformMenuBar *menuBar = static_cast<QQuickPlatformMenuBar *>(property->object); - return menuBar->m_menus.count(); -} - -QQuickPlatformMenu *QQuickPlatformMenuBar::menus_at(QQmlListProperty<QQuickPlatformMenu> *property, qsizetype index) -{ - QQuickPlatformMenuBar *menuBar = static_cast<QQuickPlatformMenuBar *>(property->object); - return menuBar->m_menus.value(index); -} - -void QQuickPlatformMenuBar::menus_clear(QQmlListProperty<QQuickPlatformMenu> *property) -{ - QQuickPlatformMenuBar *menuBar = static_cast<QQuickPlatformMenuBar *>(property->object); - menuBar->clear(); -} - -QT_END_NAMESPACE - -#include "moc_qquickplatformmenubar_p.cpp" diff --git a/src/labs/platform/qquickplatformmenubar_p.h b/src/labs/platform/qquickplatformmenubar_p.h deleted file mode 100644 index e644c86c..00000000 --- a/src/labs/platform/qquickplatformmenubar_p.h +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMMENUBAR_P_H -#define QQUICKPLATFORMMENUBAR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtQml/qqmlparserstatus.h> -#include <QtQml/qqmllist.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QWindow; -class QPlatformMenuBar; -class QQuickPlatformMenu; - -class QQuickPlatformMenuBar : public QObject, public QQmlParserStatus -{ - Q_OBJECT - Q_INTERFACES(QQmlParserStatus) - Q_PROPERTY(QQmlListProperty<QObject> data READ data FINAL) - Q_PROPERTY(QQmlListProperty<QQuickPlatformMenu> menus READ menus NOTIFY menusChanged FINAL) - Q_PROPERTY(QWindow *window READ window WRITE setWindow NOTIFY windowChanged FINAL) - Q_CLASSINFO("DefaultProperty", "data") - -public: - explicit QQuickPlatformMenuBar(QObject *parent = nullptr); - ~QQuickPlatformMenuBar(); - - QPlatformMenuBar *handle() const; - - QQmlListProperty<QObject> data(); - QQmlListProperty<QQuickPlatformMenu> menus(); - - QWindow *window() const; - void setWindow(QWindow *window); - - Q_INVOKABLE void addMenu(QQuickPlatformMenu *menu); - Q_INVOKABLE void insertMenu(int index, QQuickPlatformMenu *menu); - Q_INVOKABLE void removeMenu(QQuickPlatformMenu *menu); - Q_INVOKABLE void clear(); - -Q_SIGNALS: - void menusChanged(); - void windowChanged(); - -protected: - void classBegin() override; - void componentComplete() override; - - QWindow *findWindow() const; - - static void data_append(QQmlListProperty<QObject> *property, QObject *object); - static qsizetype data_count(QQmlListProperty<QObject> *property); - static QObject *data_at(QQmlListProperty<QObject> *property, qsizetype index); - static void data_clear(QQmlListProperty<QObject> *property); - - static void menus_append(QQmlListProperty<QQuickPlatformMenu> *property, QQuickPlatformMenu *menu); - static qsizetype menus_count(QQmlListProperty<QQuickPlatformMenu> *property); - static QQuickPlatformMenu *menus_at(QQmlListProperty<QQuickPlatformMenu> *property, qsizetype index); - static void menus_clear(QQmlListProperty<QQuickPlatformMenu> *property); - -private: - bool m_complete; - QWindow *m_window; - QList<QObject *> m_data; - QList<QQuickPlatformMenu *> m_menus; - QPlatformMenuBar *m_handle; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformMenuBar) - -#endif // QQUICKPLATFORMMENUBAR_P_H diff --git a/src/labs/platform/qquickplatformmenuitem.cpp b/src/labs/platform/qquickplatformmenuitem.cpp deleted file mode 100644 index 4f61d423..00000000 --- a/src/labs/platform/qquickplatformmenuitem.cpp +++ /dev/null @@ -1,641 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformmenuitem_p.h" -#include "qquickplatformmenu_p.h" -#include "qquickplatformmenuitemgroup_p.h" -#include "qquickplatformiconloader_p.h" - -#include <QtGui/qicon.h> -#if QT_CONFIG(shortcut) -#include <QtGui/qkeysequence.h> -#endif -#include <QtGui/qpa/qplatformtheme.h> -#include <QtGui/private/qguiapplication_p.h> -#include <QtQuickTemplates2/private/qquickshortcutcontext_p_p.h> - -#include "widgets/qwidgetplatform_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype MenuItem - \inherits QtObject -//! \instantiates QQuickPlatformMenuItem - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief A native menu item. - - The MenuItem type provides a QML API for native platform menu items. - - \image qtlabsplatform-menu.png - - A menu item consists of an \l icon, \l text, and \l shortcut. - - \code - Menu { - id: zoomMenu - - MenuItem { - text: qsTr("Zoom In") - shortcut: StandardKey.ZoomIn - onTriggered: zoomIn() - } - - MenuItem { - text: qsTr("Zoom Out") - shortcut: StandardKey.ZoomOut - onTriggered: zoomOut() - } - } - \endcode - - \labs - - \sa Menu, MenuItemGroup -*/ - -/*! - \qmlsignal Qt.labs.platform::MenuItem::triggered() - - This signal is emitted when the menu item is triggered by the user. -*/ - -/*! - \qmlsignal Qt.labs.platform::MenuItem::hovered() - - This signal is emitted when the menu item is hovered by the user. -*/ - -QQuickPlatformMenuItem::QQuickPlatformMenuItem(QObject *parent) - : QObject(parent), - m_complete(false), - m_enabled(true), - m_visible(true), - m_separator(false), - m_checkable(false), - m_checked(false), - m_role(QPlatformMenuItem::TextHeuristicRole), - m_menu(nullptr), - m_subMenu(nullptr), - m_group(nullptr), - m_iconLoader(nullptr), - m_handle(nullptr) -{ -} - -QQuickPlatformMenuItem::~QQuickPlatformMenuItem() -{ - if (m_menu) - m_menu->removeItem(this); - if (m_group) - m_group->removeItem(this); -#if QT_CONFIG(shortcut) - if (m_shortcutId != -1) { - QKeySequence sequence; - if (m_shortcut.metaType().id() == QMetaType::Int) - sequence = QKeySequence(static_cast<QKeySequence::StandardKey>(m_shortcut.toInt())); - else - sequence = QKeySequence::fromString(m_shortcut.toString()); - QGuiApplicationPrivate::instance()->shortcutMap.removeShortcut(m_shortcutId, this, sequence); - } -#endif - delete m_iconLoader; - m_iconLoader = nullptr; - delete m_handle; - m_handle = nullptr; -} - -QPlatformMenuItem *QQuickPlatformMenuItem::handle() const -{ - return m_handle; -} - -QPlatformMenuItem *QQuickPlatformMenuItem::create() -{ - if (!m_handle && m_menu && m_menu->handle()) { - m_handle = m_menu->handle()->createMenuItem(); - - // TODO: implement QCocoaMenu::createMenuItem() - if (!m_handle) - m_handle = QGuiApplicationPrivate::platformTheme()->createPlatformMenuItem(); - - if (!m_handle) - m_handle = QWidgetPlatform::createMenuItem(); - - if (m_handle) { - connect(m_handle, &QPlatformMenuItem::activated, this, &QQuickPlatformMenuItem::activate); - connect(m_handle, &QPlatformMenuItem::hovered, this, &QQuickPlatformMenuItem::hovered); - } - } - return m_handle; -} - -void QQuickPlatformMenuItem::sync() -{ - if (!m_complete || !create()) - return; - - m_handle->setEnabled(isEnabled()); - m_handle->setVisible(isVisible()); - m_handle->setIsSeparator(m_separator); - m_handle->setCheckable(m_checkable); - m_handle->setChecked(m_checked); - m_handle->setRole(m_role); - m_handle->setText(m_text); - m_handle->setFont(m_font); - m_handle->setHasExclusiveGroup(m_group && m_group->isExclusive()); - if (m_subMenu) { - // Sync first as dynamically created menus may need to get the - // handle recreated - m_subMenu->sync(); - if (m_subMenu->handle()) - m_handle->setMenu(m_subMenu->handle()); - } - -#if QT_CONFIG(shortcut) - QKeySequence sequence; - if (m_shortcut.metaType().id() == QMetaType::Int) - sequence = QKeySequence(static_cast<QKeySequence::StandardKey>(m_shortcut.toInt())); - else - sequence = QKeySequence::fromString(m_shortcut.toString()); - m_handle->setShortcut(sequence.toString()); -#endif - - if (m_menu && m_menu->handle()) - m_menu->handle()->syncMenuItem(m_handle); -} - -/*! - \readonly - \qmlproperty Menu Qt.labs.platform::MenuItem::menu - - This property holds the menu that the item belongs to, or \c null if the - item is not in a menu. -*/ -QQuickPlatformMenu *QQuickPlatformMenuItem::menu() const -{ - return m_menu; -} - -void QQuickPlatformMenuItem::setMenu(QQuickPlatformMenu *menu) -{ - if (m_menu == menu) - return; - - m_menu = menu; - emit menuChanged(); -} - -/*! - \readonly - \qmlproperty Menu Qt.labs.platform::MenuItem::subMenu - - This property holds the sub-menu that the item contains, or \c null if - the item is not a sub-menu item. -*/ -QQuickPlatformMenu *QQuickPlatformMenuItem::subMenu() const -{ - return m_subMenu; -} - -void QQuickPlatformMenuItem::setSubMenu(QQuickPlatformMenu *menu) -{ - if (m_subMenu == menu) - return; - - m_subMenu = menu; - sync(); - emit subMenuChanged(); -} - -/*! - \qmlproperty MenuItemGroup Qt.labs.platform::MenuItem::group - - This property holds the group that the item belongs to, or \c null if the - item is not in a group. -*/ -QQuickPlatformMenuItemGroup *QQuickPlatformMenuItem::group() const -{ - return m_group; -} - -void QQuickPlatformMenuItem::setGroup(QQuickPlatformMenuItemGroup *group) -{ - if (m_group == group) - return; - - bool wasEnabled = isEnabled(); - bool wasVisible = isVisible(); - - if (group) - group->addItem(this); - - m_group = group; - sync(); - emit groupChanged(); - - if (isEnabled() != wasEnabled) - emit enabledChanged(); - if (isVisible() != wasVisible) - emit visibleChanged(); -} - -/*! - \qmlproperty bool Qt.labs.platform::MenuItem::enabled - - This property holds whether the item is enabled. The default value is \c true. - - Disabled items cannot be triggered by the user. They do not disappear from menus, - but they are displayed in a way which indicates that they are unavailable. For - example, they might be displayed using only shades of gray. - - When an item is disabled, it is not possible to trigger it through its \l shortcut. -*/ -bool QQuickPlatformMenuItem::isEnabled() const -{ - return m_enabled && (!m_group || m_group->isEnabled()); -} - -void QQuickPlatformMenuItem::setEnabled(bool enabled) -{ - if (m_enabled == enabled) - return; - - bool wasEnabled = isEnabled(); - m_enabled = enabled; - sync(); - if (isEnabled() != wasEnabled) - emit enabledChanged(); -} - -/*! - \qmlproperty bool Qt.labs.platform::MenuItem::visible - - This property holds whether the item is visible. The default value is \c true. -*/ -bool QQuickPlatformMenuItem::isVisible() const -{ - return m_visible && (!m_group || m_group->isVisible()); -} - -void QQuickPlatformMenuItem::setVisible(bool visible) -{ - if (m_visible == visible) - return; - - bool wasVisible = isVisible(); - m_visible = visible; - sync(); - if (isVisible() != wasVisible) - emit visibleChanged(); -} - -/*! - \qmlproperty bool Qt.labs.platform::MenuItem::separator - - This property holds whether the item is a separator line. The default value - is \c false. - - \sa MenuSeparator -*/ -bool QQuickPlatformMenuItem::isSeparator() const -{ - return m_separator; -} - -void QQuickPlatformMenuItem::setSeparator(bool separator) -{ - if (m_separator == separator) - return; - - m_separator = separator; - sync(); - emit separatorChanged(); -} - -/*! - \qmlproperty bool Qt.labs.platform::MenuItem::checkable - - This property holds whether the item is checkable. - - A checkable menu item has an on/off state. For example, in a word processor, - a "Bold" menu item may be either on or off. A menu item that is not checkable - is a command item that is simply executed, e.g. file save. - - The default value is \c false. - - \sa checked, MenuItemGroup -*/ -bool QQuickPlatformMenuItem::isCheckable() const -{ - return m_checkable; -} - -void QQuickPlatformMenuItem::setCheckable(bool checkable) -{ - if (m_checkable == checkable) - return; - - m_checkable = checkable; - sync(); - emit checkableChanged(); -} - -/*! - \qmlproperty bool Qt.labs.platform::MenuItem::checked - - This property holds whether the item is checked (on) or unchecked (off). - The default value is \c false. - - \sa checkable, MenuItemGroup -*/ -bool QQuickPlatformMenuItem::isChecked() const -{ - return m_checked; -} - -void QQuickPlatformMenuItem::setChecked(bool checked) -{ - if (m_checked == checked) - return; - - if (checked && !m_checkable) - setCheckable(true); - - m_checked = checked; - sync(); - emit checkedChanged(); -} - -/*! - \qmlproperty enumeration Qt.labs.platform::MenuItem::role - - This property holds the role of the item. The role determines whether - the item should be placed into the application menu on macOS. - - Available values: - \value MenuItem.NoRole The item should not be put into the application menu - \value MenuItem.TextHeuristicRole The item should be put in the application menu based on the action's text (default) - \value MenuItem.ApplicationSpecificRole The item should be put in the application menu with an application-specific role - \value MenuItem.AboutQtRole The item handles the "About Qt" menu item. - \value MenuItem.AboutRole The item should be placed where the "About" menu item is in the application menu. The text of - the menu item will be set to "About <application name>". The application name is fetched from the - \c{Info.plist} file in the application's bundle (See \l{Qt for macOS - Deployment}). - \value MenuItem.PreferencesRole The item should be placed where the "Preferences..." menu item is in the application menu. - \value MenuItem.QuitRole The item should be placed where the Quit menu item is in the application menu. - - Specifying the role only has effect on items that are in the immediate - menus of a menubar, not in the submenus of those menus. For example, if - you have a "File" menu in your menubar and the "File" menu has a submenu, - specifying a role for the items in that submenu has no effect. They will - never be moved to the application menu. -*/ -QPlatformMenuItem::MenuRole QQuickPlatformMenuItem::role() const -{ - return m_role; -} - -void QQuickPlatformMenuItem::setRole(QPlatformMenuItem::MenuRole role) -{ - if (m_role == role) - return; - - m_role = role; - sync(); - emit roleChanged(); -} - -/*! - \qmlproperty string Qt.labs.platform::MenuItem::text - - This property holds the menu item's text. -*/ -QString QQuickPlatformMenuItem::text() const -{ - return m_text; -} - -void QQuickPlatformMenuItem::setText(const QString &text) -{ - if (m_text == text) - return; - - m_text = text; - sync(); - emit textChanged(); -} - -/*! - \qmlproperty keysequence Qt.labs.platform::MenuItem::shortcut - - This property holds the menu item's shortcut. - - The shortcut key sequence can be set to one of the - \l{QKeySequence::StandardKey}{standard keyboard shortcuts}, or it can be - specified by a string containing a sequence of up to four key presses - that are needed to \l{triggered}{trigger} the shortcut. - - The default value is an empty key sequence. - - \code - MenuItem { - shortcut: "Ctrl+E,Ctrl+W" - onTriggered: edit.wrapMode = TextEdit.Wrap - } - \endcode -*/ -QVariant QQuickPlatformMenuItem::shortcut() const -{ - return m_shortcut; -} - -bool QQuickPlatformMenuItem::event(QEvent *e) -{ -#if QT_CONFIG(shortcut) - if (e->type() == QEvent::Shortcut) { - QShortcutEvent *se = static_cast<QShortcutEvent *>(e); - if (se->shortcutId() == m_shortcutId) { - activate(); - return true; - } - } -#endif - return QObject::event(e); -} - -void QQuickPlatformMenuItem::setShortcut(const QVariant& shortcut) -{ - if (m_shortcut == shortcut) - return; - -#if QT_CONFIG(shortcut) - if (m_shortcutId != -1) { - QKeySequence sequence; - if (m_shortcut.metaType().id() == QMetaType::Int) - sequence = QKeySequence(static_cast<QKeySequence::StandardKey>(m_shortcut.toInt())); - else - sequence = QKeySequence::fromString(m_shortcut.toString()); - QGuiApplicationPrivate::instance()->shortcutMap.removeShortcut(m_shortcutId, this, sequence); - } -#endif - m_shortcut = shortcut; - sync(); -#if QT_CONFIG(shortcut) - QKeySequence sequence; - if (m_shortcut.metaType().id() == QMetaType::Int) - sequence = QKeySequence(static_cast<QKeySequence::StandardKey>(m_shortcut.toInt())); - else - sequence = QKeySequence::fromString(m_shortcut.toString()); - if (!sequence.isEmpty()) { - m_shortcutId = QGuiApplicationPrivate::instance()->shortcutMap.addShortcut(this, sequence, - Qt::WindowShortcut, QQuickShortcutContext::matcher); - } else { - m_shortcutId = -1; - } -#endif - emit shortcutChanged(); -} - -/*! - \qmlproperty font Qt.labs.platform::MenuItem::font - - This property holds the menu item's font. - - \sa text -*/ -QFont QQuickPlatformMenuItem::font() const -{ - return m_font; -} - -void QQuickPlatformMenuItem::setFont(const QFont& font) -{ - if (m_font == font) - return; - - m_font = font; - sync(); - emit fontChanged(); -} - -/*! - \since Qt.labs.platform 1.1 (Qt 5.12) - \qmlproperty url Qt.labs.platform::MenuItem::icon.source - \qmlproperty string Qt.labs.platform::MenuItem::icon.name - \qmlproperty bool Qt.labs.platform::MenuItem::icon.mask - - This property holds the menu item's icon. - - \code - MenuItem { - icon.mask: true - icon.name: "edit-undo" - icon.source: "qrc:/images/undo.png" - } - \endcode - - \sa QIcon::fromTheme() -*/ -QQuickPlatformIcon QQuickPlatformMenuItem::icon() const -{ - if (!m_iconLoader) - return QQuickPlatformIcon(); - - return m_iconLoader->icon(); -} - -void QQuickPlatformMenuItem::setIcon(const QQuickPlatformIcon &icon) -{ - if (iconLoader()->icon() == icon) - return; - - iconLoader()->setIcon(icon); - emit iconChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::MenuItem::toggle() - - Toggles the \l checked state to its opposite state. -*/ -void QQuickPlatformMenuItem::toggle() -{ - if (m_checkable) - setChecked(!m_checked); -} - -void QQuickPlatformMenuItem::classBegin() -{ -} - -void QQuickPlatformMenuItem::componentComplete() -{ - if (m_handle && m_iconLoader) - m_iconLoader->setEnabled(true); - m_complete = true; - sync(); -} - -QQuickPlatformIconLoader *QQuickPlatformMenuItem::iconLoader() const -{ - if (!m_iconLoader) { - QQuickPlatformMenuItem *that = const_cast<QQuickPlatformMenuItem *>(this); - static int slot = staticMetaObject.indexOfSlot("updateIcon()"); - m_iconLoader = new QQuickPlatformIconLoader(slot, that); - m_iconLoader->setEnabled(m_complete); - } - return m_iconLoader; -} - -void QQuickPlatformMenuItem::activate() -{ - toggle(); - emit triggered(); -} - -void QQuickPlatformMenuItem::updateIcon() -{ - if (!m_handle || !m_iconLoader) - return; - - m_handle->setIcon(m_iconLoader->toQIcon()); - sync(); -} - -QT_END_NAMESPACE - -#include "moc_qquickplatformmenuitem_p.cpp" diff --git a/src/labs/platform/qquickplatformmenuitem_p.h b/src/labs/platform/qquickplatformmenuitem_p.h deleted file mode 100644 index 01b7482d..00000000 --- a/src/labs/platform/qquickplatformmenuitem_p.h +++ /dev/null @@ -1,191 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMMENUITEM_P_H -#define QQUICKPLATFORMMENUITEM_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtCore/qurl.h> -#include <QtGui/qfont.h> -#include <QtGui/qpa/qplatformmenu.h> -#include <QtQml/qqmlparserstatus.h> -#include <QtQml/qqml.h> - -#include "qquickplatformicon_p.h" - -QT_BEGIN_NAMESPACE - -class QPlatformMenuItem; -class QQuickPlatformMenu; -class QQuickPlatformIconLoader; -class QQuickPlatformMenuItemGroup; - -class QQuickPlatformMenuItem : public QObject, public QQmlParserStatus -{ - Q_OBJECT - Q_INTERFACES(QQmlParserStatus) - Q_PROPERTY(QQuickPlatformMenu *menu READ menu NOTIFY menuChanged FINAL) - Q_PROPERTY(QQuickPlatformMenu *subMenu READ subMenu NOTIFY subMenuChanged FINAL) - Q_PROPERTY(QQuickPlatformMenuItemGroup *group READ group WRITE setGroup NOTIFY groupChanged FINAL) - Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged FINAL) - Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) - Q_PROPERTY(bool separator READ isSeparator WRITE setSeparator NOTIFY separatorChanged FINAL) - Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable NOTIFY checkableChanged FINAL) - Q_PROPERTY(bool checked READ isChecked WRITE setChecked NOTIFY checkedChanged FINAL) - Q_PROPERTY(QPlatformMenuItem::MenuRole role READ role WRITE setRole NOTIFY roleChanged FINAL) - Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged FINAL) - Q_PROPERTY(QVariant shortcut READ shortcut WRITE setShortcut NOTIFY shortcutChanged FINAL) - Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged FINAL) - Q_PROPERTY(QQuickPlatformIcon icon READ icon WRITE setIcon NOTIFY iconChanged FINAL REVISION(1, 1)) - Q_ENUMS(QPlatformMenuItem::MenuRole) - -public: - explicit QQuickPlatformMenuItem(QObject *parent = nullptr); - ~QQuickPlatformMenuItem(); - - QPlatformMenuItem *handle() const; - QPlatformMenuItem *create(); - void sync(); - - QQuickPlatformMenu *menu() const; - void setMenu(QQuickPlatformMenu* menu); - - QQuickPlatformMenu *subMenu() const; - void setSubMenu(QQuickPlatformMenu *menu); - - QQuickPlatformMenuItemGroup *group() const; - void setGroup(QQuickPlatformMenuItemGroup *group); - - bool isEnabled() const; - void setEnabled(bool enabled); - - bool isVisible() const; - void setVisible(bool visible); - - bool isSeparator() const; - void setSeparator(bool separator); - - bool isCheckable() const; - void setCheckable(bool checkable); - - bool isChecked() const; - void setChecked(bool checked); - - QPlatformMenuItem::MenuRole role() const; - void setRole(QPlatformMenuItem::MenuRole role); - - QString text() const; - void setText(const QString &text); - - QVariant shortcut() const; - void setShortcut(const QVariant& shortcut); - - QFont font() const; - void setFont(const QFont &font); - - QQuickPlatformIcon icon() const; - void setIcon(const QQuickPlatformIcon &icon); - -public Q_SLOTS: - void toggle(); - -Q_SIGNALS: - void triggered(); - void hovered(); - - void menuChanged(); - void subMenuChanged(); - void groupChanged(); - void enabledChanged(); - void visibleChanged(); - void separatorChanged(); - void checkableChanged(); - void checkedChanged(); - void roleChanged(); - void textChanged(); - void shortcutChanged(); - void fontChanged(); - Q_REVISION(2, 1) void iconChanged(); - -protected: - void classBegin() override; - void componentComplete() override; - - QQuickPlatformIconLoader *iconLoader() const; - - bool event(QEvent *e) override; -private Q_SLOTS: - void activate(); - void updateIcon(); - -private: - bool m_complete; - bool m_enabled; - bool m_visible; - bool m_separator; - bool m_checkable; - bool m_checked; - QPlatformMenuItem::MenuRole m_role; - QString m_text; - QVariant m_shortcut; - QFont m_font; - QQuickPlatformMenu *m_menu; - QQuickPlatformMenu *m_subMenu; - QQuickPlatformMenuItemGroup *m_group; - mutable QQuickPlatformIconLoader *m_iconLoader; - QPlatformMenuItem *m_handle; - int m_shortcutId = -1; - - friend class QQuickPlatformMenu; - friend class QQuickPlatformMenuItemGroup; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformMenuItem) - -#endif // QQUICKPLATFORMMENUITEM_P_H diff --git a/src/labs/platform/qquickplatformmenuitemgroup.cpp b/src/labs/platform/qquickplatformmenuitemgroup.cpp deleted file mode 100644 index fcfcc664..00000000 --- a/src/labs/platform/qquickplatformmenuitemgroup.cpp +++ /dev/null @@ -1,392 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Templates module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformmenuitemgroup_p.h" -#include "qquickplatformmenuitem_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype MenuItemGroup - \inherits QtObject -//! \instantiates QQuickPlatformMenuItemGroup - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief A group for managing native menu items. - - The MenuItemGroup groups native menu items together. - - MenuItemGroup is exclusive by default. In an exclusive menu item - group, only one item can be checked at any time; checking another - item automatically unchecks the previously checked one. MenuItemGroup - can be configured as non-exclusive, which is particularly useful for - showing, hiding, enabling and disabling items together as a group. - - The most straight-forward way to use MenuItemGroup is to assign - a list of items. - - \code - Menu { - id: verticalMenu - title: qsTr("Vertical") - - MenuItemGroup { - id: verticalGroup - items: verticalMenu.items - } - - MenuItem { text: qsTr("Top"); checkable: true } - MenuItem { text: qsTr("Center"); checked: true } - MenuItem { text: qsTr("Bottom"); checkable: true } - } - \endcode - - The same menu may sometimes contain items that should not be included - in the same exclusive group. Such cases are best handled using the - \l {MenuItem::group}{group} property. - - \code - Menu { - id: horizontalMenu - title: qsTr("Horizontal") - - MenuItemGroup { - id: horizontalGroup - } - - MenuItem { - checked: true - text: qsTr("Left") - group: horizontalGroup - } - MenuItem { - checkable: true - text: qsTr("Center") - group: horizontalGroup - } - MenuItem { - text: qsTr("Right") - checkable: true - group: horizontalGroup - } - - MenuItem { separator: true } - MenuItem { text: qsTr("Justify"); checkable: true } - MenuItem { text: qsTr("Absolute"); checkable: true } - } - \endcode - - More advanced use cases can be handled using the addItem() and - removeItem() methods. - - \labs - - \sa MenuItem -*/ - -/*! - \qmlsignal Qt.labs.platform::MenuItemGroup::triggered(MenuItem item) - - This signal is emitted when an \a item in the group is triggered by the user. - - \sa MenuItem::triggered() -*/ - -/*! - \qmlsignal Qt.labs.platform::MenuItemGroup::hovered(MenuItem item) - - This signal is emitted when an \a item in the group is hovered by the user. - - \sa MenuItem::hovered() -*/ - -QQuickPlatformMenuItemGroup::QQuickPlatformMenuItemGroup(QObject *parent) - : QObject(parent), m_enabled(true), m_visible(true), m_exclusive(true), m_checkedItem(nullptr) -{ -} - -QQuickPlatformMenuItemGroup::~QQuickPlatformMenuItemGroup() -{ - clear(); -} - -/*! - \qmlproperty bool Qt.labs.platform::MenuItemGroup::enabled - - This property holds whether the group is enabled. The default value is \c true. - - The enabled state of the group affects the enabled state of each item in the group, - except that explicitly disabled items are not enabled even if the group is enabled. -*/ -bool QQuickPlatformMenuItemGroup::isEnabled() const -{ - return m_enabled; -} - -void QQuickPlatformMenuItemGroup::setEnabled(bool enabled) -{ - if (m_enabled == enabled) - return; - - m_enabled = enabled; - emit enabledChanged(); - - for (QQuickPlatformMenuItem *item : qAsConst(m_items)) { - if (item->m_enabled) { - item->sync(); - emit item->enabledChanged(); - } - } -} - -/*! - \qmlproperty bool Qt.labs.platform::MenuItemGroup::visible - - This property holds whether the group is visible. The default value is \c true. - - The visibility of the group affects the visibility of each item in the group, - except that explicitly hidden items are not visible even if the group is visible. -*/ -bool QQuickPlatformMenuItemGroup::isVisible() const -{ - return m_visible; -} - -void QQuickPlatformMenuItemGroup::setVisible(bool visible) -{ - if (m_visible == visible) - return; - - m_visible = visible; - emit visibleChanged(); - - for (QQuickPlatformMenuItem *item : qAsConst(m_items)) { - if (item->m_visible) { - item->sync(); - emit item->visibleChanged(); - } - } -} - -/*! - \qmlproperty bool Qt.labs.platform::MenuItemGroup::exclusive - - This property holds whether the group is exclusive. The default value is \c true. - - In an exclusive menu item group, only one item can be checked at any time; - checking another item automatically unchecks the previously checked one. -*/ -bool QQuickPlatformMenuItemGroup::isExclusive() const -{ - return m_exclusive; -} - -void QQuickPlatformMenuItemGroup::setExclusive(bool exclusive) -{ - if (m_exclusive == exclusive) - return; - - m_exclusive = exclusive; - emit exclusiveChanged(); - - for (QQuickPlatformMenuItem *item : qAsConst(m_items)) - item->sync(); -} - -/*! - \qmlproperty MenuItem Qt.labs.platform::MenuItemGroup::checkedItem - - This property holds the currently checked item in the group, or \c null if no item is checked. -*/ -QQuickPlatformMenuItem *QQuickPlatformMenuItemGroup::checkedItem() const -{ - return m_checkedItem; -} - -void QQuickPlatformMenuItemGroup::setCheckedItem(QQuickPlatformMenuItem *item) -{ - if (m_checkedItem == item) - return; - - if (m_checkedItem) - m_checkedItem->setChecked(false); - - m_checkedItem = item; - emit checkedItemChanged(); - - if (item) - item->setChecked(true); -} - -/*! - \qmlproperty list<MenuItem> Qt.labs.platform::MenuItemGroup::items - - This property holds the list of items in the group. -*/ -QQmlListProperty<QQuickPlatformMenuItem> QQuickPlatformMenuItemGroup::items() -{ - return QQmlListProperty<QQuickPlatformMenuItem>(this, nullptr, items_append, items_count, items_at, items_clear); -} - -/*! - \qmlmethod void Qt.labs.platform::MenuItemGroup::addItem(MenuItem item) - - Adds an \a item to the group. -*/ -void QQuickPlatformMenuItemGroup::addItem(QQuickPlatformMenuItem *item) -{ - if (!item || m_items.contains(item)) - return; - - m_items.append(item); - item->setGroup(this); - - connect(item, &QQuickPlatformMenuItem::checkedChanged, this, &QQuickPlatformMenuItemGroup::updateCurrent); - connect(item, &QQuickPlatformMenuItem::triggered, this, &QQuickPlatformMenuItemGroup::activateItem); - connect(item, &QQuickPlatformMenuItem::hovered, this, &QQuickPlatformMenuItemGroup::hoverItem); - - if (m_exclusive && item->isChecked()) - setCheckedItem(item); - - emit itemsChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::MenuItemGroup::removeItem(MenuItem item) - - Removes an \a item from the group. -*/ -void QQuickPlatformMenuItemGroup::removeItem(QQuickPlatformMenuItem *item) -{ - if (!item || !m_items.contains(item)) - return; - - m_items.removeOne(item); - item->setGroup(nullptr); - - disconnect(item, &QQuickPlatformMenuItem::checkedChanged, this, &QQuickPlatformMenuItemGroup::updateCurrent); - disconnect(item, &QQuickPlatformMenuItem::triggered, this, &QQuickPlatformMenuItemGroup::activateItem); - disconnect(item, &QQuickPlatformMenuItem::hovered, this, &QQuickPlatformMenuItemGroup::hoverItem); - - if (m_checkedItem == item) - setCheckedItem(nullptr); - - emit itemsChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::MenuItemGroup::clear() - - Removes all items from the group. -*/ -void QQuickPlatformMenuItemGroup::clear() -{ - if (m_items.isEmpty()) - return; - - for (QQuickPlatformMenuItem *item : qAsConst(m_items)) { - item->setGroup(nullptr); - disconnect(item, &QQuickPlatformMenuItem::checkedChanged, this, &QQuickPlatformMenuItemGroup::updateCurrent); - disconnect(item, &QQuickPlatformMenuItem::triggered, this, &QQuickPlatformMenuItemGroup::activateItem); - disconnect(item, &QQuickPlatformMenuItem::hovered, this, &QQuickPlatformMenuItemGroup::hoverItem); - } - - setCheckedItem(nullptr); - - m_items.clear(); - emit itemsChanged(); -} - -QQuickPlatformMenuItem *QQuickPlatformMenuItemGroup::findCurrent() const -{ - for (QQuickPlatformMenuItem *item : m_items) { - if (item->isChecked()) - return item; - } - return nullptr; -} - -void QQuickPlatformMenuItemGroup::updateCurrent() -{ - if (!m_exclusive) - return; - - QQuickPlatformMenuItem *item = qobject_cast<QQuickPlatformMenuItem*>(sender()); - if (item && item->isChecked()) - setCheckedItem(item); -} - -void QQuickPlatformMenuItemGroup::activateItem() -{ - QQuickPlatformMenuItem *item = qobject_cast<QQuickPlatformMenuItem*>(sender()); - if (item) - emit triggered(item); -} - -void QQuickPlatformMenuItemGroup::hoverItem() -{ - QQuickPlatformMenuItem *item = qobject_cast<QQuickPlatformMenuItem*>(sender()); - if (item) - emit hovered(item); -} - -void QQuickPlatformMenuItemGroup::items_append(QQmlListProperty<QQuickPlatformMenuItem> *prop, QQuickPlatformMenuItem *item) -{ - QQuickPlatformMenuItemGroup *group = static_cast<QQuickPlatformMenuItemGroup *>(prop->object); - group->addItem(item); -} - -qsizetype QQuickPlatformMenuItemGroup::items_count(QQmlListProperty<QQuickPlatformMenuItem> *prop) -{ - QQuickPlatformMenuItemGroup *group = static_cast<QQuickPlatformMenuItemGroup *>(prop->object); - return group->m_items.count(); -} - -QQuickPlatformMenuItem *QQuickPlatformMenuItemGroup::items_at(QQmlListProperty<QQuickPlatformMenuItem> *prop, qsizetype index) -{ - QQuickPlatformMenuItemGroup *group = static_cast<QQuickPlatformMenuItemGroup *>(prop->object); - return group->m_items.value(index); -} - -void QQuickPlatformMenuItemGroup::items_clear(QQmlListProperty<QQuickPlatformMenuItem> *prop) -{ - QQuickPlatformMenuItemGroup *group = static_cast<QQuickPlatformMenuItemGroup *>(prop->object); - group->clear(); -} - -QT_END_NAMESPACE - -#include "moc_qquickplatformmenuitemgroup_p.cpp" diff --git a/src/labs/platform/qquickplatformmenuitemgroup_p.h b/src/labs/platform/qquickplatformmenuitemgroup_p.h deleted file mode 100644 index 7407d266..00000000 --- a/src/labs/platform/qquickplatformmenuitemgroup_p.h +++ /dev/null @@ -1,123 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Templates module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMMENUITEMGROUP_P_H -#define QQUICKPLATFORMMENUITEMGROUP_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtCore/qlist.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QQuickPlatformMenuItem; -class QQuickPlatformMenuItemGroupPrivate; - -class QQuickPlatformMenuItemGroup : public QObject -{ - Q_OBJECT - Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged FINAL) - Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) - Q_PROPERTY(bool exclusive READ isExclusive WRITE setExclusive NOTIFY exclusiveChanged FINAL) - Q_PROPERTY(QQuickPlatformMenuItem *checkedItem READ checkedItem WRITE setCheckedItem NOTIFY checkedItemChanged FINAL) - Q_PROPERTY(QQmlListProperty<QQuickPlatformMenuItem> items READ items NOTIFY itemsChanged FINAL) - -public: - explicit QQuickPlatformMenuItemGroup(QObject *parent = nullptr); - ~QQuickPlatformMenuItemGroup(); - - bool isEnabled() const; - void setEnabled(bool enabled); - - bool isVisible() const; - void setVisible(bool visible); - - bool isExclusive() const; - void setExclusive(bool exclusive); - - QQuickPlatformMenuItem *checkedItem() const; - void setCheckedItem(QQuickPlatformMenuItem *item); - - QQmlListProperty<QQuickPlatformMenuItem> items(); - - Q_INVOKABLE void addItem(QQuickPlatformMenuItem *item); - Q_INVOKABLE void removeItem(QQuickPlatformMenuItem *item); - Q_INVOKABLE void clear(); - -Q_SIGNALS: - void triggered(QQuickPlatformMenuItem *item); - void hovered(QQuickPlatformMenuItem *item); - - void enabledChanged(); - void visibleChanged(); - void exclusiveChanged(); - void checkedItemChanged(); - void itemsChanged(); - -private: - QQuickPlatformMenuItem *findCurrent() const; - void updateCurrent(); - void activateItem(); - void hoverItem(); - - static void items_append(QQmlListProperty<QQuickPlatformMenuItem> *prop, QQuickPlatformMenuItem *obj); - static qsizetype items_count(QQmlListProperty<QQuickPlatformMenuItem> *prop); - static QQuickPlatformMenuItem *items_at(QQmlListProperty<QQuickPlatformMenuItem> *prop, qsizetype index); - static void items_clear(QQmlListProperty<QQuickPlatformMenuItem> *prop); - - bool m_enabled; - bool m_visible; - bool m_exclusive; - QQuickPlatformMenuItem *m_checkedItem; - QList<QQuickPlatformMenuItem*> m_items; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformMenuItemGroup) - -#endif // QQUICKPLATFORMMENUITEMGROUP_P_H diff --git a/src/labs/platform/qquickplatformmenuseparator.cpp b/src/labs/platform/qquickplatformmenuseparator.cpp deleted file mode 100644 index f29d5b9e..00000000 --- a/src/labs/platform/qquickplatformmenuseparator.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformmenuseparator_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype MenuSeparator - \inherits MenuItem -//! \instantiates QQuickPlatformMenuSeparator - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief A native menu separator. - - The MenuSeparator type is provided for convenience. It is a MenuItem - that has the \l {MenuItem::}{separator} property set to \c true by default. - - \image qtlabsplatform-menubar.png - - \labs - - \sa Menu, MenuItem -*/ - -QQuickPlatformMenuSeparator::QQuickPlatformMenuSeparator(QObject *parent) - : QQuickPlatformMenuItem(parent) -{ - setSeparator(true); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/qquickplatformmenuseparator_p.h b/src/labs/platform/qquickplatformmenuseparator_p.h deleted file mode 100644 index 9fe973c5..00000000 --- a/src/labs/platform/qquickplatformmenuseparator_p.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMMENUSEPARATOR_P_H -#define QQUICKPLATFORMMENUSEPARATOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qquickplatformmenuitem_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickPlatformMenuSeparator : public QQuickPlatformMenuItem -{ - Q_OBJECT - -public: - explicit QQuickPlatformMenuSeparator(QObject *parent = nullptr); -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformMenuSeparator) - -#endif // QQUICKPLATFORMMENUSEPARATOR_P_H diff --git a/src/labs/platform/qquickplatformmessagedialog.cpp b/src/labs/platform/qquickplatformmessagedialog.cpp deleted file mode 100644 index f2e0970c..00000000 --- a/src/labs/platform/qquickplatformmessagedialog.cpp +++ /dev/null @@ -1,382 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformmessagedialog_p.h" - -#include <QtQml/qqmlinfo.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype MessageDialog - \inherits Dialog -//! \instantiates QQuickPlatformMessageDialog - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief A native message dialog. - - The MessageDialog type provides a QML API for native platform message dialogs. - - \image qtlabsplatform-messagedialog-android.png - - A message dialog is used to inform the user, or ask the user a question. - A message dialog displays a primary \l text to alert the user to a situation, - an \l {informativeText}{informative text} to further explain the alert or to - ask the user a question, and an optional \l {detailedText}{detailed text} to - provide even more data if the user requests it. A message box can also display - a configurable set of \l buttons for accepting a user response. - - To show a message dialog, construct an instance of MessageDialog, set the - desired properties, and call \l {Dialog::}{open()}. - - \code - MessageDialog { - buttons: MessageDialog.Ok - text: "The document has been modified." - } - \endcode - - The user must click the \uicontrol OK button to dismiss the message dialog. - A modal message dialog blocks the rest of the GUI until the message is - dismissed. - - A more elaborate approach than just alerting the user to an event is to - also ask the user what to do about it. Store the question in the - \l {informativeText}{informative text} property, and specify the \l buttons - property to the set of buttons you want as the set of user responses. The - buttons are specified by combining values using the bitwise OR operator. The - display order for the buttons is platform dependent. - - \code - MessageDialog { - text: "The document has been modified." - informativeText: "Do you want to save your changes?" - buttons: MessageDialog.Ok | MessageDialog.Cancel - - onAccepted: document.save() - } - \endcode - - \image qtlabsplatform-messagedialog-informative-android.png - - The \l clicked() signal passes the information of which button was clicked. - - A native platform message dialog is currently available on the following platforms: - - \list - \li iOS - \li Android - \endlist - - \input includes/widgets.qdocinc 1 - - \labs -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::clicked(button) - - This signal is emitted when a dialog \a button is clicked. - - \sa buttons -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::okClicked() - - This signal is emitted when \uicontrol Ok is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::saveClicked() - - This signal is emitted when \uicontrol Save is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::saveAllClicked() - - This signal is emitted when \uicontrol {Save All} is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::openClicked() - - This signal is emitted when \uicontrol Open is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::yesClicked() - - This signal is emitted when \uicontrol Yes is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::yesToAllClicked() - - This signal is emitted when \uicontrol {Yes To All} is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::noClicked() - - This signal is emitted when \uicontrol No is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::noToAllClicked() - - This signal is emitted when \uicontrol {No To All} is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::abortClicked() - - This signal is emitted when \uicontrol Abort is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::retryClicked() - - This signal is emitted when \uicontrol Retry is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::ignoreClicked() - - This signal is emitted when \uicontrol Ignore is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::closeClicked() - - This signal is emitted when \uicontrol Close is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::cancelClicked() - - This signal is emitted when \uicontrol Cancel is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::discardClicked() - - This signal is emitted when \uicontrol Discard is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::helpClicked() - - This signal is emitted when \uicontrol Help is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::applyClicked() - - This signal is emitted when \uicontrol Apply is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::resetClicked() - - This signal is emitted when \uicontrol Reset is clicked. -*/ - -/*! - \qmlsignal Qt.labs.platform::MessageDialog::restoreDefaultsClicked() - - This signal is emitted when \uicontrol {Restore Defaults} is clicked. -*/ - -QQuickPlatformMessageDialog::QQuickPlatformMessageDialog(QObject *parent) - : QQuickPlatformDialog(QPlatformTheme::MessageDialog, parent), - m_options(QMessageDialogOptions::create()) -{ -} - -/*! - \qmlproperty string Qt.labs.platform::MessageDialog::text - - This property holds the text to be displayed on the message dialog. - - \sa informativeText, detailedText -*/ -QString QQuickPlatformMessageDialog::text() const -{ - return m_options->text(); -} - -void QQuickPlatformMessageDialog::setText(const QString &text) -{ - if (m_options->text() == text) - return; - - m_options->setText(text); - emit textChanged(); -} - -/*! - \qmlproperty string Qt.labs.platform::MessageDialog::informativeText - - This property holds the informative text that provides a fuller description for the message. - - Informative text can be used to expand upon the \l text to give more information to the user. - - \sa text, detailedText -*/ -QString QQuickPlatformMessageDialog::informativeText() const -{ - return m_options->informativeText(); -} - -void QQuickPlatformMessageDialog::setInformativeText(const QString &text) -{ - if (m_options->informativeText() == text) - return; - - m_options->setInformativeText(text); - emit informativeTextChanged(); -} - -/*! - \qmlproperty string Qt.labs.platform::MessageDialog::detailedText - - This property holds the text to be displayed in the details area. - - \sa text, informativeText -*/ -QString QQuickPlatformMessageDialog::detailedText() const -{ - return m_options->detailedText(); -} - -void QQuickPlatformMessageDialog::setDetailedText(const QString &text) -{ - if (m_options->detailedText() == text) - return; - - m_options->setDetailedText(text); - emit detailedTextChanged(); -} - -/*! - \qmlproperty flags Qt.labs.platform::MessageDialog::buttons - - This property holds a combination of buttons that are used by the message dialog. - The default value is \c MessageDialog.NoButton. - - Possible flags: - \value MessageDialog.Ok An "OK" button defined with the \c AcceptRole. - \value MessageDialog.Open An "Open" button defined with the \c AcceptRole. - \value MessageDialog.Save A "Save" button defined with the \c AcceptRole. - \value MessageDialog.Cancel A "Cancel" button defined with the \c RejectRole. - \value MessageDialog.Close A "Close" button defined with the \c RejectRole. - \value MessageDialog.Discard A "Discard" or "Don't Save" button, depending on the platform, defined with the \c DestructiveRole. - \value MessageDialog.Apply An "Apply" button defined with the \c ApplyRole. - \value MessageDialog.Reset A "Reset" button defined with the \c ResetRole. - \value MessageDialog.RestoreDefaults A "Restore Defaults" button defined with the \c ResetRole. - \value MessageDialog.Help A "Help" button defined with the \c HelpRole. - \value MessageDialog.SaveAll A "Save All" button defined with the \c AcceptRole. - \value MessageDialog.Yes A "Yes" button defined with the \c YesRole. - \value MessageDialog.YesToAll A "Yes to All" button defined with the \c YesRole. - \value MessageDialog.No A "No" button defined with the \c NoRole. - \value MessageDialog.NoToAll A "No to All" button defined with the \c NoRole. - \value MessageDialog.Abort An "Abort" button defined with the \c RejectRole. - \value MessageDialog.Retry A "Retry" button defined with the \c AcceptRole. - \value MessageDialog.Ignore An "Ignore" button defined with the \c AcceptRole. - \value MessageDialog.NoButton The dialog has no buttons. - - \sa clicked() -*/ -QPlatformDialogHelper::StandardButtons QQuickPlatformMessageDialog::buttons() const -{ - return m_options->standardButtons(); -} - -void QQuickPlatformMessageDialog::setButtons(QPlatformDialogHelper::StandardButtons buttons) -{ - if (m_options->standardButtons() == buttons) - return; - - m_options->setStandardButtons(buttons); - emit buttonsChanged(); -} - -void QQuickPlatformMessageDialog::onCreate(QPlatformDialogHelper *dialog) -{ - if (QPlatformMessageDialogHelper *messageDialog = qobject_cast<QPlatformMessageDialogHelper *>(dialog)) { - connect(messageDialog, &QPlatformMessageDialogHelper::clicked, this, &QQuickPlatformMessageDialog::handleClick); - messageDialog->setOptions(m_options); - } -} - -void QQuickPlatformMessageDialog::onShow(QPlatformDialogHelper *dialog) -{ - m_options->setWindowTitle(title()); - if (QPlatformMessageDialogHelper *messageDialog = qobject_cast<QPlatformMessageDialogHelper *>(dialog)) - messageDialog->setOptions(m_options); -} - -void QQuickPlatformMessageDialog::handleClick(QPlatformDialogHelper::StandardButton button) -{ - done(button); - emit clicked(button); - - switch (button) { - case QPlatformDialogHelper::Ok: emit okClicked(); break; - case QPlatformDialogHelper::Save: emit saveClicked(); break; - case QPlatformDialogHelper::SaveAll: emit saveAllClicked(); break; - case QPlatformDialogHelper::Open: emit openClicked(); break; - case QPlatformDialogHelper::Yes: emit yesClicked(); break; - case QPlatformDialogHelper::YesToAll: emit yesToAllClicked(); break; - case QPlatformDialogHelper::No: emit noClicked(); break; - case QPlatformDialogHelper::NoToAll: emit noToAllClicked(); break; - case QPlatformDialogHelper::Abort: emit abortClicked(); break; - case QPlatformDialogHelper::Retry: emit retryClicked(); break; - case QPlatformDialogHelper::Ignore: emit ignoreClicked(); break; - case QPlatformDialogHelper::Close: emit closeClicked(); break; - case QPlatformDialogHelper::Cancel: emit cancelClicked(); break; - case QPlatformDialogHelper::Discard: emit discardClicked(); break; - case QPlatformDialogHelper::Help: emit helpClicked(); break; - case QPlatformDialogHelper::Apply: emit applyClicked(); break; - case QPlatformDialogHelper::Reset: emit resetClicked(); break; - case QPlatformDialogHelper::RestoreDefaults: emit restoreDefaultsClicked(); break; - default: qmlWarning(this) << "unknown button" << int(button); break; - } -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/qquickplatformmessagedialog_p.h b/src/labs/platform/qquickplatformmessagedialog_p.h deleted file mode 100644 index 9434a927..00000000 --- a/src/labs/platform/qquickplatformmessagedialog_p.h +++ /dev/null @@ -1,121 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMMESSAGEDIALOG_P_H -#define QQUICKPLATFORMMESSAGEDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qquickplatformdialog_p.h" -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QQuickPlatformMessageDialog : public QQuickPlatformDialog -{ - Q_OBJECT - Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged FINAL) - Q_PROPERTY(QString informativeText READ informativeText WRITE setInformativeText NOTIFY informativeTextChanged FINAL) - Q_PROPERTY(QString detailedText READ detailedText WRITE setDetailedText NOTIFY detailedTextChanged FINAL) - Q_PROPERTY(QPlatformDialogHelper::StandardButtons buttons READ buttons WRITE setButtons NOTIFY buttonsChanged FINAL) - Q_FLAGS(QPlatformDialogHelper::StandardButtons) - -public: - explicit QQuickPlatformMessageDialog(QObject *parent = nullptr); - - QString text() const; - void setText(const QString &text); - - QString informativeText() const; - void setInformativeText(const QString &text); - - QString detailedText() const; - void setDetailedText(const QString &text); - - QPlatformDialogHelper::StandardButtons buttons() const; - void setButtons(QPlatformDialogHelper::StandardButtons buttons); - -Q_SIGNALS: - void textChanged(); - void informativeTextChanged(); - void detailedTextChanged(); - void buttonsChanged(); - void clicked(QPlatformDialogHelper::StandardButton button); - - void okClicked(); - void saveClicked(); - void saveAllClicked(); - void openClicked(); - void yesClicked(); - void yesToAllClicked(); - void noClicked(); - void noToAllClicked(); - void abortClicked(); - void retryClicked(); - void ignoreClicked(); - void closeClicked(); - void cancelClicked(); - void discardClicked(); - void helpClicked(); - void applyClicked(); - void resetClicked(); - void restoreDefaultsClicked(); - -protected: - void onCreate(QPlatformDialogHelper *dialog) override; - void onShow(QPlatformDialogHelper *dialog) override; - -private Q_SLOTS: - void handleClick(QPlatformDialogHelper::StandardButton button); - -private: - QSharedPointer<QMessageDialogOptions> m_options; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformMessageDialog) - -#endif // QQUICKPLATFORMMESSAGEDIALOG_P_H diff --git a/src/labs/platform/qquickplatformstandardpaths.cpp b/src/labs/platform/qquickplatformstandardpaths.cpp deleted file mode 100644 index a6fff1c0..00000000 --- a/src/labs/platform/qquickplatformstandardpaths.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformstandardpaths_p.h" - -#include <QtQml/qqmlengine.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype StandardPaths - \inherits QtObject -//! \instantiates QQuickPlatformStandardPaths - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief Provides access to the standard system paths. - - The StandardPaths singleton type provides methods for querying the standard - system paths. The standard paths are mostly useful in conjunction with the - FileDialog and FolderDialog types. - - \qml - FileDialog { - folder: StandardPaths.writableLocation(StandardPaths.DocumentsLocation) - } - \endqml - - \labs - - \sa FileDialog, FolderDialog, QStandardPaths -*/ - -static QList<QUrl> toUrlList(const QStringList &paths) -{ - QList<QUrl> urls; - urls.reserve(paths.size()); - for (const QString &path : paths) - urls += QUrl::fromLocalFile(path); - return urls; -} - -QQuickPlatformStandardPaths::QQuickPlatformStandardPaths(QObject *parent) - : QObject(parent) -{ -} - -QObject *QQuickPlatformStandardPaths::create(QQmlEngine *engine, QJSEngine *scriptEngine) -{ - Q_UNUSED(scriptEngine); - return new QQuickPlatformStandardPaths(engine); -} - -/*! - \qmlmethod string Qt.labs.platform::StandardPaths::displayName(StandardLocation type) - - \include standardpath/functiondocs.qdocinc displayName - - \sa QStandardPaths::displayName() -*/ -QString QQuickPlatformStandardPaths::displayName(QStandardPaths::StandardLocation type) -{ - return QStandardPaths::displayName(type); -} - -/*! - \qmlmethod url Qt.labs.platform::StandardPaths::findExecutable(string executableName, list<string> paths) - - \include standardpath/functiondocs.qdocinc findExecutable - - \sa QStandardPaths::findExecutable() -*/ -QUrl QQuickPlatformStandardPaths::findExecutable(const QString &executableName, const QStringList &paths) -{ - return QUrl::fromLocalFile(QStandardPaths::findExecutable(executableName, paths)); -} - -/*! - \qmlmethod url Qt.labs.platform::StandardPaths::locate(StandardLocation type, string fileName, LocateOptions options) - - \include standardpath/functiondocs.qdocinc locate - - \sa QStandardPaths::locate() -*/ -QUrl QQuickPlatformStandardPaths::locate(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options) -{ - return QUrl::fromLocalFile(QStandardPaths::locate(type, fileName, options)); -} - -/*! - \qmlmethod list<url> Qt.labs.platform::StandardPaths::locateAll(StandardLocation type, string fileName, LocateOptions options) - - \include standardpath/functiondocs.qdocinc locateAll - - \sa QStandardPaths::locateAll() -*/ -QList<QUrl> QQuickPlatformStandardPaths::locateAll(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options) -{ - return toUrlList(QStandardPaths::locateAll(type, fileName, options)); -} - -/*! - \qmlmethod void Qt.labs.platform::StandardPaths::setTestModeEnabled(bool testMode) - - \include standardpath/functiondocs.qdocinc setTestModeEnabled - - \sa QStandardPaths::setTestModeEnabled() -*/ -void QQuickPlatformStandardPaths::setTestModeEnabled(bool testMode) -{ - QStandardPaths::setTestModeEnabled(testMode); -} - -/*! - \qmlmethod list<url> Qt.labs.platform::StandardPaths::standardLocations(StandardLocation type) - - \include standardpath/functiondocs.qdocinc standardLocations - - \sa QStandardPaths::standardLocations() -*/ -QList<QUrl> QQuickPlatformStandardPaths::standardLocations(QStandardPaths::StandardLocation type) -{ - return toUrlList(QStandardPaths::standardLocations(type)); -} - -/*! - \qmlmethod url Qt.labs.platform::StandardPaths::writableLocation(StandardLocation type) - - \include standardpath/functiondocs.qdocinc writableLocation - - \sa QStandardPaths::writableLocation() -*/ -QUrl QQuickPlatformStandardPaths::writableLocation(QStandardPaths::StandardLocation type) -{ - return QUrl::fromLocalFile(QStandardPaths::writableLocation(type)); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/qquickplatformstandardpaths_p.h b/src/labs/platform/qquickplatformstandardpaths_p.h deleted file mode 100644 index e2f4e11e..00000000 --- a/src/labs/platform/qquickplatformstandardpaths_p.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMSTANDARDPATHS_P_H -#define QQUICKPLATFORMSTANDARDPATHS_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtCore/qstandardpaths.h> -#include <QtCore/qurl.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QQmlEngine; -class QJSEngine; - -class QQuickPlatformStandardPaths : public QObject -{ - Q_OBJECT - Q_ENUMS(QStandardPaths::StandardLocation QStandardPaths::LocateOptions) - -public: - explicit QQuickPlatformStandardPaths(QObject *parent = nullptr); - - static QObject *create(QQmlEngine *engine, QJSEngine *scriptEngine); - - Q_INVOKABLE static QString displayName(QStandardPaths::StandardLocation type); - Q_INVOKABLE static QUrl findExecutable(const QString &executableName, const QStringList &paths = QStringList()); - Q_INVOKABLE static QUrl locate(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = QStandardPaths::LocateFile); - Q_INVOKABLE static QList<QUrl> locateAll(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = QStandardPaths::LocateFile); - Q_INVOKABLE static void setTestModeEnabled(bool testMode); - Q_INVOKABLE static QList<QUrl> standardLocations(QStandardPaths::StandardLocation type); - Q_INVOKABLE static QUrl writableLocation(QStandardPaths::StandardLocation type); - -private: - Q_DISABLE_COPY(QQuickPlatformStandardPaths) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformStandardPaths) -Q_DECLARE_METATYPE(QStandardPaths::StandardLocation) -Q_DECLARE_METATYPE(QStandardPaths::LocateOptions) - -#endif // QQUICKPLATFORMSTANDARDPATHS_P_H diff --git a/src/labs/platform/qquickplatformsystemtrayicon.cpp b/src/labs/platform/qquickplatformsystemtrayicon.cpp deleted file mode 100644 index b97e379f..00000000 --- a/src/labs/platform/qquickplatformsystemtrayicon.cpp +++ /dev/null @@ -1,443 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformsystemtrayicon_p.h" -#include "qquickplatformmenu_p.h" -#include "qquickplatformiconloader_p.h" - -#include <QtCore/qloggingcategory.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtGui/private/qguiapplication_p.h> - -#include "widgets/qwidgetplatform_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype SystemTrayIcon - \inherits QtObject -//! \instantiates QQuickPlatformSystemTrayIcon - \inqmlmodule Qt.labs.platform - \since 5.8 - \brief A system tray icon. - - The SystemTrayIcon type provides an icon for an application in the system tray. - - Many desktop platforms provide a special system tray or notification area, - where applications can display icons and notification messages. - - \image qtlabsplatform-systemtrayicon.png - - The following example shows how to create a system tray icon, and how to make - use of the \l activated() signal: - - \code - SystemTrayIcon { - visible: true - icon.source: "qrc:/images/tray-icon.png" - - onActivated: { - window.show() - window.raise() - window.requestActivate() - } - } - \endcode - - \section2 Tray menu - - SystemTrayIcon can have a menu that opens when the icon is activated. - - \image qtlabsplatform-systemtrayicon-menu.png - - The following example illustrates how to assign a \l Menu to a system tray icon: - - \code - SystemTrayIcon { - visible: true - icon.source: "qrc:/images/tray-icon.png" - - menu: Menu { - MenuItem { - text: qsTr("Quit") - onTriggered: Qt.quit() - } - } - } - \endcode - - \section2 Notification messages - - SystemTrayIcon can display notification messages. - - \image qtlabsplatform-systemtrayicon-message.png - - The following example presents how to show a notification message using - \l showMessage(), and how to make use of the \l messageClicked() signal: - - \code - SystemTrayIcon { - visible: true - icon.source: "qrc:/images/tray-icon.png" - - onMessageClicked: console.log("Message clicked") - Component.onCompleted: showMessage("Message title", "Something important came up. Click this to know more.") - } - \endcode - - \section2 Availability - - A native system tray icon is currently \l available on the following platforms: - - \list - \li All window managers and independent tray implementations for X11 that implement the - \l{http://standards.freedesktop.org/systemtray-spec/systemtray-spec-0.2.html} - {freedesktop.org XEmbed system tray specification}. - \li All desktop environments that implement the - \l{http://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/StatusNotifierItem} - {freedesktop.org D-Bus StatusNotifierItem specification}, including recent versions of KDE and Unity. - \li All supported versions of macOS. Note that the Growl notification system must be installed - for showMessage() to display messages on OS X prior to 10.8 (Mountain Lion). - \endlist - - \input includes/widgets.qdocinc 1 - - \labs - - \sa Menu -*/ - -/*! - \qmlsignal Qt.labs.platform::SystemTrayIcon::activated(ActivationReason reason) - - This signal is emitted when the system tray icon is activated by the user. The - \a reason argument specifies how the system tray icon was activated. - - Available reasons: - - \value SystemTrayIcon.Unknown Unknown reason - \value SystemTrayIcon.Context The context menu for the system tray icon was requested - \value SystemTrayIcon.DoubleClick The system tray icon was double clicked - \value SystemTrayIcon.Trigger The system tray icon was clicked - \value SystemTrayIcon.MiddleClick The system tray icon was clicked with the middle mouse button -*/ - -/*! - \qmlsignal Qt.labs.platform::SystemTrayIcon::messageClicked() - - This signal is emitted when a notification message is clicked by the user. - - \sa showMessage() -*/ - -Q_DECLARE_LOGGING_CATEGORY(qtLabsPlatformTray) - -QQuickPlatformSystemTrayIcon::QQuickPlatformSystemTrayIcon(QObject *parent) - : QObject(parent), - m_complete(false), - m_visible(false), - m_menu(nullptr), - m_iconLoader(nullptr), - m_handle(nullptr) -{ - m_handle = QGuiApplicationPrivate::platformTheme()->createPlatformSystemTrayIcon(); - if (!m_handle) - m_handle = QWidgetPlatform::createSystemTrayIcon(this); - qCDebug(qtLabsPlatformTray) << "SystemTrayIcon ->" << m_handle; - - if (m_handle) { - connect(m_handle, &QPlatformSystemTrayIcon::activated, this, &QQuickPlatformSystemTrayIcon::activated); - connect(m_handle, &QPlatformSystemTrayIcon::messageClicked, this, &QQuickPlatformSystemTrayIcon::messageClicked); - } -} - -QQuickPlatformSystemTrayIcon::~QQuickPlatformSystemTrayIcon() -{ - if (m_menu) - m_menu->setSystemTrayIcon(nullptr); - cleanup(); - delete m_iconLoader; - m_iconLoader = nullptr; - delete m_handle; - m_handle = nullptr; -} - -QPlatformSystemTrayIcon *QQuickPlatformSystemTrayIcon::handle() const -{ - return m_handle; -} - -/*! - \readonly - \qmlproperty bool Qt.labs.platform::SystemTrayIcon::available - - This property holds whether the system tray is available. -*/ -bool QQuickPlatformSystemTrayIcon::isAvailable() const -{ - return m_handle && m_handle->isSystemTrayAvailable(); -} - -/*! - \readonly - \qmlproperty bool Qt.labs.platform::SystemTrayIcon::supportsMessages - - This property holds whether the system tray icon supports notification messages. - - \sa showMessage() -*/ -bool QQuickPlatformSystemTrayIcon::supportsMessages() const -{ - return m_handle && m_handle->supportsMessages(); -} - -/*! - \qmlproperty bool Qt.labs.platform::SystemTrayIcon::visible - - This property holds whether the system tray icon is visible. - - The default value is \c false. -*/ -bool QQuickPlatformSystemTrayIcon::isVisible() const -{ - return m_visible; -} - -void QQuickPlatformSystemTrayIcon::setVisible(bool visible) -{ - if (m_visible == visible) - return; - - if (m_handle && m_complete) { - if (visible) - init(); - else - cleanup(); - } - - m_visible = visible; - emit visibleChanged(); -} - -/*! - \qmlproperty string Qt.labs.platform::SystemTrayIcon::tooltip - - This property holds the tooltip of the system tray icon. -*/ -QString QQuickPlatformSystemTrayIcon::tooltip() const -{ - return m_tooltip; -} - -void QQuickPlatformSystemTrayIcon::setTooltip(const QString &tooltip) -{ - if (m_tooltip == tooltip) - return; - - if (m_handle && m_complete) - m_handle->updateToolTip(tooltip); - - m_tooltip = tooltip; - emit tooltipChanged(); -} - -/*! - \qmlproperty Menu Qt.labs.platform::SystemTrayIcon::menu - - This property holds a menu for the system tray icon. -*/ -QQuickPlatformMenu *QQuickPlatformSystemTrayIcon::menu() const -{ - return m_menu; -} - -void QQuickPlatformSystemTrayIcon::setMenu(QQuickPlatformMenu *menu) -{ - if (m_menu == menu) - return; - - if (m_menu) - m_menu->setSystemTrayIcon(nullptr); - if (menu) { - menu->setSystemTrayIcon(this); - if (m_handle && m_complete && menu->create()) - m_handle->updateMenu(menu->handle()); - } - - m_menu = menu; - emit menuChanged(); -} - -/*! - \since Qt.labs.platform 1.1 (Qt 5.12) - \qmlproperty rect Qt.labs.platform::SystemTrayIcon::geometry - - This property holds the geometry of the system tray icon. -*/ -QRect QQuickPlatformSystemTrayIcon::geometry() const -{ - return m_handle ? m_handle->geometry() : QRect(); -} - -/*! - \since Qt.labs.platform 1.1 (Qt 5.12) - \qmlproperty url Qt.labs.platform::SystemTrayIcon::icon.source - \qmlproperty string Qt.labs.platform::SystemTrayIcon::icon.name - \qmlproperty bool Qt.labs.platform::SystemTrayIcon::icon.mask - - This property holds the system tray icon. - - \code - SystemTrayIcon { - icon.mask: true - icon.source: "qrc:/images/tray-icon.png" - } - \endcode -*/ -QQuickPlatformIcon QQuickPlatformSystemTrayIcon::icon() const -{ - if (!m_iconLoader) - return QQuickPlatformIcon(); - - return m_iconLoader->icon(); -} - -void QQuickPlatformSystemTrayIcon::setIcon(const QQuickPlatformIcon &icon) -{ - if (iconLoader()->icon() == icon) - return; - - iconLoader()->setIcon(icon); - emit iconChanged(); -} - -/*! - \qmlmethod void Qt.labs.platform::SystemTrayIcon::show() - - Shows the system tray icon. -*/ -void QQuickPlatformSystemTrayIcon::show() -{ - setVisible(true); -} - -/*! - \qmlmethod void Qt.labs.platform::SystemTrayIcon::hide() - - Hides the system tray icon. -*/ -void QQuickPlatformSystemTrayIcon::hide() -{ - setVisible(false); -} - -/*! - \qmlmethod void Qt.labs.platform::SystemTrayIcon::showMessage(string title, string message, MessageIcon icon, int msecs) - - Shows a system tray message with the given \a title, \a message and \a icon - for the time specified in \a msecs. - - \note System tray messages are dependent on the system configuration and user preferences, - and may not appear at all. Therefore, it should not be relied upon as the sole means for providing - critical information. - - \sa supportsMessages, messageClicked() -*/ -void QQuickPlatformSystemTrayIcon::showMessage(const QString &title, const QString &msg, QPlatformSystemTrayIcon::MessageIcon icon, int msecs) -{ - if (m_handle) - m_handle->showMessage(title, msg, QIcon(), icon, msecs); -} - -void QQuickPlatformSystemTrayIcon::init() -{ - if (!m_handle) - return; - - m_handle->init(); - if (m_menu && m_menu->create()) - m_handle->updateMenu(m_menu->handle()); - m_handle->updateToolTip(m_tooltip); - if (m_iconLoader) - m_iconLoader->setEnabled(true); -} - -void QQuickPlatformSystemTrayIcon::cleanup() -{ - if (m_handle) - m_handle->cleanup(); - if (m_iconLoader) - m_iconLoader->setEnabled(false); -} - -void QQuickPlatformSystemTrayIcon::classBegin() -{ -} - -void QQuickPlatformSystemTrayIcon::componentComplete() -{ - m_complete = true; - if (m_visible) - init(); -} - -QQuickPlatformIconLoader *QQuickPlatformSystemTrayIcon::iconLoader() const -{ - if (!m_iconLoader) { - QQuickPlatformSystemTrayIcon *that = const_cast<QQuickPlatformSystemTrayIcon *>(this); - static int slot = staticMetaObject.indexOfSlot("updateIcon()"); - m_iconLoader = new QQuickPlatformIconLoader(slot, that); - m_iconLoader->setEnabled(m_complete); - } - return m_iconLoader; -} - -void QQuickPlatformSystemTrayIcon::updateIcon() -{ - if (!m_handle || !m_iconLoader) - return; - - const QRect oldGeometry = m_handle->geometry(); - - m_handle->updateIcon(m_iconLoader->toQIcon()); - - if (oldGeometry != m_handle->geometry()) - emit geometryChanged(); -} - -QT_END_NAMESPACE - -#include "moc_qquickplatformsystemtrayicon_p.cpp" diff --git a/src/labs/platform/qquickplatformsystemtrayicon_p.h b/src/labs/platform/qquickplatformsystemtrayicon_p.h deleted file mode 100644 index d7cc46c0..00000000 --- a/src/labs/platform/qquickplatformsystemtrayicon_p.h +++ /dev/null @@ -1,145 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMSYSTEMTRAYICON_P_H -#define QQUICKPLATFORMSYSTEMTRAYICON_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qurl.h> -#include <QtCore/qrect.h> -#include <QtGui/qpa/qplatformsystemtrayicon.h> -#include <QtQml/qqmlparserstatus.h> -#include <QtQml/qqml.h> - -#include "qquickplatformicon_p.h" - -QT_REQUIRE_CONFIG(systemtrayicon); - -QT_BEGIN_NAMESPACE - -class QQuickPlatformMenu; -class QQuickPlatformIconLoader; - -class QQuickPlatformSystemTrayIcon : public QObject, public QQmlParserStatus -{ - Q_OBJECT - Q_INTERFACES(QQmlParserStatus) - Q_PROPERTY(bool available READ isAvailable CONSTANT FINAL) - Q_PROPERTY(bool supportsMessages READ supportsMessages CONSTANT FINAL) - Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) - Q_PROPERTY(QString tooltip READ tooltip WRITE setTooltip NOTIFY tooltipChanged FINAL) - Q_PROPERTY(QQuickPlatformMenu *menu READ menu WRITE setMenu NOTIFY menuChanged FINAL) - Q_PROPERTY(QRect geometry READ geometry NOTIFY geometryChanged FINAL REVISION(1, 1)) - Q_PROPERTY(QQuickPlatformIcon icon READ icon WRITE setIcon NOTIFY iconChanged FINAL REVISION(1, 1)) - Q_ENUMS(QPlatformSystemTrayIcon::ActivationReason QPlatformSystemTrayIcon::MessageIcon) - -public: - explicit QQuickPlatformSystemTrayIcon(QObject *parent = nullptr); - ~QQuickPlatformSystemTrayIcon(); - - QPlatformSystemTrayIcon *handle() const; - - bool isAvailable() const; - bool supportsMessages() const; - - bool isVisible() const; - void setVisible(bool visible); - - QString tooltip() const; - void setTooltip(const QString &tooltip); - - QQuickPlatformMenu *menu() const; - void setMenu(QQuickPlatformMenu *menu); - - QRect geometry() const; - - QQuickPlatformIcon icon() const; - void setIcon(const QQuickPlatformIcon &icon); - -public Q_SLOTS: - void show(); - void hide(); - - void showMessage(const QString &title, const QString &message, - QPlatformSystemTrayIcon::MessageIcon iconType = QPlatformSystemTrayIcon::Information, int msecs = 10000); - -Q_SIGNALS: - void activated(QPlatformSystemTrayIcon::ActivationReason reason); - void messageClicked(); - void visibleChanged(); - void tooltipChanged(); - void menuChanged(); - Q_REVISION(2, 1) void geometryChanged(); - Q_REVISION(2, 1) void iconChanged(); - -protected: - void init(); - void cleanup(); - - void classBegin() override; - void componentComplete() override; - - QQuickPlatformIconLoader *iconLoader() const; - -private Q_SLOTS: - void updateIcon(); - -private: - bool m_complete; - bool m_visible; - QString m_tooltip; - QQuickPlatformMenu *m_menu; - mutable QQuickPlatformIconLoader *m_iconLoader; - QPlatformSystemTrayIcon *m_handle; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlatformSystemTrayIcon) -Q_DECLARE_METATYPE(QPlatformSystemTrayIcon::ActivationReason) -Q_DECLARE_METATYPE(QPlatformSystemTrayIcon::MessageIcon) - -#endif // QQUICKPLATFORMSYSTEMTRAYICON_P_H diff --git a/src/labs/platform/qtlabsplatformplugin.cpp b/src/labs/platform/qtlabsplatformplugin.cpp deleted file mode 100644 index 90bdb121..00000000 --- a/src/labs/platform/qtlabsplatformplugin.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Templates module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtQml/qqmlextensionplugin.h> -#include <QtQml/qqml.h> -#include <QtCore/qloggingcategory.h> - -#include "qquickplatformdialog_p.h" -#include "qquickplatformcolordialog_p.h" -#include "qquickplatformfiledialog_p.h" -#include "qquickplatformfolderdialog_p.h" -#include "qquickplatformfontdialog_p.h" -#include "qquickplatformmessagedialog_p.h" - -#include "qquickplatformmenu_p.h" -#include "qquickplatformmenubar_p.h" -#include "qquickplatformmenuitem_p.h" -#include "qquickplatformmenuitemgroup_p.h" -#include "qquickplatformmenuseparator_p.h" - -#include "qquickplatformstandardpaths_p.h" -#if QT_CONFIG(systemtrayicon) -# include "qquickplatformsystemtrayicon_p.h" -#endif - -#include "qquickplatformicon_p.h" - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(qtLabsPlatformDialogs, "qt.labs.platform.dialogs") -Q_LOGGING_CATEGORY(qtLabsPlatformMenus, "qt.labs.platform.menus") -Q_LOGGING_CATEGORY(qtLabsPlatformTray, "qt.labs.platform.tray") - -class QtLabsPlatformPlugin: public QQmlExtensionPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) - -public: - QtLabsPlatformPlugin(QObject *parent = nullptr); - void registerTypes(const char *uri) override; -}; - -QtLabsPlatformPlugin::QtLabsPlatformPlugin(QObject *parent) : QQmlExtensionPlugin(parent) -{ -} - -void QtLabsPlatformPlugin::registerTypes(const char *uri) -{ - qmlRegisterUncreatableType<QQuickPlatformDialog>(uri, 1, 0, "Dialog", QQuickPlatformDialog::tr("Dialog is an abstract base class")); - qmlRegisterType<QQuickPlatformColorDialog>(uri, 1, 0, "ColorDialog"); - qmlRegisterType<QQuickPlatformFileDialog>(uri, 1, 0, "FileDialog"); - qmlRegisterAnonymousType<QQuickPlatformFileNameFilter>(uri, 1); - qmlRegisterType<QQuickPlatformFolderDialog>(uri, 1, 0, "FolderDialog"); - qmlRegisterType<QQuickPlatformFontDialog>(uri, 1, 0, "FontDialog"); - qmlRegisterType<QQuickPlatformMessageDialog>(uri, 1, 0, "MessageDialog"); - - qmlRegisterType<QQuickPlatformMenu>(uri, 1, 0, "Menu"); - qmlRegisterType<QQuickPlatformMenuBar>(uri, 1, 0, "MenuBar"); - qmlRegisterType<QQuickPlatformMenuItem>(uri, 1, 0, "MenuItem"); - qmlRegisterType<QQuickPlatformMenuItem, 1>(uri, 1, 1, "MenuItem"); - qmlRegisterType<QQuickPlatformMenuItemGroup>(uri, 1, 0, "MenuItemGroup"); - qmlRegisterType<QQuickPlatformMenuSeparator>(uri, 1, 0, "MenuSeparator"); - qRegisterMetaType<QPlatformMenu::MenuType>(); - - qmlRegisterUncreatableType<QPlatformDialogHelper>(uri, 1, 0, "StandardButton", QQuickPlatformDialog::tr("Cannot create an instance of StandardButton")); - qmlRegisterSingletonType<QQuickPlatformStandardPaths>(uri, 1, 0, "StandardPaths", QQuickPlatformStandardPaths::create); - qRegisterMetaType<QStandardPaths::StandardLocation>(); - qRegisterMetaType<QStandardPaths::LocateOptions>(); - -#if QT_CONFIG(systemtrayicon) - qmlRegisterType<QQuickPlatformSystemTrayIcon>(uri, 1, 0, "SystemTrayIcon"); - qmlRegisterType<QQuickPlatformSystemTrayIcon, 1>(uri, 1, 1, "SystemTrayIcon"); - qRegisterMetaType<QPlatformSystemTrayIcon::ActivationReason>(); - qRegisterMetaType<QPlatformSystemTrayIcon::MessageIcon>(); -#endif - - qmlRegisterAnonymousType<QQuickPlatformIcon>(uri, 1); - qRegisterMetaType<QQuickPlatformIcon>(); -} - -QT_END_NAMESPACE - -#include "qtlabsplatformplugin.moc" diff --git a/src/labs/platform/widgets/qwidgetplatform_p.h b/src/labs/platform/widgets/qwidgetplatform_p.h deleted file mode 100644 index cbdaa24a..00000000 --- a/src/labs/platform/widgets/qwidgetplatform_p.h +++ /dev/null @@ -1,170 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWIDGETPLATFORM_P_H -#define QWIDGETPLATFORM_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qdebug.h> -#include <QtCore/qcoreapplication.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtGui/qpa/qplatformdialoghelper.h> -#include <QtGui/qpa/qplatformsystemtrayicon.h> -#include <QtGui/qpa/qplatformmenu.h> - -#ifdef QT_WIDGETS_LIB -#include <QtWidgets/qtwidgetsglobal.h> -#if QT_CONFIG(colordialog) -#include "qwidgetplatformcolordialog_p.h" -#endif -#if QT_CONFIG(filedialog) -#include "qwidgetplatformfiledialog_p.h" -#endif -#if QT_CONFIG(fontdialog) -#include "qwidgetplatformfontdialog_p.h" -#endif -#if QT_CONFIG(messagebox) -#include "qwidgetplatformmessagedialog_p.h" -#endif -#if QT_CONFIG(menu) -#include "qwidgetplatformmenu_p.h" -#include "qwidgetplatformmenuitem_p.h" -#endif -#ifndef QT_NO_SYSTEMTRAYICON -#include "qwidgetplatformsystemtrayicon_p.h" -#endif -#endif - -QT_BEGIN_NAMESPACE - -#ifndef QT_WIDGETS_LIB -typedef QPlatformMenu QWidgetPlatformMenu; -typedef QPlatformMenuItem QWidgetPlatformMenuItem; -typedef QPlatformColorDialogHelper QWidgetPlatformColorDialog; -typedef QPlatformFileDialogHelper QWidgetPlatformFileDialog; -typedef QPlatformFontDialogHelper QWidgetPlatformFontDialog; -typedef QPlatformMessageDialogHelper QWidgetPlatformMessageDialog; -typedef QPlatformSystemTrayIcon QWidgetPlatformSystemTrayIcon; -#endif - -namespace QWidgetPlatform -{ - static inline bool isAvailable(const char *type) - { - if (!qApp->inherits("QApplication")) { - qCritical("\nERROR: No native %s implementation available." - "\nQt Labs Platform requires Qt Widgets on this setup." - "\nAdd 'QT += widgets' to .pro and create QApplication in main().\n", type); - return false; - } - return true; - } - - template<typename T> - static inline T *createWidget(const char *name, QObject *parent) - { - static bool available = isAvailable(name); -#ifdef QT_WIDGETS_LIB - if (available) - return new T(parent); -#else - Q_UNUSED(parent); - Q_UNUSED(available); -#endif - return nullptr; - } - - static inline QPlatformMenu *createMenu(QObject *parent = nullptr) { -#if defined(QT_WIDGETS_LIB) && QT_CONFIG(menu) - return createWidget<QWidgetPlatformMenu>("Menu", parent); -#else - Q_UNUSED(parent); - return nullptr; -#endif - } - static inline QPlatformMenuItem *createMenuItem(QObject *parent = nullptr) { -#if defined(QT_WIDGETS_LIB) && QT_CONFIG(menu) - return createWidget<QWidgetPlatformMenuItem>("MenuItem", parent); -#else - Q_UNUSED(parent); - return nullptr; -#endif - } - static inline QPlatformSystemTrayIcon *createSystemTrayIcon(QObject *parent = nullptr) { -#ifndef QT_NO_SYSTEMTRAYICON - return createWidget<QWidgetPlatformSystemTrayIcon>("SystemTrayIcon", parent); -#else - Q_UNUSED(parent); - return nullptr; -#endif - } - static inline QPlatformDialogHelper *createDialog(QPlatformTheme::DialogType type, QObject *parent = nullptr) - { -#if !defined(QT_WIDGETS_LIB) || !(QT_CONFIG(colordialog) || QT_CONFIG(filedialog) || QT_CONFIG(fontdialog) || QT_CONFIG(messagebox)) - Q_UNUSED(parent); -#endif - switch (type) { -#if defined(QT_WIDGETS_LIB) && QT_CONFIG(colordialog) - case QPlatformTheme::ColorDialog: return createWidget<QWidgetPlatformColorDialog>("ColorDialog", parent); -#endif -#if defined(QT_WIDGETS_LIB) && QT_CONFIG(filedialog) - case QPlatformTheme::FileDialog: return createWidget<QWidgetPlatformFileDialog>("FileDialog", parent); -#endif -#if defined(QT_WIDGETS_LIB) && QT_CONFIG(fontdialog) - case QPlatformTheme::FontDialog: return createWidget<QWidgetPlatformFontDialog>("FontDialog", parent); -#endif -#if defined(QT_WIDGETS_LIB) && QT_CONFIG(messagebox) - case QPlatformTheme::MessageDialog: return createWidget<QWidgetPlatformMessageDialog>("MessageDialog", parent); -#endif - default: break; - } - return nullptr; - } -} - -QT_END_NAMESPACE - -#endif // QWIDGETPLATFORM_P_H diff --git a/src/labs/platform/widgets/qwidgetplatformcolordialog.cpp b/src/labs/platform/widgets/qwidgetplatformcolordialog.cpp deleted file mode 100644 index 6c0043ae..00000000 --- a/src/labs/platform/widgets/qwidgetplatformcolordialog.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwidgetplatformcolordialog_p.h" -#include "qwidgetplatformdialog_p.h" - -#include <QtWidgets/qcolordialog.h> - -QT_BEGIN_NAMESPACE - -QWidgetPlatformColorDialog::QWidgetPlatformColorDialog(QObject *parent) - : m_dialog(new QColorDialog) -{ - setParent(parent); - - connect(m_dialog.data(), &QColorDialog::accepted, this, &QPlatformDialogHelper::accept); - connect(m_dialog.data(), &QColorDialog::rejected, this, &QPlatformDialogHelper::reject); - connect(m_dialog.data(), &QColorDialog::currentColorChanged, this, &QPlatformColorDialogHelper::currentColorChanged); -} - -QWidgetPlatformColorDialog::~QWidgetPlatformColorDialog() -{ -} - -QColor QWidgetPlatformColorDialog::currentColor() const -{ - return m_dialog->currentColor(); -} - -void QWidgetPlatformColorDialog::setCurrentColor(const QColor &color) -{ - m_dialog->setCurrentColor(color); -} - -void QWidgetPlatformColorDialog::exec() -{ - m_dialog->exec(); -} - -bool QWidgetPlatformColorDialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) -{ - QSharedPointer<QColorDialogOptions> options = QPlatformColorDialogHelper::options(); - m_dialog->setWindowTitle(options->windowTitle()); - m_dialog->setOptions(static_cast<QColorDialog::ColorDialogOptions>(int(options->options())) | QColorDialog::DontUseNativeDialog); - - return QWidgetPlatformDialog::show(m_dialog.data(), flags, modality, parent); -} - -void QWidgetPlatformColorDialog::hide() -{ - m_dialog->hide(); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/widgets/qwidgetplatformcolordialog_p.h b/src/labs/platform/widgets/qwidgetplatformcolordialog_p.h deleted file mode 100644 index 09ed5a1e..00000000 --- a/src/labs/platform/widgets/qwidgetplatformcolordialog_p.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWIDGETPLATFORMCOLORDIALOG_P_H -#define QWIDGETPLATFORMCOLORDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpa/qplatformdialoghelper.h> - -QT_BEGIN_NAMESPACE - -class QColorDialog; - -class QWidgetPlatformColorDialog : public QPlatformColorDialogHelper -{ - Q_OBJECT - -public: - explicit QWidgetPlatformColorDialog(QObject *parent = nullptr); - ~QWidgetPlatformColorDialog(); - - QColor currentColor() const override; - void setCurrentColor(const QColor &color) override; - - void exec() override; - bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) override; - void hide() override; - -private: - QScopedPointer<QColorDialog> m_dialog; -}; - -QT_END_NAMESPACE - -#endif // QWIDGETPLATFORMCOLORDIALOG_P_H diff --git a/src/labs/platform/widgets/qwidgetplatformdialog.cpp b/src/labs/platform/widgets/qwidgetplatformdialog.cpp deleted file mode 100644 index 3a206839..00000000 --- a/src/labs/platform/widgets/qwidgetplatformdialog.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwidgetplatformdialog_p.h" - -#include <QtGui/qwindow.h> -#include <QtWidgets/qdialog.h> - -QT_BEGIN_NAMESPACE - -bool QWidgetPlatformDialog::show(QDialog *dialog, Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) -{ - dialog->setWindowFlags(flags); - dialog->setWindowModality(modality); - - dialog->createWinId(); - QWindow *handle = dialog->windowHandle(); - Q_ASSERT(handle); - handle->setTransientParent(const_cast<QWindow *>(parent)); - - dialog->show(); - return true; -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/widgets/qwidgetplatformdialog_p.h b/src/labs/platform/widgets/qwidgetplatformdialog_p.h deleted file mode 100644 index d4f27655..00000000 --- a/src/labs/platform/widgets/qwidgetplatformdialog_p.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWIDGETPLATFORMDIALOG_P_H -#define QWIDGETPLATFORMDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qnamespace.h> - -QT_BEGIN_NAMESPACE - -class QDialog; -class QWindow; - -class QWidgetPlatformDialog -{ -public: - static bool show(QDialog *dialog, Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent); -}; - -QT_END_NAMESPACE - -#endif // QWIDGETPLATFORMDIALOG_P_H diff --git a/src/labs/platform/widgets/qwidgetplatformfiledialog.cpp b/src/labs/platform/widgets/qwidgetplatformfiledialog.cpp deleted file mode 100644 index 21ac6527..00000000 --- a/src/labs/platform/widgets/qwidgetplatformfiledialog.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwidgetplatformfiledialog_p.h" -#include "qwidgetplatformdialog_p.h" - -#include <QtWidgets/qfiledialog.h> - -QT_BEGIN_NAMESPACE - -QWidgetPlatformFileDialog::QWidgetPlatformFileDialog(QObject *parent) - : m_dialog(new QFileDialog) -{ - setParent(parent); - - connect(m_dialog.data(), &QDialog::accepted, this, &QPlatformDialogHelper::accept); - connect(m_dialog.data(), &QDialog::rejected, this, &QPlatformDialogHelper::reject); - - connect(m_dialog.data(), &QFileDialog::fileSelected, [this](const QString &file) { - emit fileSelected(QUrl::fromLocalFile(file)); - }); - connect(m_dialog.data(), &QFileDialog::filesSelected, [this](const QList<QString> &files) { - QList<QUrl> urls; - urls.reserve(files.count()); - for (const QString &file : files) - urls += QUrl::fromLocalFile(file); - emit filesSelected(urls); - }); - connect(m_dialog.data(), &QFileDialog::currentChanged, [this](const QString &path) { - emit currentChanged(QUrl::fromLocalFile(path)); - }); - connect(m_dialog.data(), &QFileDialog::directoryEntered, this, &QWidgetPlatformFileDialog::directoryEntered); - connect(m_dialog.data(), &QFileDialog::filterSelected, this, &QWidgetPlatformFileDialog::filterSelected); -} - -QWidgetPlatformFileDialog::~QWidgetPlatformFileDialog() -{ -} - -bool QWidgetPlatformFileDialog::defaultNameFilterDisables() const -{ - return false; // TODO: ? -} - -void QWidgetPlatformFileDialog::setDirectory(const QUrl &directory) -{ - m_dialog->setDirectory(directory.toLocalFile()); -} - -QUrl QWidgetPlatformFileDialog::directory() const -{ - return m_dialog->directoryUrl(); -} - -void QWidgetPlatformFileDialog::selectFile(const QUrl &filename) -{ - m_dialog->selectUrl(filename); -} - -QList<QUrl> QWidgetPlatformFileDialog::selectedFiles() const -{ - return m_dialog->selectedUrls(); -} - -void QWidgetPlatformFileDialog::setFilter() -{ - // TODO: ? -} - -void QWidgetPlatformFileDialog::selectNameFilter(const QString &filter) -{ - m_dialog->selectNameFilter(filter); -} - -QString QWidgetPlatformFileDialog::selectedNameFilter() const -{ - return m_dialog->selectedNameFilter(); -} - -void QWidgetPlatformFileDialog::exec() -{ - m_dialog->exec(); -} - -bool QWidgetPlatformFileDialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) -{ - QSharedPointer<QFileDialogOptions> options = QPlatformFileDialogHelper::options(); - m_dialog->setWindowTitle(options->windowTitle()); - m_dialog->setAcceptMode(static_cast<QFileDialog::AcceptMode>(options->acceptMode())); - m_dialog->setFileMode(static_cast<QFileDialog::FileMode>(options->fileMode())); - m_dialog->setOptions(static_cast<QFileDialog::Options>(int(options->options())) | QFileDialog::DontUseNativeDialog); - m_dialog->setNameFilters(options->nameFilters()); - m_dialog->setDefaultSuffix(options->defaultSuffix()); - if (options->isLabelExplicitlySet(QFileDialogOptions::Accept)) - m_dialog->setLabelText(QFileDialog::Accept, options->labelText(QFileDialogOptions::Accept)); - if (options->isLabelExplicitlySet(QFileDialogOptions::Reject)) - m_dialog->setLabelText(QFileDialog::Reject, options->labelText(QFileDialogOptions::Reject)); - - return QWidgetPlatformDialog::show(m_dialog.data(), flags, modality, parent); -} - -void QWidgetPlatformFileDialog::hide() -{ - m_dialog->hide(); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/widgets/qwidgetplatformfiledialog_p.h b/src/labs/platform/widgets/qwidgetplatformfiledialog_p.h deleted file mode 100644 index 3dba6038..00000000 --- a/src/labs/platform/widgets/qwidgetplatformfiledialog_p.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWIDGETPLATFORMFILEDIALOG_P_H -#define QWIDGETPLATFORMFILEDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpa/qplatformdialoghelper.h> - -QT_BEGIN_NAMESPACE - -class QFileDialog; - -class QWidgetPlatformFileDialog : public QPlatformFileDialogHelper -{ - Q_OBJECT - -public: - explicit QWidgetPlatformFileDialog(QObject *parent = nullptr); - ~QWidgetPlatformFileDialog(); - - bool defaultNameFilterDisables() const override; - void setDirectory(const QUrl &directory) override; - QUrl directory() const override; - void selectFile(const QUrl &filename) override; - QList<QUrl> selectedFiles() const override; - void setFilter() override; - void selectNameFilter(const QString &filter) override; - QString selectedNameFilter() const override; - - void exec() override; - bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) override; - void hide() override; - -private: - QScopedPointer<QFileDialog> m_dialog; -}; - -QT_END_NAMESPACE - -#endif // QWIDGETPLATFORMFILEDIALOG_P_H diff --git a/src/labs/platform/widgets/qwidgetplatformfontdialog.cpp b/src/labs/platform/widgets/qwidgetplatformfontdialog.cpp deleted file mode 100644 index 315e7c73..00000000 --- a/src/labs/platform/widgets/qwidgetplatformfontdialog.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwidgetplatformfontdialog_p.h" -#include "qwidgetplatformdialog_p.h" - -#include <QtWidgets/qfontdialog.h> - -QT_BEGIN_NAMESPACE - -QWidgetPlatformFontDialog::QWidgetPlatformFontDialog(QObject *parent) - : m_dialog(new QFontDialog) -{ - setParent(parent); - - connect(m_dialog.data(), &QFontDialog::accepted, this, &QPlatformDialogHelper::accept); - connect(m_dialog.data(), &QFontDialog::rejected, this, &QPlatformDialogHelper::reject); - connect(m_dialog.data(), &QFontDialog::currentFontChanged, this, &QPlatformFontDialogHelper::currentFontChanged); -} - -QWidgetPlatformFontDialog::~QWidgetPlatformFontDialog() -{ -} - -QFont QWidgetPlatformFontDialog::currentFont() const -{ - return m_dialog->currentFont(); -} - -void QWidgetPlatformFontDialog::setCurrentFont(const QFont &font) -{ - m_dialog->setCurrentFont(font); -} - -void QWidgetPlatformFontDialog::exec() -{ - m_dialog->exec(); -} - -bool QWidgetPlatformFontDialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) -{ - QSharedPointer<QFontDialogOptions> options = QPlatformFontDialogHelper::options(); - m_dialog->setWindowTitle(options->windowTitle()); - m_dialog->setOptions(static_cast<QFontDialog::FontDialogOptions>(int(options->options())) | QFontDialog::DontUseNativeDialog); - - return QWidgetPlatformDialog::show(m_dialog.data(), flags, modality, parent); -} - -void QWidgetPlatformFontDialog::hide() -{ - m_dialog->hide(); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/widgets/qwidgetplatformfontdialog_p.h b/src/labs/platform/widgets/qwidgetplatformfontdialog_p.h deleted file mode 100644 index e5d13b31..00000000 --- a/src/labs/platform/widgets/qwidgetplatformfontdialog_p.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWIDGETPLATFORMFONTDIALOG_P_H -#define QWIDGETPLATFORMFONTDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpa/qplatformdialoghelper.h> - -QT_BEGIN_NAMESPACE - -class QFontDialog; - -class QWidgetPlatformFontDialog : public QPlatformFontDialogHelper -{ - Q_OBJECT - -public: - explicit QWidgetPlatformFontDialog(QObject *parent = nullptr); - ~QWidgetPlatformFontDialog(); - - QFont currentFont() const override; - void setCurrentFont(const QFont &font) override; - - void exec() override; - bool show(Qt::WindowFlags windowFlags, Qt::WindowModality windowModality, QWindow *parent) override; - void hide() override; - -private: - QScopedPointer<QFontDialog> m_dialog; -}; - -QT_END_NAMESPACE - -#endif // QWIDGETPLATFORMFONTDIALOG_P_H diff --git a/src/labs/platform/widgets/qwidgetplatformmenu.cpp b/src/labs/platform/widgets/qwidgetplatformmenu.cpp deleted file mode 100644 index f04620a3..00000000 --- a/src/labs/platform/widgets/qwidgetplatformmenu.cpp +++ /dev/null @@ -1,183 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwidgetplatformmenu_p.h" -#include "qwidgetplatformmenuitem_p.h" - -#include <QtGui/qaction.h> -#include <QtGui/qwindow.h> -#include <QtWidgets/qmenu.h> - -QT_BEGIN_NAMESPACE - -QWidgetPlatformMenu::QWidgetPlatformMenu(QObject *parent) - : m_menu(new QMenu) -{ - setParent(parent); - - connect(m_menu.data(), &QMenu::aboutToShow, this, &QPlatformMenu::aboutToShow); - connect(m_menu.data(), &QMenu::aboutToHide, this, &QPlatformMenu::aboutToHide); -} - -QWidgetPlatformMenu::~QWidgetPlatformMenu() -{ -} - -QMenu *QWidgetPlatformMenu::menu() const -{ - return m_menu.data(); -} - -void QWidgetPlatformMenu::insertMenuItem(QPlatformMenuItem *item, QPlatformMenuItem *before) -{ - QWidgetPlatformMenuItem *widgetItem = qobject_cast<QWidgetPlatformMenuItem *>(item); - if (!widgetItem) - return; - - QWidgetPlatformMenuItem *widgetBefore = qobject_cast<QWidgetPlatformMenuItem *>(before); - m_menu->insertAction(widgetBefore ? widgetBefore->action() : nullptr, widgetItem->action()); - int index = m_items.indexOf(widgetBefore); - if (index < 0) - index = m_items.count(); - m_items.insert(index, widgetItem); -} - -void QWidgetPlatformMenu::removeMenuItem(QPlatformMenuItem *item) -{ - QWidgetPlatformMenuItem *widgetItem = qobject_cast<QWidgetPlatformMenuItem *>(item); - if (!widgetItem) - return; - - m_items.removeOne(widgetItem); - m_menu->removeAction(widgetItem->action()); -} - -void QWidgetPlatformMenu::syncMenuItem(QPlatformMenuItem *item) -{ - Q_UNUSED(item); -} - -void QWidgetPlatformMenu::syncSeparatorsCollapsible(bool enable) -{ - m_menu->setSeparatorsCollapsible(enable); -} - -void QWidgetPlatformMenu::setText(const QString &text) -{ - m_menu->setTitle(text); -} - -void QWidgetPlatformMenu::setIcon(const QIcon &icon) -{ - m_menu->setIcon(icon); -} - -void QWidgetPlatformMenu::setEnabled(bool enabled) -{ - m_menu->menuAction()->setEnabled(enabled); -} - -bool QWidgetPlatformMenu::isEnabled() const -{ - return m_menu->menuAction()->isEnabled(); -} - -void QWidgetPlatformMenu::setVisible(bool visible) -{ - m_menu->menuAction()->setVisible(visible); -} - -void QWidgetPlatformMenu::setMinimumWidth(int width) -{ - if (width > 0) - m_menu->setMinimumWidth(width); -} - -void QWidgetPlatformMenu::setFont(const QFont &font) -{ - m_menu->setFont(font); -} - -void QWidgetPlatformMenu::setMenuType(MenuType type) -{ - Q_UNUSED(type); -} - -void QWidgetPlatformMenu::showPopup(const QWindow *window, const QRect &targetRect, const QPlatformMenuItem *item) -{ - m_menu->createWinId(); - QWindow *handle = m_menu->windowHandle(); - Q_ASSERT(handle); - handle->setTransientParent(const_cast<QWindow *>(window)); - - QPoint targetPos = targetRect.bottomLeft(); - if (window) - targetPos = window->mapToGlobal(targetPos); - - const QWidgetPlatformMenuItem *widgetItem = qobject_cast<const QWidgetPlatformMenuItem *>(item); - m_menu->popup(targetPos, widgetItem ? widgetItem->action() : nullptr); -} - -void QWidgetPlatformMenu::dismiss() -{ - m_menu->close(); -} - -QPlatformMenuItem *QWidgetPlatformMenu::menuItemAt(int position) const -{ - return m_items.value(position); -} - -QPlatformMenuItem *QWidgetPlatformMenu::menuItemForTag(quintptr tag) const -{ - for (QWidgetPlatformMenuItem *item : m_items) { - if (item->tag() == tag) - return item; - } - return nullptr; -} - -QPlatformMenuItem *QWidgetPlatformMenu::createMenuItem() const -{ - return new QWidgetPlatformMenuItem; -} - -QPlatformMenu *QWidgetPlatformMenu::createSubMenu() const -{ - return new QWidgetPlatformMenu; -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/widgets/qwidgetplatformmenu_p.h b/src/labs/platform/widgets/qwidgetplatformmenu_p.h deleted file mode 100644 index 9d1ef57e..00000000 --- a/src/labs/platform/widgets/qwidgetplatformmenu_p.h +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWIDGETPLATFORMMENU_P_H -#define QWIDGETPLATFORMMENU_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpa/qplatformmenu.h> - -QT_BEGIN_NAMESPACE - -class QMenu; -class QWidgetPlatformMenuItem; - -class QWidgetPlatformMenu : public QPlatformMenu -{ - Q_OBJECT - -public: - explicit QWidgetPlatformMenu(QObject *parent = nullptr); - ~QWidgetPlatformMenu(); - - QMenu *menu() const; - - void insertMenuItem(QPlatformMenuItem *item, QPlatformMenuItem *before) override; - void removeMenuItem(QPlatformMenuItem *item) override; - void syncMenuItem(QPlatformMenuItem *item) override; - void syncSeparatorsCollapsible(bool enable) override; - - void setText(const QString &text) override; - void setIcon(const QIcon &icon) override; - void setEnabled(bool enabled) override; - bool isEnabled() const override; - void setVisible(bool visible) override; - void setMinimumWidth(int width) override; - void setFont(const QFont &font) override; - void setMenuType(MenuType type) override; - - void showPopup(const QWindow *window, const QRect &targetRect, const QPlatformMenuItem *item) override; - void dismiss() override; - - QPlatformMenuItem *menuItemAt(int position) const override; - QPlatformMenuItem *menuItemForTag(quintptr tag) const override; - - QPlatformMenuItem *createMenuItem() const override; - QPlatformMenu *createSubMenu() const override; - -private: - QScopedPointer<QMenu> m_menu; - QList<QWidgetPlatformMenuItem *> m_items; -}; - -QT_END_NAMESPACE - -#endif // QWIDGETPLATFORMMENU_P_H diff --git a/src/labs/platform/widgets/qwidgetplatformmenuitem.cpp b/src/labs/platform/widgets/qwidgetplatformmenuitem.cpp deleted file mode 100644 index ea4de57f..00000000 --- a/src/labs/platform/widgets/qwidgetplatformmenuitem.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwidgetplatformmenuitem_p.h" -#include "qwidgetplatformmenu_p.h" - -#include <QtGui/qaction.h> -#include <QtWidgets/qmenu.h> - -QT_BEGIN_NAMESPACE - -QWidgetPlatformMenuItem::QWidgetPlatformMenuItem(QObject *parent) - : m_action(new QAction) -{ - setParent(parent); - connect(m_action.data(), &QAction::hovered, this, &QPlatformMenuItem::hovered); - connect(m_action.data(), &QAction::triggered, this, &QPlatformMenuItem::activated); -} - -QWidgetPlatformMenuItem::~QWidgetPlatformMenuItem() -{ -} - -QAction *QWidgetPlatformMenuItem::action() const -{ - return m_action.data(); -} - -void QWidgetPlatformMenuItem::setText(const QString &text) -{ - m_action->setText(text); -} - -void QWidgetPlatformMenuItem::setIcon(const QIcon &icon) -{ - m_action->setIcon(icon); -} - -void QWidgetPlatformMenuItem::setMenu(QPlatformMenu *menu) -{ - QWidgetPlatformMenu *widgetMenu = qobject_cast<QWidgetPlatformMenu *>(menu); - m_action->setMenu(widgetMenu ? widgetMenu->menu() : nullptr); -} - -void QWidgetPlatformMenuItem::setVisible(bool visible) -{ - m_action->setVisible(visible); -} - -void QWidgetPlatformMenuItem::setIsSeparator(bool separator) -{ - m_action->setSeparator(separator); -} - -void QWidgetPlatformMenuItem::setFont(const QFont &font) -{ - m_action->setFont(font); -} - -void QWidgetPlatformMenuItem::setRole(MenuRole role) -{ - m_action->setMenuRole(static_cast<QAction::MenuRole>(role)); -} - -void QWidgetPlatformMenuItem::setCheckable(bool checkable) -{ - m_action->setCheckable(checkable); -} - -void QWidgetPlatformMenuItem::setChecked(bool checked) -{ - m_action->setChecked(checked); -} - -#if QT_CONFIG(shortcut) -void QWidgetPlatformMenuItem::setShortcut(const QKeySequence &shortcut) -{ - m_action->setShortcut(shortcut); -} -#endif - -void QWidgetPlatformMenuItem::setEnabled(bool enabled) -{ - m_action->setEnabled(enabled); -} - -void QWidgetPlatformMenuItem::setIconSize(int size) -{ - Q_UNUSED(size); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/widgets/qwidgetplatformmenuitem_p.h b/src/labs/platform/widgets/qwidgetplatformmenuitem_p.h deleted file mode 100644 index 43b3fc17..00000000 --- a/src/labs/platform/widgets/qwidgetplatformmenuitem_p.h +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWIDGETPLATFORMMENUITEM_P_H -#define QWIDGETPLATFORMMENUITEM_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpa/qplatformmenu.h> - -QT_BEGIN_NAMESPACE - -class QAction; - -class QWidgetPlatformMenuItem : public QPlatformMenuItem -{ - Q_OBJECT - -public: - explicit QWidgetPlatformMenuItem(QObject *parent = nullptr); - ~QWidgetPlatformMenuItem(); - - QAction *action() const; - - void setText(const QString &text) override; - void setIcon(const QIcon &icon) override; - void setMenu(QPlatformMenu *menu) override; - void setVisible(bool visible) override; - void setIsSeparator(bool separator) override; - void setFont(const QFont &font) override; - void setRole(MenuRole role) override; - void setCheckable(bool checkable) override; - void setChecked(bool checked) override; -#if QT_CONFIG(shortcut) - void setShortcut(const QKeySequence& shortcut) override; -#endif - void setEnabled(bool enabled) override; - void setIconSize(int size) override; - -private: - QScopedPointer<QAction> m_action; -}; - -QT_END_NAMESPACE - -#endif // QWIDGETPLATFORMMENUITEM_P_H diff --git a/src/labs/platform/widgets/qwidgetplatformmessagedialog.cpp b/src/labs/platform/widgets/qwidgetplatformmessagedialog.cpp deleted file mode 100644 index 365692dc..00000000 --- a/src/labs/platform/widgets/qwidgetplatformmessagedialog.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwidgetplatformmessagedialog_p.h" -#include "qwidgetplatformdialog_p.h" - -#include <QtWidgets/qmessagebox.h> -#include <QtWidgets/qabstractbutton.h> - -QT_BEGIN_NAMESPACE - -QWidgetPlatformMessageDialog::QWidgetPlatformMessageDialog(QObject *parent) - : m_dialog(new QMessageBox) -{ - setParent(parent); - - connect(m_dialog.data(), &QMessageBox::accepted, this, &QPlatformDialogHelper::accept); - connect(m_dialog.data(), &QMessageBox::rejected, this, &QPlatformDialogHelper::reject); - connect(m_dialog.data(), &QMessageBox::buttonClicked, [this](QAbstractButton *button) { - QMessageBox::ButtonRole role = m_dialog->buttonRole(button); - QMessageBox::StandardButton standardButton = m_dialog->standardButton(button); - emit clicked(static_cast<StandardButton>(standardButton), static_cast<ButtonRole>(role)); - }); -} - -QWidgetPlatformMessageDialog::~QWidgetPlatformMessageDialog() -{ -} -void QWidgetPlatformMessageDialog::exec() -{ - m_dialog->exec(); -} - -bool QWidgetPlatformMessageDialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) -{ - QSharedPointer<QMessageDialogOptions> options = QPlatformMessageDialogHelper::options(); - m_dialog->setWindowTitle(options->windowTitle()); - m_dialog->setIcon(static_cast<QMessageBox::Icon>(options->icon())); - m_dialog->setText(options->text()); - m_dialog->setInformativeText(options->informativeText()); -#if QT_CONFIG(textedit) - m_dialog->setDetailedText(options->detailedText()); -#endif - m_dialog->setStandardButtons(static_cast<QMessageBox::StandardButtons>(int(options->standardButtons()))); - - return QWidgetPlatformDialog::show(m_dialog.data(), flags, modality, parent); -} - -void QWidgetPlatformMessageDialog::hide() -{ - m_dialog->hide(); -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/widgets/qwidgetplatformmessagedialog_p.h b/src/labs/platform/widgets/qwidgetplatformmessagedialog_p.h deleted file mode 100644 index 6581337a..00000000 --- a/src/labs/platform/widgets/qwidgetplatformmessagedialog_p.h +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWIDGETPLATFORMMESSAGEDIALOG_P_H -#define QWIDGETPLATFORMMESSAGEDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpa/qplatformdialoghelper.h> - -QT_BEGIN_NAMESPACE - -class QMessageBox; - -class QWidgetPlatformMessageDialog : public QPlatformMessageDialogHelper -{ - Q_OBJECT - -public: - explicit QWidgetPlatformMessageDialog(QObject *parent = nullptr); - ~QWidgetPlatformMessageDialog(); - - void exec() override; - bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) override; - void hide() override; - -private: - QScopedPointer<QMessageBox> m_dialog; -}; - -QT_END_NAMESPACE - -#endif // QWIDGETPLATFORMMESSAGEDIALOG_P_H diff --git a/src/labs/platform/widgets/qwidgetplatformsystemtrayicon.cpp b/src/labs/platform/widgets/qwidgetplatformsystemtrayicon.cpp deleted file mode 100644 index e406ff03..00000000 --- a/src/labs/platform/widgets/qwidgetplatformsystemtrayicon.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwidgetplatformsystemtrayicon_p.h" -#include "qwidgetplatformmenu_p.h" - -#include <QtWidgets/qsystemtrayicon.h> - -QT_BEGIN_NAMESPACE - -QWidgetPlatformSystemTrayIcon::QWidgetPlatformSystemTrayIcon(QObject *parent) - : m_systray(new QSystemTrayIcon) -{ - setParent(parent); - - connect(m_systray.data(), &QSystemTrayIcon::messageClicked, this, &QPlatformSystemTrayIcon::messageClicked); - connect(m_systray.data(), &QSystemTrayIcon::activated, [this](QSystemTrayIcon::ActivationReason reason) { - emit activated(static_cast<ActivationReason>(reason)); - }); -} - -QWidgetPlatformSystemTrayIcon::~QWidgetPlatformSystemTrayIcon() -{ -} - -void QWidgetPlatformSystemTrayIcon::init() -{ - m_systray->show(); -} - -void QWidgetPlatformSystemTrayIcon::cleanup() -{ - m_systray->hide(); -} - -void QWidgetPlatformSystemTrayIcon::updateIcon(const QIcon &icon) -{ - m_systray->setIcon(icon); -} - -void QWidgetPlatformSystemTrayIcon::updateToolTip(const QString &tooltip) -{ - m_systray->setToolTip(tooltip); -} - -void QWidgetPlatformSystemTrayIcon::updateMenu(QPlatformMenu *menu) -{ -#if QT_CONFIG(menu) - QWidgetPlatformMenu *widgetMenu = qobject_cast<QWidgetPlatformMenu *>(menu); - if (!widgetMenu) - return; - - m_systray->setContextMenu(widgetMenu->menu()); -#else - Q_UNUSED(menu); -#endif -} - -QRect QWidgetPlatformSystemTrayIcon::geometry() const -{ - return m_systray->geometry(); -} - -void QWidgetPlatformSystemTrayIcon::showMessage(const QString &title, const QString &msg, const QIcon &icon, MessageIcon iconType, int msecs) -{ - Q_UNUSED(icon); - m_systray->showMessage(title, msg, static_cast<QSystemTrayIcon::MessageIcon>(iconType), msecs); -} - -bool QWidgetPlatformSystemTrayIcon::isSystemTrayAvailable() const -{ - return QSystemTrayIcon::isSystemTrayAvailable(); -} - -bool QWidgetPlatformSystemTrayIcon::supportsMessages() const -{ - return QSystemTrayIcon::supportsMessages(); -} - -QPlatformMenu *QWidgetPlatformSystemTrayIcon::createMenu() const -{ - return new QWidgetPlatformMenu; -} - -QT_END_NAMESPACE diff --git a/src/labs/platform/widgets/qwidgetplatformsystemtrayicon_p.h b/src/labs/platform/widgets/qwidgetplatformsystemtrayicon_p.h deleted file mode 100644 index 11ea5377..00000000 --- a/src/labs/platform/widgets/qwidgetplatformsystemtrayicon_p.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Labs Platform module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWIDGETPLATFORMSYSTEMTRAYICON_P_H -#define QWIDGETPLATFORMSYSTEMTRAYICON_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpa/qplatformsystemtrayicon.h> - -QT_REQUIRE_CONFIG(systemtrayicon); - -QT_BEGIN_NAMESPACE - -class QSystemTrayIcon; - -class QWidgetPlatformSystemTrayIcon : public QPlatformSystemTrayIcon -{ - Q_OBJECT - -public: - explicit QWidgetPlatformSystemTrayIcon(QObject *parent = nullptr); - ~QWidgetPlatformSystemTrayIcon(); - - void init() override; - void cleanup() override; - void updateIcon(const QIcon &icon) override; - void updateToolTip(const QString &tooltip) override; - void updateMenu(QPlatformMenu *menu) override; - QRect geometry() const override; - void showMessage(const QString &title, const QString &msg, - const QIcon &icon, MessageIcon iconType, int msecs) override; - - bool isSystemTrayAvailable() const override; - bool supportsMessages() const override; - - QPlatformMenu *createMenu() const override; - -private: - QScopedPointer<QSystemTrayIcon> m_systray; -}; - -QT_END_NAMESPACE - -#endif // QWIDGETPLATFORMSYSTEMTRAYICON_P_H diff --git a/src/labs/platform/widgets/widgets.pri b/src/labs/platform/widgets/widgets.pri deleted file mode 100644 index 54ad7187..00000000 --- a/src/labs/platform/widgets/widgets.pri +++ /dev/null @@ -1,56 +0,0 @@ -QT += widgets -DEPENDPATH += $$PWD - -HEADERS += \ - $$PWD/qwidgetplatform_p.h - -qtConfig(systemtrayicon) { - HEADERS += \ - $$PWD/qwidgetplatformsystemtrayicon_p.h - SOURCES += \ - $$PWD/qwidgetplatformsystemtrayicon.cpp -} - -qtConfig(colordialog) | qtConfig(filedialog) | qtConfig(fontdialog) | qtConfig(messagebox) { - HEADERS += \ - $$PWD/qwidgetplatformdialog_p.h - SOURCES += \ - $$PWD/qwidgetplatformdialog.cpp -} - -qtConfig(colordialog) { - HEADERS += \ - $$PWD/qwidgetplatformcolordialog_p.h - SOURCES += \ - $$PWD/qwidgetplatformcolordialog.cpp -} - -qtConfig(filedialog) { - HEADERS += \ - $$PWD/qwidgetplatformfiledialog_p.h - SOURCES += \ - $$PWD/qwidgetplatformfiledialog.cpp -} - -qtConfig(fontdialog) { - HEADERS += \ - $$PWD/qwidgetplatformfontdialog_p.h - SOURCES += \ - $$PWD/qwidgetplatformfontdialog.cpp -} - -qtConfig(menu) { - HEADERS += \ - $$PWD/qwidgetplatformmenu_p.h \ - $$PWD/qwidgetplatformmenuitem_p.h - SOURCES += \ - $$PWD/qwidgetplatformmenu.cpp \ - $$PWD/qwidgetplatformmenuitem.cpp -} - -qtConfig(messagebox) { - HEADERS += \ - $$PWD/qwidgetplatformmessagedialog_p.h - SOURCES += \ - $$PWD/qwidgetplatformmessagedialog.cpp -} diff --git a/src/quickcontrols2/CMakeLists.txt b/src/quickcontrols2/CMakeLists.txt deleted file mode 100644 index a0c3c56c..00000000 --- a/src/quickcontrols2/CMakeLists.txt +++ /dev/null @@ -1,68 +0,0 @@ -##################################################################### -## QuickControls2 Module: -##################################################################### - -qt_internal_add_qml_module(QuickControls2 - URI "QtQuick.Controls" - VERSION "${PROJECT_VERSION}" - DESIGNER_SUPPORTED - CLASS_NAME QtQuickControls2Plugin - PLUGIN_TARGET qtquickcontrols2plugin - IMPORTS - QtQuick.Controls.impl/auto - OPTIONAL_IMPORTS - QtQuick.Controls.Basic/auto - QtQuick.Controls.Fusion/auto - QtQuick.Controls.Material/auto - QtQuick.Controls.Imagine/auto - QtQuick.Controls.Universal/auto - QtQuick.Controls.Windows/auto - QtQuick.Controls.macOS/auto - NO_PLUGIN_OPTIONAL - NO_GENERATE_PLUGIN_SOURCE - SOURCES - qquickdummyregistration_p.h - qquickstyle.cpp qquickstyle.h qquickstyle_p.h - qquickstyleplugin.cpp qquickstyleplugin_p.h - qtquickcontrols2global.h - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickPrivate - Qt::QuickTemplates2Private -) - -qt_internal_extend_target(qtquickcontrols2plugin - SOURCES - qtquickcontrols2plugin.cpp - LIBRARIES - Qt::QuickControls2ImplPrivate - Qt::QuickControls2Private - Qt::QuickTemplates2Private -) - -if(QT_FEATURE_quick_designer) - add_subdirectory(designer) -endif() - -add_subdirectory(basic) -add_subdirectory(fusion) -add_subdirectory(imagine) -add_subdirectory(material) -add_subdirectory(universal) - -if(MACOS) - add_subdirectory(macos) -endif() - -if(WIN32) - add_subdirectory(windows) -endif() - -qt_internal_add_docs(QuickControls2 - doc/qtquickcontrols.qdocconf -) diff --git a/src/quickcontrols2/basic/AbstractButton.qml b/src/quickcontrols2/basic/AbstractButton.qml deleted file mode 100644 index a4855c21..00000000 --- a/src/quickcontrols2/basic/AbstractButton.qml +++ /dev/null @@ -1,47 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.AbstractButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) -} diff --git a/src/quickcontrols2/basic/Action.qml b/src/quickcontrols2/basic/Action.qml deleted file mode 100644 index bb66fc8f..00000000 --- a/src/quickcontrols2/basic/Action.qml +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.Action { } diff --git a/src/quickcontrols2/basic/ActionGroup.qml b/src/quickcontrols2/basic/ActionGroup.qml deleted file mode 100644 index 70170f0e..00000000 --- a/src/quickcontrols2/basic/ActionGroup.qml +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.ActionGroup { } diff --git a/src/quickcontrols2/basic/ApplicationWindow.qml b/src/quickcontrols2/basic/ApplicationWindow.qml deleted file mode 100644 index ac50d5fa..00000000 --- a/src/quickcontrols2/basic/ApplicationWindow.qml +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ApplicationWindow { - id: window - - color: window.palette.window -} diff --git a/src/quickcontrols2/basic/BusyIndicator.qml b/src/quickcontrols2/basic/BusyIndicator.qml deleted file mode 100644 index 0c51c9a2..00000000 --- a/src/quickcontrols2/basic/BusyIndicator.qml +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.Basic.impl -import QtQuick.Templates as T - -T.BusyIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - - contentItem: BusyIndicatorImpl { - implicitWidth: 48 - implicitHeight: 48 - - pen: control.palette.dark - fill: control.palette.dark - - running: control.running - opacity: control.running ? 1 : 0 - Behavior on opacity { OpacityAnimator { duration: 250 } } - } -} diff --git a/src/quickcontrols2/basic/Button.qml b/src/quickcontrols2/basic/Button.qml deleted file mode 100644 index f657a0d2..00000000 --- a/src/quickcontrols2/basic/Button.qml +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.Button { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - horizontalPadding: padding + 2 - spacing: 6 - - icon.width: 24 - icon.height: 24 - icon.color: control.checked || control.highlighted ? control.palette.brightText : - control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.checked || control.highlighted ? control.palette.brightText : - control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - visible: !control.flat || control.down || control.checked || control.highlighted - color: Color.blend(control.checked || control.highlighted ? control.palette.dark : control.palette.button, - control.palette.mid, control.down ? 0.5 : 0.0) - border.color: control.palette.highlight - border.width: control.visualFocus ? 2 : 0 - } -} diff --git a/src/quickcontrols2/basic/ButtonGroup.qml b/src/quickcontrols2/basic/ButtonGroup.qml deleted file mode 100644 index fadc538a..00000000 --- a/src/quickcontrols2/basic/ButtonGroup.qml +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.ButtonGroup { } diff --git a/src/quickcontrols2/basic/CMakeLists.txt b/src/quickcontrols2/basic/CMakeLists.txt deleted file mode 100644 index 2aa0f8ad..00000000 --- a/src/quickcontrols2/basic/CMakeLists.txt +++ /dev/null @@ -1,296 +0,0 @@ -##################################################################### -## qtquickcontrols2basicstyleplugin Plugin: -##################################################################### - -set(qml_files - "AbstractButton.qml" - "Action.qml" - "ActionGroup.qml" - "ApplicationWindow.qml" - "BusyIndicator.qml" - "Button.qml" - "ButtonGroup.qml" - "CheckBox.qml" - "CheckDelegate.qml" - "ComboBox.qml" - "Container.qml" - "Control.qml" - "DelayButton.qml" - "Dial.qml" - "Dialog.qml" - "DialogButtonBox.qml" - "Drawer.qml" - "Frame.qml" - "GroupBox.qml" - "HorizontalHeaderView.qml" - "ItemDelegate.qml" - "Label.qml" - "Menu.qml" - "MenuBar.qml" - "MenuBarItem.qml" - "MenuItem.qml" - "MenuSeparator.qml" - "Page.qml" - "PageIndicator.qml" - "Pane.qml" - "Popup.qml" - "ProgressBar.qml" - "RadioButton.qml" - "RadioDelegate.qml" - "RangeSlider.qml" - "RoundButton.qml" - "ScrollBar.qml" - "ScrollIndicator.qml" - "ScrollView.qml" - "SelectionRectangle.qml" - "Slider.qml" - "SpinBox.qml" - "SplitView.qml" - "StackView.qml" - "SwipeDelegate.qml" - "Switch.qml" - "SwitchDelegate.qml" - "SwipeView.qml" - "TabBar.qml" - "TabButton.qml" - "TextArea.qml" - "TextField.qml" - "ToolBar.qml" - "ToolButton.qml" - "ToolSeparator.qml" - "ToolTip.qml" - "Tumbler.qml" - "VerticalHeaderView.qml" -) -set_source_files_properties(AbstractButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Action.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.3;6.0" -) -set_source_files_properties(ActionGroup.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.3;6.0" -) -set_source_files_properties(ApplicationWindow.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(BusyIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Button.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ButtonGroup.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(CheckBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(CheckDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ComboBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Container.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Control.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(DelayButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.2;6.0" -) -set_source_files_properties(Dial.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Dialog.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(DialogButtonBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(Drawer.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Frame.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(GroupBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(HorizontalHeaderView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.15;6.0" -) -set_source_files_properties(ItemDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Label.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Menu.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(MenuBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.3;6.0" -) -set_source_files_properties(MenuBarItem.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.3;6.0" -) -set_source_files_properties(MenuItem.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(MenuSeparator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(Page.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(PageIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Pane.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Popup.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ProgressBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RadioButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RadioDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RangeSlider.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RoundButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(ScrollBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ScrollIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ScrollView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.2;6.0" -) -set_source_files_properties(SelectionRectangle.qml PROPERTIES - QT_QML_SOURCE_VERSION "6.2" -) -set_source_files_properties(Slider.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SpinBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SplitView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.13;6.0" -) -set_source_files_properties(StackView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SwipeDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Switch.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SwitchDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SwipeView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TabBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TabButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TextArea.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TextField.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolSeparator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(ToolTip.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Tumbler.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(VerticalHeaderView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.15;6.0" -) - -qt_internal_add_qml_module(qtquickcontrols2basicstyleplugin - URI "QtQuick.Controls.Basic" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2BasicStylePlugin - PLUGIN_TARGET qtquickcontrols2basicstyleplugin - NO_PLUGIN_OPTIONAL - NO_GENERATE_PLUGIN_SOURCE - SOURCES - qquickbasicstyle.cpp qquickbasicstyle_p.h - qquickbasictheme.cpp qquickbasictheme_p.h - qtquickcontrols2basicstyleplugin.cpp - QML_FILES - ${qml_files} - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickControls2Private - Qt::QuickPrivate - Qt::QuickTemplates2Private -) - -# Resources: -set(qtquickcontrols2basicstyleplugin_resource_files - "images/arrow-indicator.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/check.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/dial-indicator.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/double-arrow.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/drop-indicator.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" -) - -qt_internal_add_resource(qtquickcontrols2basicstyleplugin "qtquickcontrols2basicstyleplugin" - PREFIX - "/qt-project.org/imports/QtQuick/Controls/Basic" - FILES - ${qtquickcontrols2basicstyleplugin_resource_files} -) - -add_subdirectory(impl) diff --git a/src/quickcontrols2/basic/CheckBox.qml b/src/quickcontrols2/basic/CheckBox.qml deleted file mode 100644 index 6465460d..00000000 --- a/src/quickcontrols2/basic/CheckBox.qml +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl - -T.CheckBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - // keep in sync with CheckDelegate.qml (shared CheckIndicator.qml was removed for performance reasons) - indicator: Rectangle { - implicitWidth: 28 - implicitHeight: 28 - - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - - color: control.down ? control.palette.light : control.palette.base - border.width: control.visualFocus ? 2 : 1 - border.color: control.visualFocus ? control.palette.highlight : control.palette.mid - - ColorImage { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - defaultColor: "#353637" - color: control.palette.text - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Basic/images/check.png" - visible: control.checkState === Qt.Checked - } - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: 16 - height: 3 - color: control.palette.text - visible: control.checkState === Qt.PartiallyChecked - } - } - - contentItem: CheckLabel { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - color: control.palette.windowText - } -} diff --git a/src/quickcontrols2/basic/CheckDelegate.qml b/src/quickcontrols2/basic/CheckDelegate.qml deleted file mode 100644 index 1a1827e3..00000000 --- a/src/quickcontrols2/basic/CheckDelegate.qml +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl - -T.CheckDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 12 - spacing: 12 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.text - - contentItem: IconLabel { - leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.palette.text - } - - // keep in sync with CheckBox.qml (shared CheckIndicator.qml was removed for performance reasons) - indicator: Rectangle { - implicitWidth: 28 - implicitHeight: 28 - - x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 - - color: control.down ? control.palette.light : control.palette.base - border.width: control.visualFocus ? 2 : 1 - border.color: control.visualFocus ? control.palette.highlight : control.palette.mid - - ColorImage { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - defaultColor: "#353637" - color: control.palette.text - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Basic/images/check.png" - visible: control.checkState === Qt.Checked - } - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: 16 - height: 3 - color: control.palette.text - visible: control.checkState === Qt.PartiallyChecked - } - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - visible: control.down || control.highlighted - color: control.down ? control.palette.midlight : control.palette.light - } -} diff --git a/src/quickcontrols2/basic/ComboBox.qml b/src/quickcontrols2/basic/ComboBox.qml deleted file mode 100644 index 6a1924ed..00000000 --- a/src/quickcontrols2/basic/ComboBox.qml +++ /dev/null @@ -1,140 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ComboBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) - rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) - - delegate: ItemDelegate { - width: ListView.view.width - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData - palette.text: control.palette.text - palette.highlightedText: control.palette.highlightedText - font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal - highlighted: control.highlightedIndex === index - hoverEnabled: control.hoverEnabled - } - - indicator: ColorImage { - x: control.mirrored ? control.padding : control.width - width - control.padding - y: control.topPadding + (control.availableHeight - height) / 2 - color: control.palette.dark - defaultColor: "#353637" - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Basic/images/double-arrow.png" - opacity: enabled ? 1 : 0.3 - } - - contentItem: T.TextField { - leftPadding: !control.mirrored ? 12 : control.editable && activeFocus ? 3 : 1 - rightPadding: control.mirrored ? 12 : control.editable && activeFocus ? 3 : 1 - topPadding: 6 - control.padding - bottomPadding: 6 - control.padding - - text: control.editable ? control.editText : control.displayText - - enabled: control.editable - autoScroll: control.editable - readOnly: control.down - inputMethodHints: control.inputMethodHints - validator: control.validator - selectByMouse: control.selectTextByMouse - - font: control.font - color: control.editable ? control.palette.text : control.palette.buttonText - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - verticalAlignment: Text.AlignVCenter - - background: Rectangle { - visible: control.enabled && control.editable && !control.flat - border.width: parent && parent.activeFocus ? 2 : 1 - border.color: parent && parent.activeFocus ? control.palette.highlight : control.palette.button - color: control.palette.base - } - } - - background: Rectangle { - implicitWidth: 140 - implicitHeight: 40 - - color: control.down ? control.palette.mid : control.palette.button - border.color: control.palette.highlight - border.width: !control.editable && control.visualFocus ? 2 : 0 - visible: !control.flat || control.down - } - - popup: T.Popup { - y: control.height - width: control.width - height: Math.min(contentItem.implicitHeight, control.Window.height - topMargin - bottomMargin) - topMargin: 6 - bottomMargin: 6 - - contentItem: ListView { - clip: true - implicitHeight: contentHeight - model: control.delegateModel - currentIndex: control.highlightedIndex - highlightMoveDuration: 0 - - Rectangle { - z: 10 - width: parent.width - height: parent.height - color: "transparent" - border.color: control.palette.mid - } - - T.ScrollIndicator.vertical: ScrollIndicator { } - } - - background: Rectangle { - color: control.palette.window - } - } -} diff --git a/src/quickcontrols2/basic/Container.qml b/src/quickcontrols2/basic/Container.qml deleted file mode 100644 index 93919075..00000000 --- a/src/quickcontrols2/basic/Container.qml +++ /dev/null @@ -1,47 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.Container { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) -} diff --git a/src/quickcontrols2/basic/Control.qml b/src/quickcontrols2/basic/Control.qml deleted file mode 100644 index 7a68a431..00000000 --- a/src/quickcontrols2/basic/Control.qml +++ /dev/null @@ -1,47 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.Control { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) -} diff --git a/src/quickcontrols2/basic/DelayButton.qml b/src/quickcontrols2/basic/DelayButton.qml deleted file mode 100644 index 367384c0..00000000 --- a/src/quickcontrols2/basic/DelayButton.qml +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.DelayButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - horizontalPadding: padding + 2 - - transition: Transition { - NumberAnimation { - duration: control.delay * (control.pressed ? 1.0 - control.progress : 0.3 * control.progress) - } - } - - contentItem: ItemGroup { - ClippedText { - clip: control.progress > 0 - clipX: -control.leftPadding + control.progress * control.width - clipWidth: (1.0 - control.progress) * control.width - visible: control.progress < 1 - - text: control.text - font: control.font - opacity: enabled ? 1 : 0.3 - color: control.palette.buttonText - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - ClippedText { - clip: control.progress > 0 - clipX: -control.leftPadding - clipWidth: control.progress * control.width - visible: control.progress > 0 - - text: control.text - font: control.font - opacity: enabled ? 1 : 0.3 - color: control.palette.brightText - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - color: Color.blend(control.palette.button, control.palette.mid, control.down ? 0.5 : 0.0) - border.color: control.palette.highlight - border.width: control.visualFocus ? 2 : 0 - - PaddedRectangle { - padding: control.visualFocus ? 2 : 0 - width: control.progress * parent.width - height: parent.height - color: Color.blend(control.palette.dark, control.palette.mid, control.down ? 0.5 : 0.0) - } - } -} diff --git a/src/quickcontrols2/basic/Dial.qml b/src/quickcontrols2/basic/Dial.qml deleted file mode 100644 index 8450e9f9..00000000 --- a/src/quickcontrols2/basic/Dial.qml +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Controls.Basic.impl -import QtQuick.Templates as T - -T.Dial { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - background: DialImpl { - implicitWidth: 184 - implicitHeight: 184 - color: control.visualFocus ? control.palette.highlight : control.palette.dark - progress: control.position - opacity: control.enabled ? 1 : 0.3 - } - - handle: ColorImage { - x: control.background.x + control.background.width / 2 - width / 2 - y: control.background.y + control.background.height / 2 - height / 2 - width: 14 - height: 10 - defaultColor: "#353637" - color: control.visualFocus ? control.palette.highlight : control.palette.dark - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Basic/images/dial-indicator.png" - antialiasing: true - opacity: control.enabled ? 1 : 0.3 - transform: [ - Translate { - y: -Math.min(control.background.width, control.background.height) * 0.4 + control.handle.height / 2 - }, - Rotation { - angle: control.angle - origin.x: control.handle.width / 2 - origin.y: control.handle.height / 2 - } - ] - } -} diff --git a/src/quickcontrols2/basic/Dialog.qml b/src/quickcontrols2/basic/Dialog.qml deleted file mode 100644 index 1f2b4fbb..00000000 --- a/src/quickcontrols2/basic/Dialog.qml +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl - -T.Dialog { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - padding: 12 - - background: Rectangle { - color: control.palette.window - border.color: control.palette.dark - } - - header: Label { - text: control.title - visible: control.title - elide: Label.ElideRight - font.bold: true - padding: 12 - background: Rectangle { - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 1 - color: control.palette.window - } - } - - footer: DialogButtonBox { - visible: count > 0 - } - - T.Overlay.modal: Rectangle { - color: Color.transparent(control.palette.shadow, 0.5) - } - - T.Overlay.modeless: Rectangle { - color: Color.transparent(control.palette.shadow, 0.12) - } -} diff --git a/src/quickcontrols2/basic/DialogButtonBox.qml b/src/quickcontrols2/basic/DialogButtonBox.qml deleted file mode 100644 index e4cdbd14..00000000 --- a/src/quickcontrols2/basic/DialogButtonBox.qml +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.DialogButtonBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - (control.count === 1 ? implicitContentWidth * 2 : implicitContentWidth) + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - contentWidth: contentItem.contentWidth - - spacing: 1 - padding: 12 - alignment: count === 1 ? Qt.AlignRight : undefined - - delegate: Button { - width: control.count === 1 ? control.availableWidth / 2 : undefined - } - - contentItem: ListView { - model: control.contentModel - spacing: control.spacing - orientation: ListView.Horizontal - boundsBehavior: Flickable.StopAtBounds - snapMode: ListView.SnapToItem - } - - background: Rectangle { - implicitHeight: 40 - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 2 - color: control.palette.window - } -} diff --git a/src/quickcontrols2/basic/Drawer.qml b/src/quickcontrols2/basic/Drawer.qml deleted file mode 100644 index 0d286f99..00000000 --- a/src/quickcontrols2/basic/Drawer.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.Drawer { - id: control - - parent: T.Overlay.overlay - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: control.edge === Qt.BottomEdge - leftPadding: control.edge === Qt.RightEdge - rightPadding: control.edge === Qt.LeftEdge - bottomPadding: control.edge === Qt.TopEdge - - enter: Transition { SmoothedAnimation { velocity: 5 } } - exit: Transition { SmoothedAnimation { velocity: 5 } } - - background: Rectangle { - color: control.palette.window - Rectangle { - readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge - width: horizontal ? 1 : parent.width - height: horizontal ? parent.height : 1 - color: control.palette.dark - x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 - y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 - } - } - - T.Overlay.modal: Rectangle { - color: Color.transparent(control.palette.shadow, 0.5) - } - - T.Overlay.modeless: Rectangle { - color: Color.transparent(control.palette.shadow, 0.12) - } -} diff --git a/src/quickcontrols2/basic/Frame.qml b/src/quickcontrols2/basic/Frame.qml deleted file mode 100644 index 22f29806..00000000 --- a/src/quickcontrols2/basic/Frame.qml +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.Frame { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - padding: 12 - - background: Rectangle { - color: "transparent" - border.color: control.palette.mid - } -} diff --git a/src/quickcontrols2/basic/GroupBox.qml b/src/quickcontrols2/basic/GroupBox.qml deleted file mode 100644 index 27ff8ce6..00000000 --- a/src/quickcontrols2/basic/GroupBox.qml +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.GroupBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitLabelWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - spacing: 6 - padding: 12 - topPadding: padding + (implicitLabelWidth > 0 ? implicitLabelHeight + spacing : 0) - - label: Text { - x: control.leftPadding - width: control.availableWidth - - text: control.title - font: control.font - color: control.palette.windowText - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - background: Rectangle { - y: control.topPadding - control.bottomPadding - width: parent.width - height: parent.height - control.topPadding + control.bottomPadding - - color: "transparent" - border.color: control.palette.mid - } -} diff --git a/src/quickcontrols2/basic/HorizontalHeaderView.qml b/src/quickcontrols2/basic/HorizontalHeaderView.qml deleted file mode 100644 index e5214593..00000000 --- a/src/quickcontrols2/basic/HorizontalHeaderView.qml +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.HorizontalHeaderView { - id: control - - implicitWidth: syncView ? syncView.width : 0 - implicitHeight: contentHeight - - delegate: Rectangle { - // Qt6: add cellPadding (and font etc) as public API in headerview - readonly property real cellPadding: 8 - - implicitWidth: text.implicitWidth + (cellPadding * 2) - implicitHeight: Math.max(control.height, text.implicitHeight + (cellPadding * 2)) - color: "#f6f6f6" - border.color: "#e4e4e4" - - Text { - id: text - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] - : model[control.textRole]) - : modelData - width: parent.width - height: parent.height - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - color: "#ff26282a" - } - } -} diff --git a/src/quickcontrols2/basic/ItemDelegate.qml b/src/quickcontrols2/basic/ItemDelegate.qml deleted file mode 100644 index 3a1cb298..00000000 --- a/src/quickcontrols2/basic/ItemDelegate.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ItemDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 12 - spacing: 8 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.text - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.highlighted ? control.palette.highlightedText : control.palette.text - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - visible: control.down || control.highlighted || control.visualFocus - color: Color.blend(control.down ? control.palette.midlight : control.palette.light, - control.palette.highlight, control.visualFocus ? 0.15 : 0.0) - } -} diff --git a/src/quickcontrols2/basic/Label.qml b/src/quickcontrols2/basic/Label.qml deleted file mode 100644 index 9d7dfdfd..00000000 --- a/src/quickcontrols2/basic/Label.qml +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.Label { - id: control - - color: control.palette.windowText - linkColor: control.palette.link -} diff --git a/src/quickcontrols2/basic/Menu.qml b/src/quickcontrols2/basic/Menu.qml deleted file mode 100644 index 475e58cc..00000000 --- a/src/quickcontrols2/basic/Menu.qml +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.Menu { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - margins: 0 - overlap: 1 - - delegate: MenuItem { } - - contentItem: ListView { - implicitHeight: contentHeight - model: control.contentModel - interactive: Window.window - ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height - : false - clip: true - currentIndex: control.currentIndex - - ScrollIndicator.vertical: ScrollIndicator {} - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 40 - color: control.palette.window - border.color: control.palette.dark - } - - T.Overlay.modal: Rectangle { - color: Color.transparent(control.palette.shadow, 0.5) - } - - T.Overlay.modeless: Rectangle { - color: Color.transparent(control.palette.shadow, 0.12) - } -} diff --git a/src/quickcontrols2/basic/MenuBar.qml b/src/quickcontrols2/basic/MenuBar.qml deleted file mode 100644 index 79199d12..00000000 --- a/src/quickcontrols2/basic/MenuBar.qml +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl - -T.MenuBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - delegate: MenuBarItem { } - - contentItem: Row { - spacing: control.spacing - Repeater { - model: control.contentModel - } - } - - background: Rectangle { - implicitHeight: 40 - color: control.palette.button - } -} diff --git a/src/quickcontrols2/basic/MenuBarItem.qml b/src/quickcontrols2/basic/MenuBarItem.qml deleted file mode 100644 index e7fd1c0b..00000000 --- a/src/quickcontrols2/basic/MenuBarItem.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl - -T.MenuBarItem { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 6 - padding: 6 - leftPadding: 12 - rightPadding: 16 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.buttonText - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.palette.buttonText - } - - background: Rectangle { - implicitWidth: 40 - implicitHeight: 40 - color: control.down || control.highlighted ? control.palette.mid : "transparent" - } -} diff --git a/src/quickcontrols2/basic/MenuItem.qml b/src/quickcontrols2/basic/MenuItem.qml deleted file mode 100644 index ab1f12f5..00000000 --- a/src/quickcontrols2/basic/MenuItem.qml +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.MenuItem { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.windowText - - contentItem: IconLabel { - readonly property real arrowPadding: control.subMenu && control.arrow ? control.arrow.width + control.spacing : 0 - readonly property real indicatorPadding: control.checkable && control.indicator ? control.indicator.width + control.spacing : 0 - leftPadding: !control.mirrored ? indicatorPadding : arrowPadding - rightPadding: control.mirrored ? indicatorPadding : arrowPadding - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.palette.windowText - } - - indicator: ColorImage { - x: control.mirrored ? control.width - width - control.rightPadding : control.leftPadding - y: control.topPadding + (control.availableHeight - height) / 2 - - visible: control.checked - source: control.checkable ? "qrc:/qt-project.org/imports/QtQuick/Controls/Basic/images/check.png" : "" - color: control.palette.windowText - defaultColor: "#353637" - } - - arrow: ColorImage { - x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 - - visible: control.subMenu - mirror: control.mirrored - source: control.subMenu ? "qrc:/qt-project.org/imports/QtQuick/Controls/Basic/images/arrow-indicator.png" : "" - color: control.palette.windowText - defaultColor: "#353637" - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 40 - x: 1 - y: 1 - width: control.width - 2 - height: control.height - 2 - color: control.down ? control.palette.midlight : control.highlighted ? control.palette.light : "transparent" - } -} diff --git a/src/quickcontrols2/basic/MenuSeparator.qml b/src/quickcontrols2/basic/MenuSeparator.qml deleted file mode 100644 index bc17dc39..00000000 --- a/src/quickcontrols2/basic/MenuSeparator.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.MenuSeparator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 2 - verticalPadding: padding + 4 - - contentItem: Rectangle { - implicitWidth: 188 - implicitHeight: 1 - color: control.palette.mid - } -} diff --git a/src/quickcontrols2/basic/Page.qml b/src/quickcontrols2/basic/Page.qml deleted file mode 100644 index ff75ee4e..00000000 --- a/src/quickcontrols2/basic/Page.qml +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.Page { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - background: Rectangle { - color: control.palette.window - } -} diff --git a/src/quickcontrols2/basic/PageIndicator.qml b/src/quickcontrols2/basic/PageIndicator.qml deleted file mode 100644 index bd5ef290..00000000 --- a/src/quickcontrols2/basic/PageIndicator.qml +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.PageIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - delegate: Rectangle { - implicitWidth: 8 - implicitHeight: 8 - - radius: width / 2 - color: control.palette.dark - - opacity: index === currentIndex ? 0.95 : pressed ? 0.7 : 0.45 - Behavior on opacity { OpacityAnimator { duration: 100 } } - } - - contentItem: Row { - spacing: control.spacing - - Repeater { - model: control.count - delegate: control.delegate - } - } -} diff --git a/src/quickcontrols2/basic/Pane.qml b/src/quickcontrols2/basic/Pane.qml deleted file mode 100644 index 181db9e4..00000000 --- a/src/quickcontrols2/basic/Pane.qml +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.Pane { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - padding: 12 - - background: Rectangle { - color: control.palette.window - } -} diff --git a/src/quickcontrols2/basic/Popup.qml b/src/quickcontrols2/basic/Popup.qml deleted file mode 100644 index 720483d9..00000000 --- a/src/quickcontrols2/basic/Popup.qml +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.Popup { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - padding: 12 - - background: Rectangle { - color: control.palette.window - border.color: control.palette.dark - } - - T.Overlay.modal: Rectangle { - color: Color.transparent(control.palette.shadow, 0.5) - } - - T.Overlay.modeless: Rectangle { - color: Color.transparent(control.palette.shadow, 0.12) - } -} diff --git a/src/quickcontrols2/basic/ProgressBar.qml b/src/quickcontrols2/basic/ProgressBar.qml deleted file mode 100644 index a49538d1..00000000 --- a/src/quickcontrols2/basic/ProgressBar.qml +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Basic.impl - -T.ProgressBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - contentItem: ProgressBarImpl { - implicitHeight: 6 - implicitWidth: 116 - scale: control.mirrored ? -1 : 1 - progress: control.position - indeterminate: control.visible && control.indeterminate - color: control.palette.dark - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 6 - y: (control.height - height) / 2 - height: 6 - - color: control.palette.midlight - } -} diff --git a/src/quickcontrols2/basic/RadioButton.qml b/src/quickcontrols2/basic/RadioButton.qml deleted file mode 100644 index adb91435..00000000 --- a/src/quickcontrols2/basic/RadioButton.qml +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.RadioButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - // keep in sync with RadioDelegate.qml (shared RadioIndicator.qml was removed for performance reasons) - indicator: Rectangle { - implicitWidth: 28 - implicitHeight: 28 - - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - - radius: width / 2 - color: control.down ? control.palette.light : control.palette.base - border.width: control.visualFocus ? 2 : 1 - border.color: control.visualFocus ? control.palette.highlight : control.palette.mid - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: 20 - height: 20 - radius: width / 2 - color: control.palette.text - visible: control.checked - } - } - - contentItem: CheckLabel { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - color: control.palette.windowText - } -} diff --git a/src/quickcontrols2/basic/RadioDelegate.qml b/src/quickcontrols2/basic/RadioDelegate.qml deleted file mode 100644 index 69be290c..00000000 --- a/src/quickcontrols2/basic/RadioDelegate.qml +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.RadioDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 12 - spacing: 12 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.text - - contentItem: IconLabel { - leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.palette.text - } - - // keep in sync with RadioButton.qml (shared RadioIndicator.qml was removed for performance reasons) - indicator: Rectangle { - implicitWidth: 28 - implicitHeight: 28 - - x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 - - radius: width / 2 - color: control.down ? control.palette.light : control.palette.base - border.width: control.visualFocus ? 2 : 1 - border.color: control.visualFocus ? control.palette.highlight : control.palette.mid - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: 20 - height: 20 - radius: width / 2 - color: control.palette.text - visible: control.checked - } - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - visible: control.down || control.highlighted - color: control.down ? control.palette.midlight : control.palette.light - } -} diff --git a/src/quickcontrols2/basic/RangeSlider.qml b/src/quickcontrols2/basic/RangeSlider.qml deleted file mode 100644 index e47cbd52..00000000 --- a/src/quickcontrols2/basic/RangeSlider.qml +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.RangeSlider { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - first.implicitHandleWidth + leftPadding + rightPadding, - second.implicitHandleWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - first.implicitHandleHeight + topPadding + bottomPadding, - second.implicitHandleHeight + topPadding + bottomPadding) - - padding: 6 - - first.handle: Rectangle { - x: control.leftPadding + (control.horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) - implicitWidth: 28 - implicitHeight: 28 - radius: width / 2 - border.width: activeFocus ? 2 : 1 - border.color: activeFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight - color: control.first.pressed ? control.palette.light : control.palette.window - } - - second.handle: Rectangle { - x: control.leftPadding + (control.horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) - implicitWidth: 28 - implicitHeight: 28 - radius: width / 2 - border.width: activeFocus ? 2 : 1 - border.color: activeFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight - color: control.second.pressed ? control.palette.light : control.palette.window - } - - background: Rectangle { - x: control.leftPadding + (control.horizontal ? 0 : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : 0) - implicitWidth: control.horizontal ? 200 : 6 - implicitHeight: control.horizontal ? 6 : 200 - width: control.horizontal ? control.availableWidth : implicitWidth - height: control.horizontal ? implicitHeight : control.availableHeight - radius: 3 - color: control.palette.midlight - scale: control.horizontal && control.mirrored ? -1 : 1 - - Rectangle { - x: control.horizontal ? control.first.position * parent.width + 3 : 0 - y: control.horizontal ? 0 : control.second.visualPosition * parent.height + 3 - width: control.horizontal ? control.second.position * parent.width - control.first.position * parent.width - 6 : 6 - height: control.horizontal ? 6 : control.second.position * parent.height - control.first.position * parent.height - 6 - - color: control.palette.dark - } - } -} diff --git a/src/quickcontrols2/basic/RoundButton.qml b/src/quickcontrols2/basic/RoundButton.qml deleted file mode 100644 index 6ab810fd..00000000 --- a/src/quickcontrols2/basic/RoundButton.qml +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.RoundButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 24 - icon.height: 24 - icon.color: control.checked || control.highlighted ? control.palette.brightText : - control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.checked || control.highlighted ? control.palette.brightText : - control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText - } - - background: Rectangle { - implicitWidth: 40 - implicitHeight: 40 - radius: control.radius - opacity: enabled ? 1 : 0.3 - visible: !control.flat || control.down || control.checked || control.highlighted - color: Color.blend(control.checked || control.highlighted ? control.palette.dark : control.palette.button, - control.palette.mid, control.down ? 0.5 : 0.0) - border.color: control.palette.highlight - border.width: control.visualFocus ? 2 : 0 - } -} diff --git a/src/quickcontrols2/basic/ScrollBar.qml b/src/quickcontrols2/basic/ScrollBar.qml deleted file mode 100644 index 763f96bb..00000000 --- a/src/quickcontrols2/basic/ScrollBar.qml +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ScrollBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 2 - visible: control.policy !== T.ScrollBar.AlwaysOff - minimumSize: orientation == Qt.Horizontal ? height / width : width / height - - contentItem: Rectangle { - implicitWidth: control.interactive ? 6 : 2 - implicitHeight: control.interactive ? 6 : 2 - - radius: width / 2 - color: control.pressed ? control.palette.dark : control.palette.mid - opacity: 0.0 - - states: State { - name: "active" - when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0) - PropertyChanges { target: control.contentItem; opacity: 0.75 } - } - - transitions: Transition { - from: "active" - SequentialAnimation { - PauseAnimation { duration: 450 } - NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 } - } - } - } -} diff --git a/src/quickcontrols2/basic/ScrollIndicator.qml b/src/quickcontrols2/basic/ScrollIndicator.qml deleted file mode 100644 index dcb23d65..00000000 --- a/src/quickcontrols2/basic/ScrollIndicator.qml +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ScrollIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 2 - - contentItem: Rectangle { - implicitWidth: 2 - implicitHeight: 2 - - color: control.palette.mid - visible: control.size < 1.0 - opacity: 0.0 - - states: State { - name: "active" - when: control.active - PropertyChanges { target: control.contentItem; opacity: 0.75 } - } - - transitions: [ - Transition { - from: "active" - SequentialAnimation { - PauseAnimation { duration: 450 } - NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 } - } - } - ] - } -} diff --git a/src/quickcontrols2/basic/ScrollView.qml b/src/quickcontrols2/basic/ScrollView.qml deleted file mode 100644 index 43c4e428..00000000 --- a/src/quickcontrols2/basic/ScrollView.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ScrollView { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - ScrollBar.vertical: ScrollBar { - parent: control - x: control.mirrored ? 0 : control.width - width - y: control.topPadding - height: control.availableHeight - active: control.ScrollBar.horizontal.active - } - - ScrollBar.horizontal: ScrollBar { - parent: control - x: control.leftPadding - y: control.height - height - width: control.availableWidth - active: control.ScrollBar.vertical.active - } -} diff --git a/src/quickcontrols2/basic/SelectionRectangle.qml b/src/quickcontrols2/basic/SelectionRectangle.qml deleted file mode 100644 index 060fb909..00000000 --- a/src/quickcontrols2/basic/SelectionRectangle.qml +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Shapes -import QtQuick.Templates as T - -T.SelectionRectangle { - id: control - - topLeftHandle: Handle {} - bottomRightHandle: Handle {} - - component Handle : Rectangle { - id: handle - width: 28 - height: width - radius: width / 2 - color: SelectionRectangle.dragging ? control.palette.light : control.palette.window - border.width: 1 - border.color: control.enabled ? control.palette.mid : control.palette.midlight - visible: SelectionRectangle.control.active - - property Item control: SelectionRectangle.control - } - -} diff --git a/src/quickcontrols2/basic/Slider.qml b/src/quickcontrols2/basic/Slider.qml deleted file mode 100644 index 425f4975..00000000 --- a/src/quickcontrols2/basic/Slider.qml +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.Slider { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitHandleWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitHandleHeight + topPadding + bottomPadding) - - padding: 6 - - handle: Rectangle { - x: control.leftPadding + (control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) - implicitWidth: 28 - implicitHeight: 28 - radius: width / 2 - color: control.pressed ? control.palette.light : control.palette.window - border.width: control.visualFocus ? 2 : 1 - border.color: control.visualFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight - } - - background: Rectangle { - x: control.leftPadding + (control.horizontal ? 0 : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : 0) - implicitWidth: control.horizontal ? 200 : 6 - implicitHeight: control.horizontal ? 6 : 200 - width: control.horizontal ? control.availableWidth : implicitWidth - height: control.horizontal ? implicitHeight : control.availableHeight - radius: 3 - color: control.palette.midlight - scale: control.horizontal && control.mirrored ? -1 : 1 - - Rectangle { - y: control.horizontal ? 0 : control.visualPosition * parent.height - width: control.horizontal ? control.position * parent.width : 6 - height: control.horizontal ? 6 : control.position * parent.height - - radius: 3 - color: control.palette.dark - } - } -} diff --git a/src/quickcontrols2/basic/SpinBox.qml b/src/quickcontrols2/basic/SpinBox.qml deleted file mode 100644 index 772cc583..00000000 --- a/src/quickcontrols2/basic/SpinBox.qml +++ /dev/null @@ -1,134 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.SpinBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentItem.implicitWidth + 2 * padding + - up.implicitIndicatorWidth + - down.implicitIndicatorWidth) - implicitHeight: Math.max(implicitContentHeight + topPadding + bottomPadding, - implicitBackgroundHeight, - up.implicitIndicatorHeight, - down.implicitIndicatorHeight) - - padding: 6 - leftPadding: padding + (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) - rightPadding: padding + (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) - - validator: IntValidator { - locale: control.locale.name - bottom: Math.min(control.from, control.to) - top: Math.max(control.from, control.to) - } - - contentItem: TextInput { - z: 2 - text: control.displayText - - font: control.font - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - horizontalAlignment: Qt.AlignHCenter - verticalAlignment: Qt.AlignVCenter - - readOnly: !control.editable - validator: control.validator - inputMethodHints: control.inputMethodHints - - Rectangle { - x: -6 - (control.down.indicator ? 1 : 0) - y: -6 - width: control.width - (control.up.indicator ? control.up.indicator.width - 1 : 0) - (control.down.indicator ? control.down.indicator.width - 1 : 0) - height: control.height - visible: control.activeFocus - color: "transparent" - border.color: control.palette.highlight - border.width: 2 - } - } - - up.indicator: Rectangle { - x: control.mirrored ? 0 : parent.width - width - height: parent.height - implicitWidth: 40 - implicitHeight: 40 - color: control.up.pressed ? control.palette.mid : control.palette.button - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: parent.width / 3 - height: 2 - color: enabled ? control.palette.buttonText : control.palette.mid - } - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: 2 - height: parent.width / 3 - color: enabled ? control.palette.buttonText : control.palette.mid - } - } - - down.indicator: Rectangle { - x: control.mirrored ? parent.width - width : 0 - height: parent.height - implicitWidth: 40 - implicitHeight: 40 - color: control.down.pressed ? control.palette.mid : control.palette.button - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: parent.width / 3 - height: 2 - color: enabled ? control.palette.buttonText : control.palette.mid - } - } - - background: Rectangle { - implicitWidth: 140 - color: enabled ? control.palette.base : control.palette.button - border.color: control.palette.button - } -} diff --git a/src/quickcontrols2/basic/SplitView.qml b/src/quickcontrols2/basic/SplitView.qml deleted file mode 100644 index 66d24743..00000000 --- a/src/quickcontrols2/basic/SplitView.qml +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl - -T.SplitView { - id: control - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - handle: Rectangle { - implicitWidth: control.orientation === Qt.Horizontal ? 6 : control.width - implicitHeight: control.orientation === Qt.Horizontal ? control.height : 6 - color: T.SplitHandle.pressed ? control.palette.mid - : (T.SplitHandle.hovered ? control.palette.midlight : control.palette.button) - } -} diff --git a/src/quickcontrols2/basic/StackView.qml b/src/quickcontrols2/basic/StackView.qml deleted file mode 100644 index cbf13f36..00000000 --- a/src/quickcontrols2/basic/StackView.qml +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.StackView { - id: control - - popEnter: Transition { - XAnimator { from: (control.mirrored ? -1 : 1) * -control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } - } - - popExit: Transition { - XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * control.width; duration: 400; easing.type: Easing.OutCubic } - } - - pushEnter: Transition { - XAnimator { from: (control.mirrored ? -1 : 1) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } - } - - pushExit: Transition { - XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * -control.width; duration: 400; easing.type: Easing.OutCubic } - } - - replaceEnter: Transition { - XAnimator { from: (control.mirrored ? -1 : 1) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } - } - - replaceExit: Transition { - XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * -control.width; duration: 400; easing.type: Easing.OutCubic } - } -} diff --git a/src/quickcontrols2/basic/SwipeDelegate.qml b/src/quickcontrols2/basic/SwipeDelegate.qml deleted file mode 100644 index f8209a1e..00000000 --- a/src/quickcontrols2/basic/SwipeDelegate.qml +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.SwipeDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 12 - spacing: 12 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.text - - swipe.transition: Transition { SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } } - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.palette.text - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - color: Color.blend(control.down ? control.palette.midlight : control.palette.light, - control.palette.highlight, control.visualFocus ? 0.15 : 0.0) - } -} diff --git a/src/quickcontrols2/basic/SwipeView.qml b/src/quickcontrols2/basic/SwipeView.qml deleted file mode 100644 index 6ce4ee6c..00000000 --- a/src/quickcontrols2/basic/SwipeView.qml +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.SwipeView { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - contentItem: ListView { - model: control.contentModel - interactive: control.interactive - currentIndex: control.currentIndex - focus: control.focus - - spacing: control.spacing - orientation: control.orientation - snapMode: ListView.SnapOneItem - boundsBehavior: Flickable.StopAtBounds - - highlightRangeMode: ListView.StrictlyEnforceRange - preferredHighlightBegin: 0 - preferredHighlightEnd: 0 - highlightMoveDuration: 250 - maximumFlickVelocity: 4 * (control.orientation === Qt.Horizontal ? width : height) - } -} diff --git a/src/quickcontrols2/basic/Switch.qml b/src/quickcontrols2/basic/Switch.qml deleted file mode 100644 index 0d919f9e..00000000 --- a/src/quickcontrols2/basic/Switch.qml +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl - -T.Switch { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - indicator: PaddedRectangle { - implicitWidth: 56 - implicitHeight: 28 - - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - - radius: 8 - leftPadding: 0 - rightPadding: 0 - padding: (height - 16) / 2 - color: control.checked ? control.palette.dark : control.palette.midlight - - Rectangle { - x: Math.max(0, Math.min(parent.width - width, control.visualPosition * parent.width - (width / 2))) - y: (parent.height - height) / 2 - width: 28 - height: 28 - radius: 16 - color: control.down ? control.palette.light : control.palette.window - border.width: control.visualFocus ? 2 : 1 - border.color: control.visualFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight - - Behavior on x { - enabled: !control.down - SmoothedAnimation { velocity: 200 } - } - } - } - - contentItem: CheckLabel { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - color: control.palette.windowText - } -} diff --git a/src/quickcontrols2/basic/SwitchDelegate.qml b/src/quickcontrols2/basic/SwitchDelegate.qml deleted file mode 100644 index 8203e107..00000000 --- a/src/quickcontrols2/basic/SwitchDelegate.qml +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl - -T.SwitchDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 12 - spacing: 12 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.text - - indicator: PaddedRectangle { - implicitWidth: 56 - implicitHeight: 28 - - x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - - radius: 8 - leftPadding: 0 - rightPadding: 0 - padding: (height - 16) / 2 - color: control.checked ? control.palette.dark : control.palette.midlight - - Rectangle { - x: Math.max(0, Math.min(parent.width - width, control.visualPosition * parent.width - (width / 2))) - y: (parent.height - height) / 2 - width: 28 - height: 28 - radius: 16 - color: control.down ? control.palette.light : control.palette.window - border.width: control.visualFocus ? 2 : 1 - border.color: control.visualFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight - - Behavior on x { - enabled: !control.down - SmoothedAnimation { velocity: 200 } - } - } - } - - contentItem: IconLabel { - leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.palette.text - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - visible: control.down || control.highlighted - color: control.down ? control.palette.midlight : control.palette.light - } -} diff --git a/src/quickcontrols2/basic/TabBar.qml b/src/quickcontrols2/basic/TabBar.qml deleted file mode 100644 index f1b11ac2..00000000 --- a/src/quickcontrols2/basic/TabBar.qml +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.TabBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - spacing: 1 - - contentItem: ListView { - model: control.contentModel - currentIndex: control.currentIndex - - spacing: control.spacing - orientation: ListView.Horizontal - boundsBehavior: Flickable.StopAtBounds - flickableDirection: Flickable.AutoFlickIfNeeded - snapMode: ListView.SnapToItem - - highlightMoveDuration: 0 - highlightRangeMode: ListView.ApplyRange - preferredHighlightBegin: 40 - preferredHighlightEnd: width - 40 - } - - background: Rectangle { - color: control.palette.window - } -} diff --git a/src/quickcontrols2/basic/TabButton.qml b/src/quickcontrols2/basic/TabButton.qml deleted file mode 100644 index 5e38f69c..00000000 --- a/src/quickcontrols2/basic/TabButton.qml +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.TabButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 24 - icon.height: 24 - icon.color: checked ? control.palette.windowText : control.palette.brightText - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.checked ? control.palette.windowText : control.palette.brightText - } - - background: Rectangle { - implicitHeight: 40 - color: Color.blend(control.checked ? control.palette.window : control.palette.dark, - control.palette.mid, control.down ? 0.5 : 0.0) - } -} diff --git a/src/quickcontrols2/basic/TextArea.qml b/src/quickcontrols2/basic/TextArea.qml deleted file mode 100644 index 99d73362..00000000 --- a/src/quickcontrols2/basic/TextArea.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.TextArea { - id: control - - implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, - implicitBackgroundWidth + leftInset + rightInset, - placeholder.implicitWidth + leftPadding + rightPadding) - implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, - implicitBackgroundHeight + topInset + bottomInset, - placeholder.implicitHeight + topPadding + bottomPadding) - - padding: 6 - leftPadding: padding + 4 - - color: control.palette.text - placeholderTextColor: control.palette.placeholderText - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - - PlaceholderText { - id: placeholder - x: control.leftPadding - y: control.topPadding - width: control.width - (control.leftPadding + control.rightPadding) - height: control.height - (control.topPadding + control.bottomPadding) - - text: control.placeholderText - font: control.font - color: control.placeholderTextColor - verticalAlignment: control.verticalAlignment - visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) - elide: Text.ElideRight - renderType: control.renderType - } -} diff --git a/src/quickcontrols2/basic/TextField.qml b/src/quickcontrols2/basic/TextField.qml deleted file mode 100644 index 2833916e..00000000 --- a/src/quickcontrols2/basic/TextField.qml +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.TextField { - id: control - - implicitWidth: implicitBackgroundWidth + leftInset + rightInset - || Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding, - placeholder.implicitHeight + topPadding + bottomPadding) - - padding: 6 - leftPadding: padding + 4 - - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - placeholderTextColor: control.palette.placeholderText - verticalAlignment: TextInput.AlignVCenter - - PlaceholderText { - id: placeholder - x: control.leftPadding - y: control.topPadding - width: control.width - (control.leftPadding + control.rightPadding) - height: control.height - (control.topPadding + control.bottomPadding) - - text: control.placeholderText - font: control.font - color: control.placeholderTextColor - verticalAlignment: control.verticalAlignment - visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) - elide: Text.ElideRight - renderType: control.renderType - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 40 - border.width: control.activeFocus ? 2 : 1 - color: control.palette.base - border.color: control.activeFocus ? control.palette.highlight : control.palette.mid - } -} diff --git a/src/quickcontrols2/basic/ToolBar.qml b/src/quickcontrols2/basic/ToolBar.qml deleted file mode 100644 index 1d21c51d..00000000 --- a/src/quickcontrols2/basic/ToolBar.qml +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ToolBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - background: Rectangle { - implicitHeight: 40 - color: control.palette.button - } -} diff --git a/src/quickcontrols2/basic/ToolButton.qml b/src/quickcontrols2/basic/ToolButton.qml deleted file mode 100644 index 8a4f8097..00000000 --- a/src/quickcontrols2/basic/ToolButton.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ToolButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 24 - icon.height: 24 - icon.color: visualFocus ? control.palette.highlight : control.palette.buttonText - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.visualFocus ? control.palette.highlight : control.palette.buttonText - } - - background: Rectangle { - implicitWidth: 40 - implicitHeight: 40 - - opacity: control.down ? 1.0 : 0.5 - color: control.down || control.checked || control.highlighted ? control.palette.mid : control.palette.button - } -} diff --git a/src/quickcontrols2/basic/ToolSeparator.qml b/src/quickcontrols2/basic/ToolSeparator.qml deleted file mode 100644 index 774e41ec..00000000 --- a/src/quickcontrols2/basic/ToolSeparator.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ToolSeparator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: vertical ? 6 : 2 - verticalPadding: vertical ? 2 : 6 - - contentItem: Rectangle { - implicitWidth: vertical ? 1 : 30 - implicitHeight: vertical ? 30 : 1 - color: control.palette.mid - } -} diff --git a/src/quickcontrols2/basic/ToolTip.qml b/src/quickcontrols2/basic/ToolTip.qml deleted file mode 100644 index 9d10f7fa..00000000 --- a/src/quickcontrols2/basic/ToolTip.qml +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ToolTip { - id: control - - x: parent ? (parent.width - implicitWidth) / 2 : 0 - y: -implicitHeight - 3 - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - margins: 6 - padding: 6 - - closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent - - contentItem: Text { - text: control.text - font: control.font - wrapMode: Text.Wrap - color: control.palette.toolTipText - } - - background: Rectangle { - border.color: control.palette.dark - color: control.palette.toolTipBase - } -} diff --git a/src/quickcontrols2/basic/Tumbler.qml b/src/quickcontrols2/basic/Tumbler.qml deleted file mode 100644 index a69df1f3..00000000 --- a/src/quickcontrols2/basic/Tumbler.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.Tumbler { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - delegate: Text { - text: modelData - color: control.visualFocus ? control.palette.highlight : control.palette.text - font: control.font - opacity: 1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2) - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - - contentItem: TumblerView { - implicitWidth: 60 - implicitHeight: 200 - model: control.model - delegate: control.delegate - path: Path { - startX: control.contentItem.width / 2 - startY: -control.contentItem.delegateHeight / 2 - PathLine { - x: control.contentItem.width / 2 - y: (control.visibleItemCount + 1) * control.contentItem.delegateHeight - control.contentItem.delegateHeight / 2 - } - } - - property real delegateHeight: control.availableHeight / control.visibleItemCount - } -} diff --git a/src/quickcontrols2/basic/VerticalHeaderView.qml b/src/quickcontrols2/basic/VerticalHeaderView.qml deleted file mode 100644 index 7c057e01..00000000 --- a/src/quickcontrols2/basic/VerticalHeaderView.qml +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.VerticalHeaderView { - id: control - - implicitWidth: contentWidth - implicitHeight: syncView ? syncView.height : 0 - - delegate: Rectangle { - // Qt6: add cellPadding (and font etc) as public API in headerview - readonly property real cellPadding: 8 - - implicitWidth: Math.max(control.width, text.implicitWidth + (cellPadding * 2)) - implicitHeight: text.implicitHeight + (cellPadding * 2) - color: "#f6f6f6" - border.color: "#e4e4e4" - - Text { - id: text - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] - : model[control.textRole]) - : modelData - width: parent.width - height: parent.height - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - color: "#ff26282a" - } - } -} diff --git a/src/quickcontrols2/basic/basic.pri b/src/quickcontrols2/basic/basic.pri deleted file mode 100644 index dcea52c7..00000000 --- a/src/quickcontrols2/basic/basic.pri +++ /dev/null @@ -1,67 +0,0 @@ -HEADERS += \ - $$PWD/qquickbasicstyle_p.h \ - $$PWD/qquickbasictheme_p.h - -SOURCES += \ - $$PWD/qquickbasicstyle.cpp \ - $$PWD/qquickbasictheme.cpp - -QML_FILES += \ - $$PWD/AbstractButton.qml \ - $$PWD/Action.qml \ - $$PWD/ActionGroup.qml \ - $$PWD/ApplicationWindow.qml \ - $$PWD/BusyIndicator.qml \ - $$PWD/Button.qml \ - $$PWD/ButtonGroup.qml \ - $$PWD/CheckBox.qml \ - $$PWD/CheckDelegate.qml \ - $$PWD/ComboBox.qml \ - $$PWD/Container.qml \ - $$PWD/Control.qml \ - $$PWD/DelayButton.qml \ - $$PWD/Dial.qml \ - $$PWD/Dialog.qml \ - $$PWD/DialogButtonBox.qml \ - $$PWD/Drawer.qml \ - $$PWD/Frame.qml \ - $$PWD/GroupBox.qml \ - $$PWD/HorizontalHeaderView.qml \ - $$PWD/ItemDelegate.qml \ - $$PWD/Label.qml \ - $$PWD/Menu.qml \ - $$PWD/MenuBar.qml \ - $$PWD/MenuBarItem.qml \ - $$PWD/MenuItem.qml \ - $$PWD/MenuSeparator.qml \ - $$PWD/Page.qml \ - $$PWD/PageIndicator.qml \ - $$PWD/Pane.qml \ - $$PWD/Popup.qml \ - $$PWD/ProgressBar.qml \ - $$PWD/RadioButton.qml \ - $$PWD/RadioDelegate.qml \ - $$PWD/RangeSlider.qml \ - $$PWD/RoundButton.qml \ - $$PWD/ScrollBar.qml \ - $$PWD/ScrollIndicator.qml \ - $$PWD/ScrollView.qml \ - $$PWD/SelectionRectangle.qml \ - $$PWD/Slider.qml \ - $$PWD/SpinBox.qml \ - $$PWD/SplitView.qml \ - $$PWD/StackView.qml \ - $$PWD/SwipeDelegate.qml \ - $$PWD/Switch.qml \ - $$PWD/SwitchDelegate.qml \ - $$PWD/SwipeView.qml \ - $$PWD/TabBar.qml \ - $$PWD/TabButton.qml \ - $$PWD/TextArea.qml \ - $$PWD/TextField.qml \ - $$PWD/ToolBar.qml \ - $$PWD/ToolButton.qml \ - $$PWD/ToolSeparator.qml \ - $$PWD/ToolTip.qml \ - $$PWD/Tumbler.qml \ - $$PWD/VerticalHeaderView.qml diff --git a/src/quickcontrols2/basic/images/arrow-indicator.png b/src/quickcontrols2/basic/images/arrow-indicator.png Binary files differdeleted file mode 100644 index d833d52c..00000000 --- a/src/quickcontrols2/basic/images/arrow-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index 55c7940a..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index c7067c5c..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index 4c5cf351..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/check.png b/src/quickcontrols2/basic/images/check.png Binary files differdeleted file mode 100644 index 479a8442..00000000 --- a/src/quickcontrols2/basic/images/check.png +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index 79663c0b..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index fd0135ab..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index e7e0b640..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/dial-indicator.png b/src/quickcontrols2/basic/images/dial-indicator.png Binary files differdeleted file mode 100644 index 92357c51..00000000 --- a/src/quickcontrols2/basic/images/dial-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index f436443b..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index d883045b..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index 79477712..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/double-arrow.png b/src/quickcontrols2/basic/images/double-arrow.png Binary files differdeleted file mode 100644 index 3ecd7f89..00000000 --- a/src/quickcontrols2/basic/images/double-arrow.png +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index eeb03e28..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index f0662d20..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index 10891e91..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/drop-indicator.png b/src/quickcontrols2/basic/images/drop-indicator.png Binary files differdeleted file mode 100644 index 80c1d958..00000000 --- a/src/quickcontrols2/basic/images/drop-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index 6e0f228c..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index 199752fb..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/images/[email protected] b/src/quickcontrols2/basic/images/[email protected] Binary files differdeleted file mode 100644 index 58311fbe..00000000 --- a/src/quickcontrols2/basic/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/basic/impl/CMakeLists.txt b/src/quickcontrols2/basic/impl/CMakeLists.txt deleted file mode 100644 index 2b937ae2..00000000 --- a/src/quickcontrols2/basic/impl/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -##################################################################### -## qtquickcontrols2basicstyleimplplugin Plugin: -##################################################################### - -qt_internal_add_qml_module(qtquickcontrols2basicstyleimplplugin - URI "QtQuick.Controls.Basic.impl" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2BasicStyleImplPlugin - PLUGIN_TARGET qtquickcontrols2basicstyleimplplugin - NO_PLUGIN_OPTIONAL - SOURCES - qquickbasicbusyindicator.cpp qquickbasicbusyindicator_p.h - qquickbasicdial.cpp qquickbasicdial_p.h - qquickbasicprogressbar.cpp qquickbasicprogressbar_p.h - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::Gui - Qt::QmlPrivate - Qt::QuickControls2ImplPrivate - Qt::QuickPrivate - Qt::QuickTemplates2Private -) diff --git a/src/quickcontrols2/basic/impl/qquickbasicbusyindicator.cpp b/src/quickcontrols2/basic/impl/qquickbasicbusyindicator.cpp deleted file mode 100644 index 7fb3b024..00000000 --- a/src/quickcontrols2/basic/impl/qquickbasicbusyindicator.cpp +++ /dev/null @@ -1,223 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickbasicbusyindicator_p.h" - -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qsgadaptationlayer_p.h> -#include <QtQuickControls2Impl/private/qquickanimatednode_p.h> - -QT_BEGIN_NAMESPACE - -static const int CircleCount = 10; -static const int TotalDuration = 100 * CircleCount * 2; -static const QRgb TransparentColor = 0x00000000; - -static QPointF moveCircle(const QPointF &pos, qreal rotation, qreal distance) -{ - return pos - QTransform().rotate(rotation).map(QPointF(0, distance)); -} - -class QQuickBasicBusyIndicatorNode : public QQuickAnimatedNode -{ -public: - QQuickBasicBusyIndicatorNode(QQuickBasicBusyIndicator *item); - - void updateCurrentTime(int time) override; - void sync(QQuickItem *item) override; - -private: - QColor m_pen; - QColor m_fill; -}; - -QQuickBasicBusyIndicatorNode::QQuickBasicBusyIndicatorNode(QQuickBasicBusyIndicator *item) - : QQuickAnimatedNode(item) -{ - setLoopCount(Infinite); - setDuration(TotalDuration); - setCurrentTime(item->elapsed()); - - for (int i = 0; i < CircleCount; ++i) { - QSGTransformNode *transformNode = new QSGTransformNode; - appendChildNode(transformNode); - - QQuickItemPrivate *d = QQuickItemPrivate::get(item); - QSGInternalRectangleNode *rectNode = d->sceneGraphContext()->createInternalRectangleNode(); - rectNode->setAntialiasing(true); - transformNode->appendChildNode(rectNode); - } -} - -void QQuickBasicBusyIndicatorNode::updateCurrentTime(int time) -{ - const qreal percentageComplete = time / qreal(TotalDuration); - const qreal firstPhaseProgress = percentageComplete <= 0.5 ? percentageComplete * 2 : 0; - const qreal secondPhaseProgress = percentageComplete > 0.5 ? (percentageComplete - 0.5) * 2 : 0; - - QSGTransformNode *transformNode = static_cast<QSGTransformNode*>(firstChild()); - Q_ASSERT(transformNode->type() == QSGNode::TransformNodeType); - for (int i = 0; i < CircleCount; ++i) { - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode*>(transformNode->firstChild()); - Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); - - const bool fill = (firstPhaseProgress > qreal(i) / CircleCount) || (secondPhaseProgress > 0 && secondPhaseProgress < qreal(i) / CircleCount); - rectNode->setColor(fill ? m_fill : QColor::fromRgba(TransparentColor)); - rectNode->setPenColor(m_pen); - rectNode->setPenWidth(1); - rectNode->update(); - - transformNode = static_cast<QSGTransformNode*>(transformNode->nextSibling()); - } -} - -void QQuickBasicBusyIndicatorNode::sync(QQuickItem *item) -{ - const qreal w = item->width(); - const qreal h = item->height(); - const qreal sz = qMin(w, h); - const qreal dx = (w - sz) / 2; - const qreal dy = (h - sz) / 2; - const int circleRadius = sz / 12; - - m_pen = static_cast<QQuickBasicBusyIndicator *>(item)->pen(); - m_fill = static_cast<QQuickBasicBusyIndicator *>(item)->fill(); - - QSGTransformNode *transformNode = static_cast<QSGTransformNode *>(firstChild()); - for (int i = 0; i < CircleCount; ++i) { - Q_ASSERT(transformNode->type() == QSGNode::TransformNodeType); - - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(transformNode->firstChild()); - Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); - - QPointF pos = QPointF(sz / 2 - circleRadius, sz / 2 - circleRadius); - pos = moveCircle(pos, 360.0 / CircleCount * i, sz / 2 - circleRadius); - - QMatrix4x4 m; - m.translate(dx + pos.x(), dy + pos.y()); - transformNode->setMatrix(m); - - rectNode->setRect(QRectF(QPointF(), QSizeF(circleRadius * 2, circleRadius * 2))); - rectNode->setRadius(circleRadius); - - transformNode = static_cast<QSGTransformNode *>(transformNode->nextSibling()); - } -} - -QQuickBasicBusyIndicator::QQuickBasicBusyIndicator(QQuickItem *parent) : - QQuickItem(parent) -{ - setFlag(ItemHasContents); -} - -QColor QQuickBasicBusyIndicator::pen() const -{ - return m_pen; -} - -void QQuickBasicBusyIndicator::setPen(const QColor &pen) -{ - if (pen == m_pen) - return; - - m_pen = pen; - update(); -} - -QColor QQuickBasicBusyIndicator::fill() const -{ - return m_fill; -} - -void QQuickBasicBusyIndicator::setFill(const QColor &fill) -{ - if (fill == m_fill) - return; - - m_fill = fill; - update(); -} - -bool QQuickBasicBusyIndicator::isRunning() const -{ - return isVisible(); -} - -void QQuickBasicBusyIndicator::setRunning(bool running) -{ - if (running) - setVisible(true); -} - -int QQuickBasicBusyIndicator::elapsed() const -{ - return m_elapsed; -} - -void QQuickBasicBusyIndicator::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - QQuickItem::itemChange(change, data); - switch (change) { - case ItemOpacityHasChanged: - if (qFuzzyIsNull(data.realValue)) - setVisible(false); - break; - case ItemVisibleHasChanged: - update(); - break; - default: - break; - } -} - -QSGNode *QQuickBasicBusyIndicator::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *) -{ - QQuickBasicBusyIndicatorNode *node = static_cast<QQuickBasicBusyIndicatorNode *>(oldNode); - if (isRunning() && width() > 0 && height() > 0) { - if (!node) { - node = new QQuickBasicBusyIndicatorNode(this); - node->start(); - } - node->sync(this); - } else { - m_elapsed = node ? node->currentTime() : 0; - delete node; - node = nullptr; - } - return node; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/basic/impl/qquickbasicbusyindicator_p.h b/src/quickcontrols2/basic/impl/qquickbasicbusyindicator_p.h deleted file mode 100644 index 7eea6656..00000000 --- a/src/quickcontrols2/basic/impl/qquickbasicbusyindicator_p.h +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDEFAULTBUSYINDICATOR_P_H -#define QQUICKDEFAULTBUSYINDICATOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/qquickitem.h> -#include <QtGui/qcolor.h> - -QT_BEGIN_NAMESPACE - -class QQuickBasicBusyIndicator : public QQuickItem -{ - Q_OBJECT - Q_PROPERTY(QColor pen READ pen WRITE setPen FINAL) - Q_PROPERTY(QColor fill READ fill WRITE setFill FINAL) - Q_PROPERTY(bool running READ isRunning WRITE setRunning) - QML_NAMED_ELEMENT(BusyIndicatorImpl) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickBasicBusyIndicator(QQuickItem *parent = nullptr); - - QColor pen() const; - void setPen(const QColor &pen); - - QColor fill() const; - void setFill(const QColor &fill); - - bool isRunning() const; - void setRunning(bool running); - - int elapsed() const; - -protected: - void itemChange(ItemChange change, const ItemChangeData &data) override; - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override; - -private: - int m_elapsed = 0; - QColor m_pen; - QColor m_fill; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickBasicBusyIndicator) - -#endif // QQUICKDEFAULTBUSYINDICATOR_P_H diff --git a/src/quickcontrols2/basic/impl/qquickbasicdial.cpp b/src/quickcontrols2/basic/impl/qquickbasicdial.cpp deleted file mode 100644 index 223e8042..00000000 --- a/src/quickcontrols2/basic/impl/qquickbasicdial.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickbasicdial_p.h" - -#include <QtCore/qmath.h> -#include <QtGui/qpainter.h> -#include <QtQuick/private/qquickitem_p.h> - -QT_BEGIN_NAMESPACE - -QQuickBasicDial::QQuickBasicDial(QQuickItem *parent) : - QQuickPaintedItem(parent) -{ -} - -qreal QQuickBasicDial::progress() const -{ - return m_progress; -} - -void QQuickBasicDial::setProgress(qreal progress) -{ - if (progress == m_progress) - return; - - m_progress = progress; - update(); -} - -QColor QQuickBasicDial::color() const -{ - return m_color; -} - -void QQuickBasicDial::setColor(const QColor &color) -{ - if (color == m_color) - return; - - m_color = color; - update(); -} - -void QQuickBasicDial::paint(QPainter *painter) -{ - if (width() <= 0 || height() <= 0) - return; - - QPen pen(m_color); - pen.setWidth(8); - pen.setCapStyle(Qt::FlatCap); - painter->setPen(pen); - - const QRectF bounds = boundingRect(); - const qreal smallest = qMin(bounds.width(), bounds.height()); - QRectF rect = QRectF(pen.widthF() / 2.0 + 1, pen.widthF() / 2.0 + 1, smallest - pen.widthF() - 2, smallest - pen.widthF() - 2); - rect.moveCenter(bounds.center()); - - // Make sure the arc is aligned to whole pixels. - if (rect.x() - int(rect.x()) > 0) - rect.setX(qCeil(rect.x())); - if (rect.y() - int(rect.y()) > 0) - rect.setY(qCeil(rect.y())); - if (rect.width() - int(rect.width()) > 0) - rect.setWidth(qFloor(rect.width())); - if (rect.height() - int(rect.height()) > 0) - rect.setHeight(qFloor(rect.height())); - - painter->setRenderHint(QPainter::Antialiasing); - - const qreal startAngle = (140 + 90); - const qreal spanAngle = (m_progress * 280) * -1; - QPainterPath path; - path.arcMoveTo(rect, startAngle); - path.arcTo(rect, startAngle, spanAngle); - painter->drawPath(path); - - rect.adjust(-pen.widthF() / 2.0, -pen.widthF() / 2.0, pen.widthF() / 2.0, pen.widthF() / 2.0); - pen.setWidth(1); - painter->setPen(pen); - - path = QPainterPath(); - path.arcMoveTo(rect, 0); - path.arcTo(rect, 0, 360); - painter->drawPath(path); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/basic/impl/qquickbasicdial_p.h b/src/quickcontrols2/basic/impl/qquickbasicdial_p.h deleted file mode 100644 index bd9bbb72..00000000 --- a/src/quickcontrols2/basic/impl/qquickbasicdial_p.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDEFAULTDIAL_P_H -#define QQUICKDEFAULTDIAL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qcolor.h> -#include <QtQuick/qquickpainteditem.h> - -QT_BEGIN_NAMESPACE - -class QQuickBasicDial : public QQuickPaintedItem -{ - Q_OBJECT - Q_PROPERTY(qreal progress READ progress WRITE setProgress FINAL) - Q_PROPERTY(QColor color READ color WRITE setColor FINAL) - QML_NAMED_ELEMENT(DialImpl) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickBasicDial(QQuickItem *parent = nullptr); - - qreal progress() const; - void setProgress(qreal progress); - - QColor color() const; - void setColor(const QColor &color); - - void paint(QPainter *painter) override; - -private: - qreal m_progress = 0; - QColor m_color = Qt::black; -}; - -QT_END_NAMESPACE - -#endif // QQUICKDEFAULTDIAL_P_H diff --git a/src/quickcontrols2/basic/impl/qquickbasicprogressbar.cpp b/src/quickcontrols2/basic/impl/qquickbasicprogressbar.cpp deleted file mode 100644 index 717082af..00000000 --- a/src/quickcontrols2/basic/impl/qquickbasicprogressbar.cpp +++ /dev/null @@ -1,280 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickbasicprogressbar_p.h" - -#include <QtCore/qeasingcurve.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qsgadaptationlayer_p.h> -#include <QtQuickControls2Impl/private/qquickanimatednode_p.h> - -QT_BEGIN_NAMESPACE - -static const int Blocks = 4; -static const int BlockWidth = 16; -static const int BlockRestingSpacing = 4; -static const int BlockMovingSpacing = 48; -static const int BlockSpan = Blocks * (BlockWidth + BlockRestingSpacing) - BlockRestingSpacing; -static const int TotalDuration = 4000; -static const int SecondPhaseStart = TotalDuration * 0.4; -static const int ThirdPhaseStart = TotalDuration * 0.6; - -static inline qreal blockStartX(int blockIndex) -{ - return ((blockIndex + 1) * -BlockWidth) - (blockIndex * BlockMovingSpacing); -} - -static inline qreal blockRestX(int blockIndex, qreal availableWidth) -{ - const qreal spanRightEdgePos = availableWidth / 2 + BlockSpan / 2.0; - return spanRightEdgePos - (blockIndex + 1) * BlockWidth - (blockIndex * BlockRestingSpacing); -} - -static inline qreal blockEndX(int blockIndex, qreal availableWidth) -{ - return availableWidth - blockStartX(Blocks - 1 - blockIndex) - BlockWidth; -} - -class QQuickBasicProgressBarNode : public QQuickAnimatedNode -{ -public: - QQuickBasicProgressBarNode(QQuickBasicProgressBar *item); - - void updateCurrentTime(int time) override; - void sync(QQuickItem *item) override; - -private: - bool m_indeterminate = false; - qreal m_pixelsPerSecond = 0; -}; - -QQuickBasicProgressBarNode::QQuickBasicProgressBarNode(QQuickBasicProgressBar *item) - : QQuickAnimatedNode(item), - m_pixelsPerSecond(item->width()) -{ - setLoopCount(Infinite); - setDuration(TotalDuration); -} - -void QQuickBasicProgressBarNode::updateCurrentTime(int time) -{ - QSGTransformNode *transformNode = static_cast<QSGTransformNode*>(firstChild()); - for (int i = 0; i < Blocks; ++i) { - Q_ASSERT(transformNode->type() == QSGNode::TransformNodeType); - - QMatrix4x4 m; - const qreal restX = blockRestX(i, m_pixelsPerSecond); - const qreal timeInSeconds = time / 1000.0; - - if (time < SecondPhaseStart) { - // Move into the resting position for the first phase. - QEasingCurve easingCurve(QEasingCurve::InQuad); - const qreal easedCompletion = easingCurve.valueForProgress(time / qreal(SecondPhaseStart)); - const qreal distance = m_pixelsPerSecond * (easedCompletion * (SecondPhaseStart / 1000.0)); - const qreal position = blockStartX(i) + distance; - const qreal destination = restX; - m.translate(qMin(position, destination), 0); - } else if (time < ThirdPhaseStart) { - // Stay in the same position for the second phase. - m.translate(restX, 0); - } else { - // Move out of view for the third phase. - const int thirdPhaseSubKickoff = (BlockMovingSpacing / m_pixelsPerSecond) * 1000; - const int subphase = (time - ThirdPhaseStart) / thirdPhaseSubKickoff; - // If we're not at this subphase yet, don't try to animate movement, - // because it will be incorrect. - if (subphase < i) - return; - - const qreal timeSinceSecondPhase = timeInSeconds - (ThirdPhaseStart / 1000.0); - // We only want to start keeping track of time once our subphase has started, - // otherwise we move too much because we account for time that has already elapsed. - // For example, if we were 60 milliseconds into the third subphase: - // - // 0 ..... 1 ..... 2 ... - // 100 100 60 - // - // i == 0, timeSinceOurKickoff == 260 - // i == 1, timeSinceOurKickoff == 160 - // i == 2, timeSinceOurKickoff == 60 - const qreal timeSinceOurKickoff = timeSinceSecondPhase - (thirdPhaseSubKickoff / 1000.0 * i); - const qreal position = restX + (m_pixelsPerSecond * (timeSinceOurKickoff)); - const qreal destination = blockEndX(i, m_pixelsPerSecond); - m.translate(qMin(position, destination), 0); - } - - transformNode->setMatrix(m); - - transformNode = static_cast<QSGTransformNode*>(transformNode->nextSibling()); - } -} - -void QQuickBasicProgressBarNode::sync(QQuickItem *item) -{ - QQuickBasicProgressBar *bar = static_cast<QQuickBasicProgressBar *>(item); - if (m_indeterminate != bar->isIndeterminate()) { - m_indeterminate = bar->isIndeterminate(); - if (m_indeterminate) - start(); - else - stop(); - } - m_pixelsPerSecond = item->width(); - - QQuickItemPrivate *d = QQuickItemPrivate::get(item); - - QMatrix4x4 m; - m.translate(0, (item->height() - item->implicitHeight()) / 2); - setMatrix(m); - - if (m_indeterminate) { - if (childCount() != Blocks) { - // This was previously a regular progress bar; remove the old nodes. - removeAllChildNodes(); - } - - QSGTransformNode *transformNode = static_cast<QSGTransformNode*>(firstChild()); - for (int i = 0; i < Blocks; ++i) { - if (!transformNode) { - transformNode = new QSGTransformNode; - appendChildNode(transformNode); - } - - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode*>(transformNode->firstChild()); - if (!rectNode) { - rectNode = d->sceneGraphContext()->createInternalRectangleNode(); - rectNode->setColor(bar->color()); - transformNode->appendChildNode(rectNode); - } - - QMatrix4x4 m; - m.translate(blockStartX(i), 0); - transformNode->setMatrix(m); - - rectNode->setRect(QRectF(QPointF(0, 0), QSizeF(BlockWidth, item->implicitHeight()))); - rectNode->update(); - - transformNode = static_cast<QSGTransformNode *>(transformNode->nextSibling()); - } - } else { - if (childCount() > 1) { - // This was previously an indeterminate progress bar; remove the old nodes. - removeAllChildNodes(); - } - - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(firstChild()); - if (!rectNode) { - rectNode = d->sceneGraphContext()->createInternalRectangleNode(); - rectNode->setColor(bar->color()); - appendChildNode(rectNode); - } - - rectNode->setRect(QRectF(QPointF(0, 0), QSizeF(bar->progress() * item->width(), item->implicitHeight()))); - rectNode->update(); - } -} - -QQuickBasicProgressBar::QQuickBasicProgressBar(QQuickItem *parent) : - QQuickItem(parent) -{ - setFlag(ItemHasContents); -} - -qreal QQuickBasicProgressBar::progress() const -{ - return m_progress; -} - -void QQuickBasicProgressBar::setProgress(qreal progress) -{ - if (progress == m_progress) - return; - - m_progress = progress; - update(); -} - -bool QQuickBasicProgressBar::isIndeterminate() const -{ - return m_indeterminate; -} - -void QQuickBasicProgressBar::setIndeterminate(bool indeterminate) -{ - if (indeterminate == m_indeterminate) - return; - - m_indeterminate = indeterminate; - setClip(m_indeterminate); - update(); -} - -QColor QQuickBasicProgressBar::color() const -{ - return m_color; -} - -void QQuickBasicProgressBar::setColor(const QColor &color) -{ - if (color == m_color) - return; - - m_color = color; - update(); -} - -void QQuickBasicProgressBar::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - QQuickItem::itemChange(change, data); - if (change == ItemVisibleHasChanged) - update(); -} - -QSGNode *QQuickBasicProgressBar::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *) -{ - QQuickBasicProgressBarNode *node = static_cast<QQuickBasicProgressBarNode *>(oldNode); - if (isVisible() && width() > 0 && height() > 0) { - if (!node) - node = new QQuickBasicProgressBarNode(this); - node->sync(this); - } else { - delete node; - node = nullptr; - } - return node; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/basic/impl/qquickbasicprogressbar_p.h b/src/quickcontrols2/basic/impl/qquickbasicprogressbar_p.h deleted file mode 100644 index 1d853ecb..00000000 --- a/src/quickcontrols2/basic/impl/qquickbasicprogressbar_p.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDEFAULTPROGRESSBAR_P_H -#define QQUICKDEFAULTPROGRESSBAR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/qquickitem.h> -#include <QtGui/qcolor.h> - -QT_BEGIN_NAMESPACE - -class QQuickBasicProgressBar : public QQuickItem -{ - Q_OBJECT - Q_PROPERTY(bool indeterminate READ isIndeterminate WRITE setIndeterminate FINAL) - Q_PROPERTY(qreal progress READ progress WRITE setProgress FINAL) - Q_PROPERTY(QColor color READ color WRITE setColor FINAL) - QML_NAMED_ELEMENT(ProgressBarImpl) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickBasicProgressBar(QQuickItem *parent = nullptr); - - bool isIndeterminate() const; - void setIndeterminate(bool indeterminate); - - qreal progress() const; - void setProgress(qreal progress); - - QColor color() const; - void setColor(const QColor &color); - -protected: - void itemChange(ItemChange change, const ItemChangeData &data) override; - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override; - -private: - qreal m_progress = 0; - bool m_indeterminate = false; - QColor m_color; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickBasicProgressBar) - -#endif // QQUICKDEFAULTPROGRESSBAR_P_H diff --git a/src/quickcontrols2/basic/qquickbasicstyle.cpp b/src/quickcontrols2/basic/qquickbasicstyle.cpp deleted file mode 100644 index 9dcb7c74..00000000 --- a/src/quickcontrols2/basic/qquickbasicstyle.cpp +++ /dev/null @@ -1,246 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickbasicstyle_p.h" - -QT_BEGIN_NAMESPACE - -QQuickBasicStyle::QQuickBasicStyle(QObject *parent) : - QObject(parent) -{ -} - -QColor QQuickBasicStyle::backgroundColor() const -{ - return QColor::fromRgba(0xFFFFFFFF); -} - -QColor QQuickBasicStyle::overlayModalColor() const -{ - return QColor::fromRgba(0x7F28282A); -} - -QColor QQuickBasicStyle::overlayDimColor() const -{ - return QColor::fromRgba(0x1F28282A); -} - -QColor QQuickBasicStyle::textColor() const -{ - return QColor::fromRgba(0xFF353637); -} - -QColor QQuickBasicStyle::textDarkColor() const -{ - return QColor::fromRgba(0xFF26282A); -} - -QColor QQuickBasicStyle::textLightColor() const -{ - return QColor::fromRgba(0xFFFFFFFF); -} - -QColor QQuickBasicStyle::textLinkColor() const -{ - return QColor::fromRgba(0xFF45A7D7); -} - -QColor QQuickBasicStyle::textSelectionColor() const -{ - return QColor::fromRgba(0xFFFDDD5C); -} - -QColor QQuickBasicStyle::textDisabledColor() const -{ - return QColor::fromRgba(0xFFBDBEBF); -} - -QColor QQuickBasicStyle::textDisabledLightColor() const -{ - return QColor::fromRgba(0xFFC2C2C2); -} - -QColor QQuickBasicStyle::textPlaceholderColor() const -{ - return QColor::fromRgba(0xFF777777); -} - -QColor QQuickBasicStyle::focusColor() const -{ - return QColor::fromRgba(0xFF0066FF); -} - -QColor QQuickBasicStyle::focusLightColor() const -{ - return QColor::fromRgba(0xFFF0F6FF); -} - -QColor QQuickBasicStyle::focusPressedColor() const -{ - return QColor::fromRgba(0xFFCCE0FF); -} - -QColor QQuickBasicStyle::buttonColor() const -{ - return QColor::fromRgba(0xFFE0E0E0); -} - -QColor QQuickBasicStyle::buttonPressedColor() const -{ - return QColor::fromRgba(0xFFD0D0D0); -} - -QColor QQuickBasicStyle::buttonCheckedColor() const -{ - return QColor::fromRgba(0xFF353637); -} - -QColor QQuickBasicStyle::buttonCheckedPressedColor() const -{ - return QColor::fromRgba(0xFF585A5C); -} - -QColor QQuickBasicStyle::buttonCheckedFocusColor() const -{ - return QColor::fromRgba(0xFF599BFF); -} - -QColor QQuickBasicStyle::toolButtonColor() const -{ - return QColor::fromRgba(0x33333333); -} - -QColor QQuickBasicStyle::tabButtonColor() const -{ - return QColor::fromRgba(0xFF353637); -} - -QColor QQuickBasicStyle::tabButtonPressedColor() const -{ - return QColor::fromRgba(0xFF585A5C); -} - -QColor QQuickBasicStyle::tabButtonCheckedPressedColor() const -{ - return QColor::fromRgba(0xFFE4E4E4); -} - -QColor QQuickBasicStyle::delegateColor() const -{ - return QColor::fromRgba(0xFFEEEEEE); -} - -QColor QQuickBasicStyle::delegatePressedColor() const -{ - return QColor::fromRgba(0xFFBDBEBF); -} - -QColor QQuickBasicStyle::delegateFocusColor() const -{ - return QColor::fromRgba(0xFFE5EFFF); -} - -QColor QQuickBasicStyle::indicatorPressedColor() const -{ - return QColor::fromRgba(0xFFF6F6F6); -} - -QColor QQuickBasicStyle::indicatorDisabledColor() const -{ - return QColor::fromRgba(0xFFFDFDFD); -} - -QColor QQuickBasicStyle::indicatorFrameColor() const -{ - return QColor::fromRgba(0xFF909090); -} - -QColor QQuickBasicStyle::indicatorFramePressedColor() const -{ - return QColor::fromRgba(0xFF808080); -} - -QColor QQuickBasicStyle::indicatorFrameDisabledColor() const -{ - return QColor::fromRgba(0xFFD6D6D6); -} - -QColor QQuickBasicStyle::frameDarkColor() const -{ - return QColor::fromRgba(0xFF353637); -} - -QColor QQuickBasicStyle::frameLightColor() const -{ - return QColor::fromRgba(0xFFBDBEBF); -} - -QColor QQuickBasicStyle::scrollBarColor() const -{ - return QColor::fromRgba(0xFFBDBEBF); -} - -QColor QQuickBasicStyle::scrollBarPressedColor() const -{ - return QColor::fromRgba(0xFF28282A); -} - -QColor QQuickBasicStyle::progressBarColor() const -{ - return QColor::fromRgba(0xFFE4E4E4); -} - -QColor QQuickBasicStyle::pageIndicatorColor() const -{ - return QColor::fromRgba(0xFF28282A); -} - -QColor QQuickBasicStyle::separatorColor() const -{ - return QColor::fromRgba(0xFFCCCCCC); -} - -QColor QQuickBasicStyle::disabledDarkColor() const -{ - return QColor::fromRgba(0xFF353637); -} - -QColor QQuickBasicStyle::disabledLightColor() const -{ - return QColor::fromRgba(0xFFBDBEBF); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/basic/qquickbasicstyle_p.h b/src/quickcontrols2/basic/qquickbasicstyle_p.h deleted file mode 100644 index 3f3d84b8..00000000 --- a/src/quickcontrols2/basic/qquickbasicstyle_p.h +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKBASICSTYLE_P_H -#define QQUICKBASICSTYLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtGui/qcolor.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QQuickBasicStyle : public QObject -{ - Q_OBJECT - Q_PROPERTY(QColor backgroundColor READ backgroundColor CONSTANT FINAL) - Q_PROPERTY(QColor overlayModalColor READ overlayModalColor CONSTANT FINAL) - Q_PROPERTY(QColor overlayDimColor READ overlayDimColor CONSTANT FINAL) - Q_PROPERTY(QColor textColor READ textColor CONSTANT FINAL) - Q_PROPERTY(QColor textDarkColor READ textDarkColor CONSTANT FINAL) - Q_PROPERTY(QColor textLightColor READ textLightColor CONSTANT FINAL) - Q_PROPERTY(QColor textLinkColor READ textLinkColor CONSTANT FINAL) - Q_PROPERTY(QColor textSelectionColor READ textSelectionColor CONSTANT FINAL) - Q_PROPERTY(QColor textDisabledColor READ textDisabledColor CONSTANT FINAL) - Q_PROPERTY(QColor textDisabledLightColor READ textDisabledLightColor CONSTANT FINAL) - Q_PROPERTY(QColor textPlaceholderColor READ textPlaceholderColor CONSTANT FINAL) - Q_PROPERTY(QColor focusColor READ focusColor CONSTANT FINAL) - Q_PROPERTY(QColor focusLightColor READ focusLightColor CONSTANT FINAL) - Q_PROPERTY(QColor focusPressedColor READ focusPressedColor CONSTANT FINAL) - Q_PROPERTY(QColor buttonColor READ buttonColor CONSTANT FINAL) - Q_PROPERTY(QColor buttonPressedColor READ buttonPressedColor CONSTANT FINAL) - Q_PROPERTY(QColor buttonCheckedColor READ buttonCheckedColor CONSTANT FINAL) - Q_PROPERTY(QColor buttonCheckedPressedColor READ buttonCheckedPressedColor CONSTANT FINAL) - Q_PROPERTY(QColor buttonCheckedFocusColor READ buttonCheckedFocusColor CONSTANT FINAL) - Q_PROPERTY(QColor toolButtonColor READ toolButtonColor CONSTANT FINAL) - Q_PROPERTY(QColor tabButtonColor READ tabButtonColor CONSTANT FINAL) - Q_PROPERTY(QColor tabButtonPressedColor READ tabButtonPressedColor CONSTANT FINAL) - Q_PROPERTY(QColor tabButtonCheckedPressedColor READ tabButtonCheckedPressedColor CONSTANT FINAL) - Q_PROPERTY(QColor delegateColor READ delegateColor CONSTANT FINAL) - Q_PROPERTY(QColor delegatePressedColor READ delegatePressedColor CONSTANT FINAL) - Q_PROPERTY(QColor delegateFocusColor READ delegateFocusColor CONSTANT FINAL) - Q_PROPERTY(QColor indicatorPressedColor READ indicatorPressedColor CONSTANT FINAL) - Q_PROPERTY(QColor indicatorDisabledColor READ indicatorDisabledColor CONSTANT FINAL) - Q_PROPERTY(QColor indicatorFrameColor READ indicatorFrameColor CONSTANT FINAL) - Q_PROPERTY(QColor indicatorFramePressedColor READ indicatorFramePressedColor CONSTANT FINAL) - Q_PROPERTY(QColor indicatorFrameDisabledColor READ indicatorFrameDisabledColor CONSTANT FINAL) - Q_PROPERTY(QColor frameDarkColor READ frameDarkColor CONSTANT FINAL) - Q_PROPERTY(QColor frameLightColor READ frameLightColor CONSTANT FINAL) - Q_PROPERTY(QColor scrollBarColor READ scrollBarColor CONSTANT FINAL) - Q_PROPERTY(QColor scrollBarPressedColor READ scrollBarPressedColor CONSTANT FINAL) - Q_PROPERTY(QColor progressBarColor READ progressBarColor CONSTANT FINAL) - Q_PROPERTY(QColor pageIndicatorColor READ pageIndicatorColor CONSTANT FINAL) - Q_PROPERTY(QColor separatorColor READ separatorColor CONSTANT FINAL) - Q_PROPERTY(QColor disabledDarkColor READ disabledDarkColor CONSTANT FINAL) - Q_PROPERTY(QColor disabledLightColor READ disabledLightColor CONSTANT FINAL) - QML_NAMED_ELEMENT(Basic) - QML_SINGLETON - QML_ADDED_IN_VERSION(2, 1) - -public: - explicit QQuickBasicStyle(QObject *parent = nullptr); - - QColor backgroundColor() const; - QColor overlayModalColor() const; - QColor overlayDimColor() const; - QColor textColor() const; - QColor textDarkColor() const; - QColor textLightColor() const; - QColor textLinkColor() const; - QColor textSelectionColor() const; - QColor textDisabledColor() const; - QColor textDisabledLightColor() const; - QColor textPlaceholderColor() const; - QColor focusColor() const; - QColor focusLightColor() const; - QColor focusPressedColor() const; - QColor buttonColor() const; - QColor buttonPressedColor() const; - QColor buttonCheckedColor() const; - QColor buttonCheckedPressedColor() const; - QColor buttonCheckedFocusColor() const; - QColor toolButtonColor() const; - QColor tabButtonColor() const; - QColor tabButtonPressedColor() const; - QColor tabButtonCheckedPressedColor() const; - QColor delegateColor() const; - QColor delegatePressedColor() const; - QColor delegateFocusColor() const; - QColor indicatorPressedColor() const; - QColor indicatorDisabledColor() const; - QColor indicatorFrameColor() const; - QColor indicatorFramePressedColor() const; - QColor indicatorFrameDisabledColor() const; - QColor frameDarkColor() const; - QColor frameLightColor() const; - QColor scrollBarColor() const; - QColor scrollBarPressedColor() const; - QColor progressBarColor() const; - QColor pageIndicatorColor() const; - QColor separatorColor() const; - QColor disabledDarkColor() const; - QColor disabledLightColor() const; -}; - -QT_END_NAMESPACE - -#endif // QQUICKBASICSTYLE_P_H diff --git a/src/quickcontrols2/basic/qquickbasictheme.cpp b/src/quickcontrols2/basic/qquickbasictheme.cpp deleted file mode 100644 index c65a7bc1..00000000 --- a/src/quickcontrols2/basic/qquickbasictheme.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickbasictheme_p.h" - -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -QT_BEGIN_NAMESPACE - -void QQuickBasicTheme::initialize(QQuickTheme *theme) -{ - QPalette systemPalette; - - systemPalette.setColor(QPalette::Base, QColor::fromRgba(0xFFFFFFFF)); - systemPalette.setColor(QPalette::Disabled, QPalette::Base, QColor::fromRgba(0xFFD6D6D6)); - - systemPalette.setColor(QPalette::Button, QColor::fromRgba(0xFFE0E0E0)); - - systemPalette.setColor(QPalette::ButtonText, QColor::fromRgba(0xFF26282A)); - systemPalette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor::fromRgba(0x4D26282A)); - - systemPalette.setColor(QPalette::BrightText, QColor::fromRgba(0xFFFFFFFF)); - systemPalette.setColor(QPalette::Disabled, QPalette::BrightText, QColor::fromRgba(0x4DFFFFFF)); - - systemPalette.setColor(QPalette::Dark, QColor::fromRgba(0xFF353637)); - - systemPalette.setColor(QPalette::Highlight, QColor::fromRgba(0xFF0066FF)); - systemPalette.setColor(QPalette::Disabled, QPalette::Highlight, QColor::fromRgba(0xFFF0F6FF)); - - systemPalette.setColor(QPalette::HighlightedText, QColor::fromRgba(0xFF090909)); - - systemPalette.setColor(QPalette::Light, QColor::fromRgba(0xFFF6F6F6)); - - systemPalette.setColor(QPalette::Link, QColor::fromRgba(0xFF45A7D7)); - - systemPalette.setColor(QPalette::Mid, QColor::fromRgba(0xFFBDBDBD)); - - systemPalette.setColor(QPalette::Midlight, QColor::fromRgba(0xFFE4E4E4)); - - systemPalette.setColor(QPalette::Text, QColor::fromRgba(0xFF353637)); - systemPalette.setColor(QPalette::Disabled, QPalette::Text, QColor::fromRgba(0x7F353637)); - - systemPalette.setColor(QPalette::Shadow, QColor::fromRgba(0xFF28282A)); - - systemPalette.setColor(QPalette::ToolTipBase, QColor::fromRgba(0xFFFFFFFF)); - systemPalette.setColor(QPalette::ToolTipText, QColor::fromRgba(0xFF000000)); - - systemPalette.setColor(QPalette::Window, QColor::fromRgba(0xFFFFFFFF)); - - systemPalette.setColor(QPalette::WindowText, QColor::fromRgba(0xFF26282A)); - systemPalette.setColor(QPalette::Disabled, QPalette::WindowText, QColor::fromRgba(0xFFBDBEBF)); - - systemPalette.setColor(QPalette::PlaceholderText, QColor::fromRgba(0x88353637)); - - theme->setPalette(QQuickTheme::System, systemPalette); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/basic/qquickbasictheme_p.h b/src/quickcontrols2/basic/qquickbasictheme_p.h deleted file mode 100644 index a0a29953..00000000 --- a/src/quickcontrols2/basic/qquickbasictheme_p.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKBASICTHEME_P_H -#define QQUICKBASICTHEME_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qglobal.h> - -QT_BEGIN_NAMESPACE - -class QQuickTheme; - -class QQuickBasicTheme -{ -public: - static void initialize(QQuickTheme *theme); -}; - -QT_END_NAMESPACE - -#endif // QQUICKBASICTHEME_P_H diff --git a/src/quickcontrols2/basic/qtquickcontrols2basicstyleplugin.cpp b/src/quickcontrols2/basic/qtquickcontrols2basicstyleplugin.cpp deleted file mode 100644 index 7786223c..00000000 --- a/src/quickcontrols2/basic/qtquickcontrols2basicstyleplugin.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickbasicstyle_p.h" -#include "qquickbasictheme_p.h" - -#include <QtQuickControls2/private/qquickstyleplugin_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -extern void qml_register_types_QtQuick_Controls_Basic(); - -QT_BEGIN_NAMESPACE - -class QtQuickControls2BasicStylePlugin: public QQuickStylePlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) - -public: - QtQuickControls2BasicStylePlugin(QObject *parent = nullptr); - - QString name() const override; - void initializeTheme(QQuickTheme *theme) override; - - QQuickBasicTheme theme; -}; - -QtQuickControls2BasicStylePlugin::QtQuickControls2BasicStylePlugin(QObject *parent) : QQuickStylePlugin(parent) -{ - volatile auto registration = &qml_register_types_QtQuick_Controls_Basic; - Q_UNUSED(registration); -} - -QString QtQuickControls2BasicStylePlugin::name() const -{ - return QStringLiteral("Basic"); -} - -void QtQuickControls2BasicStylePlugin::initializeTheme(QQuickTheme *theme) -{ - this->theme.initialize(theme); -} - -QT_END_NAMESPACE - -#include "qtquickcontrols2basicstyleplugin.moc" diff --git a/src/quickcontrols2/basic/qtquickcontrols2basicstyleplugin.qrc b/src/quickcontrols2/basic/qtquickcontrols2basicstyleplugin.qrc deleted file mode 100644 index 27fd6ac2..00000000 --- a/src/quickcontrols2/basic/qtquickcontrols2basicstyleplugin.qrc +++ /dev/null @@ -1,24 +0,0 @@ -<RCC> - <qresource prefix="/qt-project.org/imports/QtQuick/Controls/Basic"> - <file>images/arrow-indicator.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/check.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/dial-indicator.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/drop-indicator.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/double-arrow.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - </qresource> -</RCC> diff --git a/src/quickcontrols2/configure.cmake b/src/quickcontrols2/configure.cmake deleted file mode 100644 index f996cf28..00000000 --- a/src/quickcontrols2/configure.cmake +++ /dev/null @@ -1,62 +0,0 @@ - - -#### Inputs - - - -#### Libraries - - - -#### Tests - - - -#### Features - -qt_feature("quickcontrols2-basic" PRIVATE - LABEL "Basic" -) -qt_feature("quickcontrols2-fusion" PRIVATE - SECTION "Quick Controls 2" - LABEL "Fusion" - PURPOSE "Provides the platform agnostic desktop-oriented Fusion style." - CONDITION QT_FEATURE_quickcontrols2_basic -) -qt_feature("quickcontrols2-imagine" PRIVATE - SECTION "Quick Controls 2" - LABEL "Imagine" - PURPOSE "Provides a style based on configurable image assets." - CONDITION QT_FEATURE_quickcontrols2_basic -) -qt_feature("quickcontrols2-material" PRIVATE - SECTION "Quick Controls 2" - LABEL "Material" - PURPOSE "Provides a style based on the Material Design guidelines." - CONDITION QT_FEATURE_quickcontrols2_basic -) -qt_feature("quickcontrols2-universal" PRIVATE - SECTION "Quick Controls 2" - LABEL "Universal" - PURPOSE "Provides a style based on the Universal Design guidelines." - CONDITION QT_FEATURE_quickcontrols2_basic -) -qt_feature("quickcontrols2-macos" PRIVATE - SECTION "Quick Controls 2" - LABEL "macOS" - PURPOSE "Provides a native macOS desktop style." - CONDITION QT_FEATURE_quickcontrols2_basic -) -qt_feature("quickcontrols2-windows" PRIVATE - SECTION "Quick Controls 2" - LABEL "Windows" - PURPOSE "Provides a native Windows desktop style." - CONDITION QT_FEATURE_quickcontrols2_basic -) -qt_configure_add_summary_section(NAME "Qt Quick Controls 2") -qt_configure_add_summary_entry( - TYPE "featureList" - ARGS "quickcontrols2-basic quickcontrols2-fusion quickcontrols2-imagine quickcontrols2-material quickcontrols2-universal quickcontrols2-macos quickcontrols2-windows" - MESSAGE "Styles" -) -qt_configure_end_summary_section() # end of "Qt Quick Controls 2" section diff --git a/src/quickcontrols2/designer/AbstractButtonSection.qml b/src/quickcontrols2/designer/AbstractButtonSection.qml deleted file mode 100644 index 2ccb8231..00000000 --- a/src/quickcontrols2/designer/AbstractButtonSection.qml +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Section { - caption: qsTr("AbstractButton") - - SectionLayout { - Label { - text: qsTr("Text") - tooltip: qsTr("The text displayed on the button.") - } - SecondColumnLayout { - LineEdit { - backendValue: backendValues.text - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Display") - tooltip: qsTr("Determines how the icon and text are displayed within the button.") - disabledState: !backendValues.display.isAvailable - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.display - model: [ "IconOnly", "TextOnly", "TextBesideIcon" ] - scope: "AbstractButton" - Layout.fillWidth: true - enabled: backendValue.isAvailable - } - } - - Label { - visible: checkable - text: qsTr("Checkable") - tooltip: qsTr("Whether the button is checkable.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.checkable.valueToString - backendValue: backendValues.checkable - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Checked") - tooltip: qsTr("Whether the button is checked.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.checked.valueToString - backendValue: backendValues.checked - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Exclusive") - tooltip: qsTr("Whether the button is exclusive.") - disabledState: !backendValues.autoExclusive.isAvailable - } - SecondColumnLayout { - CheckBox { - text: backendValues.autoExclusive.valueToString - backendValue: backendValues.autoExclusive - Layout.fillWidth: true - enabled: backendValue.isAvailable - } - } - - Label { - text: qsTr("Auto-Repeat") - tooltip: qsTr("Whether the button repeats pressed(), released() and clicked() signals while the button is pressed and held down.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.autoRepeat.valueToString - backendValue: backendValues.autoRepeat - Layout.fillWidth: true - } - } - } -} diff --git a/src/quickcontrols2/designer/BusyIndicatorSpecifics.qml b/src/quickcontrols2/designer/BusyIndicatorSpecifics.qml deleted file mode 100644 index 7b2899d3..00000000 --- a/src/quickcontrols2/designer/BusyIndicatorSpecifics.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("BusyIndicator") - - SectionLayout { - Label { - text: qsTr("Running") - tooltip: qsTr("Whether the busy indicator is currently indicating activity.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.running.valueToString - backendValue: backendValues.running - Layout.fillWidth: true - } - } - } - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/ButtonSection.qml b/src/quickcontrols2/designer/ButtonSection.qml deleted file mode 100644 index ff70d52c..00000000 --- a/src/quickcontrols2/designer/ButtonSection.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Section { - id: section - caption: qsTr("Button") - - SectionLayout { - - Label { - text: qsTr("Flat") - tooltip: qsTr("Whether the button is flat.") - disabledState: !backendValues.flat.isAvailable - } - SecondColumnLayout { - CheckBox { - text: backendValues.flat.valueToString - backendValue: backendValues.flat - Layout.fillWidth: true - enabled: backendValue.isAvailable - } - } - Label { - text: qsTr("Highlighted") - tooltip: qsTr("Whether the button is highlighted.") - disabledState: !backendValues.highlighted.isAvailable - } - SecondColumnLayout { - CheckBox { - text: backendValues.highlighted.valueToString - backendValue: backendValues.highlighted - Layout.fillWidth: true - enabled: backendValue.isAvailable - } - } - } -} diff --git a/src/quickcontrols2/designer/ButtonSpecifics.qml b/src/quickcontrols2/designer/ButtonSpecifics.qml deleted file mode 100644 index 5a46e72a..00000000 --- a/src/quickcontrols2/designer/ButtonSpecifics.qml +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - ButtonSection { - width: parent.width - } - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/CMakeLists.txt b/src/quickcontrols2/designer/CMakeLists.txt deleted file mode 100644 index 38d82ace..00000000 --- a/src/quickcontrols2/designer/CMakeLists.txt +++ /dev/null @@ -1,61 +0,0 @@ -file(GLOB_RECURSE __aux_qml_glob_files - RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" - "images/*.png" -) - -qt_copy_or_install( - FILES - ${__aux_qml_glob_files} - DESTINATION "${INSTALL_QMLDIR}/QtQuick/Controls/designer/images" -) - -qt_copy_or_install( - FILES - AbstractButtonSection.qml - BusyIndicatorSpecifics.qml - ButtonSection.qml - ButtonSpecifics.qml - CheckBoxSpecifics.qml - CheckDelegateSpecifics.qml - CheckSection.qml - ComboBoxSpecifics.qml - ContainerSection.qml - ControlSection.qml - ControlSpecifics.qml - DelayButtonSpecifics.qml - DialSpecifics.qml - FrameSpecifics.qml - GroupBoxSpecifics.qml - InsetSection.qml - ItemDelegateSection.qml - ItemDelegateSpecifics.qml - LabelSpecifics.qml - PaddingSection.qml - PageIndicatorSpecifics.qml - PageSpecifics.qml - PaneSection.qml - PaneSpecifics.qml - ProgressBarSpecifics.qml - RadioButtonSpecifics.qml - RadioDelegateSpecifics.qml - RangeSliderSpecifics.qml - RoundButtonSpecifics.qml - ScrollViewSpecifics.qml - SliderSpecifics.qml - SpinBoxSpecifics.qml - StackViewSpecifics.qml - SwipeDelegateSpecifics.qml - SwipeViewSpecifics.qml - SwitchDelegateSpecifics.qml - SwitchSpecifics.qml - TabBarSpecifics.qml - TabButtonSpecifics.qml - TextAreaSpecifics.qml - TextFieldSpecifics.qml - ToolBarSpecifics.qml - ToolButtonSpecifics.qml - ToolSeparatorSpecifics.qml - TumblerSpecifics.qml - qtquickcontrols2.metainfo - DESTINATION "${INSTALL_QMLDIR}/QtQuick/Controls/designer" -) diff --git a/src/quickcontrols2/designer/CheckBoxSpecifics.qml b/src/quickcontrols2/designer/CheckBoxSpecifics.qml deleted file mode 100644 index d3aae9b6..00000000 --- a/src/quickcontrols2/designer/CheckBoxSpecifics.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - CheckSection { - width: parent.width - caption: qsTr("CheckBox") - } - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/CheckDelegateSpecifics.qml b/src/quickcontrols2/designer/CheckDelegateSpecifics.qml deleted file mode 100644 index 8014480c..00000000 --- a/src/quickcontrols2/designer/CheckDelegateSpecifics.qml +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - CheckSection { - width: parent.width - caption: qsTr("CheckDelegate") - } - - ItemDelegateSection { - width: parent.width - } - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/CheckSection.qml b/src/quickcontrols2/designer/CheckSection.qml deleted file mode 100644 index 0f49fa25..00000000 --- a/src/quickcontrols2/designer/CheckSection.qml +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Section { - SectionLayout { - Label { - text: qsTr("Check State") - tooltip: qsTr("The current check state.") - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.checkState - model: [ "Unchecked", "PartiallyChecked", "Checked" ] - scope: "Qt" - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Tri-state") - tooltip: qsTr("Whether the checkbox has three states.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.tristate.valueToString - backendValue: backendValues.tristate - Layout.fillWidth: true - } - } - } -} diff --git a/src/quickcontrols2/designer/ComboBoxSpecifics.qml b/src/quickcontrols2/designer/ComboBoxSpecifics.qml deleted file mode 100644 index 810f19b5..00000000 --- a/src/quickcontrols2/designer/ComboBoxSpecifics.qml +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("ComboBox") - - SectionLayout { - Label { - text: qsTr("Text Role") - tooltip: qsTr("The model role used for displaying text.") - } - SecondColumnLayout { - LineEdit { - backendValue: backendValues.textRole - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Current") - tooltip: qsTr("The index of the current item.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.currentIndex - Layout.fillWidth: true - } - } - Label { - text: qsTr("Editable") - tooltip: qsTr("Whether the combo box is editable.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.editable.valueToString - backendValue: backendValues.editable - Layout.fillWidth: true - } - } - Label { - text: qsTr("Flat") - tooltip: qsTr("Whether the combo box button is flat.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.flat.valueToString - backendValue: backendValues.flat - Layout.fillWidth: true - } - } - Label { - text: qsTr("DisplayText") - tooltip: qsTr("Holds the text that is displayed on the combo box button.") - } - SecondColumnLayout { - LineEdit { - backendValue: backendValues.displayText - Layout.fillWidth: true - } - } - } - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/ContainerSection.qml b/src/quickcontrols2/designer/ContainerSection.qml deleted file mode 100644 index 15d1ddf5..00000000 --- a/src/quickcontrols2/designer/ContainerSection.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Section { - caption: qsTr("Container") - - SectionLayout { - Label { - text: qsTr("Current") - tooltip: qsTr("The index of the current item.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.currentIndex - Layout.fillWidth: true - } - } - } -} diff --git a/src/quickcontrols2/designer/ControlSection.qml b/src/quickcontrols2/designer/ControlSection.qml deleted file mode 100644 index 12033eea..00000000 --- a/src/quickcontrols2/designer/ControlSection.qml +++ /dev/null @@ -1,114 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Section { - caption: qsTr("Control") - - SectionLayout { - Label { - text: qsTr("Enabled") - tooltip: qsTr("Whether the control is enabled.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.enabled.valueToString - backendValue: backendValues.enabled - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Focus Policy") - tooltip: qsTr("Focus policy of the control.") - disabledState: !backendValues.focusPolicy.isAvailable - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.focusPolicy - model: [ "TabFocus", "ClickFocus", "StrongFocus", "WheelFocus", "NoFocus" ] - scope: "Qt" - Layout.fillWidth: true - enabled: backendValue.isAvailable - } - } - - Label { - text: qsTr("Hover") - tooltip: qsTr("Whether control accepts hover events.") - disabledState: !backendValues.hoverEnabled.isAvailable - } - SecondColumnLayout { - CheckBox { - text: backendValues.hoverEnabled.valueToString - backendValue: backendValues.hoverEnabled - Layout.fillWidth: true - enabled: backendValue.isAvailable - } - } - - Label { - text: qsTr("Spacing") - tooltip: qsTr("Spacing between internal elements of the control.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.spacing - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Wheel") - tooltip: qsTr("Whether control accepts wheel events.") - disabledState: !backendValues.wheelEnabled.isAvailable - } - SecondColumnLayout { - CheckBox { - text: backendValues.wheelEnabled.valueToString - backendValue: backendValues.wheelEnabled - Layout.fillWidth: true - enabled: backendValue.isAvailable - } - } - } -} diff --git a/src/quickcontrols2/designer/ControlSpecifics.qml b/src/quickcontrols2/designer/ControlSpecifics.qml deleted file mode 100644 index 3937437b..00000000 --- a/src/quickcontrols2/designer/ControlSpecifics.qml +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/DelayButtonSpecifics.qml b/src/quickcontrols2/designer/DelayButtonSpecifics.qml deleted file mode 100644 index 024fe589..00000000 --- a/src/quickcontrols2/designer/DelayButtonSpecifics.qml +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("DelayButton") - - SectionLayout { - Label { - text: qsTr("Delay") - tooltip: qsTr("The delay in milliseconds.") - } - SecondColumnLayout { - SpinBox { - minimumValue: 0 - maximumValue: 9999999 - decimals: 0 - stepSize: 1 - backendValue: backendValues.delay - Layout.fillWidth: true - } - } - } - } - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/DialSpecifics.qml b/src/quickcontrols2/designer/DialSpecifics.qml deleted file mode 100644 index 026cb2b1..00000000 --- a/src/quickcontrols2/designer/DialSpecifics.qml +++ /dev/null @@ -1,172 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("Dial") - - SectionLayout { - Label { - text: qsTr("Value") - tooltip: qsTr("The current value of the dial.") - } - SecondColumnLayout { - SpinBox { - minimumValue: Math.min(backendValues.from.value, backendValues.to.value) - maximumValue: Math.max(backendValues.from.value, backendValues.to.value) - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.value - Layout.fillWidth: true - } - } - - Label { - text: qsTr("From") - tooltip: qsTr("The starting value of the dial range.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.from - Layout.fillWidth: true - } - } - - Label { - text: qsTr("To") - tooltip: qsTr("The ending value of the dial range.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.to - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Step Size") - tooltip: qsTr("The step size of the dial.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.stepSize - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Snap Mode") - tooltip: qsTr("The snap mode of the dial.") - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.snapMode - model: [ "NoSnap", "SnapOnRelease", "SnapAlways" ] - scope: "Dial" - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Live") - tooltip: qsTr("Whether the dial provides live value updates.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.live.valueToString - backendValue: backendValues.live - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Input Mode") - tooltip: qsTr("How the dial tracks movement.") - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.inputMode - model: [ "Circular", "Horizontal", "Vertical" ] - scope: "Dial" - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Wrap") - tooltip: qsTr("Whether the dial wraps when dragged.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.wrap.valueToString - backendValue: backendValues.wrap - Layout.fillWidth: true - } - } - } - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/FrameSpecifics.qml b/src/quickcontrols2/designer/FrameSpecifics.qml deleted file mode 100644 index 36739956..00000000 --- a/src/quickcontrols2/designer/FrameSpecifics.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - PaneSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/GroupBoxSpecifics.qml b/src/quickcontrols2/designer/GroupBoxSpecifics.qml deleted file mode 100644 index f808b001..00000000 --- a/src/quickcontrols2/designer/GroupBoxSpecifics.qml +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("GroupBox") - - SectionLayout { - Label { - text: qsTr("Title") - tooltip: qsTr("The title of the group box.") - } - SecondColumnLayout { - LineEdit { - backendValue: backendValues.title - Layout.fillWidth: true - } - } - } - } - - PaneSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/InsetSection.qml b/src/quickcontrols2/designer/InsetSection.qml deleted file mode 100644 index 45a4df4f..00000000 --- a/src/quickcontrols2/designer/InsetSection.qml +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Section { - caption: qsTr("Inset") - - SectionLayout { - Label { - text: qsTr("Vertical") - } - SecondColumnLayout { - Label { - text: qsTr("Top") - tooltip: qsTr("Top inset for the background.") - width: 42 - } - SpinBox { - maximumValue: 10000 - minimumValue: -10000 - realDragRange: 5000 - decimals: 0 - backendValue: backendValues.topInset - Layout.fillWidth: true - } - Item { - width: 4 - height: 4 - } - - Label { - text: qsTr("Bottom") - tooltip: qsTr("Bottom inset for the background.") - width: 42 - } - SpinBox { - maximumValue: 10000 - minimumValue: -10000 - realDragRange: 5000 - decimals: 0 - backendValue: backendValues.bottomInset - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Horizontal") - } - SecondColumnLayout { - Label { - text: qsTr("Left") - tooltip: qsTr("Left inset for the background.") - width: 42 - } - SpinBox { - maximumValue: 10000 - minimumValue: -10000 - realDragRange: 5000 - decimals: 0 - backendValue: backendValues.leftInset - Layout.fillWidth: true - } - Item { - width: 4 - height: 4 - } - - Label { - text: qsTr("Right") - tooltip: qsTr("Right inset for the background.") - width: 42 - } - SpinBox { - maximumValue: 10000 - minimumValue: -10000 - realDragRange: 5000 - decimals: 0 - backendValue: backendValues.rightInset - Layout.fillWidth: true - } - } - } -} diff --git a/src/quickcontrols2/designer/ItemDelegateSection.qml b/src/quickcontrols2/designer/ItemDelegateSection.qml deleted file mode 100644 index 448a20d9..00000000 --- a/src/quickcontrols2/designer/ItemDelegateSection.qml +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Section { - id: section - caption: qsTr("ItemDelegate") - - SectionLayout { - Label { - text: qsTr("Highlighted") - tooltip: qsTr("Whether the delegate is highlighted.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.highlighted.valueToString - backendValue: backendValues.highlighted - Layout.fillWidth: true - } - } - } -} diff --git a/src/quickcontrols2/designer/ItemDelegateSpecifics.qml b/src/quickcontrols2/designer/ItemDelegateSpecifics.qml deleted file mode 100644 index 1757521d..00000000 --- a/src/quickcontrols2/designer/ItemDelegateSpecifics.qml +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - ItemDelegateSection { - width: parent.width - } - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/LabelSpecifics.qml b/src/quickcontrols2/designer/LabelSpecifics.qml deleted file mode 100644 index 569b44c8..00000000 --- a/src/quickcontrols2/designer/LabelSpecifics.qml +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - StandardTextSection { - width: parent.width - showIsWrapping: true - showFormatProperty: true - showVerticalAlignment: true - } - - Section { - anchors.left: parent.left - anchors.right: parent.right - caption: qsTr("Text Color") - - ColorEditor { - caption: qsTr("Text Color") - backendValue: backendValues.color - supportGradient: false - } - } - - Section { - anchors.left: parent.left - anchors.right: parent.right - caption: qsTr("Style Color") - - ColorEditor { - caption: qsTr("Style Color") - backendValue: backendValues.styleColor - supportGradient: false - } - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } - - InsetSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/PaddingSection.qml b/src/quickcontrols2/designer/PaddingSection.qml deleted file mode 100644 index 325c5698..00000000 --- a/src/quickcontrols2/designer/PaddingSection.qml +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Section { - caption: qsTr("Padding") - - SectionLayout { - Label { - text: qsTr("Top") - tooltip: qsTr("Padding between the content and the top edge of the control.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.topPadding - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Left") - tooltip: qsTr("Padding between the content and the left edge of the control.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.leftPadding - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Right") - tooltip: qsTr("Padding between the content and the right edge of the control.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.rightPadding - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Bottom") - tooltip: qsTr("Padding between the content and the bottom edge of the control.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.bottomPadding - Layout.fillWidth: true - } - } - } -} diff --git a/src/quickcontrols2/designer/PageIndicatorSpecifics.qml b/src/quickcontrols2/designer/PageIndicatorSpecifics.qml deleted file mode 100644 index c73652e9..00000000 --- a/src/quickcontrols2/designer/PageIndicatorSpecifics.qml +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("PageIndicator") - - SectionLayout { - Label { - text: qsTr("Count") - tooltip: qsTr("The number of pages.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.count - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Current") - tooltip: qsTr("The index of the current page.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.currentIndex - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Interactive") - tooltip: qsTr("Whether the control is interactive.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.interactive.valueToString - backendValue: backendValues.interactive - Layout.fillWidth: true - } - } - } - } - - ControlSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/PageSpecifics.qml b/src/quickcontrols2/designer/PageSpecifics.qml deleted file mode 100644 index 965ed655..00000000 --- a/src/quickcontrols2/designer/PageSpecifics.qml +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("Page") - - SectionLayout { - Label { - text: qsTr("Title") - tooltip: qsTr("Title of the page.") - } - SecondColumnLayout { - LineEdit { - backendValue: backendValues.title - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Content Width") - tooltip: qsTr("Content height used for calculating the total implicit width.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.contentWidth - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Content Height") - tooltip: qsTr("Content height used for calculating the total implicit height.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.contentHeight - Layout.fillWidth: true - } - } - } - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/PaneSection.qml b/src/quickcontrols2/designer/PaneSection.qml deleted file mode 100644 index 9dcc2097..00000000 --- a/src/quickcontrols2/designer/PaneSection.qml +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Section { - caption: qsTr("Pane") - - SectionLayout { - Label { - text: qsTr("Content Width") - tooltip: qsTr("Content height used for calculating the total implicit width.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.contentWidth - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Content Height") - tooltip: qsTr("Content height used for calculating the total implicit height.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.contentHeight - Layout.fillWidth: true - } - } - } -} diff --git a/src/quickcontrols2/designer/PaneSpecifics.qml b/src/quickcontrols2/designer/PaneSpecifics.qml deleted file mode 100644 index 36739956..00000000 --- a/src/quickcontrols2/designer/PaneSpecifics.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - PaneSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/ProgressBarSpecifics.qml b/src/quickcontrols2/designer/ProgressBarSpecifics.qml deleted file mode 100644 index 14f87925..00000000 --- a/src/quickcontrols2/designer/ProgressBarSpecifics.qml +++ /dev/null @@ -1,121 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("ProgressBar") - - SectionLayout { - Label { - text: qsTr("Indeterminate") - tooltip: qsTr("Whether the progress is indeterminate.") - disabledState: !backendValues.indeterminate.isAvailable - } - SecondColumnLayout { - CheckBox { - text: backendValues.indeterminate.valueToString - backendValue: backendValues.indeterminate - Layout.fillWidth: true - enabled: backendValue.isAvailable - } - } - - Label { - text: qsTr("Value") - tooltip: qsTr("The current value of the progress.") - } - SecondColumnLayout { - SpinBox { - minimumValue: Math.min(backendValues.from.value, backendValues.to.value) - maximumValue: Math.max(backendValues.from.value, backendValues.to.value) - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.value - Layout.fillWidth: true - } - } - - Label { - text: qsTr("From") - tooltip: qsTr("The starting value for the progress.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.from - Layout.fillWidth: true - } - } - - Label { - text: qsTr("To") - tooltip: qsTr("The ending value for the progress.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.to - Layout.fillWidth: true - } - } - } - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/RadioButtonSpecifics.qml b/src/quickcontrols2/designer/RadioButtonSpecifics.qml deleted file mode 100644 index df0af7e7..00000000 --- a/src/quickcontrols2/designer/RadioButtonSpecifics.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/RadioDelegateSpecifics.qml b/src/quickcontrols2/designer/RadioDelegateSpecifics.qml deleted file mode 100644 index 1757521d..00000000 --- a/src/quickcontrols2/designer/RadioDelegateSpecifics.qml +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - ItemDelegateSection { - width: parent.width - } - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/RangeSliderSpecifics.qml b/src/quickcontrols2/designer/RangeSliderSpecifics.qml deleted file mode 100644 index 577033ed..00000000 --- a/src/quickcontrols2/designer/RangeSliderSpecifics.qml +++ /dev/null @@ -1,189 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("RangeSlider") - - SectionLayout { - Label { - text: qsTr("First Value") - tooltip: qsTr("The value of the first range slider handle.") - } - SecondColumnLayout { - SpinBox { - minimumValue: Math.min(backendValues.from.value, backendValues.to.value) - maximumValue: Math.max(backendValues.from.value, backendValues.to.value) - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.first_value - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Second Value") - tooltip: qsTr("The value of the second range slider handle.") - } - SecondColumnLayout { - SpinBox { - minimumValue: Math.min(backendValues.from.value, backendValues.to.value) - maximumValue: Math.max(backendValues.from.value, backendValues.to.value) - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.second_value - Layout.fillWidth: true - } - } - - Label { - text: qsTr("From") - tooltip: qsTr("The starting value of the range slider range.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.from - Layout.fillWidth: true - } - } - - Label { - text: qsTr("To") - tooltip: qsTr("The ending value of the range slider range.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.to - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Step Size") - tooltip: qsTr("The step size of the range slider.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.stepSize - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Snap Mode") - tooltip: qsTr("The snap mode of the range slider.") - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.snapMode - model: [ "NoSnap", "SnapOnRelease", "SnapAlways" ] - scope: "RangeSlider" - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Orientation") - tooltip: qsTr("The orientation of the range slider.") - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.orientation - model: [ "Horizontal", "Vertical" ] - scope: "Qt" - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Live") - tooltip: qsTr("Whether the range slider provides live value updates.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.live.valueToString - backendValue: backendValues.live - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Touch drag threshold") - tooltip: qsTr("The threshold (in logical pixels) at which a touch drag event will be initiated.") - } - SecondColumnLayout { - SpinBox { - minimumValue: 0 - maximumValue: 10000 - decimals: 0 - backendValue: backendValues.touchDragThreshold - Layout.fillWidth: true - } - } - } - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/RoundButtonSpecifics.qml b/src/quickcontrols2/designer/RoundButtonSpecifics.qml deleted file mode 100644 index 58d34689..00000000 --- a/src/quickcontrols2/designer/RoundButtonSpecifics.qml +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("RoundButton") - - SectionLayout { - Label { - text: qsTr("Radius") - tooltip: qsTr("Radius of the button.") - } - SecondColumnLayout { - SpinBox { - minimumValue: 0 - maximumValue: 10000 - decimals: 0 - backendValue: backendValues.radius - Layout.fillWidth: true - } - } - } - } - - ButtonSection { - width: parent.width - } - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/ScrollViewSpecifics.qml b/src/quickcontrols2/designer/ScrollViewSpecifics.qml deleted file mode 100644 index ae525b74..00000000 --- a/src/quickcontrols2/designer/ScrollViewSpecifics.qml +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("ScrollView") - - SectionLayout { - Label { - text: qsTr("Content Width") - tooltip: qsTr("Content height used for calculating the total implicit width.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.contentWidth - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Content Height") - tooltip: qsTr("Content height used for calculating the total implicit height.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.contentHeight - Layout.fillWidth: true - } - } - } - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/SliderSpecifics.qml b/src/quickcontrols2/designer/SliderSpecifics.qml deleted file mode 100644 index 3af20540..00000000 --- a/src/quickcontrols2/designer/SliderSpecifics.qml +++ /dev/null @@ -1,180 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("Slider") - - SectionLayout { - Label { - text: qsTr("Value") - tooltip: qsTr("The current value of the slider.") - } - SecondColumnLayout { - SpinBox { - minimumValue: Math.min(backendValues.from.value, backendValues.to.value) - maximumValue: Math.max(backendValues.from.value, backendValues.to.value) - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.value - Layout.fillWidth: true - } - } - - Label { - text: qsTr("From") - tooltip: qsTr("The starting value of the slider range.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.from - Layout.fillWidth: true - } - } - - Label { - text: qsTr("To") - tooltip: qsTr("The ending value of the slider range.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.to - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Step Size") - tooltip: qsTr("The step size of the slider.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - stepSize: 0.1 - backendValue: backendValues.stepSize - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Snap Mode") - tooltip: qsTr("The snap mode of the slider.") - disabledState: !backendValues.snapMode.isAvailable - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.snapMode - model: [ "NoSnap", "SnapOnRelease", "SnapAlways" ] - scope: "Slider" - Layout.fillWidth: true - enabled: backendValue.isAvailable - } - } - - Label { - text: qsTr("Orientation") - tooltip: qsTr("The orientation of the slider.") - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.orientation - model: [ "Horizontal", "Vertical" ] - scope: "Qt" - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Live") - tooltip: qsTr("Whether the slider provides live value updates.") - disabledState: !backendValues.live.isAvailable - } - SecondColumnLayout { - CheckBox { - text: backendValues.live.valueToString - backendValue: backendValues.live - Layout.fillWidth: true - enabled: backendValue.isAvailable - } - } - - Label { - text: qsTr("Touch drag threshold") - tooltip: qsTr("The threshold (in logical pixels) at which a touch drag event will be initiated.") - disabledState: !backendValues.touchDragThreshold.isAvailable - } - SecondColumnLayout { - SpinBox { - minimumValue: 0 - maximumValue: 10000 - decimals: 0 - backendValue: backendValues.touchDragThreshold - Layout.fillWidth: true - enabled: backendValue.isAvailable - } - } - } - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/SpinBoxSpecifics.qml b/src/quickcontrols2/designer/SpinBoxSpecifics.qml deleted file mode 100644 index 9c07e8c5..00000000 --- a/src/quickcontrols2/designer/SpinBoxSpecifics.qml +++ /dev/null @@ -1,142 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("SpinBox") - - SectionLayout { - Label { - text: qsTr("Value") - tooltip: qsTr("The current value of the spinbox.") - } - SecondColumnLayout { - SpinBox { - minimumValue: Math.min(backendValues.from.value, backendValues.to.value) - maximumValue: Math.max(backendValues.from.value, backendValues.to.value) - decimals: 2 - backendValue: backendValues.value - Layout.fillWidth: true - } - } - - Label { - text: qsTr("From") - tooltip: qsTr("The starting value of the spinbox range.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - backendValue: backendValues.from - Layout.fillWidth: true - } - } - - Label { - text: qsTr("To") - tooltip: qsTr("The ending value of the spinbox range.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - backendValue: backendValues.to - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Step Size") - tooltip: qsTr("The step size of the spinbox.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 2 - backendValue: backendValues.stepSize - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Editable") - tooltip: qsTr("Whether the spinbox is editable.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.editable.valueToString - backendValue: backendValues.editable - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Wrap") - tooltip: qsTr("Whether the spinbox wraps.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.wrap.valueToString - backendValue: backendValues.wrap - Layout.fillWidth: true - } - } - } - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/StackViewSpecifics.qml b/src/quickcontrols2/designer/StackViewSpecifics.qml deleted file mode 100644 index 3937437b..00000000 --- a/src/quickcontrols2/designer/StackViewSpecifics.qml +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/SwipeDelegateSpecifics.qml b/src/quickcontrols2/designer/SwipeDelegateSpecifics.qml deleted file mode 100644 index 1757521d..00000000 --- a/src/quickcontrols2/designer/SwipeDelegateSpecifics.qml +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - ItemDelegateSection { - width: parent.width - } - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/SwipeViewSpecifics.qml b/src/quickcontrols2/designer/SwipeViewSpecifics.qml deleted file mode 100644 index a28a2917..00000000 --- a/src/quickcontrols2/designer/SwipeViewSpecifics.qml +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("SwipeView") - - SectionLayout { - Label { - text: qsTr("Interactive") - tooltip: qsTr("Whether the view is interactive.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.interactive.valueToString - backendValue: backendValues.interactive - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Orientation") - tooltip: qsTr("Orientation of the view.") - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.orientation - model: [ "Horizontal", "Vertical" ] - scope: "Qt" - Layout.fillWidth: true - } - } - } - } - - ContainerSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/SwitchDelegateSpecifics.qml b/src/quickcontrols2/designer/SwitchDelegateSpecifics.qml deleted file mode 100644 index 4236de67..00000000 --- a/src/quickcontrols2/designer/SwitchDelegateSpecifics.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - ItemDelegateSection { - width: parent.width - } - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/SwitchSpecifics.qml b/src/quickcontrols2/designer/SwitchSpecifics.qml deleted file mode 100644 index df0af7e7..00000000 --- a/src/quickcontrols2/designer/SwitchSpecifics.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/TabBarSpecifics.qml b/src/quickcontrols2/designer/TabBarSpecifics.qml deleted file mode 100644 index 6f02cdaa..00000000 --- a/src/quickcontrols2/designer/TabBarSpecifics.qml +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("TabBar") - - SectionLayout { - Label { - text: qsTr("Position") - tooltip: qsTr("Position of the tabbar.") - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.position - model: [ "Header", "Footer" ] - scope: "TabBar" - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Content Width") - tooltip: qsTr("Content height used for calculating the total implicit width.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.contentWidth - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Content Height") - tooltip: qsTr("Content height used for calculating the total implicit height.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.contentHeight - Layout.fillWidth: true - } - } - } - } - - ContainerSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/TabButtonSpecifics.qml b/src/quickcontrols2/designer/TabButtonSpecifics.qml deleted file mode 100644 index df0af7e7..00000000 --- a/src/quickcontrols2/designer/TabButtonSpecifics.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/TextAreaSpecifics.qml b/src/quickcontrols2/designer/TextAreaSpecifics.qml deleted file mode 100644 index 785d7a50..00000000 --- a/src/quickcontrols2/designer/TextAreaSpecifics.qml +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("TextArea") - - SectionLayout { - Label { - text: qsTr("Placeholder") - tooltip: qsTr("Placeholder text displayed when the editor is empty.") - } - SecondColumnLayout { - LineEdit { - backendValue: backendValues.placeholderText - Layout.fillWidth: true - } - - } - - Label { - text: qsTr("Hover") - tooltip: qsTr("Whether text area accepts hover events.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.hoverEnabled.valueToString - backendValue: backendValues.hoverEnabled - Layout.fillWidth: true - } - } - } - } - - Section { - width: parent.width - caption: qsTr("Placeholder Text Color") - - ColorEditor { - caption: qsTr("Placeholder Text Color") - backendValue: backendValues.placeholderTextColor - supportGradient: false - } - } - - StandardTextSection { - width: parent.width - showIsWrapping: true - showFormatProperty: true - showVerticalAlignment: true - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } - - InsetSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/TextFieldSpecifics.qml b/src/quickcontrols2/designer/TextFieldSpecifics.qml deleted file mode 100644 index 33a90f2a..00000000 --- a/src/quickcontrols2/designer/TextFieldSpecifics.qml +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("TextField") - - SectionLayout { - Label { - text: qsTr("Placeholder") - tooltip: qsTr("Placeholder text displayed when the editor is empty.") - } - SecondColumnLayout { - LineEdit { - backendValue: backendValues.placeholderText - Layout.fillWidth: true - } - - } - - Label { - text: qsTr("Hover") - tooltip: qsTr("Whether text field accepts hover events.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.hoverEnabled.valueToString - backendValue: backendValues.hoverEnabled - Layout.fillWidth: true - } - } - } - } - - Section { - width: parent.width - caption: qsTr("Placeholder Text Color") - - ColorEditor { - caption: qsTr("Placeholder Text Color") - backendValue: backendValues.placeholderTextColor - supportGradient: false - } - } - - StandardTextSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } - - InsetSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/ToolBarSpecifics.qml b/src/quickcontrols2/designer/ToolBarSpecifics.qml deleted file mode 100644 index 2b1b17d2..00000000 --- a/src/quickcontrols2/designer/ToolBarSpecifics.qml +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("ToolBar") - - SectionLayout { - Label { - text: qsTr("Position") - tooltip: qsTr("Position of the toolbar.") - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.position - model: [ "Header", "Footer" ] - scope: "ToolBar" - Layout.fillWidth: true - } - } - } - } - - PaneSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/ToolButtonSpecifics.qml b/src/quickcontrols2/designer/ToolButtonSpecifics.qml deleted file mode 100644 index 5a46e72a..00000000 --- a/src/quickcontrols2/designer/ToolButtonSpecifics.qml +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - ButtonSection { - width: parent.width - } - - AbstractButtonSection { - width: parent.width - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/ToolSeparatorSpecifics.qml b/src/quickcontrols2/designer/ToolSeparatorSpecifics.qml deleted file mode 100644 index a62147ec..00000000 --- a/src/quickcontrols2/designer/ToolSeparatorSpecifics.qml +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("ToolSeparator") - - SectionLayout { - Label { - text: qsTr("Orientation") - tooltip: qsTr("The orientation of the separator.") - } - SecondColumnLayout { - ComboBox { - backendValue: backendValues.orientation - model: [ "Horizontal", "Vertical" ] - scope: "Qt" - Layout.fillWidth: true - } - } - } - } - - ControlSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/TumblerSpecifics.qml b/src/quickcontrols2/designer/TumblerSpecifics.qml deleted file mode 100644 index 25fb9275..00000000 --- a/src/quickcontrols2/designer/TumblerSpecifics.qml +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import HelperWidgets -import QtQuick.Layouts - -Column { - width: parent.width - - Section { - width: parent.width - caption: qsTr("Tumbler") - - SectionLayout { - Label { - text: qsTr("Visible Count") - tooltip: qsTr("The count of visible items.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.visibleItemCount - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Current") - tooltip: qsTr("The index of the current item.") - } - SecondColumnLayout { - SpinBox { - maximumValue: 9999999 - minimumValue: -9999999 - decimals: 0 - backendValue: backendValues.currentIndex - Layout.fillWidth: true - } - } - - Label { - text: qsTr("Wrap") - tooltip: qsTr("Whether the tumbler wrap.") - } - SecondColumnLayout { - CheckBox { - text: backendValues.wrap.valueToString - backendValue: backendValues.wrap - Layout.fillWidth: true - } - } - } - } - - ControlSection { - width: parent.width - } - - FontSection { - width: parent.width - } - - PaddingSection { - width: parent.width - } -} diff --git a/src/quickcontrols2/designer/designer.pri b/src/quickcontrols2/designer/designer.pri deleted file mode 100644 index 6692b203..00000000 --- a/src/quickcontrols2/designer/designer.pri +++ /dev/null @@ -1,52 +0,0 @@ -AUX_QML_FILES += \ - $$PWD/qtquickcontrols2.metainfo - -AUX_QML_FILES += \ - $$PWD/AbstractButtonSection.qml \ - $$PWD/BusyIndicatorSpecifics.qml \ - $$PWD/ButtonSection.qml \ - $$PWD/ButtonSpecifics.qml \ - $$PWD/CheckBoxSpecifics.qml \ - $$PWD/CheckDelegateSpecifics.qml \ - $$PWD/CheckSection.qml \ - $$PWD/ComboBoxSpecifics.qml \ - $$PWD/ContainerSection.qml \ - $$PWD/ControlSection.qml \ - $$PWD/ControlSpecifics.qml \ - $$PWD/DelayButtonSpecifics.qml \ - $$PWD/DialSpecifics.qml \ - $$PWD/FrameSpecifics.qml \ - $$PWD/GroupBoxSpecifics.qml \ - $$PWD/InsetSection.qml \ - $$PWD/ItemDelegateSection.qml \ - $$PWD/ItemDelegateSpecifics.qml \ - $$PWD/LabelSpecifics.qml \ - $$PWD/PaddingSection.qml \ - $$PWD/PageSpecifics.qml \ - $$PWD/PageIndicatorSpecifics.qml \ - $$PWD/PaneSection.qml \ - $$PWD/PaneSpecifics.qml \ - $$PWD/ProgressBarSpecifics.qml \ - $$PWD/RadioButtonSpecifics.qml \ - $$PWD/RadioDelegateSpecifics.qml \ - $$PWD/RangeSliderSpecifics.qml \ - $$PWD/RoundButtonSpecifics.qml \ - $$PWD/ScrollViewSpecifics.qml \ - $$PWD/SliderSpecifics.qml \ - $$PWD/SpinBoxSpecifics.qml \ - $$PWD/StackViewSpecifics.qml \ - $$PWD/SwipeDelegateSpecifics.qml \ - $$PWD/SwipeViewSpecifics.qml \ - $$PWD/SwitchSpecifics.qml \ - $$PWD/SwitchDelegateSpecifics.qml \ - $$PWD/TabBarSpecifics.qml \ - $$PWD/TabButtonSpecifics.qml \ - $$PWD/TextAreaSpecifics.qml \ - $$PWD/TextFieldSpecifics.qml \ - $$PWD/ToolBarSpecifics.qml \ - $$PWD/ToolButtonSpecifics.qml \ - $$PWD/ToolSeparatorSpecifics.qml \ - $$PWD/TumblerSpecifics.qml - -AUX_QML_FILES += \ - $$files($$PWD/images/*.png) diff --git a/src/quickcontrols2/designer/images/busyindicator-icon.png b/src/quickcontrols2/designer/images/busyindicator-icon.png Binary files differdeleted file mode 100644 index 666d1ed9..00000000 --- a/src/quickcontrols2/designer/images/busyindicator-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/busyindicator-icon16.png b/src/quickcontrols2/designer/images/busyindicator-icon16.png Binary files differdeleted file mode 100644 index 5aa57d7f..00000000 --- a/src/quickcontrols2/designer/images/busyindicator-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index bb2278ff..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/button-icon.png b/src/quickcontrols2/designer/images/button-icon.png Binary files differdeleted file mode 100644 index c44909f6..00000000 --- a/src/quickcontrols2/designer/images/button-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/button-icon16.png b/src/quickcontrols2/designer/images/button-icon16.png Binary files differdeleted file mode 100644 index 5c921deb..00000000 --- a/src/quickcontrols2/designer/images/button-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index f90a1ba7..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/checkbox-icon.png b/src/quickcontrols2/designer/images/checkbox-icon.png Binary files differdeleted file mode 100644 index ee669b3a..00000000 --- a/src/quickcontrols2/designer/images/checkbox-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/checkbox-icon16.png b/src/quickcontrols2/designer/images/checkbox-icon16.png Binary files differdeleted file mode 100644 index 8d89eab8..00000000 --- a/src/quickcontrols2/designer/images/checkbox-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 51c5601d..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/combobox-icon.png b/src/quickcontrols2/designer/images/combobox-icon.png Binary files differdeleted file mode 100644 index 2d31b17c..00000000 --- a/src/quickcontrols2/designer/images/combobox-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/combobox-icon16.png b/src/quickcontrols2/designer/images/combobox-icon16.png Binary files differdeleted file mode 100644 index 15fc3505..00000000 --- a/src/quickcontrols2/designer/images/combobox-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 5f823905..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/delaybutton-icon.png b/src/quickcontrols2/designer/images/delaybutton-icon.png Binary files differdeleted file mode 100644 index 5a55bd9f..00000000 --- a/src/quickcontrols2/designer/images/delaybutton-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/delaybutton-icon16.png b/src/quickcontrols2/designer/images/delaybutton-icon16.png Binary files differdeleted file mode 100644 index cd21394e..00000000 --- a/src/quickcontrols2/designer/images/delaybutton-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 7beee2fa..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/dial-icon.png b/src/quickcontrols2/designer/images/dial-icon.png Binary files differdeleted file mode 100644 index b3b63e35..00000000 --- a/src/quickcontrols2/designer/images/dial-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/dial-icon16.png b/src/quickcontrols2/designer/images/dial-icon16.png Binary files differdeleted file mode 100644 index 8d8c7c09..00000000 --- a/src/quickcontrols2/designer/images/dial-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 22547a16..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/frame-icon.png b/src/quickcontrols2/designer/images/frame-icon.png Binary files differdeleted file mode 100644 index 32abc8bf..00000000 --- a/src/quickcontrols2/designer/images/frame-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/frame-icon16.png b/src/quickcontrols2/designer/images/frame-icon16.png Binary files differdeleted file mode 100644 index e5b65ad5..00000000 --- a/src/quickcontrols2/designer/images/frame-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 8b876f38..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/groupbox-icon.png b/src/quickcontrols2/designer/images/groupbox-icon.png Binary files differdeleted file mode 100644 index 5542ecf8..00000000 --- a/src/quickcontrols2/designer/images/groupbox-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/groupbox-icon16.png b/src/quickcontrols2/designer/images/groupbox-icon16.png Binary files differdeleted file mode 100644 index 9cf43248..00000000 --- a/src/quickcontrols2/designer/images/groupbox-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 80dab3c7..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/itemdelegate-icon.png b/src/quickcontrols2/designer/images/itemdelegate-icon.png Binary files differdeleted file mode 100644 index 822cf3e7..00000000 --- a/src/quickcontrols2/designer/images/itemdelegate-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/itemdelegate-icon16.png b/src/quickcontrols2/designer/images/itemdelegate-icon16.png Binary files differdeleted file mode 100644 index b3ed007a..00000000 --- a/src/quickcontrols2/designer/images/itemdelegate-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index cb81308f..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/label-icon.png b/src/quickcontrols2/designer/images/label-icon.png Binary files differdeleted file mode 100644 index 788bef07..00000000 --- a/src/quickcontrols2/designer/images/label-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/label-icon16.png b/src/quickcontrols2/designer/images/label-icon16.png Binary files differdeleted file mode 100644 index b68d3845..00000000 --- a/src/quickcontrols2/designer/images/label-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 7001413d..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/page-icon.png b/src/quickcontrols2/designer/images/page-icon.png Binary files differdeleted file mode 100644 index b5ac87e8..00000000 --- a/src/quickcontrols2/designer/images/page-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/page-icon16.png b/src/quickcontrols2/designer/images/page-icon16.png Binary files differdeleted file mode 100644 index bc6810b6..00000000 --- a/src/quickcontrols2/designer/images/page-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 23db032f..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/pageindicator-icon.png b/src/quickcontrols2/designer/images/pageindicator-icon.png Binary files differdeleted file mode 100644 index edb6b377..00000000 --- a/src/quickcontrols2/designer/images/pageindicator-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/pageindicator-icon16.png b/src/quickcontrols2/designer/images/pageindicator-icon16.png Binary files differdeleted file mode 100644 index 0fb89675..00000000 --- a/src/quickcontrols2/designer/images/pageindicator-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 7be0ee81..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/pane-icon.png b/src/quickcontrols2/designer/images/pane-icon.png Binary files differdeleted file mode 100644 index 62ebe487..00000000 --- a/src/quickcontrols2/designer/images/pane-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/pane-icon16.png b/src/quickcontrols2/designer/images/pane-icon16.png Binary files differdeleted file mode 100644 index 2b804844..00000000 --- a/src/quickcontrols2/designer/images/pane-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 55bb116a..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/progressbar-icon.png b/src/quickcontrols2/designer/images/progressbar-icon.png Binary files differdeleted file mode 100644 index a023f73c..00000000 --- a/src/quickcontrols2/designer/images/progressbar-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/progressbar-icon16.png b/src/quickcontrols2/designer/images/progressbar-icon16.png Binary files differdeleted file mode 100644 index 6fede21d..00000000 --- a/src/quickcontrols2/designer/images/progressbar-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 00694003..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/radiobutton-icon.png b/src/quickcontrols2/designer/images/radiobutton-icon.png Binary files differdeleted file mode 100644 index d38170e2..00000000 --- a/src/quickcontrols2/designer/images/radiobutton-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/radiobutton-icon16.png b/src/quickcontrols2/designer/images/radiobutton-icon16.png Binary files differdeleted file mode 100644 index 07b46a8a..00000000 --- a/src/quickcontrols2/designer/images/radiobutton-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 4bbddda4..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/rangeslider-icon.png b/src/quickcontrols2/designer/images/rangeslider-icon.png Binary files differdeleted file mode 100644 index 1c4c7b29..00000000 --- a/src/quickcontrols2/designer/images/rangeslider-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/rangeslider-icon16.png b/src/quickcontrols2/designer/images/rangeslider-icon16.png Binary files differdeleted file mode 100644 index 3be4624d..00000000 --- a/src/quickcontrols2/designer/images/rangeslider-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index aee69b33..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/roundbutton-icon.png b/src/quickcontrols2/designer/images/roundbutton-icon.png Binary files differdeleted file mode 100644 index d4b470dc..00000000 --- a/src/quickcontrols2/designer/images/roundbutton-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/roundbutton-icon16.png b/src/quickcontrols2/designer/images/roundbutton-icon16.png Binary files differdeleted file mode 100644 index f6f36666..00000000 --- a/src/quickcontrols2/designer/images/roundbutton-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 4553e165..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/scrollview-icon.png b/src/quickcontrols2/designer/images/scrollview-icon.png Binary files differdeleted file mode 100644 index 5ef73ff1..00000000 --- a/src/quickcontrols2/designer/images/scrollview-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/scrollview-icon16.png b/src/quickcontrols2/designer/images/scrollview-icon16.png Binary files differdeleted file mode 100644 index f8ca7a36..00000000 --- a/src/quickcontrols2/designer/images/scrollview-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 0eb7f966..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/slider-icon.png b/src/quickcontrols2/designer/images/slider-icon.png Binary files differdeleted file mode 100644 index bd0a9729..00000000 --- a/src/quickcontrols2/designer/images/slider-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/slider-icon16.png b/src/quickcontrols2/designer/images/slider-icon16.png Binary files differdeleted file mode 100644 index a08622df..00000000 --- a/src/quickcontrols2/designer/images/slider-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 93842e4c..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/spinbox-icon.png b/src/quickcontrols2/designer/images/spinbox-icon.png Binary files differdeleted file mode 100644 index 37277c5e..00000000 --- a/src/quickcontrols2/designer/images/spinbox-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/spinbox-icon16.png b/src/quickcontrols2/designer/images/spinbox-icon16.png Binary files differdeleted file mode 100644 index f88711dd..00000000 --- a/src/quickcontrols2/designer/images/spinbox-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index b62a3bad..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/stackview-icon.png b/src/quickcontrols2/designer/images/stackview-icon.png Binary files differdeleted file mode 100644 index a6ced349..00000000 --- a/src/quickcontrols2/designer/images/stackview-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/stackview-icon16.png b/src/quickcontrols2/designer/images/stackview-icon16.png Binary files differdeleted file mode 100644 index 0f19d0ef..00000000 --- a/src/quickcontrols2/designer/images/stackview-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 9b5ef951..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/swipeview-icon.png b/src/quickcontrols2/designer/images/swipeview-icon.png Binary files differdeleted file mode 100644 index 031cb27c..00000000 --- a/src/quickcontrols2/designer/images/swipeview-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/swipeview-icon16.png b/src/quickcontrols2/designer/images/swipeview-icon16.png Binary files differdeleted file mode 100644 index 446c4696..00000000 --- a/src/quickcontrols2/designer/images/swipeview-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 0ccb978c..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/switch-icon.png b/src/quickcontrols2/designer/images/switch-icon.png Binary files differdeleted file mode 100644 index e0181592..00000000 --- a/src/quickcontrols2/designer/images/switch-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/switch-icon16.png b/src/quickcontrols2/designer/images/switch-icon16.png Binary files differdeleted file mode 100644 index 9abd2756..00000000 --- a/src/quickcontrols2/designer/images/switch-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 787f54ca..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/textarea-icon.png b/src/quickcontrols2/designer/images/textarea-icon.png Binary files differdeleted file mode 100644 index f1b2dc0f..00000000 --- a/src/quickcontrols2/designer/images/textarea-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/textarea-icon16.png b/src/quickcontrols2/designer/images/textarea-icon16.png Binary files differdeleted file mode 100644 index 4afc1fba..00000000 --- a/src/quickcontrols2/designer/images/textarea-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index c32ecc71..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/textfield-icon.png b/src/quickcontrols2/designer/images/textfield-icon.png Binary files differdeleted file mode 100644 index ba5537ac..00000000 --- a/src/quickcontrols2/designer/images/textfield-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/textfield-icon16.png b/src/quickcontrols2/designer/images/textfield-icon16.png Binary files differdeleted file mode 100644 index c4a62a65..00000000 --- a/src/quickcontrols2/designer/images/textfield-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index e05fd41b..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/toolbar-icon.png b/src/quickcontrols2/designer/images/toolbar-icon.png Binary files differdeleted file mode 100644 index 5cb5b2e1..00000000 --- a/src/quickcontrols2/designer/images/toolbar-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/toolbar-icon16.png b/src/quickcontrols2/designer/images/toolbar-icon16.png Binary files differdeleted file mode 100644 index 569373af..00000000 --- a/src/quickcontrols2/designer/images/toolbar-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index fd9e6cee..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/toolbutton-icon.png b/src/quickcontrols2/designer/images/toolbutton-icon.png Binary files differdeleted file mode 100644 index 3298f695..00000000 --- a/src/quickcontrols2/designer/images/toolbutton-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/toolbutton-icon16.png b/src/quickcontrols2/designer/images/toolbutton-icon16.png Binary files differdeleted file mode 100644 index 9ab7861c..00000000 --- a/src/quickcontrols2/designer/images/toolbutton-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index e5958cde..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/toolseparator-icon.png b/src/quickcontrols2/designer/images/toolseparator-icon.png Binary files differdeleted file mode 100644 index 5e99f06f..00000000 --- a/src/quickcontrols2/designer/images/toolseparator-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/toolseparator-icon16.png b/src/quickcontrols2/designer/images/toolseparator-icon16.png Binary files differdeleted file mode 100644 index 68f22c5d..00000000 --- a/src/quickcontrols2/designer/images/toolseparator-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 549c11c6..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/images/tumbler-icon.png b/src/quickcontrols2/designer/images/tumbler-icon.png Binary files differdeleted file mode 100644 index 98eb8232..00000000 --- a/src/quickcontrols2/designer/images/tumbler-icon.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/tumbler-icon16.png b/src/quickcontrols2/designer/images/tumbler-icon16.png Binary files differdeleted file mode 100644 index ff5f95cf..00000000 --- a/src/quickcontrols2/designer/images/tumbler-icon16.png +++ /dev/null diff --git a/src/quickcontrols2/designer/images/[email protected] b/src/quickcontrols2/designer/images/[email protected] Binary files differdeleted file mode 100644 index 236abf0c..00000000 --- a/src/quickcontrols2/designer/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/designer/qtquickcontrols2.metainfo b/src/quickcontrols2/designer/qtquickcontrols2.metainfo deleted file mode 100644 index d27f1b90..00000000 --- a/src/quickcontrols2/designer/qtquickcontrols2.metainfo +++ /dev/null @@ -1,522 +0,0 @@ -MetaInfo { - Type { - name: "QtQuick.Controls.BusyIndicator" - icon: "images/busyindicator-icon16.png" - - ItemLibraryEntry { - name: "Busy Indicator" - category: "Qt Quick - Controls 2" - libraryIcon: "images/busyindicator-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - } - } - - Type { - name: "QtQuick.Controls.Button" - icon: "images/button-icon16.png" - - ItemLibraryEntry { - name: "Button" - category: "Qt Quick - Controls 2" - libraryIcon: "images/button-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "text"; type: "binding"; value: "qsTr(\"Button\")" } - } - } - - Type { - name: "QtQuick.Controls.CheckBox" - icon: "images/checkbox-icon16.png" - - ItemLibraryEntry { - name: "Check Box" - category: "Qt Quick - Controls 2" - libraryIcon: "images/checkbox-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "text"; type: "binding"; value: "qsTr(\"Check Box\")" } - } - } - - Type { - name: "QtQuick.Controls.CheckDelegate" - icon: "images/checkbox-icon16.png" - - ItemLibraryEntry { - name: "Check Delegate" - category: "Qt Quick - Controls 2" - libraryIcon: "images/checkbox-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "text"; type: "binding"; value: "qsTr(\"Check Delegate\")" } - } - } - - Type { - name: "QtQuick.Controls.ComboBox" - icon: "images/combobox-icon16.png" - - ItemLibraryEntry { - name: "Combo Box" - category: "Qt Quick - Controls 2" - libraryIcon: "images/combobox-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - } - } - - Type { - name: "QtQuick.Controls.DelayButton" - icon: "images/button-icon16.png" - - ItemLibraryEntry { - name: "Delay Button" - category: "Qt Quick - Controls 2" - libraryIcon: "images/delaybutton-icon.png" - version: "2.2" - requiredImport: "QtQuick.Controls" - - Property { name: "text"; type: "binding"; value: "qsTr(\"Delay Button\")" } - } - } - - Type { - name: "QtQuick.Controls.Dial" - icon: "images/dial-icon16.png" - - ItemLibraryEntry { - name: "Dial" - category: "Qt Quick - Controls 2" - libraryIcon: "images/dial-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - } - } - - Type { - name: "QtQuick.Controls.Frame" - icon: "images/frame-icon16.png" - - ItemLibraryEntry { - name: "Frame" - category: "Qt Quick - Controls 2" - libraryIcon: "images/frame-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "width"; type: "int"; value: 200 } - Property { name: "height"; type: "int"; value: 200 } - } - } - - Type { - name: "QtQuick.Controls.GroupBox" - icon: "images/groupbox-icon16.png" - - ItemLibraryEntry { - name: "Group Box" - category: "Qt Quick - Controls 2" - libraryIcon: "images/groupbox-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "width"; type: "int"; value: 200 } - Property { name: "height"; type: "int"; value: 200 } - Property { name: "title"; type: "binding"; value: "qsTr(\"Group Box\")" } - } - } - - Type { - name: "QtQuick.Controls.ItemDelegate" - icon: "images/itemdelegate-icon16.png" - - ItemLibraryEntry { - name: "Item Delegate" - category: "Qt Quick - Controls 2" - libraryIcon: "images/itemdelegate-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "text"; type: "binding"; value: "qsTr(\"Item Delegate\")" } - } - } - - Type { - name: "QtQuick.Controls.Label" - icon: "images/label-icon16.png" - - ItemLibraryEntry { - name: "Label" - category: "Qt Quick - Controls 2" - libraryIcon: "images/label-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "text"; type: "binding"; value: "qsTr(\"Label\")" } - } - } - - Type { - name: "QtQuick.Controls.Page" - icon: "images/page-icon16.png" - - ItemLibraryEntry { - name: "Page" - category: "Qt Quick - Controls 2" - libraryIcon: "images/page-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "width"; type: "int"; value: 200 } - Property { name: "height"; type: "int"; value: 200 } - } - } - - Type { - name: "QtQuick.Controls.PageIndicator" - icon: "images/pageindicator-icon16.png" - - ItemLibraryEntry { - name: "Page Indicator" - category: "Qt Quick - Controls 2" - libraryIcon: "images/pageindicator-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "count"; type: "int"; value: 3 } - } - } - - Type { - name: "QtQuick.Controls.Pane" - icon: "images/pane-icon16.png" - - ItemLibraryEntry { - name: "Pane" - category: "Qt Quick - Controls 2" - libraryIcon: "images/pane-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "width"; type: "int"; value: 200 } - Property { name: "height"; type: "int"; value: 200 } - } - } - - Type { - name: "QtQuick.Controls.ProgressBar" - icon: "images/progressbar-icon16.png" - - ItemLibraryEntry { - name: "Progress Bar" - category: "Qt Quick - Controls 2" - libraryIcon: "images/progressbar-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "value"; type: "real"; value: 0.5 } - } - } - - Type { - name: "QtQuick.Controls.RadioButton" - icon: "images/radiobutton-icon16.png" - - ItemLibraryEntry { - name: "Radio Button" - category: "Qt Quick - Controls 2" - libraryIcon: "images/radiobutton-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "text"; type: "binding"; value: "qsTr(\"Radio Button\")" } - } - } - - Type { - name: "QtQuick.Controls.RadioDelegate" - icon: "images/radiobutton-icon16.png" - - ItemLibraryEntry { - name: "Radio Delegate" - category: "Qt Quick - Controls 2" - libraryIcon: "images/radiobutton-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "text"; type: "binding"; value: "qsTr(\"Radio Delegate\")" } - } - } - - Type { - name: "QtQuick.Controls.RangeSlider" - icon: "images/rangeslider-icon16.png" - - ItemLibraryEntry { - name: "Range Slider" - category: "Qt Quick - Controls 2" - libraryIcon: "images/rangeslider-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "first.value"; type: "real"; value: 0.25 } - Property { name: "second.value"; type: "real"; value: 0.75 } - } - } - - Type { - name: "QtQuick.Controls.RoundButton" - icon: "images/roundbutton-icon16.png" - - ItemLibraryEntry { - name: "Round Button" - category: "Qt Quick - Controls 2" - libraryIcon: "images/roundbutton-icon.png" - version: "2.1" - requiredImport: "QtQuick.Controls" - Property { name: "text"; type: "string"; value: "+" } - } - } - - Type { - name: "QtQuick.Controls.Slider" - icon: "images/slider-icon16.png" - - ItemLibraryEntry { - name: "Slider" - category: "Qt Quick - Controls 2" - libraryIcon: "images/slider-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "value"; type: "real"; value: 0.5 } - } - } - - Type { - name: "QtQuick.Controls.SpinBox" - icon: "images/spinbox-icon16.png" - - ItemLibraryEntry { - name: "Spin Box" - category: "Qt Quick - Controls 2" - libraryIcon: "images/spinbox-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - } - } - - Type { - name: "QtQuick.Controls.ScrollView" - icon: "images/scrollview-icon16.png" - - ItemLibraryEntry { - name: "Scroll View" - category: "Qt Quick - Controls 2" - libraryIcon: "images/scrollview-icon.png" - version: "2.2" - requiredImport: "QtQuick.Controls" - - Property { name: "width"; type: "int"; value: 200 } - Property { name: "height"; type: "int"; value: 200 } - } - } - - Type { - name: "QtQuick.Controls.StackView" - icon: "images/stackview-icon16.png" - - ItemLibraryEntry { - name: "Stack View" - category: "Qt Quick - Controls 2" - libraryIcon: "images/stackview-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "width"; type: "int"; value: 200 } - Property { name: "height"; type: "int"; value: 200 } - } - } - - Type { - name: "QtQuick.Controls.SwipeDelegate" - icon: "images/itemdelegate-icon16.png" - - ItemLibraryEntry { - name: "Swipe Delegate" - category: "Qt Quick - Controls 2" - libraryIcon: "images/itemdelegate-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "text"; type: "binding"; value: "qsTr(\"Swipe Delegate\")" } - } - } - - Type { - name: "QtQuick.Controls.SwipeView" - icon: "images/swipeview-icon16.png" - - ItemLibraryEntry { - name: "Swipe View" - category: "Qt Quick - Controls 2" - libraryIcon: "images/swipeview-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "width"; type: "int"; value: 200 } - Property { name: "height"; type: "int"; value: 200 } - } - } - - Type { - name: "QtQuick.Controls.Switch" - icon: "images/switch-icon16.png" - - ItemLibraryEntry { - name: "Switch" - category: "Qt Quick - Controls 2" - libraryIcon: "images/switch-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "text"; type: "binding"; value: "qsTr(\"Switch\")" } - } - } - - Type { - name: "QtQuick.Controls.SwitchDelegate" - icon: "images/switch-icon16.png" - - ItemLibraryEntry { - name: "Switch Delegate" - category: "Qt Quick - Controls 2" - libraryIcon: "images/switch-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "text"; type: "binding"; value: "qsTr(\"Switch Delegate\")" } - } - } - - Type { - name: "QtQuick.Controls.TabBar" - icon: "images/toolbar-icon16.png" - - ItemLibraryEntry { - name: "Tab Bar" - category: "Qt Quick - Controls 2" - libraryIcon: "images/toolbar-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - Property { name: "width"; type: "int"; value: 240 } - } - } - - Type { - name: "QtQuick.Controls.TabButton" - icon: "images/toolbutton-icon16.png" - - ItemLibraryEntry { - name: "Tab Button" - category: "Qt Quick - Controls 2" - libraryIcon: "images/toolbutton-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - Property { name: "text"; type: "binding"; value: "qsTr(\"Tab Button\")" } - } - } - - Type { - name: "QtQuick.Controls.TextArea" - icon: "images/textarea-icon16.png" - - ItemLibraryEntry { - name: "Text Area" - category: "Qt Quick - Controls 2" - libraryIcon: "images/textarea-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "placeholderText"; type: "binding"; value: "qsTr(\"Text Area\")" } - } - } - - Type { - name: "QtQuick.Controls.TextField" - icon: "images/textfield-icon16.png" - - ItemLibraryEntry { - name: "Text Field" - category: "Qt Quick - Controls 2" - libraryIcon: "images/textfield-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "placeholderText"; type: "binding"; value: "qsTr(\"Text Field\")" } - } - } - - Type { - name: "QtQuick.Controls.ToolBar" - icon: "images/toolbar-icon16.png" - - ItemLibraryEntry { - name: "Tool Bar" - category: "Qt Quick - Controls 2" - libraryIcon: "images/toolbar-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "width"; type: "int"; value: 360 } - } - } - - Type { - name: "QtQuick.Controls.ToolButton" - icon: "images/toolbutton-icon16.png" - - ItemLibraryEntry { - name: "Tool Button" - category: "Qt Quick - Controls 2" - libraryIcon: "images/toolbutton-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "text"; type: "binding"; value: "qsTr(\"Tool Button\")" } - } - } - - Type { - name: "QtQuick.Controls.ToolSeparator" - icon: "images/toolseparator-icon16.png" - - ItemLibraryEntry { - name: "Tool Separator" - category: "Qt Quick - Controls 2" - libraryIcon: "images/toolseparator-icon.png" - version: "2.1" - requiredImport: "QtQuick.Controls" - } - } - - Type { - name: "QtQuick.Controls.Tumbler" - icon: "images/tumbler-icon16.png" - - ItemLibraryEntry { - name: "Tumbler" - category: "Qt Quick - Controls 2" - libraryIcon: "images/tumbler-icon.png" - version: "2.0" - requiredImport: "QtQuick.Controls" - - Property { name: "model"; type: "int"; value: "10" } - } - } -} diff --git a/src/quickcontrols2/doc/doc.pri b/src/quickcontrols2/doc/doc.pri deleted file mode 100644 index 4bd8bd95..00000000 --- a/src/quickcontrols2/doc/doc.pri +++ /dev/null @@ -1,6 +0,0 @@ -QMAKE_DOCS = $$PWD/qtquickcontrols.qdocconf - -OTHER_FILES += \ - $$files($$PWD/snippets/*.qml) \ - $$files($$PWD/src/*.qdoc) \ - $$files($$PWD/src/templates/*.qdoc) diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-applicationwindow-wireframe.png b/src/quickcontrols2/doc/images/qtquickcontrols2-applicationwindow-wireframe.png Binary files differdeleted file mode 100644 index f3137800..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-applicationwindow-wireframe.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-basic-thumbnail.png b/src/quickcontrols2/doc/images/qtquickcontrols2-basic-thumbnail.png Binary files differdeleted file mode 100644 index e971a7aa..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-basic-thumbnail.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-basic.png b/src/quickcontrols2/doc/images/qtquickcontrols2-basic.png Binary files differdeleted file mode 100644 index 099db170..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-basic.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-busyindicator-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-busyindicator-custom.png Binary files differdeleted file mode 100644 index fefae223..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-busyindicator-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-busyindicator.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-busyindicator.gif Binary files differdeleted file mode 100644 index 653d200f..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-busyindicator.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-busyindicator.png b/src/quickcontrols2/doc/images/qtquickcontrols2-busyindicator.png Binary files differdeleted file mode 100644 index 4be09579..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-busyindicator.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-button-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-button-custom.png Binary files differdeleted file mode 100644 index 46d3e3eb..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-button-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-button-flat.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-button-flat.gif Binary files differdeleted file mode 100644 index e2bd8b6f..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-button-flat.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-button-highlighted.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-button-highlighted.gif Binary files differdeleted file mode 100644 index 7de076d3..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-button-highlighted.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-button-icononly.png b/src/quickcontrols2/doc/images/qtquickcontrols2-button-icononly.png Binary files differdeleted file mode 100644 index 9c8dd0f4..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-button-icononly.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-button-textbesideicon.png b/src/quickcontrols2/doc/images/qtquickcontrols2-button-textbesideicon.png Binary files differdeleted file mode 100644 index 3dc64fb9..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-button-textbesideicon.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-button-textonly.png b/src/quickcontrols2/doc/images/qtquickcontrols2-button-textonly.png Binary files differdeleted file mode 100644 index 737beb16..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-button-textonly.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-button-textundericon.png b/src/quickcontrols2/doc/images/qtquickcontrols2-button-textundericon.png Binary files differdeleted file mode 100644 index 37c40c7c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-button-textundericon.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-button.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-button.gif Binary files differdeleted file mode 100644 index 10d626a3..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-button.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-checkbox-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-checkbox-custom.png Binary files differdeleted file mode 100644 index c6c3d1bc..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-checkbox-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-checkbox-group.png b/src/quickcontrols2/doc/images/qtquickcontrols2-checkbox-group.png Binary files differdeleted file mode 100644 index d5a0d51b..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-checkbox-group.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-checkbox-tristate.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-checkbox-tristate.gif Binary files differdeleted file mode 100644 index 56a15867..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-checkbox-tristate.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-checkbox.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-checkbox.gif Binary files differdeleted file mode 100644 index d70c0ee4..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-checkbox.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-checkdelegate-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-checkdelegate-custom.png Binary files differdeleted file mode 100644 index c0dd0689..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-checkdelegate-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-checkdelegate-tristate.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-checkdelegate-tristate.gif Binary files differdeleted file mode 100644 index 8d058d6c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-checkdelegate-tristate.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-checkdelegate.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-checkdelegate.gif Binary files differdeleted file mode 100644 index da3fab98..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-checkdelegate.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-combobox-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-combobox-custom.png Binary files differdeleted file mode 100644 index 4f7206dc..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-combobox-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-combobox-delegate.png b/src/quickcontrols2/doc/images/qtquickcontrols2-combobox-delegate.png Binary files differdeleted file mode 100644 index cf310648..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-combobox-delegate.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-combobox-popup.png b/src/quickcontrols2/doc/images/qtquickcontrols2-combobox-popup.png Binary files differdeleted file mode 100644 index cf310648..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-combobox-popup.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-combobox.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-combobox.gif Binary files differdeleted file mode 100644 index 966a2d4a..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-combobox.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-control.png b/src/quickcontrols2/doc/images/qtquickcontrols2-control.png Binary files differdeleted file mode 100644 index 0f004a89..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-control.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-control.svg b/src/quickcontrols2/doc/images/qtquickcontrols2-control.svg deleted file mode 100644 index 4b2057d1..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-control.svg +++ /dev/null @@ -1,936 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="760" - height="580" - viewBox="0 0 759.99997 579.99999" - id="svg2" - version="1.1" - inkscape:version="0.92.3 (2405546, 2018-03-11)" - sodipodi:docname="qtquickcontrols2-control.svg" - inkscape:export-filename="/home/jpnurmi/Projects/qt-dev/qtquickcontrols2/src/imports/controls/doc/images/qtquickcontrols2-control.png" - inkscape:export-xdpi="192" - inkscape:export-ydpi="192"> - <defs - id="defs4"> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="Arrow1Mstart" - orient="auto" - refY="0" - refX="0" - id="Arrow1Mstart" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4191" - d="M 0,0 5,-5 -12.5,0 5,5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="matrix(0.4,0,0,0.4,4,0)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="Arrow2Mend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Mend" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4212" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="scale(-0.6)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-2" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4318-4" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-9" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4327-1" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-3" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-9" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-0" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-5" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-9" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-2" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-1" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-2" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-9-6" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-2-2" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-1-1" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-2-7" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-2-5" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4318-4-7" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-9-4" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4327-1-1" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-1" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-8" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-96" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-4" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-9-6-4" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-2-2-7" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-1-1-6" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-2-7-8" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-2-5-6" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4318-4-7-2" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-9-4-8" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4327-1-1-9" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-2-5-6-9" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4318-4-7-2-6" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-9-4-8-4" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4327-1-1-9-8" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-1-7" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-8-9" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-96-7" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-4-4" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-2-5-6-9-1" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4318-4-7-2-6-7" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-9-4-8-4-0" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4327-1-1-9-8-6" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-1-9" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-8-3" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-96-3" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-4-46" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-2-5-6-9-5" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4318-4-7-2-6-6" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-9-4-8-4-1" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4327-1-1-9-8-7" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-1-9-7" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-8-3-7" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-96-3-2" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-4-46-3" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-2-5-6-9-5-8" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4318-4-7-2-6-6-1" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-9-4-8-4-1-3" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4327-1-1-9-8-7-6" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="1.4142136" - inkscape:cx="138.75529" - inkscape:cy="425.28174" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="3840" - inkscape:window-height="2031" - inkscape:window-x="0" - inkscape:window-y="55" - inkscape:window-maximized="1" - fit-margin-top="0" - fit-margin-left="0" - fit-margin-right="0" - fit-margin-bottom="0" - units="px" /> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(91.482322,-32.9581)"> - <rect - style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.05102265;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect4136" - width="518.94897" - height="298.94897" - x="29.043194" - y="193.48361" /> - <rect - style="fill:#ffd5d5;fill-opacity:1;stroke:none;stroke-width:0.83021182;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect4136-3" - width="440" - height="220" - x="68.517685" - y="232.9581" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(1.1690183,0,0,1.1690183,115.80023,-231.31953)"><flowRegion - id="flowRegion4140" - style="fill:#ff2a2a"><rect - id="rect4142" - width="129.78784" - height="31.668232" - x="-34.519978" - y="400.22751" - style="font-size:15.41801071px;fill:#ff2a2a" /></flowRegion><flowPara - id="flowPara4144" - style="font-size:20.55734825px;line-height:1.25;fill:#ff2a2a">Background</flowPara><flowPara - id="flowPara4146" - style="font-size:20.55734825px;line-height:1.25;fill:#ff2a2a">Â </flowPara></flowRoot> <rect - style="fill:#d7e3f4;fill-opacity:1;stroke:none;stroke-width:22.32431984;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.58381503" - id="rect4148" - width="360" - height="140" - x="108.51768" - y="272.95813" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0055d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,184.57261,41.294224)"><flowRegion - id="flowRegion4140-6" - style="fill:#0055d4"><rect - id="rect4142-6" - width="334.36047" - height="80.812172" - x="42.426407" - y="481.62601" - style="font-size:40px;fill:#0055d4" /></flowRegion><flowPara - id="flowPara4146-6" - style="font-size:40px;line-height:1.25;fill:#0055d4">Content item</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-1" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,247.75903,220.21488)"><flowRegion - id="flowRegion4140-6-9"><rect - id="rect4142-6-0" - width="270.72089" - height="68.690361" - x="42.426407" - y="481.62601" - style="font-size:25px;fill:#000000" /></flowRegion><flowPara - id="flowPara4146-6-2" - style="font-size:17.5px;line-height:1.25">Width</flowPara></flowRoot> <path - style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.93053311;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-3);marker-end:url(#TriangleOutL-0)" - d="M 33.168982,505.52033 H 543.32948" - id="path4179-8" - inkscape:connector-curvature="0" /> - <path - style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-9);marker-end:url(#TriangleOutL-1)" - d="M 16.517683,487.33858 V 198.57762" - id="path4179-9" - inkscape:connector-curvature="0" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6-1-7" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,-50.003525,47.195824)"><flowRegion - id="flowRegion4140-6-9-7"><rect - id="rect4142-6-0-5" - width="270.72089" - height="68.690361" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#000000" /></flowRegion><flowPara - id="flowPara4146-6-2-9" - style="font-size:17.5px;line-height:1.25;fill:#000000">Height</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-3" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,206.65956,-144.78636)"><flowRegion - id="flowRegion4140-6-67"><rect - id="rect4142-6-5" - width="334.36047" - height="80.812172" - x="42.426407" - y="481.62601" - style="font-size:60px;fill:#000000" /></flowRegion><flowPara - style="font-size:60px;line-height:1.25" - id="flowPara14323">Popup</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0055d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,41.217752,149.93493)"><flowRegion - id="flowRegion4140-6-6-4-6" - style="text-align:center;text-anchor:middle;fill:#0055d4"><rect - id="rect4142-6-1-4-2" - width="252.53812" - height="61.619293" - x="42.426407" - y="481.62601" - style="font-size:17.5px;text-align:center;text-anchor:middle;fill:#0055d4" /></flowRegion><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#0055d4" - id="flowPara10048-9">Bottom</flowPara><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#0055d4" - id="flowPara5290">padding</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-1" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0055d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,384.82399,-69.046412)"><flowRegion - id="flowRegion4140-6-6-4-6-2" - style="fill:#0055d4"><rect - id="rect4142-6-1-4-2-7" - width="71.826065" - height="43.785866" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#0055d4" /></flowRegion><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#0055d4" - id="flowPara10048-9-0">Top</flowPara><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#0055d4" - id="flowPara4830">padding</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-9" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0055d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,458.14041,-0.80935844)"><flowRegion - id="flowRegion4140-6-6-4-6-3" - style="fill:#0055d4"><rect - id="rect4142-6-1-4-2-6" - width="81.109558" - height="93.762154" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#0055d4" /></flowRegion><flowPara - style="font-size:17.5px;line-height:125%;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#0055d4" - id="flowPara4386">Right padding</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-9-2" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0055d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,19.173452,87.133114)"><flowRegion - id="flowRegion4140-6-6-4-6-3-5" - style="fill:#0055d4"><rect - id="rect4142-6-1-4-2-6-4" - width="81.109558" - height="93.762154" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#0055d4" /></flowRegion><flowPara - style="font-size:17.02554321px;line-height:125%;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#0055d4" - id="flowPara4386-0">Left padding</flowPara></flowRoot> <path - style="fill:#ff2a2a;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:0.87824047;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-9-6);marker-end:url(#TriangleOutL-1-1)" - d="M 72.916183,227.96278 V 198.98852" - id="path4179-9-8" - inkscape:connector-curvature="0" /> - <path - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:0.87323481;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-2-5);marker-end:url(#TriangleOutL-9-4)" - d="M 34.529058,238.58445 H 63.562954" - id="path4179-7-8" - inkscape:connector-curvature="0" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-1-5" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,47.895402,-88.000508)"><flowRegion - id="flowRegion4140-6-6-4-6-2-9" - style="fill:#ff2a2a"><rect - id="rect4142-6-1-4-2-7-7" - width="66.476036" - height="55.080368" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#ff2a2a" /></flowRegion><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#ff2a2a" - id="flowPara11237">Top inset</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-9-2-3" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,0.4414194,-43.952242)"><flowRegion - id="flowRegion4140-6-6-4-6-3-5-8" - style="fill:#ff2a2a"><rect - id="rect4142-6-1-4-2-6-4-8" - width="75.759529" - height="93.167732" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#ff2a2a" /></flowRegion><flowPara - style="font-size:17.02554321px;line-height:125%;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ff2a2a" - id="flowPara4386-0-3">Left inset</flowPara></flowRoot> <path - style="fill:#0055d4;fill-rule:evenodd;stroke:#0055d4;stroke-width:0.97500122;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-1);marker-end:url(#TriangleOutL-96)" - d="M 462.28757,267.38769 V 199.50991" - id="path4179-3" - inkscape:connector-curvature="0" /> - <path - style="fill:#ff2a2a;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:0.87794411;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-9-6-4);marker-end:url(#TriangleOutL-1-1-6)" - d="M 504.22784,486.94146 V 457.98675" - id="path4179-9-8-9" - inkscape:connector-curvature="0" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-1-5-0" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,424.36985,170.98794)"><flowRegion - id="flowRegion4140-6-6-4-6-2-9-6" - style="fill:#ff2a2a"><rect - id="rect4142-6-1-4-2-7-7-8" - width="91.442841" - height="44.974762" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#ff2a2a" /></flowRegion><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#ff2a2a" - id="flowPara11237-7">Bottom inset</flowPara></flowRoot> <path - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:0.87314719;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-2-5-6);marker-end:url(#TriangleOutL-9-4-8)" - d="M 513.47562,448.6218 H 542.5037" - id="path4179-7-8-6" - inkscape:connector-curvature="0" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-9-2-3-0" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,479.24023,126.32002)"><flowRegion - id="flowRegion4140-6-6-4-6-3-5-8-7" - style="fill:#ff2a2a"><rect - id="rect4142-6-1-4-2-6-4-8-0" - width="75.759529" - height="93.167732" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#ff2a2a" /></flowRegion><flowPara - style="font-size:17.02554321px;line-height:125%;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ff2a2a" - id="flowPara3807">Right inset</flowPara></flowRoot> <path - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.05938387;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-2-5-6-9);marker-end:url(#TriangleOutL-9-4-8-4)" - d="m 474.52523,278.31524 h 66.93934" - id="path4179-7-8-6-0" - inkscape:connector-curvature="0" /> - <path - style="fill:#0055d4;fill-rule:evenodd;stroke:#0055d4;stroke-width:0.97513783;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-1-7);marker-end:url(#TriangleOutL-96-7)" - d="M 114.58911,486.37854 V 418.48175" - id="path4179-3-9" - inkscape:connector-curvature="0" /> - <path - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.05900466;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-2-5-6-9-1);marker-end:url(#TriangleOutL-9-4-8-4-0)" - d="M 35.582232,406.88667 H 102.47366" - id="path4179-7-8-6-0-0" - inkscape:connector-curvature="0" /> - <rect - style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.38;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect4136-9" - width="638.62036" - height="418.6203" - x="-30.792475" - y="133.64795" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6-3-8" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,192.12072,-213.92909)"><flowRegion - id="flowRegion4140-6-67-1"><rect - id="rect4142-6-5-6" - width="334.36047" - height="80.812172" - x="42.426407" - y="481.62601" - style="font-size:60px;fill:#000000" /></flowRegion><flowPara - style="font-size:60px;line-height:1.25" - id="flowPara14323-3">Window</flowPara></flowRoot> <path - style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.83036995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-1-9);marker-end:url(#TriangleOutL-96-3)" - d="M 16.507747,188.209 V 138.97553" - id="path4179-3-1" - inkscape:connector-curvature="0" /> - <path - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.90094262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-2-5-6-9-5);marker-end:url(#TriangleOutL-9-4-8-4-1)" - d="m 553.67227,505.52244 h 48.41379" - id="path4179-7-8-6-0-2" - inkscape:connector-curvature="0" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-1-2" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,-53.285062,-138.90295)"><flowRegion - id="flowRegion4140-6-6-4-6-2-92" - style="fill:#000000"><rect - id="rect4142-6-1-4-2-7-8" - width="71.826065" - height="43.785866" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#000000" /></flowRegion><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#000000" - id="flowPara10048-9-0-1">Top</flowPara><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#000000" - id="flowPara4830-2">margin</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-1-2-4" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,530.78767,225.71855)"><flowRegion - id="flowRegion4140-6-6-4-6-2-92-7" - style="fill:#000000"><rect - id="rect4142-6-1-4-2-7-8-8" - width="71.826065" - height="43.785866" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#000000" /></flowRegion><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#000000" - id="flowPara10048-9-0-1-6">Right</flowPara><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#000000" - id="flowPara4830-2-3">margin</flowPara></flowRoot> <path - style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.83036995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-1-9-7);marker-end:url(#TriangleOutL-96-3-2)" - d="M 16.459117,546.78218 V 497.54871" - id="path4179-3-1-7" - inkscape:connector-curvature="0" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-1-2-2" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,-0.06072146,225.50386)"><flowRegion - id="flowRegion4140-6-6-4-6-2-92-5" - style="fill:#000000"><rect - id="rect4142-6-1-4-2-7-8-3" - width="71.826065" - height="43.785866" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#000000" /></flowRegion><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#000000" - id="flowPara10048-9-0-1-7">Bottom</flowPara><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#000000" - id="flowPara4830-2-6">margin</flowPara></flowRoot> <path - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.89733517;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-2-5-6-9-5-8);marker-end:url(#TriangleOutL-9-4-8-4-1-3)" - d="M -25.075855,505.54405 H 22.951007" - id="path4179-7-8-6-0-2-4" - inkscape:connector-curvature="0" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-1-2-2-0" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,-55.529842,180.17847)"><flowRegion - id="flowRegion4140-6-6-4-6-2-92-5-3" - style="fill:#000000"><rect - id="rect4142-6-1-4-2-7-8-3-5" - width="71.826065" - height="43.785866" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#000000" /></flowRegion><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#000000" - id="flowPara10048-9-0-1-7-8">Left</flowPara><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#000000" - id="flowPara4830-2-6-5">margin</flowPara></flowRoot> </g> -</svg> diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-customize-buttons.png b/src/quickcontrols2/doc/images/qtquickcontrols2-customize-buttons.png Binary files differdeleted file mode 100644 index 551e8a0c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-customize-buttons.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-delaybutton-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-delaybutton-custom.png Binary files differdeleted file mode 100644 index a7bd7c19..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-delaybutton-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-delaybutton.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-delaybutton.gif Binary files differdeleted file mode 100644 index 16a198f9..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-delaybutton.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-dial-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-dial-custom.png Binary files differdeleted file mode 100644 index 6312c999..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-dial-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-dial-handle.png b/src/quickcontrols2/doc/images/qtquickcontrols2-dial-handle.png Binary files differdeleted file mode 100644 index 9e22b2e7..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-dial-handle.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-dial-inputMode.svgz b/src/quickcontrols2/doc/images/qtquickcontrols2-dial-inputMode.svgz Binary files differdeleted file mode 100644 index 005ab7b3..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-dial-inputMode.svgz +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-dial-inputmode.png b/src/quickcontrols2/doc/images/qtquickcontrols2-dial-inputmode.png Binary files differdeleted file mode 100644 index 5bbc41a4..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-dial-inputmode.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-dial-no-wrap.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-dial-no-wrap.gif Binary files differdeleted file mode 100644 index 24f6790b..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-dial-no-wrap.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-dial-wrap.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-dial-wrap.gif Binary files differdeleted file mode 100644 index cfb1fb5b..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-dial-wrap.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-dial.png b/src/quickcontrols2/doc/images/qtquickcontrols2-dial.png Binary files differdeleted file mode 100644 index 71c54113..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-dial.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-dialogbuttonbox-attached.png b/src/quickcontrols2/doc/images/qtquickcontrols2-dialogbuttonbox-attached.png Binary files differdeleted file mode 100644 index c17f38ac..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-dialogbuttonbox-attached.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-dialogbuttonbox.png b/src/quickcontrols2/doc/images/qtquickcontrols2-dialogbuttonbox.png Binary files differdeleted file mode 100644 index 33b5f45f..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-dialogbuttonbox.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-drawer-expanded-wireframe.png b/src/quickcontrols2/doc/images/qtquickcontrols2-drawer-expanded-wireframe.png Binary files differdeleted file mode 100644 index 0c92f865..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-drawer-expanded-wireframe.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-drawer-wireframe.png b/src/quickcontrols2/doc/images/qtquickcontrols2-drawer-wireframe.png Binary files differdeleted file mode 100644 index 74806f17..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-drawer-wireframe.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-drawer.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-drawer.gif Binary files differdeleted file mode 100644 index 736f34f6..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-drawer.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-frame-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-frame-custom.png Binary files differdeleted file mode 100644 index f628b20c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-frame-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-frame.png b/src/quickcontrols2/doc/images/qtquickcontrols2-frame.png Binary files differdeleted file mode 100644 index e3cb31dc..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-frame.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-fusion-palettes.png b/src/quickcontrols2/doc/images/qtquickcontrols2-fusion-palettes.png Binary files differdeleted file mode 100644 index d8061161..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-fusion-palettes.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-fusion-thumbnail.png b/src/quickcontrols2/doc/images/qtquickcontrols2-fusion-thumbnail.png Binary files differdeleted file mode 100644 index c270c6ef..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-fusion-thumbnail.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-fusion-violet.png b/src/quickcontrols2/doc/images/qtquickcontrols2-fusion-violet.png Binary files differdeleted file mode 100644 index 99e5b597..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-fusion-violet.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-fusion.png b/src/quickcontrols2/doc/images/qtquickcontrols2-fusion.png Binary files differdeleted file mode 100644 index 7119ef22..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-fusion.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-groupbox-checkable.png b/src/quickcontrols2/doc/images/qtquickcontrols2-groupbox-checkable.png Binary files differdeleted file mode 100644 index 820ad79c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-groupbox-checkable.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-groupbox-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-groupbox-custom.png Binary files differdeleted file mode 100644 index 029679ce..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-groupbox-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-groupbox-label.png b/src/quickcontrols2/doc/images/qtquickcontrols2-groupbox-label.png Binary files differdeleted file mode 100644 index c26795a7..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-groupbox-label.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-groupbox.png b/src/quickcontrols2/doc/images/qtquickcontrols2-groupbox.png Binary files differdeleted file mode 100644 index ea2f9ea5..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-groupbox.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-4x.png b/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-4x.png Binary files differdeleted file mode 100644 index bab99a5e..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-4x.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-inset-boundaries.png b/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-inset-boundaries.png Binary files differdeleted file mode 100644 index c42df81e..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-inset-boundaries.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-inset.png b/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-inset.png Binary files differdeleted file mode 100644 index 0627d085..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-inset.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-resized-padding.png b/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-resized-padding.png Binary files differdeleted file mode 100644 index 0a606c99..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-resized-padding.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-resized-stretchable.png b/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-resized-stretchable.png Binary files differdeleted file mode 100644 index 9598b13a..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-resized-stretchable.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-size.png b/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-size.png Binary files differdeleted file mode 100644 index db645375..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch-size.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch.svgz b/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch.svgz Binary files differdeleted file mode 100644 index 5a1a1094..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-9-patch.svgz +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-customization-dark.png b/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-customization-dark.png Binary files differdeleted file mode 100644 index 144ac97c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-customization-dark.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-customization.svgz b/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-customization.svgz Binary files differdeleted file mode 100644 index fb830563..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-customization.svgz +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-thumbnail.png b/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-thumbnail.png Binary files differdeleted file mode 100644 index ecf2bb16..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine-thumbnail.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine.png b/src/quickcontrols2/doc/images/qtquickcontrols2-imagine.png Binary files differdeleted file mode 100644 index ffe2c267..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-imagine.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-itemdelegate-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-itemdelegate-custom.png Binary files differdeleted file mode 100644 index 35f8892f..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-itemdelegate-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-itemdelegate.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-itemdelegate.gif Binary files differdeleted file mode 100644 index dccb6efc..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-itemdelegate.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-itemdelegate.png b/src/quickcontrols2/doc/images/qtquickcontrols2-itemdelegate.png Binary files differdeleted file mode 100644 index 7242f343..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-itemdelegate.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-label-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-label-custom.png Binary files differdeleted file mode 100644 index 5730ff23..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-label-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-label.png b/src/quickcontrols2/doc/images/qtquickcontrols2-label.png Binary files differdeleted file mode 100644 index 0bafcf86..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-label.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-macos-dark.png b/src/quickcontrols2/doc/images/qtquickcontrols2-macos-dark.png Binary files differdeleted file mode 100644 index 97d8a5a4..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-macos-dark.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-macos-light.png b/src/quickcontrols2/doc/images/qtquickcontrols2-macos-light.png Binary files differdeleted file mode 100644 index 4a598ad4..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-macos-light.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-macos-thumbnail.png b/src/quickcontrols2/doc/images/qtquickcontrols2-macos-thumbnail.png Binary files differdeleted file mode 100644 index 57fd98d6..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-macos-thumbnail.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-material-accent.png b/src/quickcontrols2/doc/images/qtquickcontrols2-material-accent.png Binary files differdeleted file mode 100644 index a85afc68..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-material-accent.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-material-attributes.png b/src/quickcontrols2/doc/images/qtquickcontrols2-material-attributes.png Binary files differdeleted file mode 100644 index bb54071d..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-material-attributes.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-material-background.png b/src/quickcontrols2/doc/images/qtquickcontrols2-material-background.png Binary files differdeleted file mode 100644 index 62028f52..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-material-background.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-material-dark.png b/src/quickcontrols2/doc/images/qtquickcontrols2-material-dark.png Binary files differdeleted file mode 100644 index f6e45b3b..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-material-dark.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-material-elevation.png b/src/quickcontrols2/doc/images/qtquickcontrols2-material-elevation.png Binary files differdeleted file mode 100644 index d152f145..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-material-elevation.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-material-foreground.png b/src/quickcontrols2/doc/images/qtquickcontrols2-material-foreground.png Binary files differdeleted file mode 100644 index 0d0e1b65..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-material-foreground.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-material-light.png b/src/quickcontrols2/doc/images/qtquickcontrols2-material-light.png Binary files differdeleted file mode 100644 index c9abe2cb..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-material-light.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-material-purple.png b/src/quickcontrols2/doc/images/qtquickcontrols2-material-purple.png Binary files differdeleted file mode 100644 index b955736b..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-material-purple.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-material-theme.png b/src/quickcontrols2/doc/images/qtquickcontrols2-material-theme.png Binary files differdeleted file mode 100644 index 1d09a825..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-material-theme.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-material-thumbnail.png b/src/quickcontrols2/doc/images/qtquickcontrols2-material-thumbnail.png Binary files differdeleted file mode 100644 index d758ff18..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-material-thumbnail.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-material-variant-dense.png b/src/quickcontrols2/doc/images/qtquickcontrols2-material-variant-dense.png Binary files differdeleted file mode 100644 index 02f39b78..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-material-variant-dense.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-material-variant-normal.png b/src/quickcontrols2/doc/images/qtquickcontrols2-material-variant-normal.png Binary files differdeleted file mode 100644 index c1e366c5..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-material-variant-normal.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-menu-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-menu-custom.png Binary files differdeleted file mode 100644 index 922bf591..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-menu-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-menu.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-menu.gif Binary files differdeleted file mode 100644 index 93a873a3..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-menu.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-menu.png b/src/quickcontrols2/doc/images/qtquickcontrols2-menu.png Binary files differdeleted file mode 100644 index 926c33ee..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-menu.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-menubar-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-menubar-custom.png Binary files differdeleted file mode 100644 index b6007e46..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-menubar-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-menubar.png b/src/quickcontrols2/doc/images/qtquickcontrols2-menubar.png Binary files differdeleted file mode 100644 index 873b7a19..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-menubar.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-menuseparator-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-menuseparator-custom.png Binary files differdeleted file mode 100644 index 78635b9c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-menuseparator-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-menuseparator.png b/src/quickcontrols2/doc/images/qtquickcontrols2-menuseparator.png Binary files differdeleted file mode 100644 index 35307817..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-menuseparator.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-page-wireframe.png b/src/quickcontrols2/doc/images/qtquickcontrols2-page-wireframe.png Binary files differdeleted file mode 100644 index f612c243..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-page-wireframe.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-pageindicator-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-pageindicator-custom.png Binary files differdeleted file mode 100644 index a767a51a..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-pageindicator-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-pageindicator-delegate.png b/src/quickcontrols2/doc/images/qtquickcontrols2-pageindicator-delegate.png Binary files differdeleted file mode 100644 index 95acde70..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-pageindicator-delegate.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-pageindicator.png b/src/quickcontrols2/doc/images/qtquickcontrols2-pageindicator.png Binary files differdeleted file mode 100644 index e2a0a157..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-pageindicator.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-pane-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-pane-custom.png Binary files differdeleted file mode 100644 index 03a0369f..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-pane-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-pane.png b/src/quickcontrols2/doc/images/qtquickcontrols2-pane.png Binary files differdeleted file mode 100644 index 3801cc3e..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-pane.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-popup-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-popup-custom.png Binary files differdeleted file mode 100644 index cb7813d3..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-popup-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-popup-settings.png b/src/quickcontrols2/doc/images/qtquickcontrols2-popup-settings.png Binary files differdeleted file mode 100644 index 5122158e..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-popup-settings.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-popup-transformorigin.png b/src/quickcontrols2/doc/images/qtquickcontrols2-popup-transformorigin.png Binary files differdeleted file mode 100644 index 16d26177..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-popup-transformorigin.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-popup.png b/src/quickcontrols2/doc/images/qtquickcontrols2-popup.png Binary files differdeleted file mode 100644 index 8fc424a8..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-popup.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-popup.svg b/src/quickcontrols2/doc/images/qtquickcontrols2-popup.svg deleted file mode 100644 index e39f3dce..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-popup.svg +++ /dev/null @@ -1,712 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="640" - height="420" - viewBox="0 0 639.99997 419.99999" - id="svg2" - version="1.1" - inkscape:version="0.92.3 (2405546, 2018-03-11)" - sodipodi:docname="qtquickcontrols2-control.svg" - inkscape:export-filename="/home/jpnurmi/Projects/qt-dev/qtquickcontrols2/src/imports/controls/doc/images/qtquickcontrols2-control.png" - inkscape:export-xdpi="192" - inkscape:export-ydpi="192"> - <defs - id="defs4"> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="Arrow1Mstart" - orient="auto" - refY="0" - refX="0" - id="Arrow1Mstart" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4191" - d="M 0,0 5,-5 -12.5,0 5,5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="matrix(0.4,0,0,0.4,4,0)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="Arrow2Mend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Mend" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4212" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="scale(-0.6)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-2" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4318-4" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-9" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4327-1" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-3" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-9" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-0" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-5" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-9" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-2" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-1" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-2" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-9-6" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-2-2" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-1-1" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-2-7" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-2-5" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4318-4-7" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-9-4" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4327-1-1" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-1" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-8" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-96" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-4" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-9-6-4" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-2-2-7" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-1-1-6" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-2-7-8" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-2-5-6" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4318-4-7-2" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-9-4-8" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4327-1-1-9" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-2-5-6-9" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4318-4-7-2-6" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-9-4-8-4" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4327-1-1-9-8" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-1-7" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4318-8-9" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-96-7" - style="overflow:visible" - inkscape:isstock="true"> - <path - id="path4327-4-4" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="TriangleInL" - orient="auto" - refY="0" - refX="0" - id="TriangleInL-2-5-6-9-1" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4318-4-7-2-6-7" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(-0.8)" /> - </marker> - <marker - inkscape:stockid="TriangleOutL" - orient="auto" - refY="0" - refX="0" - id="TriangleOutL-9-4-8-4-0" - style="overflow:visible" - inkscape:isstock="true"> - <path - inkscape:connector-curvature="0" - id="path4327-1-1-9-8-6" - d="M 5.77,0 -2.88,5 V -5 Z" - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.00000003pt;stroke-opacity:1" - transform="scale(0.8)" /> - </marker> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="2.8284271" - inkscape:cx="328.65009" - inkscape:cy="205.42326" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="3840" - inkscape:window-height="2031" - inkscape:window-x="0" - inkscape:window-y="55" - inkscape:window-maximized="1" - fit-margin-top="0" - fit-margin-left="0" - fit-margin-right="0" - fit-margin-bottom="0" - units="px" /> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(91.482322,-192.9581)"> - <rect - style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.05102265;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect4136" - width="518.94897" - height="298.94897" - x="-30.956812" - y="253.48361" /> - <rect - style="fill:#ffd5d5;fill-opacity:1;stroke:none;stroke-width:0.83021182;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect4136-3" - width="440" - height="220" - x="8.5176783" - y="292.9581" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(1.1690183,0,0,1.1690183,55.80022,-171.31953)"><flowRegion - id="flowRegion4140" - style="fill:#ff2a2a"><rect - id="rect4142" - width="129.78784" - height="31.668232" - x="-34.519978" - y="400.22751" - style="font-size:15.41801071px;fill:#ff2a2a" /></flowRegion><flowPara - id="flowPara4144" - style="font-size:20.55734825px;line-height:1.25;fill:#ff2a2a">Background</flowPara><flowPara - id="flowPara4146" - style="font-size:20.55734825px;line-height:1.25;fill:#ff2a2a">Â </flowPara></flowRoot> <rect - style="fill:#d7e3f4;fill-opacity:1;stroke:none;stroke-width:22.32431984;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.58381503" - id="rect4148" - width="360" - height="140" - x="48.517677" - y="332.95813" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0055d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,124.5726,101.29422)"><flowRegion - id="flowRegion4140-6" - style="fill:#0055d4"><rect - id="rect4142-6" - width="334.36047" - height="80.812172" - x="42.426407" - y="481.62601" - style="font-size:40px;fill:#0055d4" /></flowRegion><flowPara - id="flowPara4146-6" - style="font-size:40px;line-height:1.25;fill:#0055d4">Content item</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-1" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,187.75902,280.21488)"><flowRegion - id="flowRegion4140-6-9"><rect - id="rect4142-6-0" - width="270.72089" - height="68.690361" - x="42.426407" - y="481.62601" - style="font-size:25px;fill:#000000" /></flowRegion><flowPara - id="flowPara4146-6-2" - style="font-size:17.5px;line-height:1.25">Width</flowPara></flowRoot> <path - style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.93053311;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-3);marker-end:url(#TriangleOutL-0)" - d="M -26.831023,563.52033 H 483.32947" - id="path4179-8" - inkscape:connector-curvature="0" /> - <path - style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-9);marker-end:url(#TriangleOutL-1)" - d="M -41.482322,547.33858 V 258.57762" - id="path4179-9" - inkscape:connector-curvature="0" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6-1-7" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,-110.00353,107.19582)"><flowRegion - id="flowRegion4140-6-9-7"><rect - id="rect4142-6-0-5" - width="270.72089" - height="68.690361" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#000000" /></flowRegion><flowPara - id="flowPara4146-6-2-9" - style="font-size:17.5px;line-height:1.25;fill:#000000">Height</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-3" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,138.50125,-84.786365)"><flowRegion - id="flowRegion4140-6-67"><rect - id="rect4142-6-5" - width="334.36047" - height="80.812172" - x="42.426407" - y="481.62601" - style="font-size:60px;fill:#000000" /></flowRegion><flowPara - id="flowPara4146-6-3" - style="font-size:60px;line-height:1.25">Control</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0055d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,-18.782253,209.93493)"><flowRegion - id="flowRegion4140-6-6-4-6" - style="text-align:center;text-anchor:middle;fill:#0055d4"><rect - id="rect4142-6-1-4-2" - width="252.53812" - height="61.619293" - x="42.426407" - y="481.62601" - style="font-size:17.5px;text-align:center;text-anchor:middle;fill:#0055d4" /></flowRegion><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#0055d4" - id="flowPara10048-9">Bottom</flowPara><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#0055d4" - id="flowPara5290">padding</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-1" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0055d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,324.82398,-9.0464154)"><flowRegion - id="flowRegion4140-6-6-4-6-2" - style="fill:#0055d4"><rect - id="rect4142-6-1-4-2-7" - width="71.826065" - height="43.785866" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#0055d4" /></flowRegion><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#0055d4" - id="flowPara10048-9-0">Top</flowPara><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#0055d4" - id="flowPara4830">padding</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-9" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0055d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,398.1404,59.190638)"><flowRegion - id="flowRegion4140-6-6-4-6-3" - style="fill:#0055d4"><rect - id="rect4142-6-1-4-2-6" - width="81.109558" - height="93.762154" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#0055d4" /></flowRegion><flowPara - style="font-size:17.5px;line-height:125%;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#0055d4" - id="flowPara4386">Right padding</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-9-2" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0055d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,-40.826553,147.13311)"><flowRegion - id="flowRegion4140-6-6-4-6-3-5" - style="fill:#0055d4"><rect - id="rect4142-6-1-4-2-6-4" - width="81.109558" - height="93.762154" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#0055d4" /></flowRegion><flowPara - style="font-size:17.02554321px;line-height:125%;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#0055d4" - id="flowPara4386-0">Left padding</flowPara></flowRoot> <path - style="fill:#ff2a2a;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:0.87824047;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-9-6);marker-end:url(#TriangleOutL-1-1)" - d="M 12.916178,287.96278 V 258.98852" - id="path4179-9-8" - inkscape:connector-curvature="0" /> - <path - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:0.87323481;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-2-5);marker-end:url(#TriangleOutL-9-4)" - d="M -25.470947,298.58445 H 3.5629489" - id="path4179-7-8" - inkscape:connector-curvature="0" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-1-5" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,-12.104603,-28.000512)"><flowRegion - id="flowRegion4140-6-6-4-6-2-9" - style="fill:#ff2a2a"><rect - id="rect4142-6-1-4-2-7-7" - width="66.476036" - height="55.080368" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#ff2a2a" /></flowRegion><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#ff2a2a" - id="flowPara11237">Top inset</flowPara></flowRoot> <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-9-2-3" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,-59.558586,16.047754)"><flowRegion - id="flowRegion4140-6-6-4-6-3-5-8" - style="fill:#ff2a2a"><rect - id="rect4142-6-1-4-2-6-4-8" - width="75.759529" - height="93.167732" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#ff2a2a" /></flowRegion><flowPara - style="font-size:17.02554321px;line-height:125%;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ff2a2a" - id="flowPara4386-0-3">Left inset</flowPara></flowRoot> <path - style="fill:#0055d4;fill-rule:evenodd;stroke:#0055d4;stroke-width:0.97500122;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-1);marker-end:url(#TriangleOutL-96)" - d="M 402.28756,327.38769 V 259.50991" - id="path4179-3" - inkscape:connector-curvature="0" /> - <path - style="fill:#ff2a2a;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:0.87794411;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-9-6-4);marker-end:url(#TriangleOutL-1-1-6)" - d="M 444.22783,546.94146 V 517.98675" - id="path4179-9-8-9" - inkscape:connector-curvature="0" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-1-5-0" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,364.36984,230.98794)"><flowRegion - id="flowRegion4140-6-6-4-6-2-9-6" - style="fill:#ff2a2a"><rect - id="rect4142-6-1-4-2-7-7-8" - width="91.442841" - height="44.974762" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#ff2a2a" /></flowRegion><flowPara - style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle;fill:#ff2a2a" - id="flowPara11237-7">Bottom inset</flowPara></flowRoot> <path - style="fill:#ff2a2a;fill-opacity:1;fill-rule:evenodd;stroke:#ff2a2a;stroke-width:0.87314719;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-2-5-6);marker-end:url(#TriangleOutL-9-4-8)" - d="m 453.47561,508.6218 h 29.02808" - id="path4179-7-8-6" - inkscape:connector-curvature="0" /> - <flowRoot - xml:space="preserve" - id="flowRoot4138-6-2-7-5-9-2-3-0" - style="font-style:normal;font-weight:normal;line-height:0.01%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff2a2a;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - transform="matrix(0.6007979,0,0,0.6007979,419.24022,186.32002)"><flowRegion - id="flowRegion4140-6-6-4-6-3-5-8-7" - style="fill:#ff2a2a"><rect - id="rect4142-6-1-4-2-6-4-8-0" - width="75.759529" - height="93.167732" - x="42.426407" - y="481.62601" - style="font-size:17.5px;fill:#ff2a2a" /></flowRegion><flowPara - style="font-size:17.02554321px;line-height:125%;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ff2a2a" - id="flowPara3807">Right inset</flowPara></flowRoot> <path - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.05938387;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-2-5-6-9);marker-end:url(#TriangleOutL-9-4-8-4)" - d="m 414.52522,338.31524 h 66.93934" - id="path4179-7-8-6-0" - inkscape:connector-curvature="0" /> - <path - style="fill:#0055d4;fill-rule:evenodd;stroke:#0055d4;stroke-width:0.97513783;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-1-7);marker-end:url(#TriangleOutL-96-7)" - d="M 54.589106,546.37854 V 478.48175" - id="path4179-3-9" - inkscape:connector-curvature="0" /> - <path - style="fill:#0055d4;fill-opacity:1;fill-rule:evenodd;stroke:#0055d4;stroke-width:1.05900466;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#TriangleInL-2-5-6-9-1);marker-end:url(#TriangleOutL-9-4-8-4-0)" - d="M -24.417773,466.88667 H 42.473651" - id="path4179-7-8-6-0-0" - inkscape:connector-curvature="0" /> - </g> -</svg> diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-progressbar-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-progressbar-custom.png Binary files differdeleted file mode 100644 index 9d73df2c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-progressbar-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-progressbar-indeterminate.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-progressbar-indeterminate.gif Binary files differdeleted file mode 100644 index d6756d16..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-progressbar-indeterminate.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-progressbar.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-progressbar.gif Binary files differdeleted file mode 100644 index 49af5f45..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-progressbar.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-radiobutton-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-radiobutton-custom.png Binary files differdeleted file mode 100644 index 5c85179f..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-radiobutton-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-radiobutton.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-radiobutton.gif Binary files differdeleted file mode 100644 index 4cbf3ed9..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-radiobutton.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-radiodelegate-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-radiodelegate-custom.png Binary files differdeleted file mode 100644 index 7d32699b..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-radiodelegate-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-radiodelegate.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-radiodelegate.gif Binary files differdeleted file mode 100644 index b6afd6fe..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-radiodelegate.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-rangeslider-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-rangeslider-custom.png Binary files differdeleted file mode 100644 index 47379a30..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-rangeslider-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-rangeslider.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-rangeslider.gif Binary files differdeleted file mode 100644 index db565b0a..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-rangeslider.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-roundbutton.png b/src/quickcontrols2/doc/images/qtquickcontrols2-roundbutton.png Binary files differdeleted file mode 100644 index 4dce37f2..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-roundbutton.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-custom.png Binary files differdeleted file mode 100644 index 690bc8be..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-non-attached.png b/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-non-attached.png Binary files differdeleted file mode 100644 index eba363dd..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-non-attached.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-nosnap.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-nosnap.gif Binary files differdeleted file mode 100644 index f61ac5b4..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-nosnap.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-snapalways.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-snapalways.gif Binary files differdeleted file mode 100644 index 438d4a33..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-snapalways.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-snaponrelease.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-snaponrelease.gif Binary files differdeleted file mode 100644 index c2fa67b0..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar-snaponrelease.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar.gif Binary files differdeleted file mode 100644 index ed3ab607..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollbar.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollindicator-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-scrollindicator-custom.png Binary files differdeleted file mode 100644 index b1183bc5..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollindicator-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollindicator-non-attached.png b/src/quickcontrols2/doc/images/qtquickcontrols2-scrollindicator-non-attached.png Binary files differdeleted file mode 100644 index a61e0487..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollindicator-non-attached.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollindicator.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-scrollindicator.gif Binary files differdeleted file mode 100644 index 73007820..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollindicator.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollview-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-scrollview-custom.png Binary files differdeleted file mode 100644 index 8f4bd928..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollview-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollview-wireframe.png b/src/quickcontrols2/doc/images/qtquickcontrols2-scrollview-wireframe.png Binary files differdeleted file mode 100644 index 8a39056a..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollview-wireframe.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollview.png b/src/quickcontrols2/doc/images/qtquickcontrols2-scrollview.png Binary files differdeleted file mode 100644 index 1a4039e1..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-scrollview.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-selectionrectangle.png b/src/quickcontrols2/doc/images/qtquickcontrols2-selectionrectangle.png Binary files differdeleted file mode 100644 index 69e47b29..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-selectionrectangle.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-slider-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-slider-custom.png Binary files differdeleted file mode 100644 index dbbacb34..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-slider-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-slider-handle.png b/src/quickcontrols2/doc/images/qtquickcontrols2-slider-handle.png Binary files differdeleted file mode 100644 index 5450d574..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-slider-handle.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-slider-nosnap.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-slider-nosnap.gif Binary files differdeleted file mode 100644 index ab233c5b..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-slider-nosnap.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-slider-snapalways.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-slider-snapalways.gif Binary files differdeleted file mode 100644 index 8eb4011f..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-slider-snapalways.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-slider-snaponrelease.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-slider-snaponrelease.gif Binary files differdeleted file mode 100644 index f3b1d5c7..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-slider-snaponrelease.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-slider.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-slider.gif Binary files differdeleted file mode 100644 index 2ee56334..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-slider.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-custom.png Binary files differdeleted file mode 100644 index d1e883fc..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-double.png b/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-double.png Binary files differdeleted file mode 100644 index d3f5876c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-double.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-down.png b/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-down.png Binary files differdeleted file mode 100644 index 1d5dcf7b..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-down.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-textual.png b/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-textual.png Binary files differdeleted file mode 100644 index 5513d6e6..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-textual.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-up.png b/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-up.png Binary files differdeleted file mode 100644 index 1ee1c479..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox-up.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox.png b/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox.png Binary files differdeleted file mode 100644 index 835bb1d6..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-spinbox.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-splitview-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-splitview-custom.png Binary files differdeleted file mode 100644 index da820cca..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-splitview-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-custom.png Binary files differdeleted file mode 100644 index 5ee6049e..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-pop.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-pop.gif Binary files differdeleted file mode 100644 index 1971c2e0..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-pop.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-push.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-push.gif Binary files differdeleted file mode 100644 index 0218cc0f..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-push.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-replace.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-replace.gif Binary files differdeleted file mode 100644 index 63a6b2b4..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-replace.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-unwind.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-unwind.gif Binary files differdeleted file mode 100644 index 28c051d8..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-unwind.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-visible.png b/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-visible.png Binary files differdeleted file mode 100644 index d937b417..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-visible.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-wireframe.png b/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-wireframe.png Binary files differdeleted file mode 100644 index f28b5c67..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-stackview-wireframe.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-styles.png b/src/quickcontrols2/doc/images/qtquickcontrols2-styles.png Binary files differdeleted file mode 100644 index 992dd47e..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-styles.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-swipedelegate-behind.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-swipedelegate-behind.gif Binary files differdeleted file mode 100644 index 97d6a592..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-swipedelegate-behind.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-swipedelegate-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-swipedelegate-custom.png Binary files differdeleted file mode 100644 index 5813b73c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-swipedelegate-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-swipedelegate-leading-trailing.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-swipedelegate-leading-trailing.gif Binary files differdeleted file mode 100644 index 0641bd14..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-swipedelegate-leading-trailing.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-swipedelegate.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-swipedelegate.gif Binary files differdeleted file mode 100644 index 86c380b7..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-swipedelegate.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-swipeview-indicator.png b/src/quickcontrols2/doc/images/qtquickcontrols2-swipeview-indicator.png Binary files differdeleted file mode 100644 index 998ec9f7..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-swipeview-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-swipeview-wireframe.png b/src/quickcontrols2/doc/images/qtquickcontrols2-swipeview-wireframe.png Binary files differdeleted file mode 100644 index 3cc2b83c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-swipeview-wireframe.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-swipeview.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-swipeview.gif Binary files differdeleted file mode 100644 index 4af26c10..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-swipeview.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-switch-checked.png b/src/quickcontrols2/doc/images/qtquickcontrols2-switch-checked.png Binary files differdeleted file mode 100644 index 7a0cde1b..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-switch-checked.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-switch-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-switch-custom.png Binary files differdeleted file mode 100644 index 6d535ef9..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-switch-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-switch.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-switch.gif Binary files differdeleted file mode 100644 index 5f956304..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-switch.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-switch.png b/src/quickcontrols2/doc/images/qtquickcontrols2-switch.png Binary files differdeleted file mode 100644 index 7f613f33..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-switch.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-switchdelegate-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-switchdelegate-custom.png Binary files differdeleted file mode 100644 index f5337e2c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-switchdelegate-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-switchdelegate.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-switchdelegate.gif Binary files differdeleted file mode 100644 index 950b1073..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-switchdelegate.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar-custom.png Binary files differdeleted file mode 100644 index 8c8e4acc..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar-explicit.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar-explicit.png Binary files differdeleted file mode 100644 index b1de5f71..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar-explicit.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar-flickable.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar-flickable.png Binary files differdeleted file mode 100644 index 0c253f82..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar-flickable.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar-wireframe.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar-wireframe.png Binary files differdeleted file mode 100644 index 35a64ae2..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar-wireframe.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar.gif Binary files differdeleted file mode 100644 index 31db1f9e..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar.png Binary files differdeleted file mode 100644 index 9f113497..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbar.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbutton.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tabbutton.png Binary files differdeleted file mode 100644 index 3df2f531..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tabbutton.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-textarea-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-textarea-custom.png Binary files differdeleted file mode 100644 index 6220a13f..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-textarea-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-textarea-scrollable.png b/src/quickcontrols2/doc/images/qtquickcontrols2-textarea-scrollable.png Binary files differdeleted file mode 100644 index ae868a27..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-textarea-scrollable.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-textarea.png b/src/quickcontrols2/doc/images/qtquickcontrols2-textarea.png Binary files differdeleted file mode 100644 index fc221bd7..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-textarea.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-textfield-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-textfield-custom.png Binary files differdeleted file mode 100644 index 91023170..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-textfield-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-textfield-disabled.png b/src/quickcontrols2/doc/images/qtquickcontrols2-textfield-disabled.png Binary files differdeleted file mode 100644 index b143d210..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-textfield-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-textfield-focused.png b/src/quickcontrols2/doc/images/qtquickcontrols2-textfield-focused.png Binary files differdeleted file mode 100644 index de7f9599..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-textfield-focused.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-textfield-normal.png b/src/quickcontrols2/doc/images/qtquickcontrols2-textfield-normal.png Binary files differdeleted file mode 100644 index 4229c706..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-textfield-normal.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-textfield.png b/src/quickcontrols2/doc/images/qtquickcontrols2-textfield.png Binary files differdeleted file mode 100644 index a008383a..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-textfield.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-toolbar-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-toolbar-custom.png Binary files differdeleted file mode 100644 index 425e5f8c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-toolbar-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-toolbar.png b/src/quickcontrols2/doc/images/qtquickcontrols2-toolbar.png Binary files differdeleted file mode 100644 index e5a33eee..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-toolbar.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-toolbutton-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-toolbutton-custom.png Binary files differdeleted file mode 100644 index b78269d0..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-toolbutton-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-toolbutton.png b/src/quickcontrols2/doc/images/qtquickcontrols2-toolbutton.png Binary files differdeleted file mode 100644 index 610c1a7c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-toolbutton.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-toolseparator-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-toolseparator-custom.png Binary files differdeleted file mode 100644 index 6703eeba..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-toolseparator-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-toolseparator.png b/src/quickcontrols2/doc/images/qtquickcontrols2-toolseparator.png Binary files differdeleted file mode 100644 index 88ced123..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-toolseparator.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip-delay.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip-delay.png Binary files differdeleted file mode 100644 index 59813835..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip-delay.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip-hover.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip-hover.png Binary files differdeleted file mode 100644 index 62a9cf84..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip-hover.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip-pressandhold.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip-pressandhold.png Binary files differdeleted file mode 100644 index 62a9cf84..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip-pressandhold.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip-slider.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip-slider.png Binary files differdeleted file mode 100644 index a15e723a..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip-slider.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip.png Binary files differdeleted file mode 100644 index 4238d52a..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tooltip.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tumbler-custom.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tumbler-custom.png Binary files differdeleted file mode 100644 index bbfa9b0c..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tumbler-custom.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tumbler-delegate.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tumbler-delegate.png Binary files differdeleted file mode 100644 index a28da93e..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tumbler-delegate.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tumbler-wrap.gif b/src/quickcontrols2/doc/images/qtquickcontrols2-tumbler-wrap.gif Binary files differdeleted file mode 100644 index 8f59eedc..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tumbler-wrap.gif +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-tumbler.png b/src/quickcontrols2/doc/images/qtquickcontrols2-tumbler.png Binary files differdeleted file mode 100644 index 38339dfa..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-tumbler.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-accent.png b/src/quickcontrols2/doc/images/qtquickcontrols2-universal-accent.png Binary files differdeleted file mode 100644 index e1d74f7a..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-accent.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-attributes.png b/src/quickcontrols2/doc/images/qtquickcontrols2-universal-attributes.png Binary files differdeleted file mode 100644 index 7a7ef347..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-attributes.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-background.png b/src/quickcontrols2/doc/images/qtquickcontrols2-universal-background.png Binary files differdeleted file mode 100644 index 4f1bfbd2..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-background.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-button.png b/src/quickcontrols2/doc/images/qtquickcontrols2-universal-button.png Binary files differdeleted file mode 100644 index 6c764ec9..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-button.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-dark.png b/src/quickcontrols2/doc/images/qtquickcontrols2-universal-dark.png Binary files differdeleted file mode 100644 index 952651dc..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-dark.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-foreground.png b/src/quickcontrols2/doc/images/qtquickcontrols2-universal-foreground.png Binary files differdeleted file mode 100644 index b0ecf23a..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-foreground.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-light.png b/src/quickcontrols2/doc/images/qtquickcontrols2-universal-light.png Binary files differdeleted file mode 100644 index e65447a4..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-light.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-theme.png b/src/quickcontrols2/doc/images/qtquickcontrols2-universal-theme.png Binary files differdeleted file mode 100644 index d1281346..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-theme.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-thumbnail.png b/src/quickcontrols2/doc/images/qtquickcontrols2-universal-thumbnail.png Binary files differdeleted file mode 100644 index db7fe5b0..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-thumbnail.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-violet.png b/src/quickcontrols2/doc/images/qtquickcontrols2-universal-violet.png Binary files differdeleted file mode 100644 index ec459457..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-universal-violet.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-windows-thumbnail.png b/src/quickcontrols2/doc/images/qtquickcontrols2-windows-thumbnail.png Binary files differdeleted file mode 100644 index 15408d3b..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-windows-thumbnail.png +++ /dev/null diff --git a/src/quickcontrols2/doc/images/qtquickcontrols2-windows.png b/src/quickcontrols2/doc/images/qtquickcontrols2-windows.png Binary files differdeleted file mode 100644 index 324a0341..00000000 --- a/src/quickcontrols2/doc/images/qtquickcontrols2-windows.png +++ /dev/null diff --git a/src/quickcontrols2/doc/manifest-meta.qdocconf b/src/quickcontrols2/doc/manifest-meta.qdocconf deleted file mode 100644 index 30400da5..00000000 --- a/src/quickcontrols2/doc/manifest-meta.qdocconf +++ /dev/null @@ -1,31 +0,0 @@ -# Additional meta information (attributes for matched entries, as well as tags) -# to be added to manifest.xml files. -# -# manifestmeta.filters = <filter1>,<filter2>,... -# -# manifestmeta.<filter>.names = <Module1>/<name1>,<Module2>/<name2>,.. -# manifestmeta.<filter>.attributes = <attribute1:value1>,<attribute2:value2>,.. -# manifestmeta.<filter>.tags = <tag1>,<tag2>,.. -# -# <filter>.names specify all the module/name combinations to apply the -# attributes/tags to. You can use simple wildcard matching by appending -# '*' at the end of name. -# -# Note: You cannot use operators (+, =, -) in the names. -# -# Examples: add a 'isHighlighted' attribute for two 'Analog Clock' examples, -# add a 'database' tag for QtSql examples, and a 'qt5' tag for all examples -# -# manifestmeta.filters = highlighted sql global -# -# manifestmeta.highlighted.names = "QtGui/Analog Clock Window Example" \ -# "QtWidgets/Analog Clock Example" -# manifestmeta.highlighted.attributes = isHighlighted:true -# -# manifestmeta.sql.names = "QtSql/*" -# manifestmeta.sql.tags = database -# -# manifestmeta.global.names = * -# manifestmeta.global.tags = qt5 - -manifestmeta.highlighted.names = "QtQuickControls/Qt Quick Controls - Gallery" diff --git a/src/quickcontrols2/doc/qtquickcontrols.qdocconf b/src/quickcontrols2/doc/qtquickcontrols.qdocconf deleted file mode 100644 index 3078730c..00000000 --- a/src/quickcontrols2/doc/qtquickcontrols.qdocconf +++ /dev/null @@ -1,104 +0,0 @@ -include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) -include($QT_INSTALL_DOCS/config/exampleurl-qtquickcontrols2.qdocconf) -include(manifest-meta.qdocconf) - -moduleheader = QtQuickControls2 - -project = QtQuickControls -description = Qt Quick Controls Reference Documentation -version = $QT_VERSION - -qhp.projects = QtQuickControls - -qhp.QtQuickControls.file = qtquickcontrols.qhp -qhp.QtQuickControls.namespace = org.qt-project.qtquickcontrols.$QT_VERSION_TAG -qhp.QtQuickControls.virtualFolder = qtquickcontrols -qhp.QtQuickControls.indexTitle = Qt Quick Controls -qhp.QtQuickControls.indexRoot = - -qhp.QtQuickControls.filterAttributes = qtquickcontrols $QT_VERSION qtrefdoc -qhp.QtQuickControls.customFilters.Qt.name = QtQuickControls $QT_VERSION -qhp.QtQuickControls.customFilters.Qt.filterAttributes = qtquickcontrols $QT_VERSION - -qhp.QtQuickControls.subprojects = qmltypes classes examples -qhp.QtQuickControls.subprojects.qmltypes.title = QML Types -qhp.QtQuickControls.subprojects.qmltypes.indexTitle = Qt Quick Controls QML Types -qhp.QtQuickControls.subprojects.qmltypes.selectors = qmlclass -qhp.QtQuickControls.subprojects.qmltypes.sortPages = true -qhp.QtQuickControls.subprojects.classes.title = C++ Classes -qhp.QtQuickControls.subprojects.classes.indexTitle = Qt Quick Controls C++ Classes -qhp.QtQuickControls.subprojects.classes.selectors = class fake:headerfile -qhp.QtQuickControls.subprojects.classes.sortPages = true -qhp.QtQuickControls.subprojects.examples.title = Examples -qhp.QtQuickControls.subprojects.examples.indexTitle = Qt Quick Controls Examples -qhp.QtQuickControls.subprojects.examples.selectors = fake:example - -depends = qtcore qtgui qtdoc qtqml qtqmlmodels qtquick qtsql qtwidgets qtlabsplatform qmake qtcmake - -# Specify the install path under QT_INSTALL_EXAMPLES -# Note: paths passed to \example command must contain the parent directory, e.g. -# \example controls/tabs -exampledirs += ../../../examples/quickcontrols2 \ - ../../quicktemplates2 \ - snippets - -examples.fileextensions += "*.conf" - -examplesinstallpath = quickcontrols2 - -headerdirs += ../../quicktemplates2 \ - .. - -sourcedirs += ../../quicktemplates2 \ - .. \ - ../../quicktemplates2/doc/src \ - src - -# Exclude .qml files from the doc build to prevent conflicts with .qml files -# in style-specific directories; all types are documented in .cpp/.qdoc files -sources.fileextensions = "*.c++ *.cc *.cpp *.cxx *.mm *.qdoc" - -imagedirs += images \ - .. - -navigation.landingpage = "Qt Quick Controls" -navigation.qmltypespage = "Qt Quick Controls QML Types" -navigation.cppclassespage = "Qt Quick Controls C++ Classes" - -tagfile = qtquickcontrols.tags - -# \styleimport {QtQuick.Controls.Universal 2.0} -macro.styleimport.HTML = "<table class=\"alignedsummary\"><tbody><tr><td class=\"memItemLeft rightAlign topAlign\"> Import Statement:</td><td class=\"memItemRight bottomAlign\"> import \1</td></tr><tr><td class=\"memItemLeft rightAlign topAlign\"> Since:</td><td class=\"memItemRight bottomAlign\"> \2</td></tr></tbody></table>" - -# \styleproperty {Universal.accent} {enumeration} {html-target-id} -# \target html-target-id -# This property holds ... -# (empty line) -# \endstyleproperty -macro.styleproperty.HTML = "<div class=\"qmlproto\"><table class=\"qmlname\"><tbody><tr valign=\"top\" class=\"odd\" id=\"\3\"><td class=\"tblQmlPropNode\"><p><span class=\"name\">\1</span> : <span class=\"type\">\2</span></p></td></tr></tbody></table></div>" -macro.endstyleproperty = "\\br" - -# \stylemethod {returntype} {methodname} {argtype} {argname} {html-target-id} -# \target html-target-id -# This property holds ... -# (empty line) -# \endstylemethod -macro.stylemethod.HTML = "<div class=\"qmlproto\"><table class=\"qmlname\"><tbody><tr valign=\"top\" class=\"odd\" id=\"\5\"><td class=\"tblQmlFuncNode\"><p><span class=\"type\">\1</span> <span class=\"name\">\2</span>(<span class="type">\3</span> <i>\4</i>)</p></td></tr></tbody></table></div>" -macro.endstylemethod = "\\br" - -# \stylemethod2 {returntype} {methodname} {arg1type} {arg1name} {arg2type} {arg2name} {html-target-id} -# \target html-target-id -# This method returns ... -# (empty line) -# \endstylemethod2 -macro.stylemethod2.HTML = "<div class=\"qmlproto\"><table class=\"qmlname\"><tbody><tr valign=\"top\" class=\"odd\" id=\"\7\"><td class=\"tblQmlFuncNode\"><p><span class=\"type\">\1</span> <span class=\"name\">\2</span>(<span class="type">\3</span> <i>\4</i>, <span class="type">\5</span> <i>\6</i>)</p></td></tr></tbody></table></div>" -macro.endstylemethod2 = "\\br" - -# \stylecolor {#6A00FF} {(default)} -macro.stylecolor.HTML = "<div style=\"padding:10px;color:#fff;background:\1;\">\1 \2</div>" - -macro.nbsp.HTML = " " - -#Add output suffix to the html filenames -outputsuffixes = QML -outputsuffixes.QML = 2 diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-action.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-action.qml deleted file mode 100644 index 1b65a824..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-action.qml +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - //! [action] - Action { - id: copyAction - text: qsTr("&Copy") - icon.name: "edit-copy" - shortcut: StandardKey.Copy - onTriggered: window.activeFocusItem.copy() - } - //! [action] - - //! [toolbutton] - ToolButton { - id: toolButton - action: copyAction - } - //! [toolbutton] - - //! [menuitem] - MenuItem { - id: menuItem - action: copyAction - text: qsTr("&Copy selected Text") - } - //! [menuitem] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-busyindicator-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-busyindicator-custom.qml deleted file mode 100644 index 8daffed7..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-busyindicator-custom.qml +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -BusyIndicator { - id: control - - contentItem: Item { - implicitWidth: 64 - implicitHeight: 64 - - Item { - id: item - x: parent.width / 2 - 32 - y: parent.height / 2 - 32 - width: 64 - height: 64 - opacity: control.running ? 1 : 0 - - Behavior on opacity { - OpacityAnimator { - duration: 250 - } - } - - RotationAnimator { - target: item - running: control.visible && control.running - from: 0 - to: 360 - loops: Animation.Infinite - duration: 1250 - } - - Repeater { - id: repeater - model: 6 - - Rectangle { - x: item.width / 2 - width / 2 - y: item.height / 2 - height / 2 - implicitWidth: 10 - implicitHeight: 10 - radius: 5 - color: "#21be2b" - transform: [ - Translate { - y: -Math.min(item.width, item.height) * 0.5 + 5 - }, - Rotation { - angle: index / repeater.count * 360 - origin.x: 5 - origin.y: 5 - } - ] - } - } - } - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-button-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-button-custom.qml deleted file mode 100644 index 095657b5..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-button-custom.qml +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -Button { - id: control - text: qsTr("Button") - - contentItem: Text { - text: control.text - font: control.font - opacity: enabled ? 1.0 : 0.3 - color: control.down ? "#17a81a" : "#21be2b" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - opacity: enabled ? 1 : 0.3 - border.color: control.down ? "#17a81a" : "#21be2b" - border.width: 1 - radius: 2 - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-button-icononly.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-button-icononly.qml deleted file mode 100644 index d7400005..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-button-icononly.qml +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Button { - icon.source: "qrc:/qt-project.org/imports/QtQuick/Controls/Basic/images/check.png" - display: Button.IconOnly -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-button-textbesideicon.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-button-textbesideicon.qml deleted file mode 100644 index 3e2aa619..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-button-textbesideicon.qml +++ /dev/null @@ -1,35 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Button { - text: "Button" - icon.source: "qrc:/qt-project.org/imports/QtQuick/Controls/Basic/images/check.png" - display: Button.TextBesideIcon -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-button-textonly.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-button-textonly.qml deleted file mode 100644 index 59054f77..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-button-textonly.qml +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Button { - text: "Button" - display: Button.TextOnly -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-checkbox-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-checkbox-custom.qml deleted file mode 100644 index 93ebe46d..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-checkbox-custom.qml +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -CheckBox { - id: control - text: qsTr("CheckBox") - checked: true - - indicator: Rectangle { - implicitWidth: 26 - implicitHeight: 26 - x: control.leftPadding - y: parent.height / 2 - height / 2 - radius: 3 - border.color: control.down ? "#17a81a" : "#21be2b" - - Rectangle { - width: 14 - height: 14 - x: 6 - y: 6 - radius: 2 - color: control.down ? "#17a81a" : "#21be2b" - visible: control.checked - } - } - - contentItem: Text { - text: control.text - font: control.font - opacity: enabled ? 1.0 : 0.3 - color: control.down ? "#17a81a" : "#21be2b" - verticalAlignment: Text.AlignVCenter - leftPadding: control.indicator.width + control.spacing - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-checkbox-group.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-checkbox-group.qml deleted file mode 100644 index c5032165..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-checkbox-group.qml +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -Column { - ButtonGroup { - id: childGroup - exclusive: false - checkState: parentBox.checkState - } - - CheckBox { - id: parentBox - text: qsTr("Parent") - checkState: childGroup.checkState - } - - CheckBox { - checked: true - text: qsTr("Child 1") - leftPadding: indicator.width - ButtonGroup.group: childGroup - } - - CheckBox { - text: qsTr("Child 2") - leftPadding: indicator.width - ButtonGroup.group: childGroup - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-checkdelegate-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-checkdelegate-custom.qml deleted file mode 100644 index 91970f52..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-checkdelegate-custom.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -CheckDelegate { - id: control - text: qsTr("CheckDelegate") - checked: true - - contentItem: Text { - rightPadding: control.indicator.width + control.spacing - text: control.text - font: control.font - opacity: enabled ? 1.0 : 0.3 - color: control.down ? "#17a81a" : "#21be2b" - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - indicator: Rectangle { - implicitWidth: 26 - implicitHeight: 26 - x: control.width - width - control.rightPadding - y: control.topPadding + control.availableHeight / 2 - height / 2 - radius: 3 - color: "transparent" - border.color: control.down ? "#17a81a" : "#21be2b" - - Rectangle { - width: 14 - height: 14 - x: 6 - y: 6 - radius: 2 - color: control.down ? "#17a81a" : "#21be2b" - visible: control.checked - } - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - visible: control.down || control.highlighted - color: control.down ? "#bdbebf" : "#eeeeee" - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-accepted.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-accepted.qml deleted file mode 100644 index b420e3a5..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-accepted.qml +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2019 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [combobox] -ComboBox { - editable: true - model: ListModel { - id: model - ListElement { text: "Banana" } - ListElement { text: "Apple" } - ListElement { text: "Coconut" } - } - onAccepted: { - if (find(editText) === -1) - model.append({text: editText}) - } -} -//! [combobox] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-custom.qml deleted file mode 100644 index fea7e6d5..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-custom.qml +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -ComboBox { - id: control - model: ["First", "Second", "Third"] - - delegate: ItemDelegate { - width: control.width - contentItem: Text { - text: modelData - color: "#21be2b" - font: control.font - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - highlighted: control.highlightedIndex === index - } - - indicator: Canvas { - id: canvas - x: control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 - width: 12 - height: 8 - contextType: "2d" - - Connections { - target: control - function onPressedChanged() { canvas.requestPaint(); } - } - - onPaint: { - context.reset(); - context.moveTo(0, 0); - context.lineTo(width, 0); - context.lineTo(width / 2, height); - context.closePath(); - context.fillStyle = control.pressed ? "#17a81a" : "#21be2b"; - context.fill(); - } - } - - contentItem: Text { - leftPadding: 0 - rightPadding: control.indicator.width + control.spacing - - text: control.displayText - font: control.font - color: control.pressed ? "#17a81a" : "#21be2b" - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - background: Rectangle { - implicitWidth: 120 - implicitHeight: 40 - border.color: control.pressed ? "#17a81a" : "#21be2b" - border.width: control.visualFocus ? 2 : 1 - radius: 2 - } - - popup: Popup { - y: control.height - 1 - width: control.width - implicitHeight: contentItem.implicitHeight - padding: 1 - - contentItem: ListView { - clip: true - implicitHeight: contentHeight - model: control.popup.visible ? control.delegateModel : null - currentIndex: control.highlightedIndex - - ScrollIndicator.vertical: ScrollIndicator { } - } - - background: Rectangle { - border.color: "#21be2b" - radius: 2 - } - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-find.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-find.qml deleted file mode 100644 index c14ebbbe..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-find.qml +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [find] -ComboBox { - model: ListModel { - ListElement { text: "Banana" } - ListElement { text: "Apple" } - ListElement { text: "Coconut" } - } - Component.onCompleted: currentIndex = find("Coconut") -} -//! [find] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-textat.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-textat.qml deleted file mode 100644 index 524886d0..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-textat.qml +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [textat] -ComboBox { - model: ListModel { - ListElement { text: "Banana" } - ListElement { text: "Apple" } - ListElement { text: "Coconut" } - } - onActivated: (index) => { print(textAt(index)) } -} -//! [textat] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-valuerole.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-valuerole.qml deleted file mode 100644 index a4c40c0f..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-combobox-valuerole.qml +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2019 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [file] -ApplicationWindow { - width: 640 - height: 480 - visible: true - - // Used as an example of a backend - this would usually be - // e.g. a C++ type exposed to QML. - QtObject { - id: backend - property int modifier - } - - ComboBox { - textRole: "text" - valueRole: "value" - // When an item is selected, update the backend. - onActivated: backend.modifier = currentValue - // Set the initial currentIndex to the value stored in the backend. - Component.onCompleted: currentIndex = indexOfValue(backend.modifier) - model: [ - { value: Qt.NoModifier, text: qsTr("No modifier") }, - { value: Qt.ShiftModifier, text: qsTr("Shift") }, - { value: Qt.ControlModifier, text: qsTr("Control") } - ] - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-delaybutton-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-delaybutton-custom.qml deleted file mode 100644 index 0b86f1d0..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-delaybutton-custom.qml +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -DelayButton { - id: control - checked: true - text: qsTr("Delay\nButton") - - contentItem: Text { - text: control.text - font: control.font - opacity: enabled ? 1.0 : 0.3 - color: "white" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 100 - opacity: enabled ? 1 : 0.3 - color: control.down ? "#17a81a" : "#21be2b" - radius: size / 2 - - readonly property real size: Math.min(control.width, control.height) - width: size - height: size - anchors.centerIn: parent - - Canvas { - id: canvas - anchors.fill: parent - - Connections { - target: control - function onProgressChanged() { canvas.requestPaint(); } - } - - onPaint: { - var ctx = getContext("2d") - ctx.clearRect(0, 0, width, height) - ctx.strokeStyle = "white" - ctx.lineWidth = parent.size / 20 - ctx.beginPath() - var startAngle = Math.PI / 5 * 3 - var endAngle = startAngle + control.progress * Math.PI / 5 * 9 - ctx.arc(width / 2, height / 2, width / 2 - ctx.lineWidth / 2 - 2, startAngle, endAngle) - ctx.stroke() - } - } - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-dial-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-dial-custom.qml deleted file mode 100644 index 170e9ccf..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-dial-custom.qml +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -Dial { - id: control - background: Rectangle { - x: control.width / 2 - width / 2 - y: control.height / 2 - height / 2 - width: Math.max(64, Math.min(control.width, control.height)) - height: width - color: "transparent" - radius: width / 2 - border.color: control.pressed ? "#17a81a" : "#21be2b" - opacity: control.enabled ? 1 : 0.3 - } - - handle: Rectangle { - id: handleItem - x: control.background.x + control.background.width / 2 - width / 2 - y: control.background.y + control.background.height / 2 - height / 2 - width: 16 - height: 16 - color: control.pressed ? "#17a81a" : "#21be2b" - radius: 8 - antialiasing: true - opacity: control.enabled ? 1 : 0.3 - transform: [ - Translate { - y: -Math.min(control.background.width, control.background.height) * 0.4 + handleItem.height / 2 - }, - Rotation { - angle: control.angle - origin.x: handleItem.width / 2 - origin.y: handleItem.height / 2 - } - ] - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialog-modal.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialog-modal.qml deleted file mode 100644 index d60e4e30..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialog-modal.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: dialog.implicitWidth - height: dialog.implicitHeight -//! [1] -Dialog { - id: dialog - modal: true - standardButtons: Dialog.Ok -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialog-modeless.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialog-modeless.qml deleted file mode 100644 index 6acb74e5..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialog-modeless.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: dialog.implicitWidth - height: dialog.implicitHeight -//! [1] -Dialog { - id: dialog - modal: false - standardButtons: Dialog.Ok -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialog.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialog.qml deleted file mode 100644 index 13fbb0e8..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialog.qml +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: dialog.implicitWidth - height: dialog.implicitHeight -//! [1] -Dialog { - id: dialog - title: "Title" - standardButtons: Dialog.Ok | Dialog.Cancel - - onAccepted: console.log("Ok clicked") - onRejected: console.log("Cancel clicked") -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialogbuttonbox-attached.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialogbuttonbox-attached.qml deleted file mode 100644 index 45a0b9e9..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialogbuttonbox-attached.qml +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -DialogButtonBox { - Button { - text: qsTr("Save") - DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole - } - Button { - text: qsTr("Close") - DialogButtonBox.buttonRole: DialogButtonBox.DestructiveRole - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialogbuttonbox.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialogbuttonbox.qml deleted file mode 100644 index bcfd405b..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-dialogbuttonbox.qml +++ /dev/null @@ -1,38 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -DialogButtonBox { - standardButtons: DialogButtonBox.Ok | DialogButtonBox.Cancel - - onAccepted: console.log("Ok clicked") - onRejected: console.log("Cancel clicked") -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-frame-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-frame-custom.qml deleted file mode 100644 index 798f95da..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-frame-custom.qml +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -Frame { - background: Rectangle { - color: "transparent" - border.color: "#21be2b" - radius: 2 - } - - Label { - text: qsTr("Content goes here!") - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-frame.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-frame.qml deleted file mode 100644 index 71b9b310..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-frame.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls - -//! [1] -Frame { - ColumnLayout { - anchors.fill: parent - CheckBox { text: qsTr("E-mail") } - CheckBox { text: qsTr("Calendar") } - CheckBox { text: qsTr("Contacts") } - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-groupbox-checkable.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-groupbox-checkable.qml deleted file mode 100644 index 91689d9f..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-groupbox-checkable.qml +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls - -//! [1] -GroupBox { - label: CheckBox { - id: checkBox - checked: true - text: qsTr("Synchronize") - } - - ColumnLayout { - anchors.fill: parent - enabled: checkBox.checked - CheckBox { text: qsTr("E-mail") } - CheckBox { text: qsTr("Calendar") } - CheckBox { text: qsTr("Contacts") } - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-groupbox-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-groupbox-custom.qml deleted file mode 100644 index e3355b23..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-groupbox-custom.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -GroupBox { - id: control - title: qsTr("GroupBox") - - background: Rectangle { - y: control.topPadding - control.bottomPadding - width: parent.width - height: parent.height - control.topPadding + control.bottomPadding - color: "transparent" - border.color: "#21be2b" - radius: 2 - } - - label: Label { - x: control.leftPadding - width: control.availableWidth - text: control.title - color: "#21be2b" - elide: Text.ElideRight - } - - Label { - text: qsTr("Content goes here!") - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-groupbox.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-groupbox.qml deleted file mode 100644 index e9f1c7dc..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-groupbox.qml +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls - -//! [1] -GroupBox { - title: qsTr("Synchronize") - ColumnLayout { - anchors.fill: parent - CheckBox { text: qsTr("E-mail") } - CheckBox { text: qsTr("Calendar") } - CheckBox { text: qsTr("Contacts") } - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-headerview-simple.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-headerview-simple.qml deleted file mode 100644 index 6878904f..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-headerview-simple.qml +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//![file] -import QtQuick -import QtQuick.Controls -import Qt.labs.qmlmodels - -ApplicationWindow { - visible: true - width: 640 - height: 480 - - //! [horizontal] - HorizontalHeaderView { - id: horizontalHeader - syncView: tableView - anchors.left: tableView.left - } - //! [horizontal] - - //! [vertical] - VerticalHeaderView { - id: verticalHeader - syncView: tableView - anchors.top: tableView.top - } - //! [vertical] - - TableView { - id: tableView - anchors.fill: parent - anchors.topMargin: horizontalHeader.height - anchors.leftMargin: verticalHeader.width - columnSpacing: 1 - rowSpacing: 1 - clip: true - - model: TableModel { - TableModelColumn { display: "name" } - TableModelColumn { display: "color" } - - rows: [ - { - "name": "cat", - "color": "black" - }, - { - "name": "dog", - "color": "brown" - }, - { - "name": "bird", - "color": "white" - } - ] - } - - delegate: Rectangle { - implicitWidth: 100 - implicitHeight: 50 - border.width: 1 - - Text { - text: display - anchors.centerIn: parent - } - } - } -} - -//![file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-itemdelegate-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-itemdelegate-custom.qml deleted file mode 100644 index fd52b46f..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-itemdelegate-custom.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -ItemDelegate { - id: control - text: qsTr("ItemDelegate") - - contentItem: Text { - rightPadding: control.spacing - text: control.text - font: control.font - color: control.enabled ? (control.down ? "#17a81a" : "#21be2b") : "#bdbebf" - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - opacity: enabled ? 1 : 0.3 - color: control.down ? "#dddedf" : "#eeeeee" - - Rectangle { - width: parent.width - height: 1 - color: control.down ? "#17a81a" : "#21be2b" - anchors.bottom: parent.bottom - } - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-itemdelegate.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-itemdelegate.qml deleted file mode 100644 index 70d6104f..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-itemdelegate.qml +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -ListView { - width: 160 - height: 240 - - model: Qt.fontFamilies() - - delegate: ItemDelegate { - text: modelData - width: parent.width - onClicked: console.log("clicked:", modelData) - } - - ScrollIndicator.vertical: ScrollIndicator { } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-label-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-label-custom.qml deleted file mode 100644 index cc88d00f..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-label-custom.qml +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -Label { - text: qsTr("Label") - color: "#21be2b" -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-label.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-label.qml deleted file mode 100644 index c492af50..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-label.qml +++ /dev/null @@ -1,35 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -Label { - text: "Label" -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-accent.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-accent.qml deleted file mode 100644 index aa4c62b8..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-accent.qml +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import QtQuick.Controls.Material - -Pane { - padding: 4 - -//! [1] -Button { - text: qsTr("Button") - highlighted: true - Material.accent: Material.Orange -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-background.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-background.qml deleted file mode 100644 index f64e48d2..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-background.qml +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.Material - -Pane { - padding: 4 - -//! [1] -Button { - text: qsTr("Button") - highlighted: true - Material.background: Material.Teal -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-elevation.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-elevation.qml deleted file mode 100644 index f9e189f1..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-elevation.qml +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.Material - -Pane { - contentWidth: 120 - contentHeight: 120 - padding: 10 - bottomPadding: 20 - -//! [1] -Pane { - width: 120 - height: 120 - - Material.elevation: 6 - - Label { - text: qsTr("I'm a card!") - anchors.centerIn: parent - } -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-foreground.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-foreground.qml deleted file mode 100644 index 070576f5..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-foreground.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.Material - -Pane { - padding: 4 - -//! [1] -Button { - text: qsTr("Button") - Material.foreground: Material.Pink -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-theme.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-theme.qml deleted file mode 100644 index 586433c3..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-theme.qml +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.Material - -Pane { - padding: 10 - -//! [1] -Pane { - Material.theme: Material.Dark - - Button { - text: qsTr("Button") - } -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-variant.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-variant.qml deleted file mode 100644 index 1283fb43..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-material-variant.qml +++ /dev/null @@ -1,212 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.Material -import QtQuick.Layouts - -Pane { - implicitWidth: 400 - implicitHeight: 600 - padding: 10 - - readonly property color measurementColor: "darkorange" - readonly property int barLeftMargin: 10 - readonly property int textTopMargin: 12 - - Component { - id: measurementComponent - - Rectangle { - color: measurementColor - width: 1 - height: parent.height - - Rectangle { - width: 5 - height: 1 - color: measurementColor - anchors.horizontalCenter: parent.horizontalCenter - } - - Rectangle { - width: 5 - height: 1 - color: measurementColor - anchors.horizontalCenter: parent.horizontalCenter - anchors.bottom: parent.bottom - } - - Text { - x: 8 - text: parent.height - height: parent.height - color: measurementColor - verticalAlignment: Text.AlignVCenter - } - } - } - - ColumnLayout { - anchors.fill: parent - spacing: 20 - - ColumnLayout { - spacing: textTopMargin - - Button { - id: button - text: qsTr("Button") - - Loader { - sourceComponent: measurementComponent - height: parent.height - anchors.left: parent.right - anchors.leftMargin: barLeftMargin - } - - } - Text { - text: "Roboto " + button.font.pixelSize - color: measurementColor - } - } - - ColumnLayout { - spacing: textTopMargin - - ItemDelegate { - id: itemDelegate - text: qsTr("ItemDelegate") - - Loader { - sourceComponent: measurementComponent - height: parent.height - anchors.left: parent.right - anchors.leftMargin: barLeftMargin - } - - } - Text { - text: "Roboto " + itemDelegate.font.pixelSize - color: measurementColor - } - } - - ColumnLayout { - spacing: textTopMargin - - CheckDelegate { - id: checkDelegate - text: qsTr("CheckDelegate") - - Loader { - sourceComponent: measurementComponent - height: parent.height - anchors.left: parent.right - anchors.leftMargin: barLeftMargin - } - - } - Text { - text: "Roboto " + checkDelegate.font.pixelSize - color: measurementColor - } - } - - ColumnLayout { - spacing: textTopMargin - - RadioDelegate { - id: radioDelegate - text: qsTr("RadioDelegate") - - Loader { - sourceComponent: measurementComponent - height: parent.height - anchors.left: parent.right - anchors.leftMargin: barLeftMargin - } - - } - Text { - text: "Roboto " + radioDelegate.font.pixelSize - color: measurementColor - } - } - - ColumnLayout { - spacing: textTopMargin - - ComboBox { - id: comboBox - model: [ qsTr("ComboBox") ] - - Loader { - sourceComponent: measurementComponent - height: parent.height - anchors.left: parent.right - anchors.leftMargin: barLeftMargin - } - - } - Text { - text: "Roboto " + comboBox.font.pixelSize - color: measurementColor - } - } - - ColumnLayout { - spacing: textTopMargin - - Item { - implicitWidth: groupBox.implicitWidth - implicitHeight: groupBox.implicitHeight - - GroupBox { - id: groupBox - title: qsTr("GroupBox") - } - Loader { - sourceComponent: measurementComponent - height: parent.height - anchors.left: parent.right - anchors.leftMargin: barLeftMargin - } - } - Text { - text: "Roboto " + groupBox.font.pixelSize - color: measurementColor - } - } - - Item { - Layout.fillHeight: true - } - } -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-menu-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-menu-custom.qml deleted file mode 100644 index 3e766e8a..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-menu-custom.qml +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -ApplicationWindow { - id: window - width: menu.width - height: menu.height - visible: true - - Component.onCompleted: menu.popup(menu.itemAt(1)) - -// Indent it like this so that the indenting in the generated doc is normal. -Menu { - id: menu - - Action { text: qsTr("Tool Bar"); checkable: true } - Action { text: qsTr("Side Bar"); checkable: true; checked: true } - Action { text: qsTr("Status Bar"); checkable: true; checked: true } - - MenuSeparator { - contentItem: Rectangle { - implicitWidth: 200 - implicitHeight: 1 - color: "#21be2b" - } - } - - Menu { - title: qsTr("Advanced") - // ... - } - - topPadding: 2 - bottomPadding: 2 - - delegate: MenuItem { - id: menuItem - implicitWidth: 200 - implicitHeight: 40 - - arrow: Canvas { - x: parent.width - width - implicitWidth: 40 - implicitHeight: 40 - visible: menuItem.subMenu - onPaint: { - var ctx = getContext("2d") - ctx.fillStyle = menuItem.highlighted ? "#ffffff" : "#21be2b" - ctx.moveTo(15, 15) - ctx.lineTo(width - 15, height / 2) - ctx.lineTo(15, height - 15) - ctx.closePath() - ctx.fill() - } - } - - indicator: Item { - implicitWidth: 40 - implicitHeight: 40 - Rectangle { - width: 26 - height: 26 - anchors.centerIn: parent - visible: menuItem.checkable - border.color: "#21be2b" - radius: 3 - Rectangle { - width: 14 - height: 14 - anchors.centerIn: parent - visible: menuItem.checked - color: "#21be2b" - radius: 2 - } - } - } - - contentItem: Text { - leftPadding: menuItem.indicator.width - rightPadding: menuItem.arrow.width - text: menuItem.text - font: menuItem.font - opacity: enabled ? 1.0 : 0.3 - color: menuItem.highlighted ? "#ffffff" : "#21be2b" - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 40 - opacity: enabled ? 1 : 0.3 - color: menuItem.highlighted ? "#21be2b" : "transparent" - } - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 40 - color: "#ffffff" - border.color: "#21be2b" - radius: 2 - } -} -} //! [eof] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-menubar-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-menubar-custom.qml deleted file mode 100644 index 4b3d641e..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-menubar-custom.qml +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -ApplicationWindow { - id: window - visible: true - width: menuBar.implicitWidth - height: menuBar.height - - Component.onCompleted: menuBar.itemAt(1).highlighted = true - - header: - -// Indent it like this so that the indenting in the generated doc is normal. -MenuBar { - id: menuBar - - Menu { title: qsTr("File") } - Menu { title: qsTr("Edit") } - Menu { title: qsTr("View") } - Menu { title: qsTr("Help") } - - delegate: MenuBarItem { - id: menuBarItem - - contentItem: Text { - text: menuBarItem.text - font: menuBarItem.font - opacity: enabled ? 1.0 : 0.3 - color: menuBarItem.highlighted ? "#ffffff" : "#21be2b" - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - background: Rectangle { - implicitWidth: 40 - implicitHeight: 40 - opacity: enabled ? 1 : 0.3 - color: menuBarItem.highlighted ? "#21be2b" : "transparent" - } - } - - background: Rectangle { - implicitWidth: 40 - implicitHeight: 40 - color: "#ffffff" - - Rectangle { - color: "#21be2b" - width: parent.width - height: 1 - anchors.bottom: parent.bottom - } - } -} -} //! [eof] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-menubar.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-menubar.qml deleted file mode 100644 index 7ae22ae8..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-menubar.qml +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [begin] -ApplicationWindow { - id: window - width: 320 - height: 260 - visible: true - - //! [skipfrom] - Component.onCompleted: { - menuBar.itemAt(0).triggered() - menuBar.itemAt(0).menu.itemAt(2).highlighted = true - } - //! [skipto] - - menuBar: MenuBar { - Menu { - title: qsTr("&File") - Action { text: qsTr("&New...") } - Action { text: qsTr("&Open...") } - Action { text: qsTr("&Save") } - Action { text: qsTr("Save &As...") } - MenuSeparator { } - Action { text: qsTr("&Quit") } - } - Menu { - title: qsTr("&Edit") - Action { text: qsTr("Cu&t") } - Action { text: qsTr("&Copy") } - Action { text: qsTr("&Paste") } - } - Menu { - title: qsTr("&Help") - Action { text: qsTr("&About") } - } - } -} -//! [end] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-menuseparator-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-menuseparator-custom.qml deleted file mode 100644 index fa7fa14a..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-menuseparator-custom.qml +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -Item { - id: window - width: menu.contentItem.width - height: menu.contentItem.height - visible: true - -// Indent it like this so that the indenting in the generated doc is normal. -Menu { - id: menu - contentItem.parent: window - - MenuItem { - text: qsTr("New...") - } - MenuItem { - text: qsTr("Open...") - } - MenuItem { - text: qsTr("Save") - } - - MenuSeparator { - padding: 0 - topPadding: 12 - bottomPadding: 12 - contentItem: Rectangle { - implicitWidth: 200 - implicitHeight: 1 - color: "#1E000000" - } - } - - MenuItem { - text: qsTr("Exit") - } -} -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-menuseparator.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-menuseparator.qml deleted file mode 100644 index cd5d5441..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-menuseparator.qml +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -Item { - id: window - width: menu.contentItem.width - height: menu.contentItem.height - visible: true - -// Indent it like this so that the indenting in the generated doc is normal. -Menu { - id: menu - contentItem.parent: window - - MenuItem { - text: qsTr("New...") - } - MenuItem { - text: qsTr("Open...") - } - MenuItem { - text: qsTr("Save") - } - - MenuSeparator {} - - MenuItem { - text: qsTr("Exit") - } -} -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-overlay-modal.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-overlay-modal.qml deleted file mode 100644 index 9751f057..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-overlay-modal.qml +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Window - -Item { - id: root - width: 200 - height: 200 - - Binding { - target: popup - property: "visible" - value: root.Window.active - } -//! [1] -Popup { - id: popup - width: 400 - height: 400 - modal: true - visible: true - - Overlay.modal: Rectangle { - color: "#aacfdbe7" - } -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-overlay-modeless.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-overlay-modeless.qml deleted file mode 100644 index a4951d13..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-overlay-modeless.qml +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Window - -Item { - id: root - width: 200 - height: 200 - - Binding { - target: popup - property: "visible" - value: root.Window.active - } -//! [1] -Popup { - id: popup - width: 400 - height: 400 - dim: true - visible: true - - Overlay.modeless: Rectangle { - color: "#aacfdbe7" - } -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-overview.cmake b/src/quickcontrols2/doc/snippets/qtquickcontrols2-overview.cmake deleted file mode 100644 index 5bbbcff5..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-overview.cmake +++ /dev/null @@ -1,4 +0,0 @@ -#! [0] -find_package(Qt6 COMPONENTS QuickControls2 REQUIRED) -target_link_libraries(mytarget PRIVATE Qt6::QuickControls2) -#! [0] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-pageindicator-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-pageindicator-custom.qml deleted file mode 100644 index ba0d2db9..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-pageindicator-custom.qml +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -PageIndicator { - id: control - count: 5 - currentIndex: 2 - - delegate: Rectangle { - implicitWidth: 8 - implicitHeight: 8 - - radius: width / 2 - color: "#21be2b" - - opacity: index === control.currentIndex ? 0.95 : pressed ? 0.7 : 0.45 - - Behavior on opacity { - OpacityAnimator { - duration: 100 - } - } - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-pageindicator-interactive.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-pageindicator-interactive.qml deleted file mode 100644 index 8f2221ee..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-pageindicator-interactive.qml +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick.Controls - -Pane { -//! [1] -SwipeView { - id: view - currentIndex: pageIndicator.currentIndex - anchors.fill: parent - - Page { - title: qsTr("Home") - } - Page { - title: qsTr("Discover") - } - Page { - title: qsTr("Activity") - } -} - -PageIndicator { - id: pageIndicator - interactive: true - count: view.count - currentIndex: view.currentIndex - - anchors.bottom: parent.bottom - anchors.horizontalCenter: parent.horizontalCenter -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-pageindicator.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-pageindicator.qml deleted file mode 100644 index b3912efe..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-pageindicator.qml +++ /dev/null @@ -1,35 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ -import QtQuick -import QtQuick.Controls - -//! [1] -PageIndicator { - count: 5 - currentIndex: 2 -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-pane-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-pane-custom.qml deleted file mode 100644 index 855423c4..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-pane-custom.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -Pane { - background: Rectangle { - color: "#eeeeee" - } - - Label { - text: qsTr("Content goes here!") - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-pane.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-pane.qml deleted file mode 100644 index a8c8672e..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-pane.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls - -//! [1] -Pane { - ColumnLayout { - anchors.fill: parent - CheckBox { text: qsTr("E-mail") } - CheckBox { text: qsTr("Calendar") } - CheckBox { text: qsTr("Contacts") } - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-popup-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-popup-custom.qml deleted file mode 100644 index ad5481e3..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-popup-custom.qml +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Window - -Item { - id: root - width: 200 - height: 200 - - Binding { - target: popup - property: "visible" - value: root.Window.active - } -//! [1] -Popup { - id: popup - background: Rectangle { - implicitWidth: 200 - implicitHeight: 200 - border.color: "#444" - } - contentItem: Column {} -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-popup.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-popup.qml deleted file mode 100644 index 76ec20cd..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-popup.qml +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { -//! [centerIn] -ApplicationWindow { - id: window - // ... - - Pane { - // ... - - Popup { - anchors.centerIn: Overlay.overlay - } - } -} -//! [centerIn] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-progressbar-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-progressbar-custom.qml deleted file mode 100644 index d9616157..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-progressbar-custom.qml +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -ProgressBar { - id: control - value: 0.5 - padding: 2 - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 6 - color: "#e6e6e6" - radius: 3 - } - - contentItem: Item { - implicitWidth: 200 - implicitHeight: 4 - - Rectangle { - width: control.visualPosition * parent.width - height: parent.height - radius: 2 - color: "#17a81a" - } - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-radiobutton-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-radiobutton-custom.qml deleted file mode 100644 index b33ce6b6..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-radiobutton-custom.qml +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -RadioButton { - id: control - text: qsTr("RadioButton") - checked: true - - indicator: Rectangle { - implicitWidth: 26 - implicitHeight: 26 - x: control.leftPadding - y: parent.height / 2 - height / 2 - radius: 13 - border.color: control.down ? "#17a81a" : "#21be2b" - - Rectangle { - width: 14 - height: 14 - x: 6 - y: 6 - radius: 7 - color: control.down ? "#17a81a" : "#21be2b" - visible: control.checked - } - } - - contentItem: Text { - text: control.text - font: control.font - opacity: enabled ? 1.0 : 0.3 - color: control.down ? "#17a81a" : "#21be2b" - verticalAlignment: Text.AlignVCenter - leftPadding: control.indicator.width + control.spacing - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-radiodelegate-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-radiodelegate-custom.qml deleted file mode 100644 index ed3dae67..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-radiodelegate-custom.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -RadioDelegate { - id: control - text: qsTr("RadioDelegate") - checked: true - - contentItem: Text { - rightPadding: control.indicator.width + control.spacing - text: control.text - font: control.font - opacity: enabled ? 1.0 : 0.3 - color: control.down ? "#17a81a" : "#21be2b" - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - indicator: Rectangle { - implicitWidth: 26 - implicitHeight: 26 - x: control.width - width - control.rightPadding - y: parent.height / 2 - height / 2 - radius: 13 - color: "transparent" - border.color: control.down ? "#17a81a" : "#21be2b" - - Rectangle { - width: 14 - height: 14 - x: 6 - y: 6 - radius: 7 - color: control.down ? "#17a81a" : "#21be2b" - visible: control.checked - } - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - visible: control.down || control.highlighted - color: control.down ? "#bdbebf" : "#eeeeee" - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-rangeslider-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-rangeslider-custom.qml deleted file mode 100644 index fcddc400..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-rangeslider-custom.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -RangeSlider { - id: control - first.value: 0.25 - second.value: 0.75 - - background: Rectangle { - x: control.leftPadding - y: control.topPadding + control.availableHeight / 2 - height / 2 - implicitWidth: 200 - implicitHeight: 4 - width: control.availableWidth - height: implicitHeight - radius: 2 - color: "#bdbebf" - - Rectangle { - x: control.first.visualPosition * parent.width - width: control.second.visualPosition * parent.width - x - height: parent.height - color: "#21be2b" - radius: 2 - } - } - - first.handle: Rectangle { - x: control.leftPadding + control.first.visualPosition * (control.availableWidth - width) - y: control.topPadding + control.availableHeight / 2 - height / 2 - implicitWidth: 26 - implicitHeight: 26 - radius: 13 - color: control.first.pressed ? "#f0f0f0" : "#f6f6f6" - border.color: "#bdbebf" - } - - second.handle: Rectangle { - x: control.leftPadding + control.second.visualPosition * (control.availableWidth - width) - y: control.topPadding + control.availableHeight / 2 - height / 2 - implicitWidth: 26 - implicitHeight: 26 - radius: 13 - color: control.second.pressed ? "#f0f0f0" : "#f6f6f6" - border.color: "#bdbebf" - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-roundbutton.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-roundbutton.qml deleted file mode 100644 index 201ee244..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-roundbutton.qml +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -RoundButton { - text: "\u2713" // Unicode Character 'CHECK MARK' - onClicked: textArea.readOnly = true -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollbar-active.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollbar-active.qml deleted file mode 100644 index bd417955..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollbar-active.qml +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: 100 - height: 100 - - //! [1] - Flickable { - anchors.fill: parent - - contentWidth: parent.width * 2 - contentHeight: parent.height * 2 - - ScrollBar.horizontal: ScrollBar { id: hbar; active: vbar.active } - ScrollBar.vertical: ScrollBar { id: vbar; active: hbar.active } - } - //! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollbar-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollbar-custom.qml deleted file mode 100644 index 0aea2572..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollbar-custom.qml +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -ScrollBar { - id: control - size: 0.3 - position: 0.2 - active: true - orientation: Qt.Vertical - - contentItem: Rectangle { - implicitWidth: 6 - implicitHeight: 100 - radius: width / 2 - color: control.pressed ? "#81e889" : "#c2f4c6" - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollbar-non-attached.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollbar-non-attached.qml deleted file mode 100644 index 7ca66615..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollbar-non-attached.qml +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: 200 - height: 200 - -//! [1] -Rectangle { - id: frame - clip: true - width: 160 - height: 160 - border.color: "black" - anchors.centerIn: parent - - Text { - id: content - text: "ABC" - font.pixelSize: 160 - x: -hbar.position * width - y: -vbar.position * height - } - - ScrollBar { - id: vbar - hoverEnabled: true - active: hovered || pressed - orientation: Qt.Vertical - size: frame.height / content.height - anchors.top: parent.top - anchors.right: parent.right - anchors.bottom: parent.bottom - } - - ScrollBar { - id: hbar - hoverEnabled: true - active: hovered || pressed - orientation: Qt.Horizontal - size: frame.width / content.width - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - } -} -//! [1] - -Component.onCompleted: { - hbar.active = true - vbar.active = true -} -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollbar-policy.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollbar-policy.qml deleted file mode 100644 index c608dac4..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollbar-policy.qml +++ /dev/null @@ -1,38 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -Flickable { - contentHeight: 2000 - ScrollBar.vertical: ScrollBar { - policy: ScrollBar.AlwaysOn - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollindicator-active.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollindicator-active.qml deleted file mode 100644 index 719b9393..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollindicator-active.qml +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: 100 - height: 100 - - //! [1] - Flickable { - anchors.fill: parent - - contentWidth: parent.width * 2 - contentHeight: parent.height * 2 - - ScrollIndicator.horizontal: ScrollIndicator { id: hbar; active: vbar.active } - ScrollIndicator.vertical: ScrollIndicator { id: vbar; active: hbar.active } - } - //! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollindicator-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollindicator-custom.qml deleted file mode 100644 index b18d391c..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollindicator-custom.qml +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -ScrollIndicator { - id: control - size: 0.3 - position: 0.2 - active: true - orientation: Qt.Vertical - - contentItem: Rectangle { - implicitWidth: 2 - implicitHeight: 100 - color: "#c2f4c6" - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollindicator-non-attached.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollindicator-non-attached.qml deleted file mode 100644 index 0d6c4529..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollindicator-non-attached.qml +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: 200 - height: 200 - -//! [1] -Rectangle { - id: frame - clip: true - width: 160 - height: 160 - border.color: "black" - anchors.centerIn: parent - - Text { - id: content - text: "ABC" - font.pixelSize: 169 - - MouseArea { - id: mouseArea - drag.target: content - drag.minimumX: frame.width - width - drag.minimumY: frame.height - height - drag.maximumX: 0 - drag.maximumY: 0 - anchors.fill: content - } - } - - ScrollIndicator { - id: verticalIndicator - active: mouseArea.pressed - orientation: Qt.Vertical - size: frame.height / content.height - position: -content.y / content.height - anchors { top: parent.top; right: parent.right; bottom: parent.bottom } - } - - ScrollIndicator { - id: horizontalIndicator - active: mouseArea.pressed - orientation: Qt.Horizontal - size: frame.width / content.width - position: -content.x / content.width - anchors { left: parent.left; right: parent.right; bottom: parent.bottom } - } -} -//! [1] - -Component.onCompleted: { - horizontalIndicator.active = true; - verticalIndicator.active = true; -} -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview-custom.qml deleted file mode 100644 index 1a80d263..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview-custom.qml +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: 200 - height: 200 - - Binding { - target: control.ScrollBar.horizontal - property: "active" - value: true - } - - Binding { - target: control.ScrollBar.vertical - property: "active" - value: true - } - -//! [file] -ScrollView { - id: control - - width: 200 - height: 200 - focus: true - - Label { - text: "ABC" - font.pixelSize: 224 - } - - ScrollBar.vertical: ScrollBar { - parent: control - x: control.mirrored ? 0 : control.width - width - y: control.topPadding - height: control.availableHeight - active: control.ScrollBar.horizontal.active - } - - ScrollBar.horizontal: ScrollBar { - parent: control - x: control.leftPadding - y: control.height - height - width: control.availableWidth - active: control.ScrollBar.vertical.active - } - - background: Rectangle { - border.color: control.activeFocus ? "#21be2b" : "#bdbebf" - } -} -//! [file] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview-interactive.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview-interactive.qml deleted file mode 100644 index 83861720..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview-interactive.qml +++ /dev/null @@ -1,38 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [file] -ScrollView { - // ... - ScrollBar.horizontal.interactive: true - ScrollBar.vertical.interactive: true -} -//! [file] - diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview-listview.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview-listview.qml deleted file mode 100644 index f1fbb627..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview-listview.qml +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - id: root - width: 200 - height: 200 - - Binding { - target: root.children[0].ScrollBar.horizontal - property: "active" - value: true - } - - Binding { - target: root.children[0].ScrollBar.vertical - property: "active" - value: true - } - -//! [file] -ScrollView { - width: 200 - height: 200 - - ListView { - model: 20 - delegate: ItemDelegate { - text: "Item " + index - } - } -} -//! [file] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview-policy.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview-policy.qml deleted file mode 100644 index 78098eaa..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview-policy.qml +++ /dev/null @@ -1,38 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [file] -ScrollView { - // ... - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff - ScrollBar.vertical.policy: ScrollBar.AlwaysOn -} -//! [file] - diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview.qml deleted file mode 100644 index c96ae1ed..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-scrollview.qml +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Rectangle { - id: root - width: 200 - height: 200 - border.color: "#ddd" - - Binding { - target: root.children[0].ScrollBar.horizontal - property: "active" - value: true - } - - Binding { - target: root.children[0].ScrollBar.vertical - property: "active" - value: true - } - -//! [file] -ScrollView { - width: 200 - height: 200 - - Label { - text: "ABC" - font.pixelSize: 224 - } -} -//! [file] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-selectionrectangle.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-selectionrectangle.qml deleted file mode 100644 index c8668324..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-selectionrectangle.qml +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick - -import QtQuick -import QtQuick.Window -import QtQuick.Controls -import QtQml.Models -import Qt.labs.qmlmodels - -Window { - width: 480 - height: 640 - visible: true - visibility: Window.AutomaticVisibility - -//![0] - TableView { - id: tableView - anchors.fill: parent - clip: true - - model: TableModel { - TableModelColumn { display: "name" } - rows: [ { "name": "Harry" }, { "name": "Hedwig" } ] - } - - selectionModel: ItemSelectionModel { - model: tableView.model - } - - delegate: Rectangle { - implicitWidth: 100 - implicitHeight: 30 - color: selected ? "blue" : "lightgray" - - required property bool selected - - Text { text: display } - } - } - - SelectionRectangle { - target: tableView - } -//![0] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-slider-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-slider-custom.qml deleted file mode 100644 index c3d7f4b2..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-slider-custom.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -Slider { - id: control - value: 0.5 - - background: Rectangle { - x: control.leftPadding - y: control.topPadding + control.availableHeight / 2 - height / 2 - implicitWidth: 200 - implicitHeight: 4 - width: control.availableWidth - height: implicitHeight - radius: 2 - color: "#bdbebf" - - Rectangle { - width: control.visualPosition * parent.width - height: parent.height - color: "#21be2b" - radius: 2 - } - } - - handle: Rectangle { - x: control.leftPadding + control.visualPosition * (control.availableWidth - width) - y: control.topPadding + control.availableHeight / 2 - height / 2 - implicitWidth: 26 - implicitHeight: 26 - radius: 13 - color: control.pressed ? "#f0f0f0" : "#f6f6f6" - border.color: "#bdbebf" - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-spinbox-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-spinbox-custom.qml deleted file mode 100644 index 89f6244f..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-spinbox-custom.qml +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -SpinBox { - id: control - value: 50 - editable: true - - contentItem: TextInput { - z: 2 - text: control.textFromValue(control.value, control.locale) - - font: control.font - color: "#21be2b" - selectionColor: "#21be2b" - selectedTextColor: "#ffffff" - horizontalAlignment: Qt.AlignHCenter - verticalAlignment: Qt.AlignVCenter - - readOnly: !control.editable - validator: control.validator - inputMethodHints: Qt.ImhFormattedNumbersOnly - } - - up.indicator: Rectangle { - x: control.mirrored ? 0 : parent.width - width - height: parent.height - implicitWidth: 40 - implicitHeight: 40 - color: control.up.pressed ? "#e4e4e4" : "#f6f6f6" - border.color: enabled ? "#21be2b" : "#bdbebf" - - Text { - text: "+" - font.pixelSize: control.font.pixelSize * 2 - color: "#21be2b" - anchors.fill: parent - fontSizeMode: Text.Fit - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - } - - down.indicator: Rectangle { - x: control.mirrored ? parent.width - width : 0 - height: parent.height - implicitWidth: 40 - implicitHeight: 40 - color: control.down.pressed ? "#e4e4e4" : "#f6f6f6" - border.color: enabled ? "#21be2b" : "#bdbebf" - - Text { - text: "-" - font.pixelSize: control.font.pixelSize * 2 - color: "#21be2b" - anchors.fill: parent - fontSizeMode: Text.Fit - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - } - - background: Rectangle { - implicitWidth: 140 - border.color: "#bdbebf" - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-spinbox-double.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-spinbox-double.qml deleted file mode 100644 index 852ee5be..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-spinbox-double.qml +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -SpinBox { - id: spinbox - from: 0 - value: 110 - to: 100 * 100 - stepSize: 100 - anchors.centerIn: parent - - property int decimals: 2 - property real realValue: value / 100 - - validator: DoubleValidator { - bottom: Math.min(spinbox.from, spinbox.to) - top: Math.max(spinbox.from, spinbox.to) - } - - textFromValue: function(value, locale) { - return Number(value / 100).toLocaleString(locale, 'f', spinbox.decimals) - } - - valueFromText: function(text, locale) { - return Number.fromLocaleString(locale, text) * 100 - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-spinbox-textual.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-spinbox-textual.qml deleted file mode 100644 index c1879d93..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-spinbox-textual.qml +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -SpinBox { - from: 0 - to: items.length - 1 - value: 1 // "Medium" - - property var items: ["Small", "Medium", "Large"] - - validator: RegularExpressionValidator { - regularExpression: new RegExp("(Small|Medium|Large)", "i") - } - - textFromValue: function(value) { - return items[value]; - } - - valueFromText: function(text) { - for (var i = 0; i < items.length; ++i) { - if (items[i].toLowerCase().indexOf(text.toLowerCase()) === 0) - return i - } - return sb.value - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-spinbox.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-spinbox.qml deleted file mode 100644 index 87722749..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-spinbox.qml +++ /dev/null @@ -1,35 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -SpinBox { - value: 50 -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-splitview-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-splitview-custom.qml deleted file mode 100644 index 570c3acd..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-splitview-custom.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: 200 - height: 100 - - //! [1] - SplitView { - id: splitView - anchors.fill: parent - - handle: Rectangle { - implicitWidth: 4 - implicitHeight: 4 - color: SplitHandle.pressed ? "#81e889" - : (SplitHandle.hovered ? Qt.lighter("#c2f4c6", 1.1) : "#c2f4c6") - } - - Rectangle { - implicitWidth: 150 - color: "#444" - } - Rectangle { - implicitWidth: 50 - color: "#666" - } - } - //! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-splitview-handle-containmentmask.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-splitview-handle-containmentmask.qml deleted file mode 100644 index 39af8994..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-splitview-handle-containmentmask.qml +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: 200 - height: 100 - - //! [1] - SplitView { - id: splitView - anchors.fill: parent - - handle: Rectangle { - implicitWidth: 4 - implicitHeight: 4 - color: SplitHandle.pressed ? "#81e889" - : (SplitHandle.hovered ? Qt.lighter("#c2f4c6", 1.1) : "#c2f4c6") - - containmentMask: Item { - x: -width / 2 - width: 64 - height: splitView.height - } - } - - Rectangle { - implicitWidth: 150 - color: "#444" - } - Rectangle { - implicitWidth: 50 - color: "#666" - } - } - //! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-stackview-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-stackview-custom.qml deleted file mode 100644 index 64cdb3ce..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-stackview-custom.qml +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -StackView { - id: control - - popEnter: Transition { - XAnimator { - from: (control.mirrored ? -1 : 1) * -control.width - to: 0 - duration: 400 - easing.type: Easing.OutCubic - } - } - - popExit: Transition { - XAnimator { - from: 0 - to: (control.mirrored ? -1 : 1) * control.width - duration: 400 - easing.type: Easing.OutCubic - } - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-stackview-visible.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-stackview-visible.qml deleted file mode 100644 index 0e1a0dd4..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-stackview-visible.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -StackView { - id: stackView - property real offset: 10 - width: 100; height: 100 - - initialItem: Component { - id: page - Rectangle { - property real pos: StackView.index * stackView.offset - property real hue: Math.random() - color: Qt.hsla(hue, 0.5, 0.8, 0.6) - border.color: Qt.hsla(hue, 0.5, 0.5, 0.9) - StackView.visible: true - } - } - - pushEnter: Transition { - id: pushEnter - ParallelAnimation { - PropertyAction { property: "x"; value: pushEnter.ViewTransition.item.pos } - NumberAnimation { properties: "y"; from: pushEnter.ViewTransition.item.pos + stackView.offset; to: pushEnter.ViewTransition.item.pos; duration: 400; easing.type: Easing.OutCubic } - NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 400; easing.type: Easing.OutCubic } - } - } - popExit: Transition { - id: popExit - ParallelAnimation { - PropertyAction { property: "x"; value: popExit.ViewTransition.item.pos } - NumberAnimation { properties: "y"; from: popExit.ViewTransition.item.pos; to: popExit.ViewTransition.item.pos + stackView.offset; duration: 400; easing.type: Easing.OutCubic } - NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 400; easing.type: Easing.OutCubic } - } - } - - pushExit: Transition { - id: pushExit - PropertyAction { property: "x"; value: pushExit.ViewTransition.item.pos } - PropertyAction { property: "y"; value: pushExit.ViewTransition.item.pos } - } - popEnter: Transition { - id: popEnter - PropertyAction { property: "x"; value: popEnter.ViewTransition.item.pos } - PropertyAction { property: "y"; value: popEnter.ViewTransition.item.pos } - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipedelegate-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipedelegate-custom.qml deleted file mode 100644 index c89b96a4..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipedelegate-custom.qml +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -SwipeDelegate { - id: control - text: qsTr("SwipeDelegate") - - Component { - id: component - - Rectangle { - color: SwipeDelegate.pressed ? "#333" : "#444" - width: parent.width - height: parent.height - clip: true - - Label { - text: qsTr("Press me!") - color: "#21be2b" - anchors.centerIn: parent - } - } - } - - swipe.left: component - swipe.right: component - - contentItem: Text { - text: control.text - font: control.font - color: control.enabled ? (control.down ? "#17a81a" : "#21be2b") : "#bdbebf" - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - - Behavior on x { - enabled: !control.down - NumberAnimation { - easing.type: Easing.InOutCubic - duration: 400 - } - } - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipedelegate-transition.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipedelegate-transition.qml deleted file mode 100644 index dc0d58a2..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipedelegate-transition.qml +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -SwipeDelegate { - swipe.transition: Transition { - SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipedelegate.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipedelegate.qml deleted file mode 100644 index dcab908e..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipedelegate.qml +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -ListView { - id: listView - anchors.fill: parent - model: ListModel { - ListElement { sender: "Bob Bobbleton"; title: "How are you going?" } - ListElement { sender: "Rug Emporium"; title: "SALE! All rugs MUST go!" } - ListElement { sender: "Electric Co."; title: "Electricity bill 15/07/2016 overdue" } - ListElement { sender: "Tips"; title: "Five ways this tip will save your life" } - } - delegate: SwipeDelegate { - id: swipeDelegate - text: model.sender + " - " + model.title - width: parent.width - - ListView.onRemove: SequentialAnimation { - PropertyAction { - target: swipeDelegate - property: "ListView.delayRemove" - value: true - } - NumberAnimation { - target: swipeDelegate - property: "height" - to: 0 - easing.type: Easing.InOutQuad - } - PropertyAction { - target: swipeDelegate - property: "ListView.delayRemove" - value: false - } - } - - swipe.right: Label { - id: deleteLabel - text: qsTr("Delete") - color: "white" - verticalAlignment: Label.AlignVCenter - padding: 12 - height: parent.height - anchors.right: parent.right - - SwipeDelegate.onClicked: listView.model.remove(index) - - background: Rectangle { - color: deleteLabel.SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato" - } - } - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipeview-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipeview-custom.qml deleted file mode 100644 index b8cddb31..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipeview-custom.qml +++ /dev/null @@ -1,39 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -SwipeView { - id: control - - background: Rectangle { - color: "#eeeeee" - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipeview-indicator.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipeview-indicator.qml deleted file mode 100644 index 98b381f1..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-swipeview-indicator.qml +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: 200 - height: 320 - - //! [1] - SwipeView { - id: view - - currentIndex: 1 - anchors.fill: parent - - Item { - id: firstPage - } - Item { - id: secondPage - } - Item { - id: thirdPage - } - } - - PageIndicator { - id: indicator - - count: view.count - currentIndex: view.currentIndex - - anchors.bottom: view.bottom - anchors.horizontalCenter: parent.horizontalCenter - } - //! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-switch-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-switch-custom.qml deleted file mode 100644 index 9adccbed..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-switch-custom.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -Switch { - id: control - text: qsTr("Switch") - - indicator: Rectangle { - implicitWidth: 48 - implicitHeight: 26 - x: control.leftPadding - y: parent.height / 2 - height / 2 - radius: 13 - color: control.checked ? "#17a81a" : "#ffffff" - border.color: control.checked ? "#17a81a" : "#cccccc" - - Rectangle { - x: control.checked ? parent.width - width : 0 - width: 26 - height: 26 - radius: 13 - color: control.down ? "#cccccc" : "#ffffff" - border.color: control.checked ? (control.down ? "#17a81a" : "#21be2b") : "#999999" - } - } - - contentItem: Text { - text: control.text - font: control.font - opacity: enabled ? 1.0 : 0.3 - color: control.down ? "#17a81a" : "#21be2b" - verticalAlignment: Text.AlignVCenter - leftPadding: control.indicator.width + control.spacing - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-switchdelegate-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-switchdelegate-custom.qml deleted file mode 100644 index bea35f29..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-switchdelegate-custom.qml +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -SwitchDelegate { - id: control - text: qsTr("SwitchDelegate") - checked: true - - contentItem: Text { - rightPadding: control.indicator.width + control.spacing - text: control.text - font: control.font - opacity: enabled ? 1.0 : 0.3 - color: control.down ? "#17a81a" : "#21be2b" - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - indicator: Rectangle { - implicitWidth: 48 - implicitHeight: 26 - x: control.width - width - control.rightPadding - y: parent.height / 2 - height / 2 - radius: 13 - color: control.checked ? "#17a81a" : "transparent" - border.color: control.checked ? "#17a81a" : "#cccccc" - - Rectangle { - x: control.checked ? parent.width - width : 0 - width: 26 - height: 26 - radius: 13 - color: control.down ? "#cccccc" : "#ffffff" - border.color: control.checked ? (control.down ? "#17a81a" : "#21be2b") : "#999999" - } - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - visible: control.down || control.highlighted - color: control.down ? "#bdbebf" : "#eeeeee" - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbar-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbar-custom.qml deleted file mode 100644 index eba48256..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbar-custom.qml +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -TabBar { - id: control - - background: Rectangle { - color: "#eeeeee" - } - - TabButton { - text: qsTr("Home") - } - TabButton { - text: qsTr("Discover") - } - TabButton { - text: qsTr("Activity") - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbar-explicit.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbar-explicit.qml deleted file mode 100644 index 5f548255..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbar-explicit.qml +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: 360 - height: childrenRect.height - -//! [1] -TabBar { - width: parent.width - TabButton { - text: "First" - width: implicitWidth - } - TabButton { - text: "Second" - width: implicitWidth - } - TabButton { - text: "Third" - width: implicitWidth - } -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbar-flickable.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbar-flickable.qml deleted file mode 100644 index 8e41bbf0..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbar-flickable.qml +++ /dev/null @@ -1,50 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: 360 - height: bar.height - -//! [1] -TabBar { - id: bar - width: parent.width - - Repeater { - model: ["First", "Second", "Third", "Fourth", "Fifth"] - - TabButton { - text: modelData - width: Math.max(100, bar.width / 5) - } - } -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbar.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbar.qml deleted file mode 100644 index 7a02f375..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbar.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls - -Column { - width: 300 - - //! [1] - TabBar { - id: bar - width: parent.width - TabButton { - text: qsTr("Home") - } - TabButton { - text: qsTr("Discover") - } - TabButton { - text: qsTr("Activity") - } - } - - StackLayout { - width: parent.width - currentIndex: bar.currentIndex - Item { - id: homeTab - } - Item { - id: discoverTab - } - Item { - id: activityTab - } - } - //! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbutton.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbutton.qml deleted file mode 100644 index e7240db4..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tabbutton.qml +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -TabBar { - TabButton { - text: qsTr("Home") - } - TabButton { - text: qsTr("Discover") - } - TabButton { - text: qsTr("Activity") - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-textarea-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-textarea-custom.qml deleted file mode 100644 index e4f1b397..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-textarea-custom.qml +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -TextArea { - id: control - placeholderText: qsTr("Enter description") - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 40 - border.color: control.enabled ? "#21be2b" : "transparent" - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-textarea-scrollable.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-textarea-scrollable.qml deleted file mode 100644 index 52d9996e..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-textarea-scrollable.qml +++ /dev/null @@ -1,47 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -Item { - width: 100 - height: 100 - - Binding { target: view.ScrollBar.vertical; property: "active"; value: true } - - //! [1] - ScrollView { - id: view - anchors.fill: parent - - TextArea { - text: "TextArea\n...\n...\n...\n...\n...\n...\n" - } - } - //! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-textfield-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-textfield-custom.qml deleted file mode 100644 index 8f1aba23..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-textfield-custom.qml +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -TextField { - id: control - placeholderText: qsTr("Enter description") - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 40 - color: control.enabled ? "transparent" : "#353637" - border.color: control.enabled ? "#21be2b" : "transparent" - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-textfield-disabled.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-textfield-disabled.qml deleted file mode 100644 index 3d92b647..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-textfield-disabled.qml +++ /dev/null @@ -1,35 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -TextField { - width: 80 - text: "Disabled" - enabled: false -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-textfield-focused.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-textfield-focused.qml deleted file mode 100644 index f2761988..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-textfield-focused.qml +++ /dev/null @@ -1,35 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -TextField { - width: 80 - text: "Focused" - focus: true -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-textfield-normal.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-textfield-normal.qml deleted file mode 100644 index c9208c0e..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-textfield-normal.qml +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -TextField { - width: 80 - text: "Normal" -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolbar-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolbar-custom.qml deleted file mode 100644 index 2cb9d0c5..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolbar-custom.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls - -//! [file] -ToolBar { - id: control - - background: Rectangle { - implicitHeight: 40 - color: "#eeeeee" - - Rectangle { - width: parent.width - height: 1 - anchors.bottom: parent.bottom - color: "transparent" - border.color: "#21be2b" - } - } - - RowLayout { - anchors.fill: parent - ToolButton { - text: qsTr("Undo") - } - ToolButton { - text: qsTr("Redo") - } - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolbar.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolbar.qml deleted file mode 100644 index 2ed5c23f..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolbar.qml +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls - -Item { - width: children[0].implicitWidth * 2 - height: children[0].implicitHeight - Binding { - target: children[0] - property: "width" - value: width - } -//! [1] -ToolBar { - RowLayout { - anchors.fill: parent - ToolButton { - text: qsTr("‹") - onClicked: stack.pop() - } - Label { - text: "Title" - elide: Label.ElideRight - horizontalAlignment: Qt.AlignHCenter - verticalAlignment: Qt.AlignVCenter - Layout.fillWidth: true - } - ToolButton { - text: qsTr("⋮") - onClicked: menu.open() - } - } -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolbutton-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolbutton-custom.qml deleted file mode 100644 index 8eb27430..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolbutton-custom.qml +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -ToolButton { - id: control - text: qsTr("ToolButton") - width: 120 - - contentItem: Text { - text: control.text - font: control.font - opacity: enabled ? 1.0 : 0.3 - color: control.down ? "#17a81a" : "#21be2b" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - background: Rectangle { - implicitWidth: 40 - implicitHeight: 40 - color: Qt.darker("#33333333", control.enabled && (control.checked || control.highlighted) ? 1.5 : 1.0) - opacity: enabled ? 1 : 0.3 - visible: control.down || (control.enabled && (control.checked || control.highlighted)) - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolseparator-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolseparator-custom.qml deleted file mode 100644 index f630256d..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolseparator-custom.qml +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Layouts -import QtQuick.Window -import QtQuick.Controls - -//! [file] -ToolBar { - RowLayout { - anchors.fill: parent - - ToolButton { - text: qsTr("Action 1") - } - ToolButton { - text: qsTr("Action 2") - } - - ToolSeparator { - padding: vertical ? 10 : 2 - topPadding: vertical ? 2 : 10 - bottomPadding: vertical ? 2 : 10 - - contentItem: Rectangle { - implicitWidth: parent.vertical ? 1 : 24 - implicitHeight: parent.vertical ? 24 : 1 - color: "#c3c3c3" - } - } - - ToolButton { - text: qsTr("Action 3") - } - ToolButton { - text: qsTr("Action 4") - } - - Item { - Layout.fillWidth: true - } - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolseparator.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolseparator.qml deleted file mode 100644 index 514b97fa..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-toolseparator.qml +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Layouts -import QtQuick.Window -import QtQuick.Controls - -//! [1] -ToolBar { - RowLayout { - anchors.fill: parent - - ToolButton { - text: qsTr("Action 1") - } - ToolButton { - text: qsTr("Action 2") - } - - ToolSeparator {} - - ToolButton { - text: qsTr("Action 3") - } - ToolButton { - text: qsTr("Action 4") - } - - ToolSeparator {} - - ToolButton { - text: qsTr("Action 5") - } - ToolButton { - text: qsTr("Action 6") - } - - Item { - Layout.fillWidth: true - } - } -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip-custom.qml deleted file mode 100644 index 7b40c974..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip-custom.qml +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -Item { -ToolTip { - id: control - text: qsTr("A descriptive tool tip of what the button does") - - contentItem: Text { - text: control.text - font: control.font - color: "#21be2b" - } - - background: Rectangle { - border.color: "#21be2b" - } -} -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip-hover.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip-hover.qml deleted file mode 100644 index 6d1ee4c4..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip-hover.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -Button { - text: qsTr("Button") - hoverEnabled: true - - ToolTip.delay: 1000 - ToolTip.timeout: 5000 - ToolTip.visible: hovered - ToolTip.text: qsTr("This tool tip is shown after hovering the button for a second.") -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip-pressandhold.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip-pressandhold.qml deleted file mode 100644 index cea49553..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip-pressandhold.qml +++ /dev/null @@ -1,39 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [1] -Button { - text: qsTr("Button") - - ToolTip.visible: pressed - ToolTip.delay: Qt.styleHints.mousePressAndHoldInterval - ToolTip.text: qsTr("This tool tip is shown after pressing and holding the button down.") -} -//! [1] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip-slider.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip-slider.qml deleted file mode 100644 index 5f408224..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip-slider.qml +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Window -import QtQuick.Controls - -Item { - id: root - width: slider.width - height: slider.height * 2.0 - - Binding { target: slider.anchors; property: "centerIn"; value: root } - Binding { target: slider.anchors; property: "verticalCenterOffset"; value: slider.height / 2 } - Binding { target: slider; property: "pressed"; value: root.Window.active } - - //! [1] - Slider { - id: slider - value: 0.5 - - ToolTip { - parent: slider.handle - visible: slider.pressed - text: slider.value.toFixed(1) - } - } - //! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip.qml deleted file mode 100644 index 2e5231dc..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tooltip.qml +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Window -import QtQuick.Controls - -Item { - id: root - width: 360 - height: button.height * 2 - - property Button button: children[0] - - Binding { target: button; property: "down"; value: root.Window.active } - Binding { target: button.anchors; property: "bottom"; value: root.bottom } - Binding { target: button.anchors; property: "horizontalCenter"; value: root.horizontalCenter } - - //! [1] - Button { - text: qsTr("Save") - - ToolTip.visible: down - ToolTip.text: qsTr("Save the active project") - } - //! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tumbler-custom.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tumbler-custom.qml deleted file mode 100644 index 792e0e14..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tumbler-custom.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [file] -import QtQuick -import QtQuick.Controls - -Tumbler { - id: control - model: 15 - - background: Item { - Rectangle { - opacity: control.enabled ? 0.2 : 0.1 - border.color: "#000000" - width: parent.width - height: 1 - anchors.top: parent.top - } - - Rectangle { - opacity: control.enabled ? 0.2 : 0.1 - border.color: "#000000" - width: parent.width - height: 1 - anchors.bottom: parent.bottom - } - } - - delegate: Text { - text: qsTr("Item %1").arg(modelData + 1) - font: control.font - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - opacity: 1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2) - } - - Rectangle { - anchors.horizontalCenter: control.horizontalCenter - y: control.height * 0.4 - width: 40 - height: 1 - color: "#21be2b" - } - - Rectangle { - anchors.horizontalCenter: control.horizontalCenter - y: control.height * 0.6 - width: 40 - height: 1 - color: "#21be2b" - } -} -//! [file] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tumbler-listView.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tumbler-listView.qml deleted file mode 100644 index 54ce78af..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tumbler-listView.qml +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [contentItem] -Tumbler { - id: tumbler - - contentItem: ListView { - model: tumbler.model - delegate: tumbler.delegate - - snapMode: ListView.SnapToItem - highlightRangeMode: ListView.StrictlyEnforceRange - preferredHighlightBegin: height / 2 - (height / tumbler.visibleItemCount / 2) - preferredHighlightEnd: height / 2 + (height / tumbler.visibleItemCount / 2) - clip: true - } -} -//! [contentItem] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tumbler-pathView.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tumbler-pathView.qml deleted file mode 100644 index 408b7479..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tumbler-pathView.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls - -//! [contentItem] -Tumbler { - id: tumbler - - contentItem: PathView { - id: pathView - model: tumbler.model - delegate: tumbler.delegate - clip: true - pathItemCount: tumbler.visibleItemCount + 1 - preferredHighlightBegin: 0.5 - preferredHighlightEnd: 0.5 - dragMargin: width / 2 - - path: Path { - startX: pathView.width / 2 - startY: -pathView.delegateHeight / 2 - PathLine { - x: pathView.width / 2 - y: pathView.pathItemCount * pathView.delegateHeight - pathView.delegateHeight / 2 - } - } - - property real delegateHeight: tumbler.availableHeight / tumbler.visibleItemCount - } -} -//! [contentItem] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tumbler-timePicker.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-tumbler-timePicker.qml deleted file mode 100644 index d9edb2cb..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-tumbler-timePicker.qml +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//! [tumbler] -import QtQuick -import QtQuick.Window -import QtQuick.Controls - -Rectangle { - width: frame.implicitWidth + 10 - height: frame.implicitHeight + 10 - - function formatText(count, modelData) { - var data = count === 12 ? modelData + 1 : modelData; - return data.toString().length < 2 ? "0" + data : data; - } - - FontMetrics { - id: fontMetrics - } - - Component { - id: delegateComponent - - Label { - text: formatText(Tumbler.tumbler.count, modelData) - opacity: 1.0 - Math.abs(Tumbler.displacement) / (Tumbler.tumbler.visibleItemCount / 2) - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - font.pixelSize: fontMetrics.font.pixelSize * 1.25 - } - } - - Frame { - id: frame - padding: 0 - anchors.centerIn: parent - - Row { - id: row - - Tumbler { - id: hoursTumbler - model: 12 - delegate: delegateComponent - } - - Tumbler { - id: minutesTumbler - model: 60 - delegate: delegateComponent - } - - Tumbler { - id: amPmTumbler - model: ["AM", "PM"] - delegate: delegateComponent - } - } - } -} -//! [tumbler] diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-universal-accent.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-universal-accent.qml deleted file mode 100644 index f429359e..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-universal-accent.qml +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls -import QtQuick.Controls.Universal - -Pane { - padding: 10 - -//! [1] -Button { - text: qsTr("Button") - highlighted: true - Universal.accent: Universal.Orange -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-universal-background.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-universal-background.qml deleted file mode 100644 index 558618e6..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-universal-background.qml +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.Universal - -Pane { - padding: 10 - -//! [1] -Pane { - Universal.background: Universal.Steel - - Button { - text: qsTr("Button") - } -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-universal-foreground.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-universal-foreground.qml deleted file mode 100644 index 39a292d8..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-universal-foreground.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.Universal - -Pane { - padding: 10 - -//! [1] -Button { - text: qsTr("Button") - Universal.foreground: Universal.Pink -} -//! [1] -} diff --git a/src/quickcontrols2/doc/snippets/qtquickcontrols2-universal-theme.qml b/src/quickcontrols2/doc/snippets/qtquickcontrols2-universal-theme.qml deleted file mode 100644 index b55bf188..00000000 --- a/src/quickcontrols2/doc/snippets/qtquickcontrols2-universal-theme.qml +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.Universal - -Pane { - padding: 10 - -//! [1] -Pane { - Universal.theme: Universal.Dark - - Button { - text: qsTr("Button") - } -} -//! [1] -} diff --git a/src/quickcontrols2/doc/src/external-pages.qdoc b/src/quickcontrols2/doc/src/external-pages.qdoc deleted file mode 100644 index 05005798..00000000 --- a/src/quickcontrols2/doc/src/external-pages.qdoc +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \externalpage https://doc.qt.io/qt-5/qtquickcontrols2-differences.html - \title Qt 5.15: Qt Quick Controls vs Qt Quick Controls 1 -*/ - -/*! - \externalpage https://doc.qt.io/qtcreator/creator-project-creating.html#selecting-project-type - \title Qt Creator: Project Types -*/ diff --git a/src/quickcontrols2/doc/src/includes/customize-button-background.qdocinc b/src/quickcontrols2/doc/src/includes/customize-button-background.qdocinc deleted file mode 100644 index 0acad02d..00000000 --- a/src/quickcontrols2/doc/src/includes/customize-button-background.qdocinc +++ /dev/null @@ -1,25 +0,0 @@ -//! [file] -\qml -import QtQuick -import QtQuick.Controls - -ApplicationWindow { - width: 400 - height: 400 - visible: true - - Button { - id: button - text: "A Special Button" - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - color: button.down ? "#d6d6d6" : "#f6f6f6" - border.color: "#26282a" - border.width: 1 - radius: 4 - } - } -} -\endqml -//! [file] diff --git a/src/quickcontrols2/doc/src/includes/inputmethodhints.qdocinc b/src/quickcontrols2/doc/src/includes/inputmethodhints.qdocinc deleted file mode 100644 index 73710e1e..00000000 --- a/src/quickcontrols2/doc/src/includes/inputmethodhints.qdocinc +++ /dev/null @@ -1,38 +0,0 @@ -//! [flags] -The value is a bit-wise combination of flags or \c Qt.ImhNone if no hints are set. - -Flags that alter behavior are: - -\list -\li Qt.ImhHiddenText - Characters should be hidden, as is typically used when entering passwords. -\li Qt.ImhSensitiveData - Typed text should not be stored by the active input method - in any persistent storage like predictive user dictionary. -\li Qt.ImhNoAutoUppercase - The input method should not try to automatically switch to upper case - when a sentence ends. -\li Qt.ImhPreferNumbers - Numbers are preferred (but not required). -\li Qt.ImhPreferUppercase - Upper case letters are preferred (but not required). -\li Qt.ImhPreferLowercase - Lower case letters are preferred (but not required). -\li Qt.ImhNoPredictiveText - Do not use predictive text (i.e. dictionary lookup) while typing. - -\li Qt.ImhDate - The text editor functions as a date field. -\li Qt.ImhTime - The text editor functions as a time field. -\endlist - -Flags that restrict input (exclusive flags) are: - -\list -\li Qt.ImhDigitsOnly - Only digits are allowed. -\li Qt.ImhFormattedNumbersOnly - Only number input is allowed. This includes decimal point and minus sign. -\li Qt.ImhUppercaseOnly - Only upper case letter input is allowed. -\li Qt.ImhLowercaseOnly - Only lower case letter input is allowed. -\li Qt.ImhDialableCharactersOnly - Only characters suitable for phone dialing are allowed. -\li Qt.ImhEmailCharactersOnly - Only characters suitable for email addresses are allowed. -\li Qt.ImhUrlCharactersOnly - Only characters suitable for URLs are allowed. -\endlist - -Masks: - -\list -\li Qt.ImhExclusiveInputMask - This mask yields nonzero if any of the exclusive flags are used. -\endlist -//! [flags] diff --git a/src/quickcontrols2/doc/src/includes/qquickcombobox.qdocinc b/src/quickcontrols2/doc/src/includes/qquickcombobox.qdocinc deleted file mode 100644 index 5e19f5f1..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickcombobox.qdocinc +++ /dev/null @@ -1,6 +0,0 @@ -//! [functions-after-component-completion] - -\note This function can only be used after -\l {Component::completed()}{Component.completed()} is emitted for the ComboBox. - -//! [functions-after-component-completion] diff --git a/src/quickcontrols2/doc/src/includes/qquickcontrol-background.qdocinc b/src/quickcontrols2/doc/src/includes/qquickcontrol-background.qdocinc deleted file mode 100644 index 02d92de0..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickcontrol-background.qdocinc +++ /dev/null @@ -1,13 +0,0 @@ -//! [notes] - -\note If the background item has no explicit size specified, it automatically - follows the control's size. In most cases, there is no need to specify - width or height for a background item. - -\note Most controls use the implicit size of the background item to calculate -the implicit size of the control itself. If you replace the background item -with a custom one, you should also consider providing a sensible implicit -size for it (unless it is an item like \l Image which has its own implicit -size). - -//! [notes] diff --git a/src/quickcontrols2/doc/src/includes/qquickcontrol-focusreason.qdocinc b/src/quickcontrols2/doc/src/includes/qquickcontrol-focusreason.qdocinc deleted file mode 100644 index b69e9e60..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickcontrol-focusreason.qdocinc +++ /dev/null @@ -1,15 +0,0 @@ -This property holds the reason of the last focus change. - -\note This property does not indicate whether the control has \l {Item::activeFocus} - {active focus}, but the reason why the control either gained or lost focus. - -\value Qt.MouseFocusReason A mouse action occurred. -\value Qt.TabFocusReason The Tab key was pressed. -\value Qt.BacktabFocusReason A Backtab occurred. The input for this may include the Shift or Control keys; e.g. Shift+Tab. -\value Qt.ActiveWindowFocusReason The window system made this window either active or inactive. -\value Qt.PopupFocusReason The application opened/closed a pop-up that grabbed/released the keyboard focus. -\value Qt.ShortcutFocusReason The user typed a label's buddy shortcut -\value Qt.MenuBarFocusReason The menu bar took focus. -\value Qt.OtherFocusReason Another reason, usually application-specific. - -\sa Item::activeFocus diff --git a/src/quickcontrols2/doc/src/includes/qquickdial.qdocinc b/src/quickcontrols2/doc/src/includes/qquickdial.qdocinc deleted file mode 100644 index 3370b3d8..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickdial.qdocinc +++ /dev/null @@ -1,13 +0,0 @@ -//! [inputMode] -Dial supports three \l {inputMode}{input modes}: \c Dial.Circular, -\c Dial.Horizontal and \c Dial.Vertical. The circular input mode operates on an -absolute input system, where the position of the cursor within the dial -directly reflects its value. The horizontal and vertical input modes use a -relative input system, where changes in the cursor's position are "added" to -the value of the dial. - -The following image illustrates the directions in which the various input modes -track movement: - -\image qtquickcontrols2-dial-inputmode.png -//! [inputMode] diff --git a/src/quickcontrols2/doc/src/includes/qquickicon.qdocinc b/src/quickcontrols2/doc/src/includes/qquickicon.qdocinc deleted file mode 100644 index beef5624..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickicon.qdocinc +++ /dev/null @@ -1,50 +0,0 @@ -//! [grouped-properties] -\table -\header - \li Name - \li Description -\row - \li name - \li This property holds the name of the icon to use. - - The icon will be loaded from the platform theme. If the icon is found - in the theme, it will always be used; even if \l icon.source is also set. - If the icon is not found, \l icon.source will be used instead. - - For more information on theme icons, see \l {QIcon::fromTheme()}. -\row - \li source - \li This property holds the name of the icon to use. - - The icon will be loaded as a regular image. - - If \l icon.name is set and refers to a valid theme icon, it will always - be used instead of this property. -\row - \li width - \li This property holds the width of the icon. - - The icon's width will never exceed this value, though it will - shrink when necessary. -\row - \li height - \li This property holds the height of the icon. - - The icon's height will never exceed this value, though it will - shrink when necessary. -\row - \li color - \li This property holds the color of the icon. - - The icon is tinted with the specified color, unless the color is - set to \c "transparent". - -\row - \li cache - \li This property specifies whether the icon should be cached. - - The default value is true. - - This property was introduced in QtQuick.Controls 2.13. -\endtable -//! [grouped-properties] diff --git a/src/quickcontrols2/doc/src/includes/qquickimaginestyle.qdocinc b/src/quickcontrols2/doc/src/includes/qquickimaginestyle.qdocinc deleted file mode 100644 index f6fe5a97..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickimaginestyle.qdocinc +++ /dev/null @@ -1,57 +0,0 @@ -//! [conf] -\table - \header - \li Variable - \li Description - \row - \li \c Path - \li Specifies the \l {imagine-path-attached-prop}{path} to the directory that contains - the Imagine style assets. If not specified, the built-in assets are used. - - For example, to specify a path to a directory stored in the - \l {The Qt Resource System}{resource system}: - - \badcode - [Imagine] - Path=:/imagine-assets - \endcode - - To specify a relative path to a local directory: - - \badcode - [Imagine] - Path=imagine-assets - \endcode - - \note Due to a technical limitation, the path should not be named - \e "imagine" if it is relative to the \c qtquickcontrols2.conf file. -\endtable -//! [conf] - -//! [env] -\table - \header - \li Variable - \li Description - \row - \li \c QT_QUICK_CONTROLS_IMAGINE_PATH - \li Specifies the path to the directory that contains the Imagine style assets. - If not specified, the built-in assets are used. - - For example, to specify a path to a directory stored in the - \l {The Qt Resource System}{resource system}: - - \badcode - QT_QUICK_CONTROLS_IMAGINE_PATH=:/imagine-assets - \endcode - - To specify a relative path to a local directory: - - \badcode - QT_QUICK_CONTROLS_IMAGINE_PATH=imagine-assets - \endcode - - \note Due to a technical limitation, the path should not be named - \e "imagine" if it is relative to the \c qtquickcontrols2.conf file. -\endtable -//! [env] diff --git a/src/quickcontrols2/doc/src/includes/qquickmaterialstyle.qdocinc b/src/quickcontrols2/doc/src/includes/qquickmaterialstyle.qdocinc deleted file mode 100644 index 72c97bb6..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickmaterialstyle.qdocinc +++ /dev/null @@ -1,79 +0,0 @@ -//! [conf] -\table - \header - \li Variable - \li Description - \row - \li \c Theme - \li Specifies the default \l {material-theme-attached-prop}{Material theme}. - The value can be one of the available themes, for example \c "Dark". - \row - \li \c Variant - \li Specifies the Material variant. The Material Design has two - variants: a normal variant designed for touch devices, and a dense - variant for desktop. The dense variant uses smaller sizes for - controls and their fonts. - - The value can be \c "Normal" or \c "Dense". - \row - \li \c Accent - \li Specifies the default \l {material-accent-attached-prop}{Material accent color}. - The value can be any \l {colorbasictypedocs}{color}, but it is recommended to use - one of the \l {pre-defined Material colors}, for example \c "Teal". - \row - \li \c Primary - \li Specifies the default \l {material-primary-attached-prop}{Material primary color}. - The value can be any \l {colorbasictypedocs}{color}, but it is recommended to use - one of the \l {pre-defined Material colors}, for example \c "BlueGrey". - \row - \li \c Foreground - \li Specifies the default \l {material-foreground-attached-prop}{Material foreground color}. - The value can be any \l {colorbasictypedocs}{color}, or one of the \l {pre-defined Material colors}, - for example \c "Brown". - \row - \li \c Background - \li Specifies the default \l {material-background-attached-prop}{Material background color}. - The value can be any \l {colorbasictypedocs}{color}, or one of the \l {pre-defined Material colors}, - for example \c "Grey". -\endtable -//! [conf] - -//! [env] -\table - \header - \li Variable - \li Description - \row - \li \c QT_QUICK_CONTROLS_MATERIAL_THEME - \li Specifies the default \l {material-theme-attached-prop}{Material theme}. - The value can be one of the available themes, for example \c "Dark". - \row - \li \c QT_QUICK_CONTROLS_MATERIAL_VARIANT - \li Specifies the Material variant. The Material Design has two - variants: a normal variant designed for touch devices, and a dense - variant for desktop. The dense variant uses smaller sizes for - controls and their fonts. - - The value can be \c "Normal" or \c "Dense". - \row - \li \c QT_QUICK_CONTROLS_MATERIAL_ACCENT - \li Specifies the default \l {material-accent-attached-prop}{Material accent color}. - The value can be any \l {colorbasictypedocs}{color}, but it is recommended to use - one of the \l {pre-defined Material colors}, for example \c "Teal". - \row - \li \c QT_QUICK_CONTROLS_MATERIAL_PRIMARY - \li Specifies the default \l {material-primary-attached-prop}{Material primary color}. - The value can be any \l {colorbasictypedocs}{color}, but it is recommended to use - one of the \l {pre-defined Material colors}, for example \c "BlueGrey". - \row - \li \c QT_QUICK_CONTROLS_MATERIAL_FOREGROUND - \li Specifies the default \l {material-foreground-attached-prop}{Material foreground color}. - The value can be any \l {colorbasictypedocs}{color}, or one of the \l {pre-defined Material colors}, - for example \c "Brown". - \row - \li \c QT_QUICK_CONTROLS_MATERIAL_BACKGROUND - \li Specifies the default \l {material-background-attached-prop}{Material background color}. - The value can be any \l {colorbasictypedocs}{color}, or one of the \l {pre-defined Material colors}, - for example \c "Grey". -\endtable -//! [env] diff --git a/src/quickcontrols2/doc/src/includes/qquickoverlay-popup-parent.qdocinc b/src/quickcontrols2/doc/src/includes/qquickoverlay-popup-parent.qdocinc deleted file mode 100644 index 5562f6a0..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickoverlay-popup-parent.qdocinc +++ /dev/null @@ -1,20 +0,0 @@ -The following example uses the attached \l {Overlay::overlay}{Overlay.overlay} -property to position a popup in the center of the window, despite the position -of the button that opens the popup: - -\code -Button { - onClicked: popup.open() - - Popup { - id: popup - - parent: Overlay.overlay - - x: Math.round((parent.width - width) / 2) - y: Math.round((parent.height - height) / 2) - width: 100 - height: 100 - } -} -\endcode diff --git a/src/quickcontrols2/doc/src/includes/qquickpopup-padding.qdocinc b/src/quickcontrols2/doc/src/includes/qquickpopup-padding.qdocinc deleted file mode 100644 index 31f5d2db..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickpopup-padding.qdocinc +++ /dev/null @@ -1,10 +0,0 @@ -//! [padding] - -The padding properties are used to control the geometry of the -\l {contentItem}{content item}. - -Popup uses the same approach to padding as \l {Control::padding}{Control}. -For a visual explanation of the padding system, see the \l {Control Layout} -section of the documentation. - -//! [padding] diff --git a/src/quickcontrols2/doc/src/includes/qquickstackview.qdocinc b/src/quickcontrols2/doc/src/includes/qquickstackview.qdocinc deleted file mode 100644 index 20c9bdc3..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickstackview.qdocinc +++ /dev/null @@ -1,5 +0,0 @@ -//! [pop-ownership] -Only items that StackView created itself (from a \l Component or \l [QML] -url) will be destroyed when popped. See \l {Item Ownership} for more -information. -//! [pop-ownership] diff --git a/src/quickcontrols2/doc/src/includes/qquickswipedelegate-interaction.qdocinc b/src/quickcontrols2/doc/src/includes/qquickswipedelegate-interaction.qdocinc deleted file mode 100644 index 05aeadb6..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickswipedelegate-interaction.qdocinc +++ /dev/null @@ -1,5 +0,0 @@ -Both interactive and non-interactive items can be used here. Normal -event handling rules apply; if an interactive control like \l Button -is used, interaction signals of SwipeDelegate such as -\l {AbstractButton::}{clicked()} will not get emitted if the button -is clicked. diff --git a/src/quickcontrols2/doc/src/includes/qquickswitch.qdocinc b/src/quickcontrols2/doc/src/includes/qquickswitch.qdocinc deleted file mode 100644 index 985f85d9..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickswitch.qdocinc +++ /dev/null @@ -1,28 +0,0 @@ -//! [position] - -This property holds the logical position of the thumb indicator. - -The position is expressed as a fraction of the indicator's size, in the range -\c 0.0 - \c 1.0. The position can be used for example to determine whether -the thumb has been dragged past the halfway point. For visualizing a thumb -indicator, the right-to-left aware \l visualPosition should be used instead. - -\sa visualPosition - -//! [position] - - -//! [visualPosition] - -This property holds the visual position of the thumb indicator. - -The position is expressed as a fraction of the indicator's size, in the range -\c 0.0 - \c 1.0. When the control is \l {Control::mirrored}{mirrored}, the -value is equal to \c {1.0 - position}. This makes the value suitable for -visualizing the thumb indicator taking right-to-left support into account. -In order to for example determine whether the thumb has been dragged past -the halfway point, the logical \l position should be used instead. - -\sa position - -//! [visualPosition] diff --git a/src/quickcontrols2/doc/src/includes/qquickuniversalstyle.qdocinc b/src/quickcontrols2/doc/src/includes/qquickuniversalstyle.qdocinc deleted file mode 100644 index a7ecbaef..00000000 --- a/src/quickcontrols2/doc/src/includes/qquickuniversalstyle.qdocinc +++ /dev/null @@ -1,53 +0,0 @@ -//! [conf] -\table - \header - \li Variable - \li Description - \row - \li \c Theme - \li Specifies the default \l {universal-theme-attached-prop}{Universal theme}. - The value can be one of the available themes, for example \c "Dark". - \row - \li \c Accent - \li Specifies the default \l {universal-accent-attached-prop}{Universal accent color}. - The value can be any \l {colorbasictypedocs}{color}, but it is recommended to use - one of the \l {pre-defined Universal colors}, for example \c "Violet". - \row - \li \c Foreground - \li Specifies the default \l {universal-foreground-attached-prop}{Universal foreground color}. - The value can be any \l {colorbasictypedocs}{color}, or one of the \l {pre-defined Universal colors}, - for example \c "Brown". - \row - \li \c Background - \li Specifies the default \l {universal-background-attached-prop}{Universal background color}. - The value can be any \l {colorbasictypedocs}{color}, or one of the \l {pre-defined Universal colors}, - for example \c "Steel". -\endtable -//! [conf] - -//! [env] -\table - \header - \li Variable - \li Description - \row - \li \c QT_QUICK_CONTROLS_UNIVERSAL_THEME - \li Specifies the default \l {universal-theme-attached-prop}{Universal theme}. - The value can be one of the available themes, for example \c "Dark". - \row - \li \c QT_QUICK_CONTROLS_UNIVERSAL_ACCENT - \li Specifies the default \l {universal-accent-attached-prop}{Universal accent color}. - The value can be any \l {colorbasictypedocs}{color}, but it is recommended to use - one of the \l {pre-defined Universal colors}, for example \c "Violet". - \row - \li \c QT_QUICK_CONTROLS_UNIVERSAL_FOREGROUND - \li Specifies the default \l {universal-foreground-attached-prop}{Universal foreground color}. - The value can be any \l {colorbasictypedocs}{color}, or one of the \l {pre-defined Universal colors}, - for example \c "Brown". - \row - \li \c QT_QUICK_CONTROLS_UNIVERSAL_BACKGROUND - \li Specifies the default \l {universal-background-attached-prop}{Universal background color}. - The value can be any \l {colorbasictypedocs}{color}, or one of the \l {pre-defined Universal colors}, - for example \c "Steel". -\endtable -//! [env] diff --git a/src/quickcontrols2/doc/src/qt6-changes.qdoc b/src/quickcontrols2/doc/src/qt6-changes.qdoc deleted file mode 100644 index efc1b84b..00000000 --- a/src/quickcontrols2/doc/src/qt6-changes.qdoc +++ /dev/null @@ -1,305 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols-changes-qt6.html - \title Changes to Qt Quick Controls - \ingroup changes-qt-5-to-6 - \brief Migrate Qt Quick Controls to Qt 6. - - Qt 6 is a result of the conscious effort to make the framework more - efficient and easy to use. - - We try to maintain compatibility for all the public APIs in each release. - Some changes were inevitable in an effort to make Qt a better framework. - - In this topic we summarize those changes in Qt Quick Controls, and provide - guidance to handle them. - - \section1 Migrating from Qt Quick Controls 1 - - Qt Quick Controls 1 was deprecated in Qt 5.11 and is removed from - Qt 6.0. Use Qt Quick Controls (previously known as Qt Quick Controls 2) - instead. For more information, refer to the - \l{Qt 5.15: Qt Quick Controls vs Qt Quick Controls 1} topic in the Qt 5 - documentation. - - \section1 Type registration changes - - Qt Quick Controls has undergone some large, mostly internal changes in Qt - 6. By making use of the improved type registration introduced in Qt 5.15, - we pave the way for compilation of the module's QML files to C++ and enable - tooling to become more effective. In particular, Qt Creator's QML code - model should have a more complete picture of types, making its completion - and error checking of Qt Quick Controls code more reliable. Static analysis - tools like qmllint and qmlformat also benefit by becoming aware of the - types that are now declared at compile time in C++. - - As a result of these changes, some things are done a little differently. - - \section2 Custom styles are now proper QML modules - - To enable compile time type registration, each Qt Quick Controls style is - now a proper QML module. Previously, a single \c Button.qml was sufficient - to create your own style. While convenient, this required some non-standard - API, which in turn required adaptation in tooling like Qt Designer. - - Now, all QML types that a style implements must be declared in that style's - qmldir file: - - \code - module MyStyle - Button 1.0 Button.qml - \endcode - - \omit - TODO: Once we have documentation for the CMake function qt6_add_qml_module, - this would be a good place to link to it, stating that you don't have to - manually write the qmldir files. - \endomit - - By unifying this with the rest of the QML world, styles become more - familiar to developers and hopefully easier to understand for beginners. As - a consequence, the following API had to be removed: - - \list - \li QQuickStyle::addStylePath() - \li QQuickStyle::availableStyles() - \li QQuickStyle::path() - \li QQuickStyle::stylePathList() - \li QT_QUICK_CONTROLS_STYLE_PATH - \endlist - - Now that the styles are required to be found in the QML engine's import - path like any other QML module, it is no longer necessary or possible to - support this API. - - \section3 Style names - - In addition, there is now only one valid, case-sensitive form for style - names: "Material", "MyStyle", and so on. That is: the style name must - exactly match the name of the QML module. This also applies to file - selectors, where previously, all style names were lower case. For example, - where the following was a valid structure for a Qt 5 project: - - \badcode - MyProject - ├── main.qml - ├── HomePage.qml - └── +material - └───HomePage.qml - \endcode - - In Qt 6, \c +material becomes \c +Material: - - \badcode - MyProject - ├── main.qml - ├── HomePage.qml - └── +Material - └───HomePage.qml - \endcode - - All of the existing ways to \l {Using Styles in Qt Quick Controls}{run an - application with a specific style} are still supported. - - \section2 Runtime and compile time style selection - - Importing a style now has extra meaning due to the way that imports work - internally. Previously, importing \c QtQuick.Controls would register the - control types from the current style with the QML engine: - - \qml - import QtQuick.Controls - \endqml - - We refer to this as runtime style selection, as the style is selected at - runtime. - - Explicitly importing \c QtQuick.Controls.Material would then simply expose - any extra API provided by that style (for example, the attached Material - type): - - \qml - import QtQuick.Controls.Material - \endqml - - Now, explicitly importing a style does both. - - This effectively means that the control types (like Button) from the last - imported style will be used. We refer to this as compile time style - selection. - - This has implications for existing code. Namely, if your application - supports more than one style, move these imports into their own QML files - that are file-selected. - - For example, if you have the following \c main.qml: - - \qml - import QtQuick.Controls - import QtQuick.Controls.Material - import QtQuick.Controls.Universal - - ApplicationWindow { - width: 600 - height: 400 - visible: true - - Material.theme: darkMode ? Material.Dark : Material.Light - Universal.theme: darkMode ? Universal.Dark : Universal.Light - - // Child items, etc. - } - \endqml - - You can move the common code into a "base" component: - - \qml - // MainWindow.qml - - import QtQuick.Controls - - ApplicationWindow {} - \endqml - - Then, add a \c +Material subdirectory, and in it, add the Material-specific code into \c MainWindow.qml: - - \qml - // +Material/MainWindow.qml - - import QtQuick.Controls.Material - - ApplicationWindow { - Material.theme: darkMode ? Material.Dark : Material.Light - } - \endqml - - Do the same for Universal: - - \qml - // +Universal/MainWindow.qml - - import QtQuick.Controls.Universal - - ApplicationWindow { - Universal.theme: darkMode ? Universal.Dark : Universal.Light - } - \endqml - - Then, in \c main.qml: - - \qml - import QtQuick.Controls - - MainWindow { - width: 600 - height: 400 - visible: true - - // Child items, etc. - } - \endqml - - See also: \l {Using File Selectors with Qt Quick Controls}. - - \section1 Default Style - - The Default style was renamed to "Basic", as it is no longer the default - style. Instead, the default style is now chosen based on the platform - that Qt was built for: - - \list - \li Android: \l {Material Style} - \li Linux: \l {Fusion Style} - \li macOS: \macos Style - \li Windows: Windows Style - \li All other platforms: \l {Basic Style} - \endlist - - Therefore, applications that didn't specify a style in Qt 5 and have customized - controls should \l {Using Styles in Qt Quick Controls}{explicitly specify} - the Basic style in Qt 6 to ensure that those controls look and behave as - they did with Qt 5. - - \section1 Palette - - The palette API was moved to QQuickItem. The various APIs that use palettes - in Qt Quick Controls are unchanged. - - \section1 Controls - - \section2 ApplicationWindow - - The deprecated overlay properties and attached API were removed. Use the - \l Overlay attached type instead. - - \section2 ComboBox - - The \l {ComboBox::}{pressed} property is now read-only. To modify the - visual pressed state of a ComboBox, use the \l {ComboBox::}{down} property - instead. - - \section2 Container - - The deprecated \c removeItem(var) function was removed. - \l {Container::}{removeItem(Item)} or \l {Container::}{takeItem(int)} can - be used instead. - - \section2 Dialog - - \l {Dialog}'s \l {Dialog::}{accepted()} and \l {Dialog::}{rejected()} - signals are now emitted before \l {Popup::}{closed()} when calling - \l {Dialog::}{done()}, \l {Dialog::}{accept()} and \l {Dialog::}{reject()}. - - \section2 Menu - - The deprecated \c removeItem(var) function was removed. - \l {Menu::}{removeItem(Item)} or \l {Menu::}{takeItem(int)} can be used - instead. - - \section2 ToolTip - - \l {ToolTip}'s timeout now begins only after \l {Popup::}{opened()} has - been emitted. This results in tooltips with enter transitions being visible - for the entire duration of the timeout property. This means that they are - visible slightly longer than they were before, so it may be worthwhile to - visually check tooltips in your application and adjust timeouts if - necessary. - - \section2 StackView - - The StackView.Transition enum value was deprecated. The operation argument - can be omitted in order to use the default transition for any given - operation. - - \section2 Tumbler - - \l {Item::}{implicitWidth} and \l {Item::}{implicitHeight} must now be - provided for \l {Tumbler}'s \l {Control::}{contentItem}, making it - consistent with all other controls. -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-basic.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-basic.qdoc deleted file mode 100644 index ee8d3ce4..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-basic.qdoc +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-basic.html - \title Basic Style - - The Basic style is a basic all-round style. - - The Basic style is a simple and light-weight style that offers the maximum - performance for Qt Quick Controls. It is built with a minimal amount of Qt - Quick primitives, and keeps animations and transitions to the minimum. - - \image qtquickcontrols2-basic.png - - The style is selected by default when running Qt Quick Controls applications. - It is built into the module's resources, so by default it is shipped with - any application that depends on the Qt Quick Controls module - - \note The Basic style is used as a fallback for other styles. If a style - does not implement a certain control, the Basic style implementation of - that control is selected. - - \b {See also} \l {Material Style}, \l {Universal Style} - - \section1 Related Information - - \list - \li \l{Styling Qt Quick Controls} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-buttons.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-buttons.qdoc deleted file mode 100644 index 6a4c5926..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-buttons.qdoc +++ /dev/null @@ -1,191 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-buttons.html - \title Button Controls - \ingroup qtquickcontrols2-guidelines - \brief Guidelines for button controls - - Qt Quick Controls offers a selection of button-like controls. - - \annotatedlist qtquickcontrols2-buttons - - Each type of button has its own specific use case. The following - sections offer guidelines for choosing the appropriate type of button, - depending on the use case. - - \section1 Button Control - - \l Button is a clickable control that starts an action, or opens or - closes a popup. A button usually has a text label but it can also - contain an icon. - - Button is a very suitable control when a popup or dialog needs - to perform an action. The most common examples are Apply, Cancel, - Save, Close and Help. - - \image qtquickcontrols2-button.gif - - Recommendations: - - \list - \li The button's text should be a verb describing the action, or a noun matching - the title of the popup that will be opened. - \li Don't use a button to set state. \l Switch is more suitable for that. - \li Use the default font unless you have UI guidelines specifying otherwise. - \li If the text is localized, consider the influence of a longer text on the layout. - \endlist - - \b {See also} \l Button and \l AbstractButton - - \section1 CheckBox Control - - \image qtquickcontrols2-checkbox.gif - - \l CheckBox is used to build multi-selection option lists. Any number of - options can be selected, including none, but the options should - not be mutually exclusive. - - Use a single CheckBox for a yes/no choice, such as when you have - to accept the terms of service agreement in a form. - - For a single yes/no choice, it is also possible to use a switch. If the choice - concerns an option, it is best to use a CheckBox. If it concerns action to - be taken, a switch is recommended. - - When options can be grouped, you can use a partially checked CheckBox to - represent the whole group. Use the checkbox's - \l {CheckBox::checkState}{partially checked state} when a user selects - some, but not all, sub-items in the group. - - The three availables check states are: checked, partially checked and - unchecked. - - The checkable options are often listed vertically. - - Recommendations: - \list - \li The checkbox label should be a statement that the check mark makes true, - and that the absence of a check mark makes false. - \li The checkbox label should not contain a negative statement. - \li Use the default font, unless you have UI guidelines specifying otherwise. - \li If the text is localized, consider the influence of a longer text on the layout. - \endlist - - \b {See also} \l CheckBox - - \section1 DelayButton Control - - \l DelayButton is a button that incorporates a delay before triggering an action. - This delay prevents accidental presses. - - \image qtquickcontrols2-delaybutton.gif - - Recommendations: - \list - \li Use in touch user interfaces. - \li Use for actions that must be triggered with care. - \endlist - - \b {See also} \l Button and \l AbstractButton - - \section1 RadioButton Control - - \image qtquickcontrols2-radiobutton.gif - - \l RadioButton is used to select only one option from a set of options. - Selecting one option automatically deselects the one selected before. - - If there are only two mutually exclusive options, combine them into a - single checkbox or a switch. - - Recommendations: - - \list - \li Limit the label text to one line. - \li Ensure that a sensible default option is checked. - \li List RadioButton options vertically. - \li If the text is localized, consider the influence of a longer text on the layout. - \li Use the default font, unless you have UI guidelines that specify otherwise. - \li Just like with CheckBox, do not make the list too large. - \li In order to avoid confusion, do not put two groups of radio buttons next to each - other. - \endlist - - \b {See also} \l RadioButton - - \section1 RoundButton Control - - \l RoundButton is a clickable control that starts an action, or opens or - closes a popup. A round button with a square image icon or one-letter font - icon is circular. A circular RoundButton takes less space than a normal - \l Button, and can also be used as a floating action button. - - \image qtquickcontrols2-roundbutton.png - - Recommendations: - - \list - \li Keep labels short and concise. - \li If the text is localized, consider the influence of a longer text on the layout. - \endlist - - \b {See also} \l RoundButton - - \section1 Switch Control - - \image qtquickcontrols2-switch.png - - \l Switch represents a physical switch that allows users to choose between an "on" - or "off" state. - Use a switch for binary operations that take effect immediately after it has been - switched on. For example, a switch to turn WIFI on or off. - - Recommendations: - - \list - \li Keep labels short and concise. - \li If the text is localized, consider the influence of a longer text on the layout. - \endlist - - \b {See also} \l Switch - - \section1 ToolButton Control - - \image qtquickcontrols2-toolbutton.png - - \l ToolButton is nearly identical to \l Button, but it has a graphical - appearance that makes it more suitable for insertion into a \l ToolBar. - - \b {See also} \l ToolButton - - \section1 Related Information - \list - \li \l {Qt Quick Controls Guidelines} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-configuration.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-configuration.qdoc deleted file mode 100644 index 8ac2b275..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-configuration.qdoc +++ /dev/null @@ -1,204 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-configuration.html - \keyword Qt Quick Controls Configuration File - \title Qt Quick Controls Configuration File - \keyword Qt Quick Controls 2 Configuration File - - Qt Quick Controls support a special configuration file, \c qtquickcontrols2.conf, - which is built into an application's resources. - - The configuration file can specify the preferred style and certain style-specific - attributes. The following example specifies that the preferred style is the \l {Material style}. - Furthermore, when the application is run with the Material style, its theme is light and the - accent and primary colors are teal and blue grey, respectively. However, if the application - is run with the \l {Universal style} instead, the accent color is red and the appropriate theme - is chosen based on the system theme colors. - - \code - [Controls] - Style=Material - - [Universal] - Theme=System - Accent=Red - - [Material] - Theme=Light - Accent=Teal - Primary=BlueGrey - \endcode - - It is possible to specify a custom location for the configuration file with - the \l {Supported Environment Variables in Qt Quick Controls} - {QT_QUICK_CONTROLS_CONF} environment variable. - - \section1 Controls Section - - The following values can be specified in a \c Controls section of the - configuration file: - - \table - \header - \li Variable - \li Description - \row - \li \c Style - \li Specifies the style to run the application with. - The value can be the name of one of the \l {Available Styles}{built-in styles} - or a \l {Creating a Custom Style}{custom style}. - \row - \li \c FallbackStyle - \li Specifies the style to use for controls that are not implemented. - The style must be one of the \l {Available Styles}{built-in styles}. - By default, the \l {Basic Style}{Basic} style is used. - \endtable - - \section1 Imagine Section - - The following table lists values that can be used to configure the - \l {Imagine style} in an \c Imagine section of the configuration file: - - \include qquickimaginestyle.qdocinc conf - - \section1 Material Section - - The following table lists values that can be used to configure the - \l {Material style} in a \c Material section of the configuration file: - - \include qquickmaterialstyle.qdocinc conf - - \section1 Universal Section - - The following table lists values that can be used to configure the - \l {Universal style} in a \c Universal section of the configuration file: - - \include qquickuniversalstyle.qdocinc conf - - \section1 Font Configuration - - The default \l {Control::font}{font} can be specified in a \c Font sub-group - in each style's section in the configuration file. The \c Font sub-group can - be defined in two alternative ways: - - \code - [Basic] - Font\Family=Open Sans - Font\PixelSize=20 - - [Material\Font] - Family=Open Sans - PixelSize=20 - \endcode - - Supported font attributes: - \table - \header - \li Variable - \li Description - \row - \li \c Family - \li The \l {QFont::family}{font family}. - \row - \li \c PointSize - \li The \l {QFont::pointSizeF}{point size}. - \row - \li \c PixelSize - \li The \l {QFont::pixelSize}{pixel size}. - \row - \li \c StyleHint - \li The \l {QFont::styleHint}{style hint}. - Available values: \c SansSerif, \c Helvetica, \c Serif, \c Times, \c TypeWriter, \c Courier, - \c OldEnglish, \c Decorative, \c Monospace, \c Fantasy, \c Cursive. - \row - \li \c Weight - \li The \l {QFont::}{weight}. Qt uses a weighting scale from \c 1 to \c 1000 compatible with OpenType. A weight of \c 1 will be thin, - whilst \c 1000 will be extremely black. - Available pre-defined weights: \c Thin (100), \c ExtraLight (200), \c Light (300), \c Normal (400), - \c Medium (500), \c DemiBold (600), \c Bold (700), \c ExtraBold (800), - \c Black (900). - \row - \li \c Style - \li The \l {QFont::}{style}. - Available values: \c StyleNormal, \c StyleItalic, \c StyleOblique. - \endtable - - \section1 Palette Configuration - - The default \c palette can be configured for each style using the - \c Palette sub-group in the configuration file. The \c Palette sub-group can be - defined in two alternative ways: - - \code - [Fusion] - Palette\Window=#dedede - Palette\WindowText=#212121 - \endcode - - or: - \code - [Fusion\Palette] - Window=#dedede - WindowText=#212121 - \endcode - - See \l [QtQuick]{Palette} QML type for more information. - - \section1 Using the Configuration File in a Project - - In order to make it possible for Qt Quick Controls to find the configuration file, - it must be built into application's resources using the \l {The Qt Resource System}. - Here's an example \c .qrc file: - - \code - <!DOCTYPE RCC><RCC version="1.0"> - <qresource prefix="/"> - <file>qtquickcontrols2.conf</file> - </qresource> - </RCC> - \endcode - - \note Qt Quick Controls uses a file selector to load the configuration file. It - is possible to provide a different configuration file for different platforms and - locales. See \l QFileSelector documentation for more details. - - Finally, the \c .qrc file must be listed in the application's \c .pro file so that - the build system knows about it. For example: - - \code - RESOURCES = application.qrc - \endcode - - \section1 Related Information - - \list - \li \l{Styling Qt Quick Controls} - \li \l{Supported Environment Variables in Qt Quick Controls} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-containers.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-containers.qdoc deleted file mode 100644 index 81e24c26..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-containers.qdoc +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-containers.html - \title Container Controls - \ingroup qtquickcontrols2-guidelines - \brief Guidelines for container controls - - Qt Quick Controls offers a selection of container-like controls. - - \annotatedlist qtquickcontrols2-containers - - Each type of container can be used to group a set of controls together. - The following sections offer guidelines for choosing the appropriate type - of container, depending on the use case. - - \section1 ApplicationWindow Control - - \image qtquickcontrols2-applicationwindow-wireframe.png - - \l ApplicationWindow creates the root window of an application, and makes - it easy to add an optional header and footer to that window. - - \section1 Frame Control - - \image qtquickcontrols2-frame.png - - \l Frame is used to layout a logical group of controls together, within - a visual frame. - - \section1 GroupBox Control - - \image qtquickcontrols2-groupbox.png - - \l GroupBox is used to layout a logical group of controls together, - within a titled visual frame. - - \section1 Page Control - - \image qtquickcontrols2-page-wireframe.png - - \l Page provides page-specific header and footer items. - It is perfectly possible to use ApplicationWindow for setting the header - and the footer, but if you have a header and footer which varies per - screen, then it is better to use \l Page. - - \section1 Pane Control - - \image qtquickcontrols2-pane.png - - \l Pane provides a background color that matches with the application - style and theme. Pane does not provide a layout of its own, but requires - you to position its contents, for instance by using a \l RowLayout or - a \l ColumnLayout. - - \section1 ScrollView Control - - \image qtquickcontrols2-scrollview-wireframe.png - - \l ScrollView provides scrolling for user-defined content. - - \section1 StackView Control - - \image qtquickcontrols2-stackview-wireframe.png - - \l StackView organizes content pages into a stack using a last-in-first-out - principle: the last item to be "pushed" onto the stack is the first one to - be removed, and the top-most item is always the one that is visible. - - \section1 SwipeView Control - - \image qtquickcontrols2-swipeview-wireframe.png - - \l SwipeView organizes content pages into a swipable strip. - - \section1 TabBar Control - - \image qtquickcontrols2-tabbar-wireframe.png - - \l TabBar organizes content pages into tabs. - - \section1 ToolBar Control - - \image qtquickcontrols2-toolbar.png - - \l ToolBar is a container of application-wide and context-sensitive - actions and controls. -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-cppclasses.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-cppclasses.qdoc deleted file mode 100644 index 293ac6de..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-cppclasses.qdoc +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \module QtQuickControls2 - \keyword Qt Quick Controls C++ Classes - \title Qt Quick Controls C++ Classes - \keyword Qt Quick Controls 2 C++ Classes - \ingroup modules - \qtcmakepackage QuickControls2 - \qtvariable quickcontrols2 - - \brief Provides classes for setting up the controls from C++. - - The C++ types can be included into your application using the following - include statement: - - \code - #include <QtQuickControls2> - \endcode - - \note If you are using a few classes from this module, we recommend including - those specific classes only instead of the module. - - To link against the corresponding C++ libraries, add the following to your - qmake project file: - - \code - QT += quickcontrols2 - \endcode - - The \l{Qt Quick Controls} page contains information about how to use the - module. -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-customize.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-customize.qdoc deleted file mode 100644 index ba62425f..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-customize.qdoc +++ /dev/null @@ -1,986 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-customize.html - \keyword Customizing Qt Quick Controls 2 - \title Customizing Qt Quick Controls - \brief A set of UI controls to create user interfaces in Qt Quick - - Qt Quick Controls consist of a hierarchy (tree) of items. In order to - provide a custom look and feel, the default QML implementation of each - item can be replaced with a custom one. - - \section1 Customizing a Control - - Sometimes you'll want to create a "one-off" look for a specific part of - your UI, and use a complete style everywhere else. Perhaps you're happy - with the style you're using, but there's a certain button that has some - special significance. - - The first way to create this button is to simply define it in-place, - wherever it is needed. For example, perhaps you're not satisfied with the - Basic style's Button having square corners. To make them rounded, you - can override the \l {Control::}{background} item and set the radius - property of Rectangle: - - \include customize-button-background.qdocinc file - - The second way to create the button is good if you plan to use your rounded - button in several places. It involves moving the code into its own QML file - within your project. - - For this approach, we'll copy the background code from the Basic style's - \c Button.qml. This file can be found in the following path in your Qt - installation: - - \c {$QTDIR/qml/QtQuick/Controls/Basic/Button.qml} - - After doing that, we'll simply add the following line: - - \code - radius: 4 - \endcode - - To avoid confusion with the controls in the - module itself, we'll call the file \c MyButton.qml. To use the control in - your application, refer to it by its filename: - - \qml - import QtQuick.Controls - - ApplicationWindow { - MyButton { - text: qsTr("A Special Button") - } - } - \endqml - - The third way to create the button is a bit more structured, both in terms - of where the file sits in the file system and how it is used in QML. First, - copy an existing file as you did above, but this time, put it into a - subfolder in your project named (for example) \c controls. To use the - control, first import the folder into a namespace: - - \qml - import QtQuick.Controls - import "controls" as MyControls - - ApplicationWindow { - MyControls.Button { - text: qsTr("A Special Button") - } - } - \endqml - - As you now have the \c MyControls namespace, you can name the controls after - their actual counterparts in the Qt Quick Controls module. You can repeat - this process for any control that you wish to add. - - An added benefit of these three methods is that it's not necessary to - implement the template from scratch. - - \section1 Creating a Custom Style - - There are several ways to go about creating your own styles. Below, we'll - explain the various approaches. - - \section2 Definition of a Style - - In Qt Quick Controls, a style is essentially a set of QML files within a - single directory. There are four requirements for a style to be - \l {Using Styles in Qt Quick Controls}{usable}: - - \list - \li At least one QML file whose name matches a control (for example, - \c Button.qml) must exist. - \li Each QML file must contain the relevant type from the \l {Qt Quick Templates 2} - {QtQuick.Templates} import as the root item. For example, - Button.qml must contain a Button template as its root item. - - If we instead used the corresponding type from the \l {Qt Quick Controls} - {QtQuick.Controls} import as we did in the previous section, it would not work: - the control we were defining would try to derive from itself. - \li A \l {Module Definition qmldir Files}{qmldir} file must exist alongside - the QML file(s). Below is an example of a simple \c qmldir file for a style that - provides a button: - - \badcode - module MyStyle - Button 2.15 Button.qml - \endcode - - If you're using \l {Compile-Time Style Selection}{compile-time style - selection}, the qmldir should also import the fallback style: - - \badcode - # ... - import QtQuick.Controls.Basic auto - \endcode - - This can also be done for \l {Run-Time Style Selection}{run-time style selection} - instead of using, for example, \l QQuickStyle::setFallbackStyle(). - - The directory structure for such a style looks like this: - - \badcode - MyStyle - ├─── Button.qml - └─── qmldir - \endcode - \li The files must be in a directory that is findable via the \l {QML Import Path}. - - For example, if the path to \e MyStyle directory mentioned above was - \c /home/user/MyApp/MyStyle, then \c /home/user/MyApp must be added to - the QML import path. - - To \l {Using Styles in Qt Quick Controls}{use} \e MyStyle in \e MyApp, - refer to it by name: - - \list - \li \c {./MyApp -style MyStyle} - \endlist - - The style name must match the casing of the style directory; passing - \e mystyle or \e MYSTYLE is not supported. - \endlist - - By default, the styling system uses the Basic style as a fallback for - controls that aren't implemented. To customize or extend any other built-in - style, it is possible to specify a different fallback style using - \l[QtQuickControls2]{QQuickStyle}. - - What this means is that you can implement as many controls as you like for - your custom style, and place them almost anywhere. It also allows users to - create their own styles for your application. - - \section3 Previewing Custom Styles in Qt Quick Designer - - Using the approach above, it is possible to preview a custom style - in Qt Quick Designer. In order to do so, - ensure that the project has a - \l {Qt Quick Controls Configuration File}{qtquickcontrols2.conf} file, - and that the following entry exists: - - \badcode - [Controls] - Style=MyStyle - \endcode - - For more information, take a look at the - \l {Qt Quick Controls - Flat Style}{Flat Style example}. - - \section2 Style-specific C++ Extensions - - Sometimes you may need to use C++ to extend your custom style. There are two - ways to expose such types to QML: - - \list - \li If the style that uses the type is the only style used by an application, - it's enough to register it with the QML engine via qmlRegisterType(): - - \code - qmlRegisterType<ACoolCppItem>("MyApp", 1, 0, "ACoolItem"); - \endcode - - See \l {Using C++ Data From QML} for more information about this. - \li If the style that uses the type is one of many styles used by an - application, it may be better to only register it when necessary. This - is the point at which it would make sense to implement your own - \l {Creating C++ Plugins for QML}{QML plugin}. - - Using a plugin as part of your style is not that much different from - using a set of QML files. The only difference is that the plugin and - its \c qmldir file must be present in the same directory as the QML - files. - \endlist - - \section3 Considerations for custom styles - - When implementing your own style and customizing controls, there are some - points to keep in mind to ensure that your application is as performant as - possible. - - \section4 Avoid assigning an id to styles' implementations of item delegates - - As explained in \l {Definition of a Style}, when you implement your - own style for a control, you start off with the relevant template for - that control. For example, a style's \c Button.qml will be structured - similarly to this: - - \qml - T.Button { - // ... - - background: Rectangle { - // ... - } - - contentItem: Text { - // ... - } - - // ... - } - \endqml - - When you use a Button in your application, the \c background and - \c contentItem items will be created and parented to the root \c Button - item: - - \qml - // Creates the Button root item, the Rectangle background, - // and the Text contentItem. - Button { - text: qsTr("Confirm") - } - \endqml - - Suppose you then needed to do a one-off customization of the Button (as - explained in \l {Customizing a Control}): - - \include customize-button-background.qdocinc file - - In QML, this would normally result in both the default \c background - implementation and the one-off, custom \c background items being created. - Qt Quick Controls uses a technique that avoids creating both items, and - instead only creates the custom \c background, greatly improving the - creation performance of controls. - - This technique relies on the absence of an \l {The id Attribute}{id} in the - style's implementation of that item. If an id is assigned, the technique - cannot work, and both items will be created. For example, it can be - tempting to assign an id to the \c background or \c contentItem so that - other objects within the file can refer to those items: - - \qml - T.Button { - // ... - - background: Rectangle { - id: backgroundRect - // ... - } - - contentItem: Text { - // Use backgroundRect in some way... - } - - // ... - } - \endqml - - With this code, every time a Button instance with a customized background - is created, both backgrounds will be created, resulting in sub-optimal - creation performance. - - Prior to Qt 5.15, the old, unused background would be deleted to release - the resources associated with it. However, as the control does not own the - items, it should not delete them. As of Qt 5.15, old items are no longer - deleted, and so the \c backgroundRect item will live longer than it needs - to—typically until the application exits. Although the old item will be - hidden, visually unparented from the control, and removed from the - accessibility tree, it is important to keep the creation time and memory - usage of these unused items in mind when assigning an id in this context. - - \section4 Avoid imperative assignments of custom items - - The technique mentioned in the section above only works when an item is - \l {Prefer Declarative Bindings Over Imperative Assignments}{declaratively} - assigned for the first time, and so imperative assignments will result in - orphaned items. Always use declarative bindings to assign custom items - when possible. - - \section3 Attached properties - - It is common for a style to have certain properties or attributes that - apply to all controls. \l {Attached Properties and Attached Signal - Handlers}{Attached properties} are a great way of extending an item in QML - without having to modify any existing C++ belonging to that item. For - example, both the \l {Material Style}{Material} and \l {Universal - Style}{Universal} styles have an attached theme property that controls - whether an item and its children will be rendered in a light or dark theme. - - As an example, let's add an attached property that controls elevation. Our - style will illustrate the elevation with a drop shadow; the higher the - elevation, the larger the shadow. - - The first step is to \l {Qt Creator: Project Types}{create a new Qt Quick - Controls application} in Qt Creator. After that, we - \l {Qt Creator: Creating C++ Classes}{add a C++ type} that stores the elevation. Since - the type will be used for every control supported by our style, and because - we may wish to add other attached properties later on, we'll call it - MyStyle. Here is \c MyStyle.h: - - \code - #ifndef MYSTYLE_H - #define MYSTYLE_H - - #include <QObject> - #include <QtQml> - - class MyStyle : public QObject - { - Q_OBJECT - Q_PROPERTY(int elevation READ elevation WRITE setElevation NOTIFY elevationChanged) - - public: - explicit MyStyle(QObject *parent = nullptr); - - static MyStyle *qmlAttachedProperties(QObject *object); - - int elevation() const; - void setElevation(int elevation); - - signals: - void elevationChanged(); - - private: - int m_elevation; - }; - - QML_DECLARE_TYPEINFO(MyStyle, QML_HAS_ATTACHED_PROPERTIES) - - #endif // MYSTYLE_H - \endcode - - \c MyStyle.cpp: - - \code - #include "mystyle.h" - - MyStyle::MyStyle(QObject *parent) : - QObject(parent), - m_elevation(0) - { - } - - MyStyle *MyStyle::qmlAttachedProperties(QObject *object) - { - return new MyStyle(object); - } - - int MyStyle::elevation() const - { - return m_elevation; - } - - void MyStyle::setElevation(int elevation) - { - if (elevation == m_elevation) - return; - - m_elevation = elevation; - emit elevationChanged(); - } - \endcode - - The \c MyStyle type is special in the sense that it shouldn't be - instantiated, but rather used for its attached properties. For that reason, - we register it in the following manner in \c main.cpp: - - \code - #include <QGuiApplication> - #include <QQmlApplicationEngine> - - #include "mystyle.h" - - int main(int argc, char *argv[]) - { - QGuiApplication app(argc, argv); - - qmlRegisterUncreatableType<MyStyle>("MyStyle", 1, 0, "MyStyle", "MyStyle is an attached property"); - - QQmlApplicationEngine engine; - // Make the directory containing our style known to the QML engine. - engine.addImportPath(":/"); - engine.load(QUrl(QLatin1String("qrc:/main.qml"))); - - return app.exec(); - } - \endcode - - We then copy \c Button.qml from the Basic style in - \c {$QTDIR/qml/QtQuick/Controls/Basic/} into a new \c myproject folder in our - project directory. Add the newly copied \c Button.qml to \c qml.qrc, which is - the resource file that contains our QML files. - - Next, we add a drop shadow to the \l {Control::}{background} delegate of - the Button: - - \code - // ... - import QtGraphicalEffects - import MyStyle - // ... - - background: Rectangle { - // ... - - layer.enabled: control.enabled && control.MyStyle.elevation > 0 - layer.effect: DropShadow { - verticalOffset: 1 - color: control.visualFocus ? "#330066ff" : "#aaaaaa" - samples: control.MyStyle.elevation - spread: 0.5 - } - } - \endcode - - Note that we: - - \list - \li Don't bother using the drop shadow when the elevation is \c 0 - \li Change the shadow's color depending on whether or not the button has - focus - \li Make the size of the shadow depend on the elevation - \endlist - - To try out the attached property, we create a \l Row with two Buttons in - \c main.qml: - - \qml - import QtQuick - import QtQuick.Controls - - import MyStyle 1.0 - - ApplicationWindow { - id: window - width: 400 - height: 400 - visible: true - - Row { - spacing: 20 - anchors.centerIn: parent - - Button { - text: "Button 1" - } - Button { - text: "Button 2" - MyStyle.elevation: 10 - } - } - } - \endqml - - One button has no elevation, and the other has an elevation of \c 10. - - With that in place, we can run our example. To tell the application to - use our new style, we pass \c {-style MyStyle} as an application - argument, but there are \l {Using Styles in Qt Quick Controls}{many - ways} to specify the style to use. - - The end result: - - \image qtquickcontrols2-customize-buttons.png - - Note that the \c {import MyStyle 1.0} statement is only necessary - because we are using the attached property belonging to \c MyStyle. - Both buttons will use our custom style, even if we were to remove the - import. - - \section1 Customization Reference - - The following snippets present examples where the Basic style's controls - have been customized using the same approach as the - \l {Customizing a Control} section. The code can be used as a starting - point to implement a custom look and feel. - - \section2 Customizing ApplicationWindow - - ApplicationWindow consists of one visual item: - \l {ApplicationWindow::background}{background}. - - \code - import - import QtQuick.Controls - - ApplicationWindow { - visible: true - - background: Rectangle { - gradient: Gradient { - GradientStop { position: 0; color: "#ffffff" } - GradientStop { position: 1; color: "#c1bbf9" } - } - } - } - \endcode - - - \section2 Customizing BusyIndicator - - BusyIndicator consists of two visual items: \l {Control::background}{background} - and \l {Control::contentItem}{contentItem}. - - \image qtquickcontrols2-busyindicator-custom.png - - \snippet qtquickcontrols2-busyindicator-custom.qml file - - - \section2 Customizing Button - - Button consists of two visual items: \l {Control::background}{background} - and \l {Control::contentItem}{content item}. - - \image qtquickcontrols2-button-custom.png - - \snippet qtquickcontrols2-button-custom.qml file - - - \section2 Customizing CheckBox - - CheckBox consists of three visual items: \l {Control::background}{background}, - \l {Control::contentItem}{contentItem} and \l {AbstractButton::indicator}{indicator}. - - \image qtquickcontrols2-checkbox-custom.png - - \snippet qtquickcontrols2-checkbox-custom.qml file - - \section2 Customizing CheckDelegate - - CheckDelegate consists of three visual items: \l {Control::background}{background}, - \l {Control::contentItem}{contentItem} and \l {AbstractButton::indicator}{indicator}. - - \image qtquickcontrols2-checkdelegate-custom.png - - \snippet qtquickcontrols2-checkdelegate-custom.qml file - - - \section2 Customizing ComboBox - - ComboBox consists of \l {Control::background}{background}, - \l {Control::contentItem}{content item}, \l {ComboBox::popup}{popup}, - \l {ComboBox::indicator}{indicator}, and \l {ComboBox::delegate}{delegate}. - - \image qtquickcontrols2-combobox-custom.png - - \snippet qtquickcontrols2-combobox-custom.qml file - - - \section2 Customizing DelayButton - - DelayButton consists of two visual items: \l {Control::background}{background} - and \l {Control::contentItem}{content item}. - - \image qtquickcontrols2-delaybutton-custom.png - - \snippet qtquickcontrols2-delaybutton-custom.qml file - - - \section2 Customizing Dial - - Dial consists of two visual items: \l {Control::background}{background} - and \l {Dial::handle}{handle}. - - \image qtquickcontrols2-dial-custom.png - - \snippet qtquickcontrols2-dial-custom.qml file - - - \section2 Customizing Drawer - - Drawer can have a visual \l {Control::background}{background} - item. - - \code - background: Rectangle { - Rectangle { - x: parent.width - 1 - width: 1 - height: parent.height - color: "#21be2b" - } - } - \endcode - - - \section2 Customizing Frame - - Frame consists of one visual item: \l {Control::background}{background}. - - \image qtquickcontrols2-frame-custom.png - - \snippet qtquickcontrols2-frame-custom.qml file - - - \section2 Customizing GroupBox - - GroupBox consists of two visual items: \l {Control::background}{background} - and \l {GroupBox::label}{label}. - - \image qtquickcontrols2-groupbox-custom.png - - \snippet qtquickcontrols2-groupbox-custom.qml file - - - \section2 Customizing ItemDelegate - - ItemDelegate consists of two visual items: \l {Control::background}{background} - and \l {Control::contentItem}{content item}. - - \image qtquickcontrols2-itemdelegate-custom.png - - \snippet qtquickcontrols2-itemdelegate-custom.qml file - - - \section2 Customizing Label - - Label can have a visual \l {Label::background}{background} item. - - \image qtquickcontrols2-label-custom.png - - \snippet qtquickcontrols2-label-custom.qml file - - - \section2 Customizing Menu - - \list - \li \l Menu consists of a visual \l {Popup::background}{background} item. - \li \l MenuItem consists of four visual items: \l {Control::background}{background}, - \l {Control::contentItem}{content item}, \l {AbstractButton::}{indicator}, and - \l {MenuItem::}{arrow}. - \li \l MenuSeparator consists of a visual \l {Control::background}{background} and - \l {Control::contentItem}{content item}. - \endlist - - \image qtquickcontrols2-menu-custom.png - - \quotefromfile qtquickcontrols2-menu-custom.qml - \skipto import QtQuick - \printuntil import QtQuick.Controls - \skipto Menu - \printto eof - - - \section2 Customizing MenuBar - - MenuBar can have a visual \l {Control::background}{background} item, - and MenuBarItem consists of two visual items: \l {Control::background} - {background} and \l {Control::contentItem}{content item}. - - \image qtquickcontrols2-menubar-custom.png - - \quotefromfile qtquickcontrols2-menubar-custom.qml - \skipto import QtQuick - \printuntil import QtQuick.Controls - \skipto MenuBar - \printto eof - - - \section2 Customizing PageIndicator - - PageIndicator consists of a \l {Control::background}{background}, \l {Control::contentItem}{content item}, and \l {PageIndicator::delegate}{delegate}. - - \image qtquickcontrols2-pageindicator-custom.png - - \snippet qtquickcontrols2-pageindicator-custom.qml file - - - \section2 Customizing Pane - - Pane consists of a \l {Control::background}{background}. - - \image qtquickcontrols2-pane-custom.png - - \snippet qtquickcontrols2-pane-custom.qml file - - - \section2 Customizing Popup - - Popup consists of a \l {Popup::background}{background} and - \l {Popup::contentItem}{content item}. - - \image qtquickcontrols2-popup-custom.png - - \quotefromfile qtquickcontrols2-popup-custom.qml - \skipto import QtQuick - \printuntil import QtQuick.Controls - \codeline - \skipto Popup - \printuntil { - \printuntil } - \printuntil } - \printuntil } - - - \section2 Customizing ProgressBar - - ProgressBar consists of two visual items: \l {Control::background}{background} - and \l {Control::contentItem}{content item}. - - \image qtquickcontrols2-progressbar-custom.png - - \snippet qtquickcontrols2-progressbar-custom.qml file - - - \section2 Customizing RadioButton - - RadioButton consists of three visual items: \l {Control::background}{background}, - \l {Control::contentItem}{content item} and \l {AbstractButton::indicator}{indicator}. - - \image qtquickcontrols2-radiobutton-custom.png - - \snippet qtquickcontrols2-radiobutton-custom.qml file - - - \section2 Customizing RadioDelegate - - RadioDelegate consists of three visual items: \l {Control::background}{background}, - \l {Control::contentItem}{contentItem} and \l {AbstractButton::indicator}{indicator}. - - \image qtquickcontrols2-radiodelegate-custom.png - - \snippet qtquickcontrols2-radiodelegate-custom.qml file - - - \section2 Customizing RangeSlider - - RangeSlider consists of three visual items: - \l {Control::background}{background}, - \l {RangeSlider::first}{first.handle} and - \l {RangeSlider::second.handle}{second.handle}. - - \image qtquickcontrols2-rangeslider-custom.png - - \snippet qtquickcontrols2-rangeslider-custom.qml file - - - \section2 Customizing RoundButton - - RoundButton can be customized in the same manner as - \l {Customizing Button}{Button}. - - - \section2 Customizing ScrollBar - - ScrollBar consists of two visual items: \l {Control::background}{background} - and \l {Control::contentItem}{content item}. - - \image qtquickcontrols2-scrollbar-custom.png - - \snippet qtquickcontrols2-scrollbar-custom.qml file - - - \section2 Customizing ScrollIndicator - - ScrollIndicator consists of two visual items: \l {Control::background}{background} - and \l {Control::contentItem}{content item}. - - \image qtquickcontrols2-scrollindicator-custom.png - - \snippet qtquickcontrols2-scrollindicator-custom.qml file - - - \section2 Customizing ScrollView - - ScrollView consists of a \l {Control::background}{background} item, - and horizontal and vertical scroll bars. - - \image qtquickcontrols2-scrollview-custom.png - - \snippet qtquickcontrols2-scrollview-custom.qml file - - - \section2 Customizing Slider - - Slider consists of two visual items: \l {Control::background}{background}, - and \l {Slider::handle}{handle}. - - \image qtquickcontrols2-slider-custom.png - - \snippet qtquickcontrols2-slider-custom.qml file - - - \section2 Customizing SpinBox - - SpinBox consists of four visual items: \l {Control::background}{background}, - \l {Control::contentItem}{contentItem}, \l {SpinBox::up.indicator}{up indicator}, - and \l {SpinBox::down.indicator}{down indicator}. - - \image qtquickcontrols2-spinbox-custom.png - - \snippet qtquickcontrols2-spinbox-custom.qml file - - - \section2 Customizing SplitView - - SplitView consists of a visual \l {SplitView::handle}{handle} delegate. - - \image qtquickcontrols2-splitview-custom.png - - \snippet qtquickcontrols2-splitview-custom.qml 1 - - - \section2 Customizing StackView - - StackView can have a visual \l {Control::background}{background} - item, and it allows customizing the transitions that are used for - push, pop, and replace operations. - - \snippet qtquickcontrols2-stackview-custom.qml file - - - \section2 Customizing SwipeDelegate - - SwipeDelegate consists of six visual items: \l {Control::background}{background}, - \l {Control::contentItem}{content item}, \l {AbstractButton::indicator}{indicator}, - \c swipe.left, \c swipe.right, and \c swipe.behind. - - \image qtquickcontrols2-swipedelegate-custom.png - - \snippet qtquickcontrols2-swipedelegate-custom.qml file - - - \section2 Customizing SwipeView - - SwipeView can have a visual \l {Control::background}{background} - item. The navigation is implemented by the \l {Control::contentItem} - {content item}. - - \snippet qtquickcontrols2-swipeview-custom.qml file - - - \section2 Customizing Switch - - Switch consists of three visual items: \l {Control::background}{background}, - \l {Control::contentItem}{content item} and \l {AbstractButton::indicator}{indicator}. - - \image qtquickcontrols2-switch-custom.png - - \snippet qtquickcontrols2-switch-custom.qml file - - \section2 Customizing SwitchDelegate - - SwitchDelegate consists of three visual items: \l {Control::background}{background}, - \l {Control::contentItem}{contentItem} and \l {AbstractButton::indicator}{indicator}. - - \image qtquickcontrols2-switchdelegate-custom.png - - \snippet qtquickcontrols2-switchdelegate-custom.qml file - - - \section2 Customizing TabBar - - TabBar consists of two visual items: \l {Control::background}{background}, - and \l {Control::contentItem}{contentItem}. - - \image qtquickcontrols2-tabbar-custom.png - - \snippet qtquickcontrols2-tabbar-custom.qml file - - - \section2 Customizing TabButton - - TabButton can be customized in the same manner as - \l {Customizing Button}{Button}. - - - \section2 Customizing TextArea - - TextArea consists of a \l {TextArea::background}{background} item. - - \image qtquickcontrols2-textarea-custom.png - - \snippet qtquickcontrols2-textarea-custom.qml file - - - \section2 Customizing TextField - - TextField consists of a \l {TextField::background}{background} item. - - \image qtquickcontrols2-textfield-custom.png - - \snippet qtquickcontrols2-textfield-custom.qml file - - - \section2 Customizing ToolBar - - ToolBar consists of one visual item: \l {Control::background}{background}. - - \image qtquickcontrols2-toolbar-custom.png - - \snippet qtquickcontrols2-toolbar-custom.qml file - - - \section2 Customizing ToolButton - - ToolButton consists of two visual items: \l {Control::background}{background} - and \l {Control::contentItem}{content item}. - - \image qtquickcontrols2-toolbutton-custom.png - - \snippet qtquickcontrols2-toolbutton-custom.qml file - - - \section2 Customizing ToolSeparator - - ToolSeparator consists of two visual items: \l {Control::background}{background} - and \l {Control::contentItem}{content item}. - - \image qtquickcontrols2-toolseparator-custom.png - - \snippet qtquickcontrols2-toolseparator-custom.qml file - - - \section2 Customizing ToolTip - - ToolTip consists of two visual items: \l {Popup::background}{background} - and \l {Popup::contentItem}{content item}. - - \quotefromfile qtquickcontrols2-tooltip-custom.qml - \skipto import QtQuick - \printuntil import QtQuick.Controls - \skipto ToolTip - \printuntil } - \printuntil } - \printuntil } - - - \section2 Customizing Tumbler - - Tumbler consists of three visual items: - \l {Control::background}{background}, - \l {Control::contentItem}{contentItem}, and - \l {Tumbler::delegate}{delegate}. - - \image qtquickcontrols2-tumbler-custom.png - - \snippet qtquickcontrols2-tumbler-custom.qml file - - If you want to define your own contentItem, use either a \l ListView or - \l PathView as the root item. For a wrapping Tumbler, use PathView: - - \snippet qtquickcontrols2-tumbler-pathView.qml contentItem - - For a non-wrapping Tumbler, use ListView: - - \snippet qtquickcontrols2-tumbler-listView.qml contentItem -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-delegates.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-delegates.qdoc deleted file mode 100644 index bea87abf..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-delegates.qdoc +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-delegates.html - \title Delegate Controls - \ingroup qtquickcontrols2-guidelines - \brief Guidelines for delegate controls - - Qt Quick Controls offers a selection of controls that are used as - delegates in views. - - \annotatedlist qtquickcontrols2-delegates - - Each type of delegate has its own specific target use case. The following - sections offer guidelines for choosing the appropriate type of delegate, - depending on the use case. - - \section1 ItemDelegate Control - - \image qtquickcontrols2-itemdelegate.gif - - \l ItemDelegate presents a checkable control that can be pressed and - clicked by the user. - - \section1 RadioDelegate Control - - \image qtquickcontrols2-radiodelegate.gif - - \l RadioDelegate presents a checkable control that can be toggled on - (checked) or off (unchecked). Radio delegates are typically used to select - one option from a set of options. - - \b {See also} \l {RadioButton Control}. - - \section1 SwipeDelegate Control - - \image qtquickcontrols2-swipedelegate.gif - - \l SwipeDelegate presents a view item that can be swiped left or right to - expose more options or information. - - \section1 SwitchDelegate Control - - \image qtquickcontrols2-switchdelegate.gif - - \l SwitchDelegate presents a switchable delegate that can be toggled on or off. - - \b {See also} \l {Switch Control}. - - \section1 Related Information - \list - \li \l {Qt Quick Controls Guidelines} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-deployment.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-deployment.qdoc deleted file mode 100644 index a84d0d87..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-deployment.qdoc +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-deployment.html - \title Deploying Qt Quick Controls Applications - - Deployment of Qt Quick Controls applications is very similar to - deployment of other types of Qt applications. However, there are a few - factors to consider. - - \section1 Deploying an Application with Several Styles - - Suppose you have an application that will be deployed to both Android and - Windows devices. To ensure that only the minimum set of files that are - necessary for the application to run are deployed to each device, you can - use file selectors. For example, your directory structure could look like - this: - - \code - resources.qrc - main.qml - +windows/MyPage.qml - +windows/qtquickcontrols2.conf - +android/MyPage.qml - +android/qtquickcontrols2.conf - \endcode - - In the project above, \c main.qml would import \c QtQuick.Controls, for - example, but shouldn't import, say, \c QtQuick.Controls.Material. Any code - that is style-specific is moved out into separate files; just as we've done - for \c MyPage.qml. - - The \c +windows/qtquickcontrols2.conf file would contain configuration - options specific to the Universal style: - - \code - [Controls] - Style=Universal - - [Universal] - Theme=Dark - Accent=Red - \endcode - - The \c +android/qtquickcontrols2.conf file would contain configuration - options specific to the Material style: - - \code - [Controls] - Style=Material - - [Material] - Theme=Light - Accent=Brown - \endcode - - \section1 Static Builds - - For dynamically built applications, it is not necessary to import a - specific style that should be usable by that application. For statically - built applications, Qt's build system must be involved to ensure that - QML plugins function as expected. Specifically, \c qmake uses - \c qmlimportscanner to scan the QML files in your application for import - statements. For this reason, any styles that should be usable by a - statically built application must explicitly import that style. Where the - import occurs is up to the developer, but it is recommended to follow the - approach mentioned in the \l {Deploying an Application with Several Styles} - section, so that only the minimum set of files that are necessary for a - particular device are deployed. - - \sa {Deploying Qt Applications}, {Using Styles in Qt Quick Controls} -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-environment.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-environment.qdoc deleted file mode 100644 index 4484acf3..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-environment.qdoc +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-environment.html - \title Supported Environment Variables in Qt Quick Controls - - This page contains a list of all environment variables that Qt Quick Controls - supports. The environment variables are primarily meant for testing purposes, but - they can also be used to set system-wide defaults. - - \table - \header - \li Variable - \li Description - \row - \li \c QT_QUICK_CONTROLS_STYLE - \li Specifies the default \l {Styling Qt Quick Controls}{Qt Quick Controls style}. - The value can be either one of the built-in styles, for example \c "Material", - or a custom style such as \c "MyStyle". - \row - \li \c QT_QUICK_CONTROLS_FALLBACK_STYLE - \li Specifies a fallback style for \l {Creating a Custom Style}{custom styles}. - The value can be one of the built-in styles, for example \c "Material", - \row - \li \c QT_QUICK_CONTROLS_CONF - \li Specifies the location of the \l {Qt Quick Controls configuration file}. - By default, the configuration file is loaded from the application's - resources in \c ":/qtquickcontrols2.conf". - \row - \li \c QT_QUICK_CONTROLS_HOVER_ENABLED - \li Specifies whether Qt Quick Controls use \l {Control::hoverEnabled}{hover effects}. - The value can be set to \c 0 or \c 1 to disable or enable hover effects, respectively. - \endtable - - \l {Imagine style} specific environment variables: - - \include qquickimaginestyle.qdocinc env - - \l {Material style} specific environment variables: - - \include qquickmaterialstyle.qdocinc env - - \l {Universal style} specific environment variables: - - \include qquickuniversalstyle.qdocinc env - - \section1 Related Information - - \list - \li \l{Styling Qt Quick Controls} - \li \l{Qt Quick Controls Configuration File} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-examples.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-examples.qdoc deleted file mode 100644 index 2924114f..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-examples.qdoc +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \group qtquickcontrols2-examples - \ingroup all-examples - \keyword Qt Quick Controls Examples - \title Qt Quick Controls Examples - \keyword Qt Quick Controls 2 Examples - \brief A collection of examples for \l {Qt Quick Controls} - - These examples demonstrate creating user interfaces using \l {Qt Quick Controls}. -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-fileselectors.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-fileselectors.qdoc deleted file mode 100644 index 4c782de1..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-fileselectors.qdoc +++ /dev/null @@ -1,140 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-fileselectors.html - \title Using File Selectors with Qt Quick Controls - - \l {QFileSelector}{File selectors} provide a convenient way of selecting - file variants. Qt offers the platform name and the locale as built-in - selectors. Qt Quick Controls extends the built-in selectors with the name - (lowercase) of the style that an application is running with. - - By using file selectors, style-specific tweaks can be applied without - creating a hard dependency to a style. From the available file variants, - only the selected QML file is loaded by the QML engine. Each file variant - can assume the context, that is, a specific style. This typically leads - to some code duplication, but on the other hand, cuts the aforementioned - hard dependency to the style, and leads to simpler and more efficient - QML code. - - The following example demonstrates a custom rounded button that has a - styled drop shadow in the \l {Material Style}{Material style}, and looks - flat in other styles. The files are organized so that the Material version - of \c CustomButton.qml is placed into a \c +Material sub-directory. - - \code - :/main.qml - :/CustomButton.qml - :/+Material/CustomButton.qml - \endcode - - By default, \c main.qml will use \c CustomButton.qml for the \c CustomButton - type. However, when the application is run with the Material style, the - \c Material selector will be present and the \c +Material/CustomButton.qml - version will be used instead. - - \code - // main.qml - import QtQuick - import QtQuick.Controls - - ApplicationWindow { - id: window - visible: true - - CustomButton { - text: "Button" - anchors.centerIn: parent - } - } - \endcode - - The base implementation of the custom button is a simple rounded - flat button. - - \code - // CustomButton.qml - import QtQuick - import QtQuick.Controls - - Button { - id: control - - background: Rectangle { - radius: width / 2 - implicitWidth: 36 - implicitHeight: 36 - color: control.pressed ? "#ccc" : "#eee" - } - } - \endcode - - The Material style's implementation of the custom button imports the - Material style, requests a dark theme to get light text, and creates - a drop shadow for the background. - - \code - // +Material/CustomButton.qml - import QtQuick - import QtGraphicalEffects - import QtQuick.Controls - import QtQuick.Controls.Material - - Button { - id: control - - Material.theme: Material.Dark - - background: Rectangle { - implicitWidth: 48 - implicitHeight: 48 - color: Material.accentColor - radius: width / 2 - - layer.enabled: control.enabled - layer.effect: DropShadow { - verticalOffset: 1 - color: Material.dropShadowColor - samples: control.pressed ? 20 : 10 - spread: 0.5 - } - } - } - \endcode - - \note It is recommended to use \l QQmlApplicationEngine, which internally - creates a \l QQmlFileSelector instance. This is all that is needed to take - QML file selectors into use. - - \section1 Related Information - \list - \li \l {QFileSelector} - \li \l {QQmlFileSelector} - \li \l {Styling Qt Quick Controls} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-focus.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-focus.qdoc deleted file mode 100644 index 77bc9883..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-focus.qdoc +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-focus.html - \keyword Focus Management in Qt Quick Controls 2 - \title Focus Management in Qt Quick Controls - \brief Overview of focus handling with Qt Quick Controls - - Qt Quick Controls follows the standard - \l {Keyboard Focus in Qt Quick}{Qt Quick focus system}, while also - providing some added convenience. For example, the - \l {Control::}{focusPolicy} property can be used to control the ways in - which a control receives focus. - - \section1 Focus Scope Controls - - Qt Quick Controls offers a selection of controls that act as - \l {Acquiring Focus and Focus Scopes}{focus scopes}: - - \annotatedlist qtquickcontrols2-focusscopes - - \sa {Keyboard Focus in Qt Quick} -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-fusion.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-fusion.qdoc deleted file mode 100644 index ca67985f..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-fusion.qdoc +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-fusion.html - \title Fusion Style - - The Fusion style is a desktop-oriented style. - - The Fusion style is a platform-agnostic style that offers a desktop-oriented - look and feel. It implements the same design language as the - \l {Qt Widget Gallery}{Fusion style for Qt Widgets}. - - \image qtquickcontrols2-fusion.png - - To run an application with the Fusion style, see - \l {Using Styles in Qt Quick Controls}. - - \note The Fusion style is not a native desktop style. The style runs on any - platform, and looks similar everywhere. Minor differences may occur due to - differences in the standard system palettes, available fonts, and font - rendering engines. - - \section2 Customization - - The Fusion style uses the standard system \l[QtQuick]{Palette} - to provide colors that match the desktop environment. - - \image qtquickcontrols2-fusion-palettes.png - - Custom palettes can be specified for any control, - \l{Popup::palette}{popup}, or \l{Window::palette}{application window}. - Explicit palette attributes are automatically propagated from parent to children, - overriding any system defaults for that attribute. In the following example, - the window and all three switches appear with a violet highlight color: - - \table - \row - \li - \qml - import QtQuick 2.12 - import QtQuick.Controls 2.12 - - ApplicationWindow { - visible: true - - palette.highlight: "violet" - - Column { - anchors.centerIn: parent - - Switch { text: qsTr("First"); checked: true } - Switch { text: qsTr("Second"); checked: true } - Switch { text: qsTr("Third") } - } - } - \endqml - \li - \image qtquickcontrols2-fusion-violet.png - \endtable - - \b {See also} \l {Basic Style}, \l {Material Style}, \l {Universal Style} - - \section1 Related Information - - \list - \li \l{Styling Qt Quick Controls} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-gettingstarted.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-gettingstarted.qdoc deleted file mode 100644 index 09209d21..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-gettingstarted.qdoc +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-gettingstarted.html - \keyword Getting Started with Qt Quick Controls 2 - \title Getting Started with Qt Quick Controls - - A basic example of a QML file that makes use of controls is shown here: - - \qml - import QtQuick - import QtQuick.Controls - - ApplicationWindow { - title: "My Application" - width: 640 - height: 480 - visible: true - - Button { - text: "Push Me" - anchors.centerIn: parent - } - } - \endqml - - \section1 Setting Up Controls from C++ - - Although QQuickView has traditionally been used to display QML files in a - C++ application, doing this means you can only set window properties from - C++. - - With Qt Quick Controls, declare an ApplicationWindow as the root item of - your application and launch it by using QQmlApplicationEngine instead. - This ensures that you can control top level window properties from QML. - - A basic example of a source file that makes use of controls is shown here: - - \code - #include <QGuiApplication> - #include <QQmlApplicationEngine> - - int main(int argc, char *argv[]) - { - QGuiApplication app(argc, argv); - QQmlApplicationEngine engine; - engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); - return app.exec(); - } - \endcode - - \section2 Using C++ Data From QML - - If you need to register a C++ class to use from QML, you can call - qmlRegisterType() before declaring your QQmlApplicationEngine. - See \l [QtQml] {Defining QML Types from C++} for more information. - - If you need to expose data to QML components, you need to make them - available to the context of the current QML engine. See QQmlContext for - more information. -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-guidelines.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-guidelines.qdoc deleted file mode 100644 index 83d6db93..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-guidelines.qdoc +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-guidelines.html - \keyword Qt Quick Controls Guidelines - \title Qt Quick Controls Guidelines - \keyword Qt Quick Controls 2 Guidelines - - Qt Quick Controls offers a selection of controls that can be used to - build complete interfaces in Qt Quick. - - Below you will find practical guidelines on how and when to use - the controls. - - \annotatedlist qtquickcontrols2-guidelines - - \section1 Related Information - \list - \li \l{Qt Quick Controls QML Types}{All Qt Quick Controls QML Types} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-icons.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-icons.qdoc deleted file mode 100644 index ea8579dc..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-icons.qdoc +++ /dev/null @@ -1,166 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-icons.html - \keyword Icons in Qt Quick Controls 2 - \title Icons in Qt Quick Controls - - Qt Quick Controls comes with support for icons since Qt 5.10. This means, - Buttons, item delegates, and menu items are now capable of presenting an - icon in addition to a text label. - - \section1 Using Icons - - \l {AbstractButton::icon}{AbstractButton} and \l {Action::icon}{Action} provide - the following properties through which icons can be set: - \list - \li \c icon.name - \li \c icon.source - \li \c icon.width - \li \c icon.height - \li \c icon.color - \li \c icon.cache - \endlist - - Theme icons are referenced by a name, and regular icons by a source URL. Both - \c icon.name and \c icon.source can be set to ensure that an icon will always - be found. If the icon is found in the theme, it will always be used; even if - \c icon.source is also set. If the icon is not found in the theme, \c icon.source - will be used instead. - - \code - Button { - icon.name: "edit-cut" - icon.source: "images/cut.png" - } - \endcode - - Each \l {Styling Qt Quick Controls}{Qt Quick Controls 2 style} requests a - default icon size and color according to their guidelines, but it is possible - to override these by setting the \c icon.width, \c icon.height, and \c icon.color - properties. - - The image that is loaded by an icon whose \c width and \c height are not set - depends on the type of icon in use. For theme icons, the closest available size - will be chosen. For regular icons, the behavior is the same as the \l {Image::} - {sourceSize} property of \l Image. - - The icon color is specified by default so that it matches the text color in - different states. In order to use an icon with the original colors, set the - color to \c "transparent". - - \code - Button { - icon.color: "transparent" - icon.source: "images/logo.png" - } - \endcode - - For buttons, the \l {AbstractButton::}{display} property can be used to control - how the icon and text are displayed within the button. - - \section1 Icon Themes - - Compliant icon themes must follow the freedesktop icon theme specification, - which can be obtained here: \l {http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html}. - - Traditionally, only Linux and UNIX support icon themes on the platform level, - but it is possible to bundle a compliant icon theme in an application to use - themed icons on any platform. - - The default \l {QIcon::themeSearchPaths()}{icon theme search paths} depend on - the platform. On Linux and UNIX, the search path will use the \c XDG_DATA_DIRS - environment variable if available. All platforms have the resource directory - \c :/icons as a fallback. Custom icon theme search paths can be set with - \l QIcon::setThemeSearchPaths(). - - The following example bundles an icon theme called \e mytheme into the application's - resources using \l {The Qt Resource System}{Qt's resource system}. - - \badcode - <RCC> - <qresource prefix="/"> - <file>icons/mytheme/index.theme</file> - <file>icons/mytheme/32x32/myicon.png</file> - <file>icons/mytheme/32x32@2/myicon.png</file> - </qresource> - </RCC> - \endcode - - The \c index.theme file describes the general attributes of the icon theme, and - lists the available theme icon directories: - - \badcode - [Icon Theme] - Name=mytheme - Comment=My Icon Theme - - Directories=32x32,32x32@2 - - [32x32] - Size=32 - Type=Fixed - - [32x32@2] - Size=32 - Scale=2 - Type=Fixed - \endcode - - In order to use the bundled icon theme, an application should call \l QIcon::setThemeName() - before loading the main QML file: - - \code - #include <QGuiApplication> - #include <QQmlApplicationEngine> - #include <QIcon> - - int main(int argc, char *argv[]) - { - QGuiApplication app(argc, argv); - - QIcon::setThemeName("mytheme"); // <-- - - QQmlApplicationEngine engine; - engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); - return app.exec(); - } - \endcode - - Now it is possible to use named icons from the bundled icon theme without having - to specify any fallback source: - - \code - Button { - icon.name: "myicon" - } - \endcode - - The \l {Qt Quick Controls - Gallery}{Gallery example} and \l {Qt Quick Controls 2 - Wearable Demo} - {Wearable Demo} provide complete runnable applications with a bundled icon theme. -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-imagine.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-imagine.qdoc deleted file mode 100644 index aed0f894..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-imagine.qdoc +++ /dev/null @@ -1,2524 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-imagine.html - \title Imagine Style - - The Imagine Style is based on configurable image assets. \l{detailed-desc-imagine}{More...} - - \styleimport {QtQuick.Controls.Imagine 2.12} {Qt 5.10} - - \section1 Attached Properties - - \list - \li \l {imagine-path-attached-prop}{\b path} : string - \endlist - - \section1 Detailed Description - \target detailed-desc-imagine - - The Imagine style is based on image assets. The style comes with a default - set of images, but the images can be easily changed by providing a directory - with images using a predefined naming convention. - - \image qtquickcontrols2-imagine.png - \caption The Imagine style with the default images - - To run an application with the Imagine style, see - \l {Using Styles in Qt Quick Controls}. - - \section2 File Names - - The image files are named using the following convention: - - \c <control>-<element>-<states> - - The \c <control> and \c <element> sections are mandatory, but the - \c <states> section is optional. For example, if a single file named - \c "button-background.9.png" is provided for \l {Button}, it will be used - for every state that \c Button supports. It is up to the developer to - decide the set of states that they will provide images for. However, it - is recommended to provide images for the most common control states where - possible, such as \c disabled, \c pressed, etc. This will ensure that - interactive controls visually behave as the end user would expect them to. - - \section2 Element Reference - - The following table lists which elements are supported for each control, - along with the possible states for that element, and the file extension - that it expects. An element is an image that represents a certain visual - part of the control. For example, \c {Button}'s \c "background" element - represents its \l {Control::}{background}. - - \table - \header - \li Control - \li Element - \li States - \li Extension - \row - \li \l ApplicationWindow - \li background - \li active - \li .9.png (or .png) - \row - \li \l BusyIndicator - \li animation - \li disabled, running, mirrored, hovered - \li .webp - \row - \li - \li background - \li same as above - \li .webp - \row - \li \l Button - \li background - \li disabled, pressed, checked, checkable, focused, highlighted, flat, mirrored, hovered - \li .9.png - \row - \li \l CheckBox - \li background - \li disabled, pressed, checked, partially-checked, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li indicator - \li same as above - \li .png - \row - \li \l CheckDelegate - \li background - \li disabled, pressed, checked, partially-checked, focused, highlighted, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li indicator - \li same as above - \li .png - \row - \li \l ComboBox - \li background - \li disabled, pressed, editable, open, focused, mirrored, hovered, flat - \li .9.png (or .png) - \row - \li - \li indicator - \li same as above - \li .png - \row - \li - \li popup - \li same as above - \li .9.png (or .png) - \row - \li \l DelayButton - \li background - \li disabled, pressed, checked, checkable, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li progress - \li same as above - \li .9.png (or .png) - \row - \li - \li mask - \li same as above - \li .9.png (or .png) - \row - \li \l Dial - \li background - \li disabled, pressed, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li handle - \li same as above - \li .9.png (or .png) - \row - \li \l Dialog - \li background - \li modal, dim - \li .9.png (or .png) - \row - \li - \li title - \li same as above - \li .9.png (or .png) - \row - \li - \li overlay - \li modal - \li .9.png (or .png) - \row - \li \l DialogButtonBox - \li background - \li disabled, mirrored - \li .9.png (or .png) - \row - \li \l Drawer - \li background - \li modal, dim, top, left, right, bottom - \li .9.png (or .png) - \row - \li - \li overlay - \li modal - \li .9.png (or .png) - \row - \li \l Frame - \li background - \li disabled, mirrored - \li .9.png (or .png) - \row - \li \l GroupBox - \li background - \li disabled, mirrored - \li .9.png (or .png) - \row - \li - \li title - \li same as above - \li .9.png (or .png) - \row - \li \l ItemDelegate - \li background - \li disabled, pressed, focused, highlighted, mirrored, hovered - \li .9.png (or .png) - \row - \li \l Label - \li background - \li disabled, mirrored, hovered - \li .9.png (or .png) - \row - \li \l Menu - \li background - \li modal, dim - \li .9.png (or .png) - \row - \li - \li overlay - \li modal - \li .9.png (or .png) - \row - \li \l MenuItem - \li arrow - \li disabled, pressed, checked, focused, highlighted, mirrored, hovered - \li .png - \row - \li - \li background - \li same as above - \li .9.png (or .png) - \row - \li - \li indicator - \li same as above - \li .png - \row - \li \l MenuSeparator - \li background - \li disabled, mirrored - \li .9.png (or .png) - \row - \li - \li separator - \li same as above - \li .9.png (or .png) - \row - \li \l Page - \li background - \li disabled, mirrored - \li .9.png (or .png) - \row - \li \l PageIndicator - \li background - \li disabled, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li delegate - \li disabled, pressed, current, mirrored, hovered - \li .png - \row - \li \l Pane - \li background - \li disabled, mirrored - \li .9.png (or .png) - \row - \li \l Popup - \li background - \li modal, dim - \li .9.png (or .png) - \row - \li - \li overlay - \li modal - \li .9.png (or .png) - \row - \li \l ProgressBar - \li animation - \li disabled, mirrored, hovered - \li .png - \row - \li - \li background - \li disabled, indeterminate, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li mask - \li same as above - \li .9.png (or .png) - \row - \li - \li progress - \li same as above - \li .9.png (or .png) - \row - \li \l RadioButton - \li background - \li disabled, pressed, checked, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li indicator - \li same as above - \li .png - \row - \li \l RadioDelegate - \li background - \li disabled, pressed, checked, focused, highlighted, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li indicator - \li same as above - \li .png - \row - \li \l RangeSlider - \li background - \li vertical, horizontal, disabled, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li \l RangeSlider - \li progress - \li same as above - \li .9.png (or .png) - \row - \li - \li handle - \li first, second, vertical, horizontal, disabled, pressed, focused, mirrored, hovered - \li .png - \row - \li \l RoundButton - \li background - \li disabled, pressed, checked, checkable, focused, highlighted, flat, mirrored, hovered - \li .9.png (or .png) - \row - \li \l ScrollBar - \li background - \li vertical, horizontal, disabled, interactive, pressed, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li handle - \li same as above - \li .9.png (or .png) - \row - \li \l ScrollIndicator - \li background - \li vertical, horizontal, disabled, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li handle - \li same as above - \li .9.png (or .png) - \row - \li \l ScrollView - \li background - \li disabled, mirrored - \li .9.png (or .png) - \row - \li \l Slider - \li background - \li vertical, horizontal, disabled, pressed, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li handle - \li same as above - \li .9.png (or .png) - \row - \li - \li progress - \li same as above - \li .9.png (or .png) - \row - \li \l SpinBox - \li background - \li disabled, editable, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li editor - \li disabled, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li indicator - \li up, down, disabled, editable, pressed, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li \l StackView - \li background - \li disabled, mirrored - \li .9.png (or .png) - \row - \li \l SwipeDelegate - \li background - \li disabled, pressed, focused, highlighted, mirrored, hovered - \li .9.png (or .png) - \row - \li \l SwipeView - \li background - \li vertical, horizontal, disabled, interactive, focused, mirrored - \li .9.png (or .png) - \row - \li \l Switch - \li background - \li disabled, pressed, checked, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li handle - \li same as above - \li .9.png (or .png) - \row - \li - \li indicator - \li same as above - \li .9.png (or .png) - \row - \li \l SwitchDelegate - \li background - \li disabled, pressed, checked, focused, highlighted, mirrored, hovered - \li .9.png (or .png) - \row - \li - \li handle - \li same as above - \li .9.png (or .png) - \row - \li - \li indicator - \li same as above - \li .9.png (or .png) - \row - \li \l TabBar - \li background - \li disabled, header, footer, mirrored - \li .9.png (or .png) - \row - \li \l TabButton - \li background - \li disabled, pressed, checked, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li \l TextArea - \li background - \li disabled, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li \l TextField - \li background - \li disabled, focused, mirrored, hovered - \li .9.png (or .png) - \row - \li \l ToolBar - \li background - \li disabled, header, footer, mirrored - \li .9.png (or .png) - \row - \li \l ToolButton - \li background - \li disabled, pressed, checked, checkable, focused, highlighted, flat, mirrored, hovered - \li .9.png (or .png) - \row - \li \l ToolSeparator - \li background - \li vertical, horizontal, disabled, mirrored - \li .9.png (or .png) - \row - \li - \li separator - \li same as above - \li .9.png (or .png) - \row - \li \l ToolTip - \li background - \li - \li .9.png (or .png) - \row - \li \l Tumbler - \li background - \li disabled, focused, mirrored, hovered - \li .9.png (or .png) - \endtable - - \section2 Asset Examples - - The following table lists examples of assets (taken from the default - Imagine style assets) for all controls. The list is not exhaustive, - as not all elements need assets, but it can be used as a guide - when creating your own assets. - - \table - \header - \li Control - \li Element - \li States - \li Asset - \li Notes - \row - \li \l ApplicationWindow - \li background - \li - \li \image imagine/images/applicationwindow-background.png - \li \l {sup1}{See footnote} \sup 1 - \row - \li - \li overlay - \li - \li \image imagine/images/applicationwindow-overlay.png - \li \l {sup1}{See footnote} \sup 1 - \row - \li - \li overlay - \li modal - \li \image imagine/images/applicationwindow-overlay-modal.png - \li \l {sup1}{See footnote} \sup 1 - \row - \li \l Button - \li background - \li - \li \image imagine/images/button-background.9.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/button-background-disabled.9.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/button-background-focused.9.png - \li - \row - \li - \li background - \li pressed - \li \image imagine/images/button-background-pressed.9.png - \li - \row - \li - \li background - \li checked - \li \image imagine/images/button-background-checked.9.png - \li - \row - \li - \li background - \li checked, disabled - \li \image imagine/images/button-background-checked-disabled.9.png - \li - \row - \li - \li background - \li checked, focused - \li \image imagine/images/button-background-checked-focused.9.png - \li - \row - \li - \li background - \li checked, hovered - \li \image imagine/images/button-background-checked-hovered.9.png - \li - \row - \li - \li background - \li highlighted - \li \image imagine/images/button-background-highlighted.9.png - \li - \row - \li - \li background - \li highlighted, disabled - \li \image imagine/images/button-background-highlighted-disabled.9.png - \li - \row - \li - \li background - \li highlighted, focused - \li \image imagine/images/button-background-highlighted-focused.9.png - \li - \row - \li - \li background - \li highlighted, hovered - \li \image imagine/images/button-background-highlighted-hovered.9.png - \li - \row - \li - \li background - \li highlighted, pressed - \li \image imagine/images/button-background-highlighted-pressed.9.png - \li - \row - \li - \li background - \li highlighted, checked - \li \image imagine/images/button-background-highlighted-checked.9.png - \li - \row - \li - \li background - \li hovered - \li \image imagine/images/button-background-hovered.9.png - \li - \row - \li - \li background - \li flat - \li \image imagine/images/button-background-flat.9.png - \li - \row - \li - \li background - \li flat, disabled - \li \image imagine/images/button-background-flat-disabled.9.png - \li - \row - \li - \li background - \li flat, hovered - \li \image imagine/images/button-background-flat-hovered.9.png - \li - \row - \li - \li background - \li flat, pressed - \li \image imagine/images/button-background-flat-pressed.9.png - \li - \row - \li - \li background - \li flat, checked - \li \image imagine/images/button-background-flat-checked.9.png - \li - \row - \li \l CheckBox - \li indicator - \li - \li \image imagine/images/checkbox-indicator.png - \li - \row - \li - \li indicator - \li disabled - \li \image imagine/images/checkbox-indicator-disabled.png - \li - \row - \li - \li indicator - \li pressed - \li \image imagine/images/checkbox-indicator-pressed.png - \li - \row - \li - \li indicator - \li checked - \li \image imagine/images/checkbox-indicator-checked.png - \li - \row - \li - \li indicator - \li checked, pressed - \li \image imagine/images/checkbox-indicator-checked-pressed.png - \li - \row - \li - \li indicator - \li checked, hovered - \li \image imagine/images/checkbox-indicator-checked-hovered.png - \li - \row - \li - \li indicator - \li checked, focused - \li \image imagine/images/checkbox-indicator-checked-focused.png - \li - \row - \li - \li indicator - \li partially, checked - \li \image imagine/images/checkbox-indicator-partially-checked.png - \li - \row - \li - \li indicator - \li partially, checked, pressed - \li \image imagine/images/checkbox-indicator-partially-checked-pressed.png - \li - \row - \li - \li indicator - \li partially, checked, focused - \li \image imagine/images/checkbox-indicator-partially-checked-focused.png - \li - \row - \li - \li indicator - \li partially, checked, hovered - \li \image imagine/images/checkbox-indicator-partially-checked-hovered.png - \li - \row - \li - \li indicator - \li focused - \li \image imagine/images/checkbox-indicator-focused.png - \li - \row - \li - \li indicator - \li hovered - \li \image imagine/images/checkbox-indicator-hovered.png - \li - \row - \li \l CheckDelegate - \li background - \li - \li \image imagine/images/checkdelegate-background.9.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/checkdelegate-background-disabled.9.png - \li - \row - \li - \li background - \li pressed - \li \image imagine/images/checkdelegate-background-pressed.9.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/checkdelegate-background-focused.9.png - \li - \row - \li - \li background - \li hovered - \li \image imagine/images/checkdelegate-background-hovered.9.png - \li - \row - \li - \li indicator - \li - \li \image imagine/images/checkdelegate-indicator.png - \li - \row - \li - \li indicator - \li disabled - \li \image imagine/images/checkdelegate-indicator-disabled.png - \li - \row - \li - \li indicator - \li pressed - \li \image imagine/images/checkdelegate-indicator-pressed.png - \li - \row - \li - \li indicator - \li checked - \li \image imagine/images/checkdelegate-indicator-checked.png - \li - \row - \li - \li indicator - \li checked, pressed - \li \image imagine/images/checkdelegate-indicator-checked-pressed.png - \li - \row - \li - \li indicator - \li checked, focused - \li \image imagine/images/checkdelegate-indicator-checked-focused.png - \li - \row - \li - \li indicator - \li checked, hovered - \li \image imagine/images/checkdelegate-indicator-checked-hovered.png - \li - \row - \li - \li indicator - \li focused - \li \image imagine/images/checkdelegate-indicator-focused.png - \li - \row - \li - \li indicator - \li hovered - \li \image imagine/images/checkdelegate-indicator-hovered.png - \li - \row - \li - \li indicator - \li partially, checked - \li \image imagine/images/checkdelegate-indicator-partially-checked.png - \li - \row - \li - \li indicator - \li partially, checked, pressed - \li \image imagine/images/checkdelegate-indicator-partially-checked-pressed.png - \li - \row - \li - \li indicator - \li partially, checked, focused - \li \image imagine/images/checkdelegate-indicator-partially-checked-focused.png - \li - \row - \li - \li indicator - \li partially, checked, hovered - \li \image imagine/images/checkdelegate-indicator-partially-checked-hovered.png - \li - \row - \li - \li indicator - \li hovered - \li \image imagine/images/checkdelegate-indicator-hovered.png - \li - \row - \li \l ComboBox - \li background - \li - \li \image imagine/images/combobox-background.9.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/combobox-background-disabled.9.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/combobox-background-focused.9.png - \li - \row - \li - \li background - \li hovered - \li \image imagine/images/combobox-background-hovered.9.png - \li - \row - \li - \li background - \li pressed - \li \image imagine/images/combobox-background-pressed.9.png - \li - \row - \li - \li background - \li open - \li \image imagine/images/combobox-background-open.9.png - \li - \row - \li - \li background - \li editable - \li \image imagine/images/combobox-background-editable.9.png - \li - \row - \li - \li background - \li editable, focused - \li \image imagine/images/combobox-background-editable-focused.9.png - \li - \row - \li - \li background - \li editable, disabled - \li \image imagine/images/combobox-background-editable-disabled.9.png - \li - \row - \li - \li indicator - \li - \li \image imagine/images/combobox-indicator.png - \li - \row - \li - \li indicator - \li disabled - \li \image imagine/images/combobox-indicator-disabled.png - \li - \row - \li - \li indicator - \li editable - \li \image imagine/images/combobox-indicator-editable.png - \li - \row - \li - \li indicator - \li editable, disabled - \li \image imagine/images/combobox-indicator-editable-disabled.png - \li - \row - \li - \li indicator - \li editable, mirrored - \li \image imagine/images/combobox-indicator-editable-mirrored.png - \li - \row - \li - \li indicator - \li editable, mirrored, disabled - \li \image imagine/images/combobox-indicator-editable-mirrored-disabled.png - \li - \row - \li - \li popup - \li - \li \image imagine/images/combobox-popup.9.png - \li - \row - \li \l DelayButton - \li background - \li - \li \image imagine/images/delaybutton-background.9.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/delaybutton-background-disabled.9.png - \li - \row - \li - \li background - \li disabled, checked - \li \image imagine/images/delaybutton-background-disabled-checked.9.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/delaybutton-background-focused.9.png - \li - \row - \li - \li background - \li pressed - \li \image imagine/images/delaybutton-background-pressed.9.png - \li - \row - \li - \li background - \li checked - \li \image imagine/images/delaybutton-background-checked.9.png - \li - \row - \li - \li background - \li checked, focused - \li \image imagine/images/delaybutton-background-checked-focused.9.png - \li - \row - \li - \li background - \li checked, hovered - \li \image imagine/images/delaybutton-background-checked-hovered.9.png - \li - \row - \li - \li background - \li hovered - \li \image imagine/images/delaybutton-background-hovered.9.png - \li - \row - \li - \li progress - \li - \li \image imagine/images/delaybutton-progress.9.png - \li - \row - \li - \li progress - \li disabled - \li \image imagine/images/delaybutton-progress-disabled.9.png - \li - \row - \li - \li mask - \li - \li \image imagine/images/delaybutton-mask.9.png - \li - \row - \li \l Dial - \li background - \li - \li \image imagine/images/dial-background.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/dial-background-disabled.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/dial-background-focused.png - \li - \row - \li - \li handle - \li - \li \image imagine/images/dial-handle.png - \li - \row - \li - \li handle - \li disabled - \li \image imagine/images/dial-handle-disabled.png - \li - \row - \li - \li handle - \li focused - \li \image imagine/images/dial-handle-focused.png - \li - \row - \li - \li handle - \li focused, pressed - \li \image imagine/images/dial-handle-focused-pressed.png - \li - \row - \li - \li handle - \li focused, hovered - \li \image imagine/images/dial-handle-focused-hovered.png - \li - \row - \li - \li handle - \li pressed - \li \image imagine/images/dial-handle-pressed.png - \li - \row - \li - \li handle - \li hovered - \li \image imagine/images/dial-handle-hovered.png - \li - \row - \li \l Dialog - \li background - \li - \li \image imagine/images/dialog-background.9.png - \li - \row - \li - \li overlay - \li - \li \image imagine/images/dialog-overlay.png - \li \l {sup1}{See footnote} \sup 1 - \row - \li - \li overlay - \li modal - \li \image imagine/images/dialog-overlay-modal.png - \li \l {sup1}{See footnote} \sup 1 - \row - \li \l DialogButtonBox - \li background - \li - \li \image imagine/images/dialogbuttonbox-background.9.png - \li - \row - \li \l Drawer - \li background - \li left - \li \image imagine/images/drawer-background-left.9.png - \li - \row - \li - \li background - \li right - \li \image imagine/images/drawer-background-right.9.png - \li - \row - \li - \li background - \li top - \li \image imagine/images/drawer-background-top.9.png - \li - \row - \li - \li background - \li bottom - \li \image imagine/images/drawer-background-bottom.9.png - \li - \row - \li - \li overlay - \li - \li \image imagine/images/drawer-overlay.png - \li \l {sup1}{See footnote} \sup 1 - \row - \li - \li overlay - \li modal - \li \image imagine/images/drawer-overlay-modal.png - \li \l {sup1}{See footnote} \sup 1 - \row - \li \l Frame - \li background - \li - \li \image imagine/images/frame-background.9.png - \li - \row - \li \l GroupBox - \li background - \li - \li \image imagine/images/groupbox-background.9.png - \li - \row - \li - \li title - \li - \li \image imagine/images/groupbox-title.9.png - \li - \row - \li \l ItemDelegate - \li background - \li - \li \image imagine/images/itemdelegate-background.9.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/itemdelegate-background-disabled.9.png - \li - \row - \li - \li background - \li pressed - \li \image imagine/images/itemdelegate-background-pressed.9.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/itemdelegate-background-focused.9.png - \li - \row - \li - \li background - \li hovered - \li \image imagine/images/itemdelegate-background-hovered.9.png - \li - \row - \li - \li background - \li highlighted - \li \image imagine/images/itemdelegate-background-highlighted.9.png - \li - \row - \li \l Menu - \li background - \li - \li \image imagine/images/menu-background.9.png - \li - \row - \li \l MenuItem - \li background - \li - \li \image imagine/images/menuitem-background.9.png - \li - \row - \li - \li background - \li highlighted - \li \image imagine/images/menuitem-background-highlighted.9.png - \li - \row - \li - \li arrow - \li - \li \image imagine/images/menuitem-arrow.png - \li - \row - \li - \li arrow - \li mirrored - \li \image imagine/images/menuitem-arrow-mirrored.png - \li - \row - \li - \li arrow - \li disabled - \li \image imagine/images/menuitem-arrow-disabled.png - \li - \row - \li - \li arrow - \li mirrored, disabled - \li \image imagine/images/menuitem-arrow-mirrored-disabled.png - \li - \row - \li - \li indicator - \li - \li \image imagine/images/menuitem-indicator.png - \li - \row - \li - \li indicator - \li disabled - \li \image imagine/images/menuitem-indicator-disabled.png - \li - \row - \li - \li indicator - \li pressed - \li \image imagine/images/menuitem-indicator-pressed.png - \li - \row - \li - \li indicator - \li checked - \li \image imagine/images/menuitem-indicator-checked.png - \li - \row - \li - \li indicator - \li checked, pressed - \li \image imagine/images/menuitem-indicator-checked-pressed.png - \li - \row - \li - \li indicator - \li checked, focused - \li \image imagine/images/menuitem-indicator-checked-focused.png - \li - \row - \li - \li indicator - \li checked, hovered - \li \image imagine/images/menuitem-indicator-checked-hovered.png - \li - \row - \li - \li indicator - \li focused - \li \image imagine/images/menuitem-indicator-focused.png - \li - \row - \li - \li indicator - \li hovered - \li \image imagine/images/menuitem-indicator-hovered.png - \li - \row - \li \l MenuSeparator - \li separator - \li - \li \image imagine/images/menuseparator-separator.9.png - \li - \row - \li \l Page - \li background - \li - \li \image imagine/images/page-background.png - \li \l {sup1}{See footnote} \sup 1 - \row - \li \l PageIndicator - \li delegate - \li - \li \image imagine/images/pageindicator-delegate.png - \li - \row - \li - \li delegate - \li disabled - \li \image imagine/images/pageindicator-delegate-disabled.png - \li - \row - \li - \li delegate - \li disabled, current - \li \image imagine/images/pageindicator-delegate-disabled-current.png - \li - \row - \li - \li delegate - \li pressed - \li \image imagine/images/pageindicator-delegate-pressed.png - \li - \row - \li - \li delegate - \li current - \li \image imagine/images/pageindicator-delegate-current.png - \li - \row - \li \l Pane - \li background - \li - \li \image imagine/images/pane-background.9.png - \li - \row - \li \l Popup - \li background - \li - \li \image imagine/images/popup-background.9.png - \li \l {sup1}{See footnote} \sup 1 - \row - \li - \li overlay - \li - \li \image imagine/images/popup-overlay.png - \li \l {sup1}{See footnote} \sup 1 - \row - \li - \li overlay - \li modal - \li \image imagine/images/popup-overlay-modal.png - \li - \row - \li \l ProgressBar - \li background - \li - \li \image imagine/images/progressbar-background.9.png - \li - \row - \li - \li progress - \li - \li \image imagine/images/progressbar-progress.png - \li - \row - \li - \li mask - \li - \li \image imagine/images/progressbar-mask.9.png - \li - \row - \li \l RadioButton - \li indicator - \li - \li \image imagine/images/radiobutton-indicator.png - \li - \row - \li - \li indicator - \li disabled - \li \image imagine/images/radiobutton-indicator-disabled.png - \li - \row - \li - \li indicator - \li pressed - \li \image imagine/images/radiobutton-indicator-pressed.png - \li - \row - \li - \li indicator - \li checked - \li \image imagine/images/radiobutton-indicator-checked.png - \li - \row - \li - \li indicator - \li checked, focused - \li \image imagine/images/radiobutton-indicator-checked-focused.png - \li - \row - \li - \li indicator - \li checked, hovered - \li \image imagine/images/radiobutton-indicator-checked-hovered.png - \li - \row - \li - \li indicator - \li checked, pressed - \li \image imagine/images/radiobutton-indicator-checked-pressed.png - \li - \row - \li - \li indicator - \li focused - \li \image imagine/images/radiobutton-indicator-focused.png - \li - \row - \li - \li indicator - \li hovered - \li \image imagine/images/radiobutton-indicator-hovered.png - \li - \row - \li \l RadioDelegate - \li background - \li - \li \image imagine/images/radiodelegate-background.9.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/radiodelegate-background-disabled.9.png - \li - \row - \li - \li background - \li pressed - \li \image imagine/images/radiodelegate-background-pressed.9.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/radiodelegate-background-focused.9.png - \li - \row - \li - \li background - \li hovered - \li \image imagine/images/radiodelegate-background-hovered.9.png - \li - \row - \li - \li indicator - \li - \li \image imagine/images/radiodelegate-indicator.png - \li - \row - \li - \li indicator - \li disabled - \li \image imagine/images/radiodelegate-indicator-disabled.png - \li - \row - \li - \li indicator - \li pressed - \li \image imagine/images/radiodelegate-indicator-pressed.png - \li - \row - \li - \li indicator - \li checked - \li \image imagine/images/radiodelegate-indicator-checked.png - \li - \row - \li - \li indicator - \li checked, focused - \li \image imagine/images/radiodelegate-indicator-checked-focused.png - \li - \row - \li - \li indicator - \li checked, hovered - \li \image imagine/images/radiodelegate-indicator-checked-hovered.png - \li - \row - \li - \li indicator - \li checked, pressed - \li \image imagine/images/radiodelegate-indicator-checked-pressed.png - \li - \row - \li - \li indicator - \li focused - \li \image imagine/images/radiodelegate-indicator-focused.png - \li - \row - \li - \li indicator - \li hovered - \li \image imagine/images/radiodelegate-indicator-hovered.png - \li - \row - \li \l RangeSlider - \li background - \li vertical - \li \image imagine/images/rangeslider-background-vertical.9.png - \li - \row - \li - \li background - \li horizontal - \li \image imagine/images/rangeslider-background-horizontal.9.png - \li - \row - \li - \li progress - \li vertical - \li \image imagine/images/rangeslider-progress-vertical.9.png - \li - \row - \li - \li progress - \li vertical, disabled - \li \image imagine/images/rangeslider-progress-vertical-disabled.9.png - \li - \row - \li - \li progress - \li horizontal - \li \image imagine/images/rangeslider-progress-horizontal.9.png - \li - \row - \li - \li progress - \li horizontal, disabled - \li \image imagine/images/rangeslider-progress-horizontal-disabled.9.png - \li - \row - \li - \li handle - \li - \li \image imagine/images/rangeslider-handle.png - \li - \row - \li - \li handle - \li disabled - \li \image imagine/images/rangeslider-handle-disabled.png - \li - \row - \li - \li handle - \li focused - \li \image imagine/images/rangeslider-handle-focused.png - \li - \row - \li - \li handle - \li focused, hovered - \li \image imagine/images/rangeslider-handle-focused-hovered.png - \li - \row - \li - \li handle - \li focused, pressed - \li \image imagine/images/rangeslider-handle-focused-pressed.png - \li - \row - \li - \li handle - \li hovered - \li \image imagine/images/rangeslider-handle-hovered.png - \li - \row - \li - \li handle - \li pressed - \li \image imagine/images/rangeslider-handle-pressed.png - \li - \row - \li \l RoundButton - \li background - \li - \li \image imagine/images/roundbutton-background.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/roundbutton-background-disabled.png - \li - \row - \li - \li background - \li disabled, checked - \li \image imagine/images/roundbutton-background-disabled-checked.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/roundbutton-background-focused.png - \li - \row - \li - \li background - \li pressed - \li \image imagine/images/roundbutton-background-pressed.png - \li - \row - \li - \li background - \li checked - \li \image imagine/images/roundbutton-background-checked.png - \li - \row - \li - \li background - \li checked, focused - \li \image imagine/images/roundbutton-background-checked-focused.png - \li - \row - \li - \li background - \li checked, hovered - \li \image imagine/images/roundbutton-background-checked-hovered.png - \li - \row - \li - \li background - \li highlighted - \li \image imagine/images/roundbutton-background-highlighted.png - \li - \row - \li - \li background - \li highlighted, pressed - \li \image imagine/images/roundbutton-background-highlighted-pressed.png - \li - \row - \li - \li background - \li highlighted, focused - \li \image imagine/images/roundbutton-background-highlighted-focused.png - \li - \row - \li - \li background - \li highlighted, hovered - \li \image imagine/images/roundbutton-background-highlighted-hovered.png - \li - \row - \li - \li background - \li hovered - \li \image imagine/images/roundbutton-background-hovered.png - \li - \row - \li \l ScrollBar - \li handle - \li - \li \image imagine/images/scrollbar-handle.png - \li - \row - \li - \li handle - \li disabled - \li \image imagine/images/scrollbar-handle-disabled.png - \li - \row - \li - \li handle - \li interactive - \li \image imagine/images/scrollbar-handle-interactive.png - \li - \row - \li - \li handle - \li interactive, disabled - \li \image imagine/images/scrollbar-handle-interactive-disabled.png - \li - \row - \li - \li handle - \li interactive, pressed - \li \image imagine/images/scrollbar-handle-interactive-pressed.png - \li - \row - \li - \li handle - \li interactive, hovered - \li \image imagine/images/scrollbar-handle-interactive-hovered.png - \li - \row - \li \l ScrollIndicator - \li handle - \li - \li \image imagine/images/scrollindicator-handle.png - \li - \row - \li \l Slider - \li background - \li vertical - \li \image imagine/images/slider-background-vertical.9.png - \li - \row - \li - \li background - \li horizontal - \li \image imagine/images/slider-background-horizontal.9.png - \li - \row - \li - \li progress - \li vertical - \li \image imagine/images/slider-progress-vertical.9.png - \li - \row - \li - \li progress - \li vertical, disabled - \li \image imagine/images/slider-progress-vertical-disabled.9.png - \li - \row - \li - \li progress - \li horizontal - \li \image imagine/images/slider-progress-horizontal.9.png - \li - \row - \li - \li progress - \li horizontal, disabled - \li \image imagine/images/slider-progress-horizontal-disabled.9.png - \li - \row - \li - \li handle - \li - \li \image imagine/images/slider-handle.png - \li - \row - \li - \li handle - \li disabled - \li \image imagine/images/slider-handle-disabled.png - \li - \row - \li - \li handle - \li focused - \li \image imagine/images/slider-handle-focused.png - \li - \row - \li - \li handle - \li focused, hovered - \li \image imagine/images/slider-handle-focused-hovered.png - \li - \row - \li - \li handle - \li focused, pressed - \li \image imagine/images/slider-handle-focused-pressed.png - \li - \row - \li - \li handle - \li hovered - \li \image imagine/images/slider-handle-hovered.png - \li - \row - \li - \li handle - \li pressed - \li \image imagine/images/slider-handle-pressed.png - \li - \row - \li \l SpinBox - \li background - \li - \li \image imagine/images/spinbox-background.9.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/spinbox-background-disabled.9.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/spinbox-background-focused.9.png - \li - \row - \li - \li background - \li editable - \li \image imagine/images/spinbox-background-editable.9.png - \li - \row - \li - \li indicator - \li up - \li \image imagine/images/spinbox-indicator-up.9.png - \li - \row - \li - \li indicator - \li up, disabled - \li \image imagine/images/spinbox-indicator-up-disabled.9.png - \li - \row - \li - \li indicator - \li up, pressed - \li \image imagine/images/spinbox-indicator-up-pressed.9.png - \li - \row - \li - \li indicator - \li up, focused - \li \image imagine/images/spinbox-indicator-up-focused.9.png - \li - \row - \li - \li indicator - \li up, mirrored - \li \image imagine/images/spinbox-indicator-up-mirrored.9.png - \li - \row - \li - \li indicator - \li up, hovered - \li \image imagine/images/spinbox-indicator-up-hovered.9.png - \li - \row - \li - \li indicator - \li up, editable - \li \image imagine/images/spinbox-indicator-up-editable.9.png - \li - \row - \li - \li indicator - \li up, editable, pressed - \li \image imagine/images/spinbox-indicator-up-editable-pressed.9.png - \li - \row - \li - \li indicator - \li up, editable, focused - \li \image imagine/images/spinbox-indicator-up-editable-focused.9.png - \li - \row - \li - \li indicator - \li up, editable, mirrored - \li \image imagine/images/spinbox-indicator-up-editable-mirrored.9.png - \li - \row - \li - \li indicator - \li up, editable, hovered - \li \image imagine/images/spinbox-indicator-up-editable-hovered.9.png - \li - \row - \li - \li indicator - \li down - \li \image imagine/images/spinbox-indicator-down.9.png - \li - \row - \li - \li indicator - \li down, disabled - \li \image imagine/images/spinbox-indicator-down-disabled.9.png - \li - \row - \li - \li indicator - \li down, pressed - \li \image imagine/images/spinbox-indicator-down-pressed.9.png - \li - \row - \li - \li indicator - \li down, focused - \li \image imagine/images/spinbox-indicator-down-focused.9.png - \li - \row - \li - \li indicator - \li down, mirrored - \li \image imagine/images/spinbox-indicator-down-mirrored.9.png - \li - \row - \li - \li indicator - \li down, hovered - \li \image imagine/images/spinbox-indicator-down-hovered.9.png - \li - \row - \li - \li indicator - \li down, editable - \li \image imagine/images/spinbox-indicator-down-editable.9.png - \li - \row - \li - \li indicator - \li down, editable, pressed - \li \image imagine/images/spinbox-indicator-down-editable-pressed.9.png - \li - \row - \li - \li indicator - \li down, editable, focused - \li \image imagine/images/spinbox-indicator-down-editable-focused.9.png - \li - \row - \li - \li indicator - \li down, editable, mirrored - \li \image imagine/images/spinbox-indicator-down-editable-mirrored.9.png - \li - \row - \li - \li indicator - \li down, editable, hovered - \li \image imagine/images/spinbox-indicator-down-editable-hovered.9.png - \li - \row - \li \l SwipeDelegate - \li background - \li - \li \image imagine/images/swipedelegate-background.9.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/swipedelegate-background-disabled.9.png - \li - \row - \li - \li background - \li pressed - \li \image imagine/images/swipedelegate-background-pressed.9.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/swipedelegate-background-focused.9.png - \li - \row - \li - \li background - \li hovered - \li \image imagine/images/swipedelegate-background-hovered.9.png - \li - \row - \li \l Switch - \li indicator - \li - \li \image imagine/images/switch-indicator.png - \li - \row - \li - \li indicator - \li disabled - \li \image imagine/images/switch-indicator-disabled.png - \li - \row - \li - \li indicator - \li pressed - \li \image imagine/images/switch-indicator-pressed.png - \li - \row - \li - \li indicator - \li checked - \li \image imagine/images/switch-indicator-checked.png - \li - \row - \li - \li indicator - \li checked, focused - \li \image imagine/images/switch-indicator-checked-focused.png - \li - \row - \li - \li indicator - \li checked, hovered - \li \image imagine/images/switch-indicator-checked-hovered.png - \li - \row - \li - \li indicator - \li checked, pressed - \li \image imagine/images/switch-indicator-checked-pressed.png - \li - \row - \li - \li indicator - \li focused - \li \image imagine/images/switch-indicator-focused.png - \li - \row - \li - \li indicator - \li hovered - \li \image imagine/images/switch-indicator-hovered.png - \li - \row - \li - \li handle - \li - \li \image imagine/images/switch-handle.png - \li - \row - \li - \li handle - \li disabled - \li \image imagine/images/switch-handle-disabled.png - \li - \row - \li - \li handle - \li pressed - \li \image imagine/images/switch-handle-pressed.png - \li - \row - \li \l SwitchDelegate - \li background - \li - \li \image imagine/images/switchdelegate-background.9.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/switchdelegate-background-disabled.9.png - \li - \row - \li - \li background - \li pressed - \li \image imagine/images/switchdelegate-background-pressed.9.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/switchdelegate-background-focused.9.png - \li - \row - \li - \li background - \li hovered - \li \image imagine/images/switchdelegate-background-hovered.9.png - \li - \row - \li - \li indicator - \li - \li \image imagine/images/switchdelegate-indicator.png - \li - \row - \li - \li indicator - \li disabled - \li \image imagine/images/switchdelegate-indicator-disabled.png - \li - \row - \li - \li indicator - \li pressed - \li \image imagine/images/switchdelegate-indicator-pressed.png - \li - \row - \li - \li indicator - \li checked - \li \image imagine/images/switchdelegate-indicator-checked.png - \li - \row - \li - \li indicator - \li checked, focused - \li \image imagine/images/switchdelegate-indicator-checked-focused.png - \li - \row - \li - \li indicator - \li checked, hovered - \li \image imagine/images/switchdelegate-indicator-checked-hovered.png - \li - \row - \li - \li indicator - \li checked, pressed - \li \image imagine/images/switchdelegate-indicator-checked-pressed.png - \li - \row - \li - \li indicator - \li focused - \li \image imagine/images/switchdelegate-indicator-focused.png - \li - \row - \li - \li indicator - \li hovered - \li \image imagine/images/switchdelegate-indicator-hovered.png - \li - \row - \li - \li handle - \li - \li \image imagine/images/switchdelegate-handle.png - \li - \row - \li - \li handle - \li disabled - \li \image imagine/images/switchdelegate-handle-disabled.png - \li - \row - \li \l TabBar - \li background - \li - \li \image imagine/images/tabbar-background.png - \li - \row - \li \l TabButton - \li background - \li - \li \image imagine/images/tabbutton-background.9.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/tabbutton-background-disabled.9.png - \li - \row - \li - \li background - \li pressed - \li \image imagine/images/tabbutton-background-pressed.9.png - \li - \row - \li - \li background - \li checked - \li \image imagine/images/tabbutton-background-checked.9.png - \li - \row - \li - \li background - \li hovered - \li \image imagine/images/tabbutton-background-hovered.9.png - \li - \row - \li - \li background - \li disabled, checked - \li \image imagine/images/tabbutton-background-disabled-checked.9.png - \li - \row - \li \l TextArea - \li background - \li - \li \image imagine/images/textarea-background.9.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/textarea-background-disabled.9.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/textarea-background-focused.9.png - \li - \row - \li \l TextField - \li background - \li - \li \image imagine/images/textfield-background.9.png - \li - \row - \li - \li background - \li disabled - \li \image imagine/images/textfield-background-disabled.9.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/textfield-background-focused.9.png - \li - \row - \li \l ToolBar - \li background - \li - \li \image imagine/images/toolbar-background.png - \li - \row - \li \l ToolButton - \li background - \li - \li \image imagine/images/toolbutton-background.9.png - \li - \row - \li - \li background - \li disabled, checked - \li \image imagine/images/toolbutton-background-disabled-checked.9.png - \li - \row - \li - \li background - \li focused - \li \image imagine/images/toolbutton-background-focused.9.png - \li - \row - \li - \li background - \li pressed - \li \image imagine/images/toolbutton-background-pressed.9.png - \li - \row - \li - \li background - \li checked - \li \image imagine/images/toolbutton-background-checked.9.png - \li - \row - \li - \li background - \li checked, focused - \li \image imagine/images/toolbutton-background-checked-focused.9.png - \li - \row - \li - \li background - \li checked, hovered - \li \image imagine/images/toolbutton-background-checked-hovered.9.png - \li - \row - \li - \li background - \li hovered - \li \image imagine/images/toolbutton-background-hovered.9.png - \li - \row - \li \l ToolSeparator - \li separator - \li horizontal - \li \image imagine/images/toolseparator-separator-horizontal.9.png - \li - \row - \li - \li separator - \li vertical - \li \image imagine/images/toolseparator-separator-vertical.9.png - \li - \row - \li \l ToolTip - \li background - \li - \li \image imagine/images/tooltip-background.9.png - \li - \endtable - - \target sup1 - \sup 1 A 1x1 image containing one color, stretched to fill the control. - - \section2 9-Patch Images - - The Imagine style uses \l - {https://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch}{9-patch - images} in order to give designers control over how a particular element - responds to being resized. Here is an example of a 9-patch image that - represents a \l {Button}'s \l {Control::}{background}, alongside a - magnified version (to make it easier to see the 9-patch lines): - - \image qtquickcontrols2-imagine-9-patch-4x.png - - The content of the image is 44 pixels wide by 32 pixels high. Every 9-patch - image needs a one pixel thick line (collectively referred to as - "9-patch lines") around every side, so the actual size of the image becomes - 46 pixels wide by 34 pixels high. Note that the 9-patch lines must be one - pixel thick regardless of the target DPI of the image. For example, - the 9-patch lines for button-background.9.png and [email protected] - must both be one pixel thick. - - The 9-patch lines must be black, and the remaining areas must be transparent - or white: - - \image qtquickcontrols2-imagine-9-patch-size.png - - \section3 Stretchable Areas - - The 9-patch lines on the top and left edges determine which parts of the - image are stretched when it is resized. - - Below are examples of the 9-patch image being resized to one and a half - times its original size in various dimensions: - - \image qtquickcontrols2-imagine-9-patch-resized-stretchable.png - - Notice how the the rounded corners keep their original size, as they are - outside the range of the lines. - - \section3 Padding Areas - - The 9-patch lines on the right and bottom edges determine how much space - is available for the control's \l {Control::}{contentItem}, which means it - can also be thought of as controlling the \l {Control::}{padding}. For a - diagram that illustrates padding, see \l {Control Layout}. - - Below are more examples of the 9-patch image being resized, but this time - demonstrating how the padding 9-patch lines work. - - \image qtquickcontrols2-imagine-9-patch-resized-padding.png - - The \c contentItem can take up as much space as it needs within the shaded - areas. If the padding lines are left out, the \c contentItem will take as - much space as it needs without exceeding the stretchable areas. - - \section3 Inset Areas - - In some cases it is necessary for a control to have a drop shadow, for - example. However, if we were to add a drop shadow to the button above, it - would affect its size, which presents problems for both layouting and - mouse/touch input boundaries. - - Inset areas accounts for this by telling the control that a certain area of - the 9-patch image should go outside of the control: - - \image qtquickcontrols2-imagine-9-patch-inset.png - - In the image below, the dashed line represents the button's clickable area, - as well as the space that it will take up in a layout. The shadow is marked - by the striped area behind it: - - \image qtquickcontrols2-imagine-9-patch-inset-boundaries.png - - \section3 Exporting 9-Patch Images - - Various vector and bitmap editors can be used to create 9-patch images - suitable for use with the Imagine style. The following sections briefly - explain the export process for each editor, and the last section explains - how to ensure the exported images are 9-patch-conformant. - - \section4 Illustrator - - See Adobe's - \l {https://helpx.adobe.com/in/illustrator/using/collect-assets-export-for-screens.html#panel} - {Asset Export panel} documentation. - - \section4 Inkscape - - The \l {https://github.com/mitchcurtis/inkscape-9-patch-export} - {Inkscape 9-Patch Export Extension} can be used to export assets with - Inkscape. - - \section4 Photoshop - - See Adobe's - \l {https://helpx.adobe.com/photoshop/using/generate-assets-layers.html} - {Generate image assets from layers} documentation. - - \section4 Sketch - - See Sketch's \l {https://sketchapp.com/docs/exporting/}{Exporting} documentation. - - Qt Quick Controls also provides a - \l {http://code.qt.io/cgit/qt/qtquickcontrols2.git/tree/src/quickcontrols2/imagine/design} - {plugin} for Sketch that automatically fixes the thickness of the 9-patch lines - after the assets are exported. To install this file, double-click on it. - Once Sketch has confirmed that the 9-patch export plugin has been installed, - the plugin will automatically process images when they are exported. - - \section4 Fixing 9-Patch Lines - - When exporting 9-patch images in several DPI variants (\c {@2x}, \c {@3x}, - etc.), the 9-patch lines will typically be scaled up along with the image. - There are several ways to fix this, but perhaps the simplest approach is - to use \l {https://www.imagemagick.org/script/mogrify.php}{ImageMagick's mogrify} - tool. The tool has a \c -shave feature that can be used to crop the image - to reduce the thickness of the 9-patch lines: - - \badcode - mogrify -shave 1x1 -path path/to/images *@2x.9.png - mogrify -shave 2x2 -path path/to/images *@3x.9.png - mogrify -shave 3x3 -path path/to/images *@4x.9.png - \endcode - - Regular DPI images (those without the \c @Nx prefix) are not affected, so it - is only necessary to run the command on images intended for high DPI displays. - - \section2 Animated Images - - The \l {https://developers.google.com/speed/webp/}{WebP} and GIF animated - image formats are supported by the Imagine style. - - \section2 Customization - - \section3 Path - - The Imagine style allows customizing the \l {imagine-path-attached-prop}{path} - that is used to do the image asset selection. The path can be specified for any - window or item, and it automatically propagates to children in the same manner as - \l {Control::font}{fonts}. In the following example, the window and all three radio - buttons appear with dark image assets (files that are located in "qrc:/themes/dark"). - - \table - \row - \li - \qml - import QtQuick 2.12 - import QtQuick.Controls 2.12 - import QtQuick.Controls.Imagine 2.12 - - ApplicationWindow { - visible: true - - Imagine.path: "qrc:/themes/dark" - - Column { - anchors.centerIn: parent - - RadioButton { text: qsTr("Small") } - RadioButton { text: qsTr("Medium"); checked: true } - RadioButton { text: qsTr("Large") } - } - } - \endqml - \li - \image qtquickcontrols2-imagine-customization-dark.png - \endtable - - In addition to specifying the path in QML, it is also possible to specify - it via an \l {imagine-customization-environment-variable}{environment variable} - or in a \l {imagine-customization-configuration-file}{configuration file}. - Attributes specified in QML take precedence over all other methods. - - \section4 Configuration File - \target imagine-customization-configuration-file - - \include qquickimaginestyle.qdocinc conf - - See \l {Qt Quick Controls Configuration File} for more details about the - configuration file. - - \section4 Environment Variables - \target imagine-customization-environment-variable - - \include qquickimaginestyle.qdocinc env - - See \l {Supported Environment Variables in Qt Quick Controls} for the full - list of supported environment variables. - - \section3 Palette - - The Imagine style supports palette customization via the \l {Item::}{palette} - property and the \l {Palette Configuration}{qtquickcontrols2.conf} file. - As with other styles, the exact \l[QML]{Palette}{palette roles} - that the Imagine style uses are style-dependent. However, as most of the visual - appearance of controls (for example: backgrounds) are managed through image assets, - only the roles that are typically used for text will have an effect. - - \section3 Font - - Custom fonts can be set via the \l {Control::}{font} property and the - \l {Font Configuration}{configuration} file. - - \section2 Dependency - - The Imagine style must be separately imported to gain access to the - attributes that are specific to the Imagine style. It should be noted - that regardless of the references to the Imagine style, the same - application code runs with any other style. Imagine-specific attributes - only have an effect when the application is run with the Imagine style. - - If the Imagine style is imported in a QML file that is always loaded, the - Imagine style must be deployed with the application in order to be able - to run the application regardless of which style the application is run with. - By using \l {Using File Selectors with Qt Quick Controls}{file selectors}, - style-specific tweaks can be applied without creating a hard dependency to - a style. - - \b {See also} \l {Styling Qt Quick Controls} - - \section1 Attached Property Documentation - - \styleproperty {Imagine.path} {string} {imagine-path-attached-prop} - \target imagine-path-attached-prop - This attached property holds the path to the image assets... - - \code - Button { - Imagine.path: "qrc:/themes/dark" - } - \endcode - - \endstyleproperty - - \section1 Related Information - - \list - \li \l{Styling Qt Quick Controls} - \li \l{Qt Quick Controls - Imagine Style Example: Automotive}{Automotive Example} - \li \l{Qt Quick Controls - Imagine Style Example: Music Player}{Music Player Example} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-index.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-index.qdoc deleted file mode 100644 index 7b64e776..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-index.qdoc +++ /dev/null @@ -1,204 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols-index.html - \keyword Qt Quick Controls 2 - \title Qt Quick Controls - - \brief Provides a set of UI controls for Qt Quick. - - Qt Quick Controls provides a set of controls that can be used - to build complete interfaces in Qt Quick. The module was introduced - in Qt 5.7. - - \image qtquickcontrols2-styles.png - - Qt Quick Controls comes with a selection customizable styles. - See \l {Styling Qt Quick Controls} for more details. - - - \section1 Using the Module - - \section2 QML API - - The \l{Qt Quick Controls QML Types}{QML types} can be imported into your - application using the following import statement in your \c {.qml} file: - - \qml - import QtQuick.Controls - \endqml - - \section2 C++ API - - Using the \l{Qt Quick Controls C++ Classes}{C++ API} requires linking against the module library, - either directly or through other dependencies. - Several build tools have dedicated support for this, including CMake and qmake. - - \section3 Building with CMake - Use the \c find_package() command to locate the needed module components in the Qt6 package: - - \snippet qtquickcontrols2-overview.cmake 0 - - See also the \l{Build with CMake} overview. - - \section3 Building with qmake - To configure the module for building with qmake, - add the module as a value of the QT variable in the project's .pro file: - - \code - QT += quickcontrols2 - \endcode - - \section2 Building From Source - - The \b{Qt Image Formats} module is recommended, but not - required. It provides support for the \c {.webp} format used by the - \l {Animated Images}{Imagine style}. - - \section1 Versions - - Qt Quick Controls 2.0 was introduced in Qt 5.7. Subsequent minor Qt releases - increment the import version of the Qt Quick Controls modules by one, - until Qt 5.12, where the import versions match Qt's minor version. - - In Qt 6, both the major and minor versions match, and version numbers may - be omitted from imports in QML. If the version is omitted, the latest - version will be used. - - The experimental Qt Labs modules use import version 1.0. - - \table - \header - \li \c Qt - \li \l {Qt Quick QML Types}{\c QtQuick} - \li \l {Qt Quick Controls QML Types}{\c QtQuick.Controls},\br - \l {Material Style}{\c QtQuick.Controls.Material},\br - \l {Universal Style}{\c QtQuick.Controls.Universal},\br - \l {Qt Quick Templates 2 QML Types}{\c QtQuick.Templates} - \li \l {Qt Labs Platform QML Types}{\c Qt.labs.platform} - \row - \li 5.7 - \li 2.7 - \li 2.0 - \li 1.0 - \row - \li 5.8 - \li 2.8 - \li 2.1 - \li 1.0 - \row - \li 5.9 - \li 2.9 - \li 2.2 - \li 1.0 - \row - \li 5.10 - \li 2.10 - \li 2.3 - \li 1.0 - \row - \li 5.11 - \li 2.11 - \li 2.4 - \li 1.0 - \row - \li 5.12 - \li 2.12 - \li 2.12 - \li 1.0 - \row - \li 6.0 - \li 6.0 - \li 6.0 - \li 1.0 - \row - \li ... - \li ... - \li ... - \li ... - \endtable - - \section1 Module Evolution - \l{Changes to Qt Quick Controls} lists important changes in the - module API and functionality that were done for the Qt 6 series of Qt. - - \section1 License and Attributions - - Qt Quick Controls is available under commercial licenses from \l{The Qt Company}. - In addition, it is available under the - \l{GNU Lesser General Public License, version 3}, or - the \l{GNU General Public License, version 2}. - See \l{Qt Licensing} for further details. - - Furthermore Qt Quick Controls potentially contains third party - modules under following permissive licenses: - - \generatelist{groupsbymodule attributions-qtquickcontrols} - - \section1 Topics - - \list - \li \l{Getting Started with Qt Quick Controls}{Getting Started} - \li \l{Qt Quick Controls Guidelines}{Guidelines} - \li \l{Styling Qt Quick Controls}{Styling} - \li \l{Icons in Qt Quick Controls}{Icons} - \li \l{Customizing Qt Quick Controls}{Customization} - \li \l{Using File Selectors with Qt Quick Controls}{Using File Selectors} - \li \l{Deploying Qt Quick Controls Applications}{Deployment} - \li \l{Qt Quick Controls Configuration File}{Configuration File} - \li \l{Supported Environment Variables in Qt Quick Controls}{Environment Variables} - \endlist - - \section1 Reference - - \list - \li \l{Qt Quick Controls QML Types}{QML Types} - \li \l{Qt Quick Controls C++ Classes}{C++ Classes} - \endlist - - \section1 Examples - - \list - \li \l{Qt Quick Controls - Gallery}{Gallery} - \li \l{Qt Quick Controls - Chat Tutorial}{Chat Tutorial} - \li \l{Qt Quick Controls - Text Editor}{Text Editor} - \li \l{Qt Quick Controls - Wearable Demo}{Wearable Demo} - \li \l{Qt Quick Controls - Imagine Style Example: Automotive}{Automotive Example} - \li \l{Qt Quick Controls - Imagine Style Example: Music Player}{Music Player Example} - \li \l{Qt Quick Controls Examples}{All Examples} - \endlist - - \section1 Related Modules - - \list - \li \l{Qt Quick} - \li \l{Qt Quick Layouts} - \li \l{Qt Quick Templates 2} - \li \l{Qt Labs Platform} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-indicators.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-indicators.qdoc deleted file mode 100644 index 9f9e357b..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-indicators.qdoc +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-indicators.html - \title Indicator Controls - \ingroup qtquickcontrols2-guidelines - \brief Guidelines for indicator controls - - Qt Quick Controls offers a selection of indicator-like controls. - - \annotatedlist qtquickcontrols2-indicators - - Each type of indicator has its own specific target use case. The following - sections offer guidelines for choosing the appropriate type of indicator, - depending on the use case. - - \section1 BusyIndicator Control - - \image qtquickcontrols2-busyindicator.png - - BusyIndicator can be used to show that an operation is in progress, - and that the UI has to wait for the operation to complete. - - \section1 PageIndicator Control - - \image qtquickcontrols2-pageindicator.png - - \l PageIndicator is used to indicate the currently active page in - a container of multiple pages. - - \section1 ProgressBar Control - - \image qtquickcontrols2-progressbar.gif - - \l ProgressBar indicates the progress of an operation. The value should be - updated regularly. - - \section1 ScrollBar Control - - \image qtquickcontrols2-scrollbar.gif - - \l ScrollBar is an interactive bar that indicates the current scroll - position, and can be used to scroll to a specific position in a - \l Flickable. - - \section1 ScrollIndicator Control - - \image qtquickcontrols2-scrollindicator.gif - - \l ScrollIndicator is a non-interactive indicator that indicates the - current scroll position, and can be used to scroll to a specific position in a - \l {Flickable}. - - \section1 Related Information - \list - \li \l {Qt Quick Controls Guidelines} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-input.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-input.qdoc deleted file mode 100644 index 6bc037e0..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-input.qdoc +++ /dev/null @@ -1,123 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-input.html - \title Input Controls - \ingroup qtquickcontrols2-guidelines - \brief Guidelines for input controls - - Qt Quick Controls offers a variety of input controls for both numeric - and textual input. - - \annotatedlist qtquickcontrols2-input - - Each type of input control has its own specific target use case. The - following sections offer guidelines for choosing the appropriate type - of input control, depending on the use case. - - \section1 ComboBox Control - - \image qtquickcontrols2-combobox.gif - - \l ComboBox is used to select a value from a static multiple-line drop-down list. - It is not possible to add new values, and only one option can be selected. - - Recommendations: - \list - \li If the number of values is very large, consider applying a filter. - \li If the list is very limited, consider using RadioButton. This has the - advantage that the user can see all options at the same time. - \li Select a default value, the value that will be chosen most often. - \endlist - - \b {See also} \l {CheckBox Control}, \l {Tumbler Control}. - - \section1 Dial Control - - \image qtquickcontrols2-dial.png - - \l Dial is similar to a traditional dial knob that is found on devices such - as stereos or industrial equipment. - - The dial is rotated by clicking and dragging, with the handle indicating the - value of the dial. - - For applications where fast input is important, the circular - \l {Dial::inputMode}{input mode} is useful, as clicking on the dial will - move it directly to that position. - - For applications where precise input is important, the horizontal and - vertical input modes are recommended, as these allow small adjustments to - be made relative to where the dial is clicked. These modes are also better - for dials where large jumps in values could be unsafe, such as a dial that - controls audio volume. - - \b {See also} \l {Tumbler Control}. - - \section1 TextArea Control - - \image qtquickcontrols2-textarea.png - - \l TextArea is a multi-line text editor. - - \section1 TextField Control - - \image qtquickcontrols2-textfield.png - - \l TextField is a single line text editor. - - \b {See also} \l {Tumbler Control}. - - \section1 Slider Control - - \image qtquickcontrols2-slider.gif - - \l Slider is used to select a value by sliding a handle along a track. - - \section1 RangeSlider Control - - \image qtquickcontrols2-rangeslider.gif - - \l RangeSlider is used to select a range specified by two values, - by sliding each handle along a track. - - \b {See also} \l {Slider Control}. - - \section1 Tumbler Control - - \image qtquickcontrols2-tumbler.png - - \l Tumbler is a spinnable wheel of items that can be selected. - - \b {See also} \l {ComboBox Control}. - - \section1 Related Information - \list - \li \l {Qt Quick Controls Guidelines} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-macos.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-macos.qdoc deleted file mode 100644 index 382a23a6..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-macos.qdoc +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-macOS.html - \title macOS Style - - The macOS style is a style that looks native on macOS. - \l {detailed-desc-macOS}{More...} - - \styleimport {QtQuick.Controls.macOS} {Qt 6.0} - - \target detailed-desc-macOS - - The macOS style is a style that looks native on macOS. The controls are drawn run-time using - native frameworks, and is therefore only available for applications running on macOS. - - \note Be aware that the apperance of this style can change from one minor Qt version to the - next, to better blend in with native applications on the platform. - - \table - \row - \li \image qtquickcontrols2-macos-light.png - \caption The macOS style in light theme - \li \image qtquickcontrols2-macos-dark.png - \caption The macOS style in dark theme - \endtable - - To run an application with the macOS style, see - \l {Using Styles in Qt Quick Controls}. - - \section2 Current state - - The macOS style is under development, and some controls are not yet supported. Those - controls are: \l BusyIndicator, \l DelayButton, \l PageIndicator, \l RangeSlider, \l Switch, \l TabBar and - \l Tumbler. Those will fall back to use the \l {Fusion Style}. - - \section2 Customization - - The goal of the macOS style is to for the controls look and feel as similar as possible to the - native controls in UIKit. The style will follow the theme and colors configured globally from - System Preferences, and does not come with a separate customization API on top of that. - - \note If you want to style a control, you should set both the - \l {Control::background}{background} and the \l {Control::contentItem}{contentItem}, rather than - just one of them. This is because the macOS style will in some cases draw both the contents and - the background into the default background item, which will not look good if the application - combines this with a custom contentItem. By setting them both, you are guaranteed that the - control will look the same on all platforms, for all styles. - - \b {See also} \l {Styling Qt Quick Controls} -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-material.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-material.qdoc deleted file mode 100644 index f08c5ec3..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-material.qdoc +++ /dev/null @@ -1,404 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-material.html - \title Material Style - - The Material Style is based on the Google Material Design Guidelines. - \l{detailed-desc-material}{More...} - - \styleimport {QtQuick.Controls.Material 2.12} {Qt 5.7} - - \section1 Attached Properties - - \list - \li \l {material-accent-attached-prop}{\b accent} : color - \li \l {material-background-attached-prop}{\b background} : color - \li \l {material-elevation-attached-prop}{\b elevation} : int - \li \l {material-foreground-attached-prop}{\b foreground} : color - \li \l {material-primary-attached-prop}{\b primary} : color - \li \l {material-theme-attached-prop}{\b theme} : enumeration - \endlist - - \section1 Attached Methods - - \list - \li color \l {material-color-attached-method}{\b color}(enumeration predefined, enumeration shade) - \endlist - - \section1 Detailed Description - \target detailed-desc-material - - The Material style is based on the \l {https://www.google.com/design/spec/material-design/introduction.html} - {Google Material Design Guidelines}. It allows for a unified experience - across platforms and device sizes. - - \table - \row - \li \image qtquickcontrols2-material-light.png - \caption The Material style in light theme - \li \image qtquickcontrols2-material-dark.png - \caption The Material style in dark theme - \endtable - - To run an application with the Material style, see - \l {Using Styles in Qt Quick Controls}. - - \note The Material style is not a native Android style. The Material - style is a 100% cross-platform Qt Quick Controls style implementation that - follows the Google Material Design Guidelines. The style runs on any - platform, and looks more or less identical everywhere. Minor differences - may occur due to differences in available system fonts and font rendering - engines. - - \section2 Customization - - The Material style allows customizing five attributes, \l {material-theme-attached-prop}{theme}, - \l {material-primary-attached-prop}{primary}, \l {material-accent-attached-prop}{accent}, - \l {material-foreground-attached-prop}{foreground}, and \l {material-background-attached-prop}{background}. - - \image qtquickcontrols2-material-attributes.png - - All attributes can be specified for any window or item, and they automatically - propagate to children in the same manner as \l {Control::font}{fonts}. In the - following example, the window and all three radio buttons appear in the dark - theme using a purple accent color: - - \table - \row - \li - \qml - import QtQuick 2.12 - import QtQuick.Controls 2.12 - import QtQuick.Controls.Material 2.12 - - ApplicationWindow { - visible: true - - Material.theme: Material.Dark - Material.accent: Material.Purple - - Column { - anchors.centerIn: parent - - RadioButton { text: qsTr("Small") } - RadioButton { text: qsTr("Medium"); checked: true } - RadioButton { text: qsTr("Large") } - } - } - \endqml - \li - \image qtquickcontrols2-material-purple.png - \endtable - - In addition to specifying the attributes in QML, it is also possible to - specify them via environment variables or in a configuration file. Attributes - specified in QML take precedence over all other methods. - - \section3 Configuration File - - \include qquickmaterialstyle.qdocinc conf - - See \l {Qt Quick Controls Configuration File} for more details about the - configuration file. - - \section3 Environment Variables - - \include qquickmaterialstyle.qdocinc env - - See \l {Supported Environment Variables in Qt Quick Controls} for the full - list of supported environment variables. - - \section2 Dependency - - The Material style must be separately imported to gain access to the - attributes that are specific to the Material style. It should be noted - that regardless of the references to the Material style, the same - application code runs with any other style. Material-specific attributes - only have an effect when the application is run with the Material style. - - If the Material style is imported in a QML file that is always loaded, the - Material style must be deployed with the application in order to be able - to run the application regardless of which style the application is run with. - By using \l {Using File Selectors with Qt Quick Controls}{file selectors}, - style-specific tweaks can be applied without creating a hard dependency to - a style. - - \section2 Pre-defined Material Colors - - Even though primary and accent can be any \l {colorbasictypedocs}{color}, it - is recommended to use one of the pre-defined colors that have been designed - to work well with the rest of the Material style palette: - - Available pre-defined colors: - \value Material.Red \stylecolor {#F44336} {} - \value Material.Pink \stylecolor {#E91E63} {(default accent)} - \value Material.Purple \stylecolor {#9C27B0} {} - \value Material.DeepPurple \stylecolor {#673AB7} {} - \value Material.Indigo \stylecolor {#3F51B5} {(default primary)} - \value Material.Blue \stylecolor {#2196F3} {} - \value Material.LightBlue \stylecolor {#03A9F4} {} - \value Material.Cyan \stylecolor {#00BCD4} {} - \value Material.Teal \stylecolor {#009688} {} - \value Material.Green \stylecolor {#4CAF50} {} - \value Material.LightGreen \stylecolor {#8BC34A} {} - \value Material.Lime \stylecolor {#CDDC39} {} - \value Material.Yellow \stylecolor {#FFEB3B} {} - \value Material.Amber \stylecolor {#FFC107} {} - \value Material.Orange \stylecolor {#FF9800} {} - \value Material.DeepOrange \stylecolor {#FF5722} {} - \value Material.Brown \stylecolor {#795548} {} - \value Material.Grey \stylecolor {#9E9E9E} {} - \value Material.BlueGrey \stylecolor {#607D8B} {} - - When the dark theme is in use, different \l {Pre-defined Shades}{shades} of - the pre-defined colors are used by default: - - \value Material.Red \stylecolor {#EF9A9A} {} - \value Material.Pink \stylecolor {#F48FB1} {(default accent)} - \value Material.Purple \stylecolor {#CE93D8} {} - \value Material.DeepPurple \stylecolor {#B39DDB} {} - \value Material.Indigo \stylecolor {#9FA8DA} {(default primary)} - \value Material.Blue \stylecolor {#90CAF9} {} - \value Material.LightBlue \stylecolor {#81D4FA} {} - \value Material.Cyan \stylecolor {#80DEEA} {} - \value Material.Teal \stylecolor {#80CBC4} {} - \value Material.Green \stylecolor {#A5D6A7} {} - \value Material.LightGreen \stylecolor {#C5E1A5} {} - \value Material.Lime \stylecolor {#E6EE9C} {} - \value Material.Yellow \stylecolor {#FFF59D} {} - \value Material.Amber \stylecolor {#FFE082} {} - \value Material.Orange \stylecolor {#FFCC80} {} - \value Material.DeepOrange \stylecolor {#FFAB91} {} - \value Material.Brown \stylecolor {#BCAAA4} {} - \value Material.Grey \stylecolor {#EEEEEE} {} - \value Material.BlueGrey \stylecolor {#B0BEC5} {} - - \section2 Pre-defined Shades - - There are several different - \l {https://material.google.com/style/color.html#color-color-palette}{shades} - of each \l {Pre-defined Material Colors}{pre-defined color} that can be passed - to the \l {material-color-attached-method}{Material.color()} function: - \value Material.Shade50 - \value Material.Shade100 - \value Material.Shade200 - \value Material.Shade300 - \value Material.Shade400 - \value Material.Shade500 - \value Material.Shade600 - \value Material.Shade700 - \value Material.Shade800 - \value Material.Shade900 - \value Material.ShadeA100 - \value Material.ShadeA200 - \value Material.ShadeA400 - \value Material.ShadeA700 - - \b {See also} \l {Basic Style}, \l {Universal Style} - - \section2 Variants - - The Material style also supports a dense variant, where controls like - buttons and delegates are smaller in height and use smaller font sizes. - It is recommended to use the dense variant on desktop platforms, where - a mouse and keyboard allow more precise and flexible user interaction. - - To use the dense variant, either set the - \c QT_QUICK_CONTROLS_MATERIAL_VARIANT environment variable to \c Dense, - or specify \c Variant=Dense in the - \l {Qt Quick Controls Configuration File}{qtquickcontrols2.conf} file. - The default value in both cases is \c Normal. - - The following images illustrate the differences between some of the - controls when using the normal and dense variants: - - \table - \row - \li - \image qtquickcontrols2-material-variant-normal.png - \li - \image qtquickcontrols2-material-variant-dense.png - \endtable - - Note that the heights shown above may vary based on differences in fonts - across platforms. - - \section1 Attached Property Documentation - - \styleproperty {Material.accent} {color} {material-accent-attached-prop} - \target material-accent-attached-prop - This attached property holds the accent color of the theme. The property - can be attached to any window or item. The value is propagated to children. - - The default value is \c Material.Pink. - - In the following example, the accent color of the highlighted button is - changed to \c Material.Orange: - - \table - \row - \li - \snippet qtquickcontrols2-material-accent.qml 1 - \li - \image qtquickcontrols2-material-accent.png - \endtable - - \note Even though the accent can be any \l {colorbasictypedocs}{color}, it is - recommended to use one of the \l {pre-defined Material colors} that have been - designed to work well with the rest of the Material style palette. - - \endstyleproperty - - \styleproperty {Material.background} {color} {material-background-attached-prop} - \target material-background-attached-prop - This attached property holds the background color of the theme. The property - can be attached to any window or item. The value is propagated to children. - - The default value is theme-specific (light or dark). - - In the following example, the background color of the button is changed to - \c Material.Teal: - - \table - \row - \li - \snippet qtquickcontrols2-material-background.qml 1 - \li - \image qtquickcontrols2-material-background.png - \endtable - - \endstyleproperty - - \styleproperty {Material.elevation} {int} {material-elevation-attached-prop} - \target material-elevation-attached-prop - This attached property holds the elevation of the control. The higher the - elevation, the deeper the shadow. The property can be attached to any control, - but not all controls visualize elevation. - - The default value is control-specific. - - In the following example, the elevation of the pane is set to \c 6 - in order to achieve the look of an - \l {https://material.google.com/components/cards.html}{elevated card}: - - \table - \row - \li - \snippet qtquickcontrols2-material-elevation.qml 1 - \li - \image qtquickcontrols2-material-elevation.png - \endtable - - \endstyleproperty - - \styleproperty {Material.foreground} {color} {material-foreground-attached-prop} - \target material-foreground-attached-prop - This attached property holds the foreground color of the theme. The property - can be attached to any window or item. The value is propagated to children. - - The default value is theme-specific (light or dark). - - In the following example, the foreground color of the button is set to \c - Material.Pink: - - \table - \row - \li - \snippet qtquickcontrols2-material-foreground.qml 1 - \li - \image qtquickcontrols2-material-foreground.png - \endtable - - \endstyleproperty - - \styleproperty {Material.primary} {color} {material-primary-attached-prop} - \target material-primary-attached-prop - This attached property holds the primary color of the theme. The property - can be attached to any window or item. The value is propagated to children. - - The primary color is used as the background color of ToolBar by default. - - The default value is \c Material.Indigo. - - \note Even though the primary can be any \l {colorbasictypedocs}{color}, it is - recommended to use one of the \l {pre-defined Material colors} that have been - designed to work well with the rest of the Material style palette. - - \endstyleproperty - - \styleproperty {Material.theme} {enumeration} {material-theme-attached-prop} - \target material-theme-attached-prop - This attached property holds whether the theme is light or dark. The property - can be attached to any window or item. The value is propagated to children. - - Available themes: - \value Material.Light Light theme (default) - \value Material.Dark Dark theme - \value Material.System System theme - - Setting the theme to \c System chooses either the light or dark theme based - on the system theme colors. However, when reading the value of the theme - property, the value is never \c System, but the actual theme. - - In the following example, the theme for both the pane and the button is set - to \c Material.Dark: - - \table - \row - \li - \snippet qtquickcontrols2-material-theme.qml 1 - \li - \image qtquickcontrols2-material-theme.png - \endtable - - \endstyleproperty - - \section1 Attached Method Documentation - - \stylemethod2 {color} {color} {enumeration} {predefined} {enumeration} {shade} {material-color-attached-method} - \target material-color-attached-method - This attached method returns the effective color value of the specified - \l {pre-defined Material colors}{pre-defined Material color} combined with - the given \l {pre-defined shades}{shade}. If omitted, the shade argument - defaults to \c Material.Shade500. - - \qml - Rectangle { - color: Material.color(Material.Red) - } - \endqml - - \endstylemethod2 - - \section1 Related Information - - \list - \li \l{Styling Qt Quick Controls} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-menus.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-menus.qdoc deleted file mode 100644 index 43db2092..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-menus.qdoc +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-menus.html - \title Menu Controls - \ingroup qtquickcontrols2-guidelines - \brief Guidelines for menu controls - - \annotatedlist qtquickcontrols2-menus - - Each type of menu control has its own specific target use case. The - following sections offer guidelines for choosing the appropriate type - of menu control, depending on the use case. - - \section1 Menu Control - - \image qtquickcontrols2-menu.png - - \l Menu control can be used for context menus; for example, after - right-clicking. It can also be used for popup menus; for example, a - menu that is shown after clicking a button. - - \l MenuItem is an item in the Menu control. Each item in a menu: - \list - \li displays text to the user - \li allows checking/unchecking - \li is highlighted (for example, on keyboard navigation) - \li performs some action on activation - \endlist - - \section1 MenuBar Control - - \image qtquickcontrols2-menubar.png - - \l MenuBar control can be used for window menu bars. - - \l MenuBarItem is an item in the MenuBar control. Each item in a menu bar: - \list - \li displays text to the user - \li is highlighted (for example, on keyboard navigation) - \li pops up the respective menu on activation - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-navigation.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-navigation.qdoc deleted file mode 100644 index 95928d13..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-navigation.qdoc +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-navigation.html - \title Navigation Controls - \ingroup qtquickcontrols2-guidelines - \brief Guidelines for navigation controls - - Qt Quick Controls offers a selection of navigation models. - - \annotatedlist qtquickcontrols2-navigation - - The following sections offer guidelines for choosing the appropriate type - of navigation model, depending on the use case. - - \section1 StackView Control - - \image qtquickcontrols2-stackview-wireframe.png - - \l StackView provides a stack-based navigation model which can be used - with a set of interlinked pages. StackView works according to a last-in - first-out principle: the page pushed last on the stack is the one visible. - Popping a page removes the last page and makes the previous one visible. - - \section1 SwipeView Control - - \image qtquickcontrols2-swipeview-wireframe.png - - \l SwipeView provides a navigation model that simplifies horizontal paged - scrolling. The page indicator on the bottom shows which is the presently - active page. - - \section1 TabBar Control - - \image qtquickcontrols2-tabbar-wireframe.png - - \l TabBar is a bar with icons or text that allows the user to switch - between different subtasks, views, or modes. - - \section1 TabButton Control - - \image qtquickcontrols2-tabbutton.png - - \l TabButton is a button with a layout suitable for a TabBar control. -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-popups.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-popups.qdoc deleted file mode 100644 index c26b4c4b..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-popups.qdoc +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-popups.html - \title Popup Controls - \ingroup qtquickcontrols2-guidelines - \brief Guidelines for popup controls - - \annotatedlist qtquickcontrols2-popups - - Each type of popup control has its own specific target use case. The - following sections offer guidelines for choosing the appropriate type - of popup control, depending on the use case. - - \section1 Drawer Control - - \image qtquickcontrols2-drawer-expanded-wireframe.png - - \l Drawer provides a swipe-based side panel, similar to those often used - in touch interfaces to provide a central location for navigation. - - The drawer can be positioned at any of the four edges of the screen. It allows - the user to add navigation without taking up valuable screen space. The user can - show and hide the drawer at any time with a simple swipe movement. - - \section1 Menu Control - - \image qtquickcontrols2-menu.png - - The \l Menu control displays a vertical list of items that can be selected. It can - be used for offering a list of actions that can be taken in a given context. - - \b {See also} \l {Drawer Control}. - - \section1 Popup Control - - \image qtquickcontrols2-popup-settings.png - - A \l Popup displays content over other application content. - It prompts the user to make a decision or enter information. - - Popups can be modal or non-modal. A modal popup blocks users from interacting - with the application until they have made a choice and closed the popup. - - A popup can be used for: - - \list - \li communicating a message to the user that they must read and acknowledge. - \li displaying an error message. - \li prompting the user to make a choice and/or enter a value. - \endlist - - \section1 ToolTip Control - - \image qtquickcontrols2-tooltip.png - - \l ToolTip shows a short piece of text that informs the user of a control's - function. It is typically placed above or below the parent control. - - Recommendations: - \list - \li Use a tooltip if a control has little or no descriptive text, or needs - a short explanation. - \li Use a tooltip only if the information on a particular control is not - available elsewhere in the screen. - \li Keep the tooltip text short so that it does not cover other content - while being displayed. - \endlist - - \section1 Related Information - \list - \li \l {Qt Quick Controls Guidelines} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-qmltypes.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-qmltypes.qdoc deleted file mode 100644 index 0251a6f9..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-qmltypes.qdoc +++ /dev/null @@ -1,130 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \qmlmodule QtQuick.Controls 2.\QtMinorVersion - \keyword Qt Quick Controls QML Types - \title Qt Quick Controls QML Types - \keyword Qt Quick Controls 2 QML Types - \ingroup qmlmodules - \brief Provides QML types for user interfaces (Qt Quick Controls). - - \l{Qt Quick Controls} provides QML types for creating user interfaces. - These QML types work in conjunction with \l{Qt Quick} and - \l{Qt Quick Layouts}. - - Qt Quick Controls QML types can be imported into your application - using the following import statement in your .qml file: - - \qml - import QtQuick.Controls - \endqml - - \section1 QML Types - \generatelist {qmltypesbymodule QtQuick.Controls} - \noautolist - - \section1 Using Qt Quick Controls types in property declarations - - As mentioned in \l {Qt Quick Templates 2 QML Types}, each type in Qt Quick - Controls is backed by a C++ "template" type. These types are \l {Qt Quick - Templates 2}{non-visual implementations of controls' logic and behavior}. - - For example, the \l Menu type's API and behavior is defined by the C++ - type in Qt Quick Templates. Each \l {Definition of a Style}{style} that - wants to provide a Menu must have a Menu.qml available, and the root - item in that file must be the Menu from Qt Quick Templates. When you - import QtQuick.Controls and create a Menu in QML, the type you get is - actually the QML Menu defined by the style's Menu.qml. - - In order to use a control as the type in a property declaration, you should - use the corresponding type from Qt Quick Templates. For example, suppose - you had a \c PopupOpener component, which was a Button that opened a - Popup: - - \qml - // PopupButton.qml - import QtQuick.Controls - - Button { - required property Popup popup - - onClicked: popup.open() - } - - // main.qml - PopupButton { - popup: saveChangesDialog - } - - Dialog { - id: saveChangesDialog - - // ... - } - \endqml - - Running this code will result in an error: - - \badcode - Unable to assign Dialog_QMLTYPE to Popup_QMLTYPE - \endcode - - This is because of the inheritance hierarchy: - - \badcode - Popup (C++ type in QtQuick.Templates) - │ └── Popup (QML type in QtQuick.Controls) - └── Dialog (C++ type in QtQuick.Templates) - └── Dialog (QML type in QtQuick.Controls) - \endcode - - Dialog from \c QtQuick.Controls does not derive from the Popup from - \c QtQuick.Controls, but from \c QtQuick.Templates. - - Instead, use the Popup from Qt Quick Templates as the property type: - - \qml - // PopupButton.qml - import QtQuick.Controls - import QtQuick.Templates as T - - Button { - required property T.Popup popup - - onClicked: popup.open() - } - \endqml - - For more information on the Qt Quick Controls module, see the - \l {Qt Quick Controls} module documentation. - - \section1 Related Information - \list - \li \l {Qt Quick Controls Guidelines} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-separators.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-separators.qdoc deleted file mode 100644 index 481a744e..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-separators.qdoc +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-separators.html - \title Separator Controls - \ingroup qtquickcontrols2-guidelines - \brief Guidelines for separator controls - - Qt Quick Controls offers a selection of separators. - - \annotatedlist qtquickcontrols2-separators - - Each type of separator has its own specific use case. The following - sections offer guidelines for choosing the appropriate type of separator, - depending on the use case. - - \section1 MenuSeparator Control - - \image qtquickcontrols2-menuseparator.png - - \l MenuSeparator should be used to separate items (typically MenuItem - controls) in a Menu. Grouping related menu items together makes it easier - for the user to interact with the menu. For example, a typical desktop - user interface might have \c Undo and \c Redo items in one group, and - \c Cut, \c Copy and \c Paste in another. - - \section1 ToolSeparator Control - - \image qtquickcontrols2-toolseparator.png - - \l ToolSeparator should be used to separate items (typically ToolButton - controls) in a ToolBar. It can be used in horizontal or vertical toolbars. - - \section1 Related Information - \list - \li \l {Qt Quick Controls Guidelines} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-styles.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-styles.qdoc deleted file mode 100644 index 12993fbf..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-styles.qdoc +++ /dev/null @@ -1,209 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-styles.html - \title Styling Qt Quick Controls - - \section1 Available Styles - - Qt Quick Controls comes with a selection of styles. - - \section2 Basic Style - - \image qtquickcontrols2-basic-thumbnail.png - The \l {Basic Style} is a simple and light-weight all-round style that offers - the maximum performance for Qt Quick Controls. - - \section2 Fusion Style - - \image qtquickcontrols2-fusion-thumbnail.png - The \l {Fusion Style} is a platform-agnostic style that offers a desktop-oriented - look and feel for Qt Quick Controls. - - \section2 Imagine Style - - \image qtquickcontrols2-imagine-thumbnail.png - The \l {Imagine Style} is based on image assets. The style comes with a default - set of images which can easily be changed by providing a directory - with images using a predefined naming convention. - - \section2 macOS Style - - \image qtquickcontrols2-macos-thumbnail.png - The \l {macOS Style} is a native-looking style for macOS. - \note this style is only available for applications running on macOS. - - \section2 Material Style - - \image qtquickcontrols2-material-thumbnail.png - The \l {Material Style} offers an appealing design based on the - \l {https://www.google.com/design/spec/material-design/introduction.html} - {Google Material Design Guidelines}, but requires more system resources than - the Basic style. - - \section2 Universal Style - - \image qtquickcontrols2-universal-thumbnail.png - The \l {Universal Style} offers an appealing design based on the - \l {https://dev.windows.com/design}{Microsoft Universal Design Guidelines}, - but requires more system resources than the Basic style. - - \section2 Windows Style - - \image qtquickcontrols2-windows-thumbnail.png - The \l {Windows Style} is a native-looking style for Windows. - \note this style is only available for applications running on Windows. - - \section1 Using Styles in Qt Quick Controls - - There are two ways of using styles in Qt Quick Controls: - run-time style selection and compile-time style selection. - - \section2 Compile-Time Style Selection - - Compile-time style selection involves using QML imports to specify the - style. For example, to import the Material style: - - \qml - import QtQuick.Controls.Material - - ApplicationWindow { - // ... - } - \endqml - - Notice that QtQuick.Controls (which is responsible for run-time style - selection) is not imported. The fallback style is specified by the qmldir - of the style: - - \badcode - module QtQuick.Controls.Material - # ... - import QtQuick.Controls.Basic auto - \endcode - - The benefit of compile-time style selection is that the QtQuick.Controls plugin - is not used and therefore does not need to be deployed with the application. - - Explicit imports are also necessary if your application is built - \l {Static Builds}{statically}. - - \section2 Run-Time Style Selection - - Run-time style selection involves importing \c QtQuick.Controls: - - \qml - import QtQuick.Controls - \endqml - - The QtQuick.Controls plugin will import the style and fallback - style that were set at runtime via one of the following approaches: - - \list - \li \l[CPP]{QQuickStyle::setStyle()} - \li The \c -style command line argument - \li The \c QT_QUICK_CONTROLS_STYLE environment variable - \li The \c qtquickcontrols2.conf configuration file - \endlist - - The priority of these approaches follows the order they are listed, - from highest to lowest. That is, using \c QQuickStyle to set the style will - always take priority over using the command line argument, for example. - - The benefit of run-time style selection is that a single application binary - can support multiple styles, meaning that the end user can choose which - style to run the application with. - - \section3 Using QQuickStyle in C++ - - \l[CPP]{QQuickStyle} provides C++ API for configuring a specific - style. The following example runs a Qt Quick Controls application - with the Material style: - - \code - QQuickStyle::setStyle("Material"); - \endcode - - See the detailed description of \l[CPP]{QQuickStyle} for more - details. - - \section3 Command line argument - - Passing a \c -style command line argument is the convenient way to test different - styles. It takes precedence over the other methods listed below. The following - example runs a Qt Quick Controls application with the Material style: - - \code - ./app -style material - \endcode - - \section3 Environment variable - - Setting the \c QT_QUICK_CONTROLS_STYLE environment variable can be used to set - a system-wide style preference. It takes precedence over the configuration file - mentioned below. The following example runs a Qt Quick Controls application with - the Universal style: - - \code - QT_QUICK_CONTROLS_STYLE=universal ./app - \endcode - - See \l {Supported Environment Variables in Qt Quick Controls} for the full list - of supported environment variables. - - \section3 Configuration file - - Qt Quick Controls support a special configuration file, \c :/qtquickcontrols2.conf, - that is built into an application's resources. - - The configuration file can specify the preferred style (may be overridden by either - of the methods described earlier) and certain style-specific attributes. The following - example specifies that the preferred style is the Material style. - - \code - [Controls] - Style=Material - \endcode - - See \l {Qt Quick Controls Configuration File} for more details about the - configuration file. - - \section1 Related Information - \list - \li \l {Basic Style} - \li \l {Fusion Style} - \li \l {Imagine Style} - \li \l {Material Style} - \li \l {Universal Style} - \li \l {Customizing Qt Quick Controls} - \li \l {Using File Selectors with Qt Quick Controls} - \li \l {Deploying Qt Quick Controls Applications} - \li \l {Qt Quick Controls Configuration File} - \li \l {Supported Environment Variables in Qt Quick Controls} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-universal.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-universal.qdoc deleted file mode 100644 index 72267050..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-universal.qdoc +++ /dev/null @@ -1,288 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-universal.html - \title Universal Style - - The Universal Style is based on the Microsoft Universal Design Guidelines. - \l {detailed-desc-universal}{More...} - - \styleimport {QtQuick.Controls.Universal 2.12} {Qt 5.7} - - \section1 Attached Properties - - \list - \li \l {universal-accent-attached-prop}{\b accent} : color - \li \l {universal-background-attached-prop}{\b background} : color - \li \l {universal-foreground-attached-prop}{\b foreground} : color - \li \l {universal-theme-attached-prop}{\b theme} : enumeration - \endlist - - \section1 Attached Methods - - \list - \li color \l {color-attached-method}{\b color}(enumeration predefined) - \endlist - - \section1 Detailed Description - \target detailed-desc-universal - - The Universal style is a device-agnostic style based on the - \l {https://dev.windows.com/design}{Microsoft Universal Design Guidelines}. - The Universal style has been designed to look good on all devices, from - phones and tablets to PCs. - - \table - \row - \li \image qtquickcontrols2-universal-light.png - \caption The Universal style in light theme - \li \image qtquickcontrols2-universal-dark.png - \caption The Universal style in dark theme - \endtable - - To run an application with the Universal style, see - \l {Using Styles in Qt Quick Controls}. - - \note The Universal style is not a native Windows 10 style. The Universal - style is a 100% cross-platform Qt Quick Controls style implementation that - follows the Microsoft Universal Design Guidelines. The style runs on any - platform, and looks more or less identical everywhere. Minor differences - may occur due to differences in available system fonts and font rendering - engines. - - \section2 Customization - - The Universal style allows customizing four attributes, \l {universal-theme-attached-prop}{theme}, - \l {universal-accent-attached-prop}{accent}, \l {universal-foreground-attached-prop}{foreground}, and - \l {universal-background-attached-prop}{background}. - - \image qtquickcontrols2-universal-attributes.png - - Both attributes can be specified for any window or item, and they automatically - propagate to children in the same manner as \l {Control::font}{fonts}. In the - following example, the window and all three radio buttons appear in the dark - theme using a violet accent color: - - \table - \row - \li - \qml - import QtQuick 2.12 - import QtQuick.Controls 2.12 - import QtQuick.Controls.Universal 2.12 - - ApplicationWindow { - visible: true - - Universal.theme: Universal.Dark - Universal.accent: Universal.Violet - - Column { - anchors.centerIn: parent - - RadioButton { text: qsTr("Small") } - RadioButton { text: qsTr("Medium"); checked: true } - RadioButton { text: qsTr("Large") } - } - } - \endqml - \li - \image qtquickcontrols2-universal-violet.png - \endtable - - In addition to specifying the attributes in QML, it is also possible to - specify them via environment variables or in a configuration file. Attributes - specified in QML take precedence over all other methods. - - \section3 Configuration File - - \include qquickuniversalstyle.qdocinc conf - - See \l {Qt Quick Controls Configuration File} for more details about the - configuration file. - - \section3 Environment Variables - - \include qquickuniversalstyle.qdocinc env - - See \l {Supported Environment Variables in Qt Quick Controls} for the full - list of supported environment variables. - - \section2 Dependency - - The Universal style must be separately imported to gain access to the - attributes that are specific to the Universal style. It should be noted - that regardless of the references to the Universal style, the same - application code runs with any other style. Universal-specific attributes - only have an effect when the application is run with the Universal style. - - If the Universal style is imported in a QML file that is always loaded, the - Universal style must be deployed with the application in order to be able - to run the application regardless of which style the application is run with. - By using \l {Using File Selectors with Qt Quick Controls}{file selectors}, - style-specific tweaks can be applied without creating a hard dependency to - a style. - - \section2 Pre-defined Universal Colors - - Available pre-defined colors: - \value Universal.Lime \stylecolor {#A4C400} {} - \value Universal.Green \stylecolor {#60A917} {} - \value Universal.Emerald \stylecolor {#008A00} {} - \value Universal.Teal \stylecolor {#00ABA9} {} - \value Universal.Cyan \stylecolor {#1BA1E2} {} - \value Universal.Cobalt \stylecolor {#3E65FF} {(default accent)} - \value Universal.Indigo \stylecolor {#6A00FF} {} - \value Universal.Violet \stylecolor {#AA00FF} {} - \value Universal.Pink \stylecolor {#F472D0} {} - \value Universal.Magenta \stylecolor {#D80073} {} - \value Universal.Crimson \stylecolor {#A20025} {} - \value Universal.Red \stylecolor {#E51400} {} - \value Universal.Orange \stylecolor {#FA6800} {} - \value Universal.Amber \stylecolor {#F0A30A} {} - \value Universal.Yellow \stylecolor {#E3C800} {} - \value Universal.Brown \stylecolor {#825A2C} {} - \value Universal.Olive \stylecolor {#6D8764} {} - \value Universal.Steel \stylecolor {#647687} {} - \value Universal.Mauve \stylecolor {#76608A} {} - \value Universal.Taupe \stylecolor {#87794E} {} - - \b {See also} \l {Basic Style}, \l {Material Style} - - \section1 Attached Property Documentation - - \styleproperty {Universal.accent} {color} {universal-accent-attached-prop} - \target universal-accent-attached-prop - This attached property holds the accent color of the theme. The property - can be attached to any window or item. The value is propagated to children. - - The default value is \c Universal.Cobalt. - - In the following example, the accent color of the highlighted button is - changed to \c Universal.Orange: - - \table - \row - \li - \snippet qtquickcontrols2-universal-accent.qml 1 - \li - \image qtquickcontrols2-universal-accent.png - \endtable - - \note Even though the accent can be any \l {colorbasictypedocs}{color}, it is - recommended to use one of the \l {pre-defined Universal colors} that have been - designed to work well with the rest of the Universal style palette. - - \endstyleproperty - - \styleproperty {Universal.background} {color} {universal-background-attached-prop} - \target universal-background-attached-prop - This attached property holds the background color of the theme. The property - can be attached to any window or item. The value is propagated to children. - - The default value is theme-specific (light or dark). - - In the following example, the background color of the pane is changed to - \c Universal.Steel: - - \table - \row - \li - \snippet qtquickcontrols2-universal-background.qml 1 - \li - \image qtquickcontrols2-universal-background.png - \endtable - - \endstyleproperty - - \styleproperty {Universal.foreground} {color} {universal-foreground-attached-prop} - \target universal-foreground-attached-prop - This attached property holds the foreground color of the theme. The property - can be attached to any window or item. The value is propagated to children. - - The default value is theme-specific (light or dark). - - In the following example, the foreground color of the button is set to \c - Universal.Pink: - - \table - \row - \li - \snippet qtquickcontrols2-universal-foreground.qml 1 - \li - \image qtquickcontrols2-universal-foreground.png - \endtable - - \styleproperty {Universal.theme} {enumeration} {universal-theme-attached-prop} - \target universal-theme-attached-prop - This attached property holds whether the theme is light or dark. The property - can be attached to any window or item. The value is propagated to children. - - Available themes: - \value Universal.Light Light theme (default) - \value Universal.Dark Dark theme - \value Universal.System System theme - - Setting the theme to \c System chooses either the light or dark theme based - on the system theme colors. However, when reading the value of the theme - property, the value is never \c System, but the actual theme. - - In the following example, the theme for both the pane and the button is set - to \c Universal.Dark: - - \table - \row - \li - \snippet qtquickcontrols2-universal-theme.qml 1 - \li - \image qtquickcontrols2-universal-theme.png - \endtable - - \endstyleproperty - - \section1 Attached Method Documentation - - \stylemethod {color} {color} {enumeration} {predefined} {color-attached-method} - \target color-attached-method - This attached method returns the effective color value of the specified - \l {pre-defined Universal colors}{pre-defined Universal color}. - - \qml - Rectangle { - color: Universal.color(Universal.Red) - } - \endqml - - \endstylemethod - - \section1 Related Information - - \list - \li \l{Styling Qt Quick Controls} - \endlist -*/ diff --git a/src/quickcontrols2/doc/src/qtquickcontrols2-windows.qdoc b/src/quickcontrols2/doc/src/qtquickcontrols2-windows.qdoc deleted file mode 100644 index 8b63703b..00000000 --- a/src/quickcontrols2/doc/src/qtquickcontrols2-windows.qdoc +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquickcontrols2-Windows.html - \title Windows Style - - The Windows style is a style that looks native on Windows. - \l {detailed-desc-Windows}{More...} - - \styleimport {QtQuick.Controls.Windows} {Qt 6.0} - - \target detailed-desc-Windows - - The Windows style is a style that looks native on Windows. The controls are drawn run-time using - native libraries, and is therefore only available for applications running on Windows. - - \note Be aware that the apperance of this style can change from one minor Qt version to the - next, to better blend in with native applications on the platform. - - \table - \row - \li \image qtquickcontrols2-windows.png - \caption The Windows style - \endtable - - To run an application with the Windows style, see - \l {Using Styles in Qt Quick Controls}. - - \section2 Current state - - The Windows style is under development, and some controls are not yet supported. Those - controls are: \l BusyIndicator, \l DelayButton, \l PageIndicator, \l RangeSlider, \l Switch, \l TabBar and - \l Tumbler. Those will fall back to use the \l {Fusion Style}. - - \section2 Customization - - The goal of the Windows style is to for the controls look and feel as similar as possible to the - native controls on Windows. The style will follow the theme and colors configured globally from - Windows Settings, and does not come with a separate customization API on top of that. - - \note If you want to style a control, you should set both the - \l {Control::background}{background} and the \l {Control::contentItem}{contentItem}, rather than - just one of them. This is because the Windows style will in some cases draw both the contents and - the background into the default background item, which will not look good if the application - combines this with a custom contentItem. By setting them both, you are guaranteed that the - control will look the same on all platforms, for all styles. - - \b {See also} \l {Styling Qt Quick Controls} -*/ diff --git a/src/quickcontrols2/fusion/ApplicationWindow.qml b/src/quickcontrols2/fusion/ApplicationWindow.qml deleted file mode 100644 index 090d361c..00000000 --- a/src/quickcontrols2/fusion/ApplicationWindow.qml +++ /dev/null @@ -1,47 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Window -import QtQuick.Templates as T -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.ApplicationWindow { - id: window - - color: window.palette.window -} diff --git a/src/quickcontrols2/fusion/BusyIndicator.qml b/src/quickcontrols2/fusion/BusyIndicator.qml deleted file mode 100644 index f46900ea..00000000 --- a/src/quickcontrols2/fusion/BusyIndicator.qml +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.BusyIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - - contentItem: BusyIndicatorImpl { - implicitWidth: 28 - implicitHeight: 28 - color: control.palette.text - - running: control.running - opacity: control.running ? 1 : 0 - Behavior on opacity { OpacityAnimator { duration: 250 } } - - RotationAnimator on rotation { - running: control.running || contentItem.visible - from: 0 - to: 360 - duration: 1000 - loops: Animation.Infinite - } - } -} diff --git a/src/quickcontrols2/fusion/Button.qml b/src/quickcontrols2/fusion/Button.qml deleted file mode 100644 index f635fe8b..00000000 --- a/src/quickcontrols2/fusion/Button.qml +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.Button { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 4 - spacing: 6 - - icon.width: 16 - icon.height: 16 - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.palette.buttonText - } - - background: ButtonPanel { - implicitWidth: 80 - implicitHeight: 24 - - control: control - visible: !control.flat || control.down || control.checked || control.highlighted || control.visualFocus || control.hovered - } -} diff --git a/src/quickcontrols2/fusion/CMakeLists.txt b/src/quickcontrols2/fusion/CMakeLists.txt deleted file mode 100644 index 56f98908..00000000 --- a/src/quickcontrols2/fusion/CMakeLists.txt +++ /dev/null @@ -1,249 +0,0 @@ -##################################################################### -## qtquickcontrols2fusionstyleplugin Plugin: -##################################################################### - -set(qml_files - "ApplicationWindow.qml" - "BusyIndicator.qml" - "Button.qml" - "CheckBox.qml" - "CheckDelegate.qml" - "ComboBox.qml" - "DelayButton.qml" - "Dial.qml" - "Dialog.qml" - "DialogButtonBox.qml" - "Drawer.qml" - "Frame.qml" - "GroupBox.qml" - "HorizontalHeaderView.qml" - "ItemDelegate.qml" - "Label.qml" - "Menu.qml" - "MenuBar.qml" - "MenuBarItem.qml" - "MenuItem.qml" - "MenuSeparator.qml" - "Page.qml" - "PageIndicator.qml" - "Pane.qml" - "Popup.qml" - "ProgressBar.qml" - "RadioButton.qml" - "RadioDelegate.qml" - "RangeSlider.qml" - "RoundButton.qml" - "ScrollBar.qml" - "ScrollView.qml" - "ScrollIndicator.qml" - "Slider.qml" - "SpinBox.qml" - "SplitView.qml" - "SwipeDelegate.qml" - "SwitchDelegate.qml" - "Switch.qml" - "TabBar.qml" - "TabButton.qml" - "TextArea.qml" - "TextField.qml" - "ToolBar.qml" - "ToolButton.qml" - "ToolSeparator.qml" - "ToolTip.qml" - "Tumbler.qml" - "VerticalHeaderView.qml" -) -set_source_files_properties(ApplicationWindow.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(BusyIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Button.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(CheckBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(CheckDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ComboBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(DelayButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.2;6.0" -) -set_source_files_properties(Dial.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Dialog.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(DialogButtonBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(Drawer.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Frame.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(GroupBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(HorizontalHeaderView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.15;6.0" -) -set_source_files_properties(ItemDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Label.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Menu.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(MenuBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.3;6.0" -) -set_source_files_properties(MenuBarItem.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.3;6.0" -) -set_source_files_properties(MenuItem.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(MenuSeparator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(Page.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(PageIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Pane.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Popup.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ProgressBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RadioButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RadioDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RangeSlider.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RoundButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(ScrollBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ScrollView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ScrollIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Slider.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SpinBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SplitView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.13;6.0" -) -set_source_files_properties(SwipeDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SwitchDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Switch.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TabBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TabButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TextArea.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TextField.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolSeparator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(ToolTip.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Tumbler.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(VerticalHeaderView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.15;6.0" -) - -qt_internal_add_qml_module(qtquickcontrols2fusionstyleplugin - URI "QtQuick.Controls.Fusion" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2FusionStylePlugin - IMPORTS - QtQuick.Controls.Basic/auto - PLUGIN_TARGET qtquickcontrols2fusionstyleplugin - NO_PLUGIN_OPTIONAL - NO_GENERATE_PLUGIN_SOURCE - SOURCES - qquickfusionstyle.cpp qquickfusionstyle_p.h - qquickfusiontheme.cpp qquickfusiontheme_p.h - qtquickcontrols2fusionstyleplugin.cpp - QML_FILES - ${qml_files} - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickControls2Private - Qt::QuickPrivate - Qt::QuickTemplates2Private -) - -qt_internal_add_resource(qtquickcontrols2fusionstyleplugin "qtquickcontrols2fusionstyle" - PREFIX - "/qt-project.org/imports/QtQuick/Controls/Fusion" - FILES - "images/arrow.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/checkmark.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/progressmask.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" -) - -add_subdirectory(impl) diff --git a/src/quickcontrols2/fusion/CheckBox.qml b/src/quickcontrols2/fusion/CheckBox.qml deleted file mode 100644 index ed49a144..00000000 --- a/src/quickcontrols2/fusion/CheckBox.qml +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.CheckBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - indicator: CheckIndicator { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - color: control.palette.windowText - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } -} diff --git a/src/quickcontrols2/fusion/CheckDelegate.qml b/src/quickcontrols2/fusion/CheckDelegate.qml deleted file mode 100644 index 93c087e4..00000000 --- a/src/quickcontrols2/fusion/CheckDelegate.qml +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.CheckDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 16 - icon.height: 16 - - contentItem: IconLabel { - leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text - } - - indicator: CheckIndicator { - x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 - - control: control - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 20 - color: control.down ? Fusion.buttonColor(control.palette, false, true, true) - : control.highlighted ? Fusion.highlight(control.palette) : control.palette.base - } -} diff --git a/src/quickcontrols2/fusion/ComboBox.qml b/src/quickcontrols2/fusion/ComboBox.qml deleted file mode 100644 index dfe21f70..00000000 --- a/src/quickcontrols2/fusion/ComboBox.qml +++ /dev/null @@ -1,174 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Window -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.ComboBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) - rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) - - delegate: MenuItem { - width: ListView.view.width - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData - font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal - highlighted: control.highlightedIndex === index - hoverEnabled: control.hoverEnabled - } - - indicator: ColorImage { - x: control.mirrored ? control.padding : control.width - width - control.padding - y: control.topPadding + (control.availableHeight - height) / 2 - color: control.editable ? control.palette.text : control.palette.buttonText - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Fusion/images/arrow.png" - width: 20 - fillMode: Image.Pad - } - - contentItem: T.TextField { - topPadding: 4 - leftPadding: 4 - control.padding - rightPadding: 4 - control.padding - bottomPadding: 4 - - text: control.editable ? control.editText : control.displayText - - enabled: control.editable - autoScroll: control.editable - readOnly: control.down - inputMethodHints: control.inputMethodHints - validator: control.validator - selectByMouse: control.selectTextByMouse - - font: control.font - color: control.editable ? control.palette.text : control.palette.buttonText - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - verticalAlignment: Text.AlignVCenter - - background: PaddedRectangle { - clip: true - radius: 2 - padding: 1 - leftPadding: control.mirrored ? -2 : padding - rightPadding: !control.mirrored ? -2 : padding - color: control.palette.base - visible: control.editable && !control.flat - - Rectangle { - x: parent.width - width - y: 1 - width: 1 - height: parent.height - 2 - color: Fusion.buttonOutline(control.palette, control.activeFocus, control.enabled) - } - - Rectangle { - x: 1 - y: 1 - width: parent.width - 3 - height: 1 - color: Fusion.topShadow - } - } - - Rectangle { - x: 1 - control.leftPadding - y: 1 - width: control.width - 2 - height: control.height - 2 - color: "transparent" - border.color: Color.transparent(Fusion.highlightedOutline(control.palette), 40 / 255) - visible: control.activeFocus - radius: 1.7 - } - } - - background: ButtonPanel { - implicitWidth: 120 - implicitHeight: 24 - - control: control - visible: !control.flat || control.down - // ### TODO: fix control.contentItem.activeFocus - highlighted: control.visualFocus || control.contentItem.activeFocus - } - - popup: T.Popup { - width: control.width - height: Math.min(contentItem.implicitHeight + 2, control.Window.height - topMargin - bottomMargin) - topMargin: 6 - bottomMargin: 6 - padding: 1 - - contentItem: ListView { - clip: true - implicitHeight: contentHeight - model: control.delegateModel - currentIndex: control.highlightedIndex - highlightRangeMode: ListView.ApplyRange - highlightMoveDuration: 0 - - T.ScrollBar.vertical: ScrollBar { } - } - - background: Rectangle { - color: control.popup.palette.window - border.color: Fusion.outline(control.palette) - - Rectangle { - z: -1 - x: 1; y: 1 - width: parent.width - height: parent.height - color: control.palette.shadow - opacity: 0.2 - } - } - } -} diff --git a/src/quickcontrols2/fusion/DelayButton.qml b/src/quickcontrols2/fusion/DelayButton.qml deleted file mode 100644 index 239ee6c8..00000000 --- a/src/quickcontrols2/fusion/DelayButton.qml +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.DelayButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - - transition: Transition { - NumberAnimation { - duration: control.delay * (control.pressed ? 1.0 - control.progress : 0.3 * control.progress) - } - } - - contentItem: ItemGroup { - ClippedText { - clip: control.progress > 0 - clipX: -control.leftPadding + (control.mirrored ? 0 : control.progress * control.width) - clipWidth: control.width - visible: control.mirrored ? control.progress > 0 : control.progress < 1 - - text: control.text - font: control.font - color: control.mirrored ? control.palette.brightText : control.palette.buttonText - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - ClippedText { - clip: control.progress > 0 - clipX: -control.leftPadding - clipWidth: (control.mirrored ? 1.0 - control.progress : control.progress) * control.width - visible: control.mirrored ? control.progress < 1 : control.progress > 0 - - text: control.text - font: control.font - color: control.mirrored ? control.palette.buttonText : control.palette.brightText - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - } - - background: ButtonPanel { - implicitWidth: 80 - implicitHeight: 24 - - control: control - highlighted: false - scale: control.mirrored ? -1 : 1 - - Rectangle { - width: control.progress * parent.width - height: parent.height - - radius: 2 - border.color: Qt.darker(Fusion.highlight(control.palette), 1.4) - gradient: Gradient { - GradientStop { - position: 0 - color: Qt.lighter(Fusion.highlight(control.palette), 1.2) - } - GradientStop { - position: 1 - color: Fusion.highlight(control.palette) - } - } - } - } -} diff --git a/src/quickcontrols2/fusion/Dial.qml b/src/quickcontrols2/fusion/Dial.qml deleted file mode 100644 index 71bab3a7..00000000 --- a/src/quickcontrols2/fusion/Dial.qml +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.Dial { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - background: DialImpl { - implicitWidth: 100 - implicitHeight: 100 - highlight: control.visualFocus - } - - handle: KnobImpl { - x: control.background.x + control.background.width / 2 - width / 2 - y: control.background.y + control.background.height / 2 - height / 2 - width: control.width / 7 - height: control.height / 7 - transform: [ - Translate { - y: -Math.min(control.background.width, control.background.height) * 0.42 + control.handle.height - }, - Rotation { - angle: control.angle - origin.x: control.handle.width / 2 - origin.y: control.handle.height / 2 - } - ] - } -} diff --git a/src/quickcontrols2/fusion/Dialog.qml b/src/quickcontrols2/fusion/Dialog.qml deleted file mode 100644 index af7fa492..00000000 --- a/src/quickcontrols2/fusion/Dialog.qml +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.Dialog { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - padding: 6 - - background: Rectangle { - color: control.palette.window - border.color: control.palette.mid - radius: 2 - - Rectangle { - z: -1 - x: 1; y: 1 - width: parent.width - height: parent.height - color: control.palette.shadow - opacity: 0.2 - radius: 2 - } - } - - header: Label { - text: control.title - visible: control.title - elide: Label.ElideRight - font.bold: true - padding: 6 - background: Rectangle { - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 1 - color: control.palette.window - radius: 2 - } - } - - footer: DialogButtonBox { - visible: count > 0 - } - - T.Overlay.modal: Rectangle { - color: Fusion.topShadow - } - - T.Overlay.modeless: Rectangle { - color: Fusion.topShadow - } -} diff --git a/src/quickcontrols2/fusion/DialogButtonBox.qml b/src/quickcontrols2/fusion/DialogButtonBox.qml deleted file mode 100644 index 4b62228f..00000000 --- a/src/quickcontrols2/fusion/DialogButtonBox.qml +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.DialogButtonBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - spacing: 6 - padding: 6 - alignment: Qt.AlignRight - - delegate: Button { } - - contentItem: ListView { - model: control.contentModel - spacing: control.spacing - orientation: ListView.Horizontal - boundsBehavior: Flickable.StopAtBounds - snapMode: ListView.SnapToItem - } - - background: Rectangle { - implicitHeight: 32 - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 2 - color: control.palette.window - radius: 2 - } -} diff --git a/src/quickcontrols2/fusion/Drawer.qml b/src/quickcontrols2/fusion/Drawer.qml deleted file mode 100644 index 85268b50..00000000 --- a/src/quickcontrols2/fusion/Drawer.qml +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.Drawer { - id: control - - parent: T.Overlay.overlay - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: control.edge === Qt.BottomEdge - leftPadding: control.edge === Qt.RightEdge - rightPadding: control.edge === Qt.LeftEdge - bottomPadding: control.edge === Qt.TopEdge - - enter: Transition { SmoothedAnimation { velocity: 5 } } - exit: Transition { SmoothedAnimation { velocity: 5 } } - - background: Rectangle { - color: control.palette.window - readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge - Rectangle { - width: parent.horizontal ? 1 : parent.width - height: parent.horizontal ? parent.height : 1 - color: control.palette.mid - x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 - y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 - } - Rectangle { - width: parent.horizontal ? 1 : parent.width - height: parent.horizontal ? parent.height : 1 - color: control.palette.shadow - opacity: 0.2 - x: control.edge === Qt.LeftEdge ? parent.width : 0 - y: control.edge === Qt.TopEdge ? parent.height : 0 - } - } - - T.Overlay.modal: Rectangle { - color: Fusion.topShadow - } - - T.Overlay.modeless: Rectangle { - color: Fusion.topShadow - } -} diff --git a/src/quickcontrols2/fusion/Frame.qml b/src/quickcontrols2/fusion/Frame.qml deleted file mode 100644 index 1e1916f1..00000000 --- a/src/quickcontrols2/fusion/Frame.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.Frame { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - padding: 9 - - background: Rectangle { - color: "transparent" - border.color: Qt.lighter(Fusion.outline(control.palette), 1.08) - } -} diff --git a/src/quickcontrols2/fusion/GroupBox.qml b/src/quickcontrols2/fusion/GroupBox.qml deleted file mode 100644 index 943a2427..00000000 --- a/src/quickcontrols2/fusion/GroupBox.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.GroupBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitLabelWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - spacing: 6 - padding: 9 - topPadding: padding + (implicitLabelWidth > 0 ? implicitLabelHeight + spacing : 0) - - label: Text { - x: control.leftPadding - width: control.availableWidth - - text: control.title - font: control.font - color: control.palette.windowText - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - background: Rectangle { - y: control.topPadding - control.bottomPadding - width: parent.width - height: parent.height - control.topPadding + control.bottomPadding - - radius: 2 - color: Color.transparent("black", 3 / 255) - border.color: Qt.lighter(Fusion.outline(control.palette), 1.08) - } -} diff --git a/src/quickcontrols2/fusion/HorizontalHeaderView.qml b/src/quickcontrols2/fusion/HorizontalHeaderView.qml deleted file mode 100644 index 76f42b29..00000000 --- a/src/quickcontrols2/fusion/HorizontalHeaderView.qml +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.HorizontalHeaderView { - id: control - - implicitWidth: syncView ? syncView.width : 0 - implicitHeight: contentHeight - - delegate: Rectangle { - // Qt6: add cellPadding (and font etc) as public API in headerview - readonly property real cellPadding: 8 - - implicitWidth: text.implicitWidth + (cellPadding * 2) - implicitHeight: Math.max(control.height, text.implicitHeight + (cellPadding * 2)) - border.color: "#cacaca" - - gradient: Gradient { - GradientStop { - position: 0 - color: "#fbfbfb" - } - GradientStop { - position: 1 - color: "#e0dfe0" - } - } - - Text { - id: text - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] - : model[control.textRole]) - : modelData - width: parent.width - height: parent.height - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - color: "#ff26282a" - } - } -} diff --git a/src/quickcontrols2/fusion/ItemDelegate.qml b/src/quickcontrols2/fusion/ItemDelegate.qml deleted file mode 100644 index 12154d2f..00000000 --- a/src/quickcontrols2/fusion/ItemDelegate.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.ItemDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 16 - icon.height: 16 - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 20 - color: control.down ? Fusion.buttonColor(control.palette, false, true, true) - : control.highlighted ? Fusion.highlight(control.palette) : control.palette.base - } -} diff --git a/src/quickcontrols2/fusion/Label.qml b/src/quickcontrols2/fusion/Label.qml deleted file mode 100644 index 55db94f9..00000000 --- a/src/quickcontrols2/fusion/Label.qml +++ /dev/null @@ -1,48 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.Label { - id: control - - color: control.palette.windowText - linkColor: control.palette.link -} diff --git a/src/quickcontrols2/fusion/Menu.qml b/src/quickcontrols2/fusion/Menu.qml deleted file mode 100644 index 7808850c..00000000 --- a/src/quickcontrols2/fusion/Menu.qml +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl -import QtQuick.Window - -T.Menu { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - margins: 0 - padding: 1 - overlap: 2 - - delegate: MenuItem { } - - contentItem: ListView { - implicitHeight: contentHeight - model: control.contentModel - interactive: Window.window - ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height - : false - clip: true - currentIndex: control.currentIndex - - ScrollIndicator.vertical: ScrollIndicator {} - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 20 - - color: control.palette.base - border.color: Fusion.outline(control.palette) - - Rectangle { - z: -1 - x: 1; y: 1 - width: parent.width - height: parent.height - color: control.palette.shadow - opacity: 0.2 - } - } - - T.Overlay.modal: Rectangle { - color: Fusion.topShadow - } - - T.Overlay.modeless: Rectangle { - color: Fusion.topShadow - } -} diff --git a/src/quickcontrols2/fusion/MenuBar.qml b/src/quickcontrols2/fusion/MenuBar.qml deleted file mode 100644 index 7b6a628d..00000000 --- a/src/quickcontrols2/fusion/MenuBar.qml +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.MenuBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - delegate: MenuBarItem { } - - contentItem: Row { - spacing: control.spacing - Repeater { - model: control.contentModel - } - } - - background: Rectangle { - implicitHeight: 20 - - color: control.palette.window - - Rectangle { - y: parent.height - height - width: parent.width - height: 1 - color: Fusion.mergedColors(Qt.darker(control.palette.window, 1.2), - Qt.lighter(Fusion.outline(control.palette), 1.4), 60) - } - } -} diff --git a/src/quickcontrols2/fusion/MenuBarItem.qml b/src/quickcontrols2/fusion/MenuBarItem.qml deleted file mode 100644 index 336fca0c..00000000 --- a/src/quickcontrols2/fusion/MenuBarItem.qml +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.MenuBarItem { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 16 - icon.height: 16 - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.down || control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text - } - - background: Rectangle { - implicitWidth: 20 - implicitHeight: 20 - - color: Fusion.highlight(control.palette) - visible: control.down || control.highlighted - } -} diff --git a/src/quickcontrols2/fusion/MenuItem.qml b/src/quickcontrols2/fusion/MenuItem.qml deleted file mode 100644 index 79468f9d..00000000 --- a/src/quickcontrols2/fusion/MenuItem.qml +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.MenuItem { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 16 - icon.height: 16 - - contentItem: IconLabel { - readonly property real arrowPadding: control.subMenu && control.arrow ? control.arrow.width + control.spacing : 0 - readonly property real indicatorPadding: control.checkable && control.indicator ? control.indicator.width + control.spacing : 0 - leftPadding: !control.mirrored ? indicatorPadding : arrowPadding - rightPadding: control.mirrored ? indicatorPadding : arrowPadding - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.down || control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text - } - - arrow: ColorImage { - x: control.mirrored ? control.padding : control.width - width - control.padding - y: control.topPadding + (control.availableHeight - height) / 2 - width: 20 - - visible: control.subMenu - rotation: control.mirrored ? 90 : -90 - color: control.down || control.hovered || control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Fusion/images/arrow.png" - fillMode: Image.Pad - } - - indicator: CheckIndicator { - x: control.mirrored ? control.width - width - control.rightPadding : control.leftPadding - y: control.topPadding + (control.availableHeight - height) / 2 - - control: control - visible: control.checkable - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 20 - - color: Fusion.highlight(control.palette) - visible: control.down || control.highlighted - } -} diff --git a/src/quickcontrols2/fusion/MenuSeparator.qml b/src/quickcontrols2/fusion/MenuSeparator.qml deleted file mode 100644 index b8be640b..00000000 --- a/src/quickcontrols2/fusion/MenuSeparator.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.MenuSeparator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 5 - verticalPadding: 1 - - contentItem: Rectangle { - implicitWidth: 188 - implicitHeight: 1 - color: Qt.lighter(Fusion.darkShade, 1.06) - } -} diff --git a/src/quickcontrols2/fusion/Page.qml b/src/quickcontrols2/fusion/Page.qml deleted file mode 100644 index bf47e231..00000000 --- a/src/quickcontrols2/fusion/Page.qml +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.Page { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - background: Rectangle { - color: control.palette.window - } -} diff --git a/src/quickcontrols2/fusion/PageIndicator.qml b/src/quickcontrols2/fusion/PageIndicator.qml deleted file mode 100644 index 22ceabcc..00000000 --- a/src/quickcontrols2/fusion/PageIndicator.qml +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.PageIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 4 - spacing: 4 - - delegate: Rectangle { - implicitWidth: 6 - implicitHeight: 6 - - radius: width / 2 - color: control.palette.shadow - - opacity: index === currentIndex ? 0.95 : pressed ? 0.75 : 0.45 - Behavior on opacity { OpacityAnimator { duration: 100 } } - } - - contentItem: Row { - spacing: control.spacing - - Repeater { - model: control.count - delegate: control.delegate - } - } -} diff --git a/src/quickcontrols2/fusion/Pane.qml b/src/quickcontrols2/fusion/Pane.qml deleted file mode 100644 index 9cc49917..00000000 --- a/src/quickcontrols2/fusion/Pane.qml +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.Pane { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - padding: 9 - - background: Rectangle { - color: control.palette.window - } -} diff --git a/src/quickcontrols2/fusion/Popup.qml b/src/quickcontrols2/fusion/Popup.qml deleted file mode 100644 index f77ea1d1..00000000 --- a/src/quickcontrols2/fusion/Popup.qml +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.Popup { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - padding: 6 - - background: Rectangle { - color: control.palette.window - border.color: control.palette.mid - radius: 2 - } - - T.Overlay.modal: Rectangle { - color: Fusion.topShadow - } - - T.Overlay.modeless: Rectangle { - color: Fusion.topShadow - } -} diff --git a/src/quickcontrols2/fusion/ProgressBar.qml b/src/quickcontrols2/fusion/ProgressBar.qml deleted file mode 100644 index 0ad6b483..00000000 --- a/src/quickcontrols2/fusion/ProgressBar.qml +++ /dev/null @@ -1,116 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.ProgressBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - contentItem: Item { - implicitWidth: 120 - implicitHeight: 24 - scale: control.mirrored ? -1 : 1 - - Rectangle { - height: parent.height - width: (control.indeterminate ? 1.0 : control.position) * parent.width - - radius: 2 - border.color: Qt.darker(Fusion.highlight(control.palette), 1.4) - gradient: Gradient { - GradientStop { - position: 0 - color: Qt.lighter(Fusion.highlight(control.palette), 1.2) - } - GradientStop { - position: 1 - color: Fusion.highlight(control.palette) - } - } - } - - Item { - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 2 - visible: control.indeterminate - clip: true - - ColorImage { - width: Math.ceil(parent.width / implicitWidth + 1) * implicitWidth - height: parent.height - - mirror: control.mirrored - fillMode: Image.TileHorizontally - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Fusion/images/progressmask.png" - color: Color.transparent(Qt.lighter(Fusion.highlight(control.palette), 1.2), 160 / 255) - - visible: control.indeterminate - NumberAnimation on x { - running: control.indeterminate && control.visible - from: -31 // progressmask.png width - to: 0 - loops: Animation.Infinite - duration: 750 - } - } - } - } - - background: Rectangle { - implicitWidth: 120 - implicitHeight: 24 - - radius: 2 - color: control.palette.base - border.color: Fusion.outline(control.palette) - - Rectangle { - x: 1; y: 1; height: 1 - width: parent.width - 2 - color: Fusion.topShadow - } - } -} diff --git a/src/quickcontrols2/fusion/RadioButton.qml b/src/quickcontrols2/fusion/RadioButton.qml deleted file mode 100644 index c7796411..00000000 --- a/src/quickcontrols2/fusion/RadioButton.qml +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.RadioButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - indicator: RadioIndicator { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - color: control.palette.windowText - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } -} diff --git a/src/quickcontrols2/fusion/RadioDelegate.qml b/src/quickcontrols2/fusion/RadioDelegate.qml deleted file mode 100644 index 4c0d936c..00000000 --- a/src/quickcontrols2/fusion/RadioDelegate.qml +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.RadioDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 16 - icon.height: 16 - - contentItem: IconLabel { - leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text - } - - indicator: RadioIndicator { - x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 - - control: control - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 20 - color: control.down ? Fusion.buttonColor(control.palette, false, true, true) - : control.highlighted ? Fusion.highlight(control.palette) : control.palette.base - } -} diff --git a/src/quickcontrols2/fusion/RangeSlider.qml b/src/quickcontrols2/fusion/RangeSlider.qml deleted file mode 100644 index 418bac77..00000000 --- a/src/quickcontrols2/fusion/RangeSlider.qml +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.RangeSlider { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - Math.max(first.implicitHandleWidth, - second.implicitHandleWidth) + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - Math.max(first.implicitHandleHeight, - second.implicitHandleHeight) + topPadding + bottomPadding) - - first.handle: SliderHandle { - x: control.leftPadding + Math.round(control.horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + Math.round(control.horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) - - palette: control.palette - pressed: control.first.pressed - hovered: control.first.hovered - vertical: control.vertical - visualFocus: activeFocus - } - - second.handle: SliderHandle { - x: control.leftPadding + Math.round(control.horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + Math.round(control.horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) - - palette: control.palette - pressed: control.second.pressed - hovered: control.second.hovered - vertical: control.vertical - visualFocus: activeFocus - } - - background: SliderGroove { - control: control - offset: control.first.position - progress: control.second.position - visualProgress: control.second.visualPosition - } -} diff --git a/src/quickcontrols2/fusion/RoundButton.qml b/src/quickcontrols2/fusion/RoundButton.qml deleted file mode 100644 index 31217f71..00000000 --- a/src/quickcontrols2/fusion/RoundButton.qml +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.RoundButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 16 - icon.height: 16 - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.palette.buttonText - } - - background: Rectangle { - implicitWidth: 32 - implicitHeight: 32 - visible: !control.flat || control.down || control.checked - - gradient: Gradient { - GradientStop { - position: 0 - color: control.down || control.checked ? Fusion.buttonColor(control.palette, control.highlighted, control.down || control.checked, control.hovered) - : Fusion.gradientStart(Fusion.buttonColor(control.palette, control.highlighted, control.down, control.hovered)) - } - GradientStop { - position: 1 - color: control.down || control.checked ? Fusion.buttonColor(control.palette, control.highlighted, control.down || control.checked, control.hovered) - : Fusion.gradientStop(Fusion.buttonColor(control.palette, control.highlighted, control.down, control.hovered)) - } - } - - radius: control.radius - border.color: Fusion.buttonOutline(control.palette, control.highlighted || control.visualFocus, control.enabled) - - Rectangle { - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 2 - border.color: Fusion.innerContrastLine - color: "transparent" - radius: control.radius - } - } -} diff --git a/src/quickcontrols2/fusion/ScrollBar.qml b/src/quickcontrols2/fusion/ScrollBar.qml deleted file mode 100644 index b990d955..00000000 --- a/src/quickcontrols2/fusion/ScrollBar.qml +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.ScrollBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 2 - visible: control.policy !== T.ScrollBar.AlwaysOff - minimumSize: orientation == Qt.Horizontal ? height / width : width / height - - contentItem: Rectangle { - implicitWidth: control.interactive ? 6 : 2 - implicitHeight: control.interactive ? 6 : 2 - - radius: width / 2 - color: control.pressed ? control.palette.dark : control.palette.mid - opacity: 0.0 - - states: State { - name: "active" - when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0) - PropertyChanges { target: control.contentItem; opacity: 0.75 } - } - - transitions: Transition { - from: "active" - SequentialAnimation { - PauseAnimation { duration: 450 } - NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 } - } - } - } -} diff --git a/src/quickcontrols2/fusion/ScrollIndicator.qml b/src/quickcontrols2/fusion/ScrollIndicator.qml deleted file mode 100644 index bf386f6c..00000000 --- a/src/quickcontrols2/fusion/ScrollIndicator.qml +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.ScrollIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 2 - - contentItem: Rectangle { - implicitWidth: 2 - implicitHeight: 2 - - color: control.palette.mid - visible: control.size < 1.0 - opacity: 0.0 - - states: State { - name: "active" - when: control.active - PropertyChanges { target: control.contentItem; opacity: 0.75 } - } - - transitions: [ - Transition { - from: "active" - SequentialAnimation { - PauseAnimation { duration: 450 } - NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 } - } - } - ] - } -} diff --git a/src/quickcontrols2/fusion/ScrollView.qml b/src/quickcontrols2/fusion/ScrollView.qml deleted file mode 100644 index a6bba9de..00000000 --- a/src/quickcontrols2/fusion/ScrollView.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ScrollView { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - ScrollBar.vertical: ScrollBar { - parent: control - x: control.mirrored ? 0 : control.width - width - y: control.topPadding - height: control.availableHeight - active: control.ScrollBar.horizontal.active - } - - ScrollBar.horizontal: ScrollBar { - parent: control - x: control.leftPadding - y: control.height - height - width: control.availableWidth - active: control.ScrollBar.vertical.active - } -} diff --git a/src/quickcontrols2/fusion/Slider.qml b/src/quickcontrols2/fusion/Slider.qml deleted file mode 100644 index 4e20dcfc..00000000 --- a/src/quickcontrols2/fusion/Slider.qml +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.Slider { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitHandleWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitHandleHeight + topPadding + bottomPadding) - - handle: SliderHandle { - x: control.leftPadding + Math.round(control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + Math.round(control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) - - palette: control.palette - pressed: control.pressed - hovered: control.hovered - vertical: control.vertical - visualFocus: control.visualFocus - } - - background: SliderGroove { - control: control - progress: control.position - visualProgress: control.visualPosition - } -} diff --git a/src/quickcontrols2/fusion/SpinBox.qml b/src/quickcontrols2/fusion/SpinBox.qml deleted file mode 100644 index e71aa428..00000000 --- a/src/quickcontrols2/fusion/SpinBox.qml +++ /dev/null @@ -1,181 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.SpinBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentItem.implicitWidth + 2 * padding + - Math.max(up.implicitIndicatorWidth, - down.implicitIndicatorWidth)) - implicitHeight: Math.max(implicitContentHeight + topPadding + bottomPadding, - implicitBackgroundHeight, - up.implicitIndicatorHeight + - down.implicitIndicatorHeight) - - padding: 4 - leftPadding: padding + (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) - rightPadding: padding + (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) - - validator: IntValidator { - locale: control.locale.name - bottom: Math.min(control.from, control.to) - top: Math.max(control.from, control.to) - } - - contentItem: TextInput { - z: 2 - text: control.displayText - - font: control.font - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - horizontalAlignment: Qt.AlignHCenter - verticalAlignment: Qt.AlignVCenter - - readOnly: !control.editable - validator: control.validator - inputMethodHints: control.inputMethodHints - } - - up.indicator: PaddedRectangle { - x: control.mirrored ? 1 : parent.width - width - 1 - y: 1 - height: parent.height / 2 - 1 - implicitWidth: 16 - implicitHeight: 10 - - radius: 1.7 - clip: true - topPadding: -2 - leftPadding: -2 - color: control.up.pressed ? Fusion.buttonColor(control.palette, false, true, true) : "transparent" - - ColorImage { - scale: -1 - width: parent.width - height: parent.height - opacity: enabled ? 1.0 : 0.5 - color: control.palette.buttonText - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Fusion/images/arrow.png" - fillMode: Image.Pad - } - } - - down.indicator: PaddedRectangle { - x: control.mirrored ? 1 : parent.width - width - 1 - y: parent.height - height - 1 - height: parent.height / 2 - 1 - implicitWidth: 16 - implicitHeight: 10 - - radius: 1.7 - clip: true - topPadding: -2 - leftPadding: -2 - color: control.down.pressed ? Fusion.buttonColor(control.palette, false, true, true) : "transparent" - - ColorImage { - width: parent.width - height: parent.height - opacity: enabled ? 1.0 : 0.5 - color: control.palette.buttonText - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Fusion/images/arrow.png" - fillMode: Image.Pad - } - } - - background: Rectangle { - implicitWidth: 120 - implicitHeight: 24 - - radius: 2 - color: control.palette.base - border.color: control.activeFocus ? Fusion.highlightedOutline(control.palette) : Fusion.outline(control.palette) - - Rectangle { - x: 2 - y: 1 - width: parent.width - 4 - height: 1 - color: Fusion.topShadow - } - - Rectangle { - x: control.mirrored ? 1 : parent.width - width - 1 - y: 1 - width: Math.max(control.up.indicator ? control.up.indicator.width : 0, - control.down.indicator ? control.down.indicator.width : 0) + 1 - height: parent.height - 2 - - radius: 2 - gradient: Gradient { - GradientStop { - position: 0 - color: Fusion.gradientStart(Fusion.buttonColor(control.palette, control.visualFocus, false, control.up.hovered || control.down.hovered)) - } - GradientStop { - position: 1 - color: Fusion.gradientStop(Fusion.buttonColor(control.palette, control.visualFocus, false, control.up.hovered || control.down.hovered)) - } - } - - Rectangle { - x: control.mirrored ? parent.width - 1 : 0 - height: parent.height - width: 1 - color: Fusion.outline(control.palette) - } - } - - Rectangle { - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 2 - color: "transparent" - border.color: Color.transparent(Fusion.highlightedOutline(control.palette), 40 / 255) - visible: control.activeFocus - radius: 1.7 - } - } -} diff --git a/src/quickcontrols2/fusion/SplitView.qml b/src/quickcontrols2/fusion/SplitView.qml deleted file mode 100644 index fdf12bed..00000000 --- a/src/quickcontrols2/fusion/SplitView.qml +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion - -T.SplitView { - id: control - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - handle: Rectangle { - implicitWidth: control.orientation === Qt.Horizontal ? 2 : control.width - implicitHeight: control.orientation === Qt.Horizontal ? control.height : 2 - color: T.SplitHandle.pressed ? palette.dark - : (T.SplitHandle.hovered ? control.palette.midlight : control.palette.mid) - } -} diff --git a/src/quickcontrols2/fusion/SwipeDelegate.qml b/src/quickcontrols2/fusion/SwipeDelegate.qml deleted file mode 100644 index ac840f64..00000000 --- a/src/quickcontrols2/fusion/SwipeDelegate.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.SwipeDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 16 - icon.height: 16 - - swipe.transition: Transition { SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } } - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 20 - color: control.down ? Fusion.buttonColor(control.palette, false, true, true) - : control.highlighted ? Fusion.highlight(control.palette) : control.palette.base - } -} diff --git a/src/quickcontrols2/fusion/Switch.qml b/src/quickcontrols2/fusion/Switch.qml deleted file mode 100644 index 2e31535b..00000000 --- a/src/quickcontrols2/fusion/Switch.qml +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.Switch { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - indicator: SwitchIndicator { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - color: control.palette.text - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } -} diff --git a/src/quickcontrols2/fusion/SwitchDelegate.qml b/src/quickcontrols2/fusion/SwitchDelegate.qml deleted file mode 100644 index 0439b0cf..00000000 --- a/src/quickcontrols2/fusion/SwitchDelegate.qml +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.SwitchDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 16 - icon.height: 16 - - indicator: SwitchIndicator { - x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: IconLabel { - leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 20 - color: control.down ? Fusion.buttonColor(control.palette, false, true, true) - : control.highlighted ? Fusion.highlight(control.palette) : control.palette.base - } -} diff --git a/src/quickcontrols2/fusion/TabBar.qml b/src/quickcontrols2/fusion/TabBar.qml deleted file mode 100644 index e0933653..00000000 --- a/src/quickcontrols2/fusion/TabBar.qml +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.TabBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - spacing: -1 - - contentItem: ListView { - model: control.contentModel - currentIndex: control.currentIndex - - spacing: control.spacing - orientation: ListView.Horizontal - boundsBehavior: Flickable.StopAtBounds - flickableDirection: Flickable.AutoFlickIfNeeded - snapMode: ListView.SnapToItem - - highlightMoveDuration: 0 - highlightRangeMode: ListView.ApplyRange - preferredHighlightBegin: 40 - preferredHighlightEnd: width - 40 - } - - background: Item { - implicitHeight: 21 - - Rectangle { - width: parent.width - height: 1 - y: control.position === T.TabBar.Header ? parent.height - 1 : 0 - color: Fusion.outline(control.palette) - } - } -} diff --git a/src/quickcontrols2/fusion/TabButton.qml b/src/quickcontrols2/fusion/TabButton.qml deleted file mode 100644 index 161a7b02..00000000 --- a/src/quickcontrols2/fusion/TabButton.qml +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.TabButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 2 - horizontalPadding: 4 - spacing: 6 - - icon.width: 16 - icon.height: 16 - - z: checked - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.palette.buttonText - } - - background: Rectangle { - y: control.checked || control.TabBar.position !== T.TabBar.Header ? 0 : 2 - implicitHeight: 21 - height: control.height - (control.checked ? 0 : 2) - - border.color: Qt.lighter(Fusion.outline(control.palette), 1.1) - - gradient: Gradient { - GradientStop { - position: 0 - color: control.checked ? Qt.lighter(Fusion.tabFrameColor(control.palette), 1.04) - : Qt.darker(Fusion.tabFrameColor(control.palette), 1.08) - } - GradientStop { - position: control.checked ? 0 : 0.85 - color: control.checked ? Qt.lighter(Fusion.tabFrameColor(control.palette), 1.04) - : Qt.darker(Fusion.tabFrameColor(control.palette), 1.08) - } - GradientStop { - position: 1 - color: control.checked ? Fusion.tabFrameColor(control.palette) - : Qt.darker(Fusion.tabFrameColor(control.palette), 1.16) - } - } - } -} diff --git a/src/quickcontrols2/fusion/TextArea.qml b/src/quickcontrols2/fusion/TextArea.qml deleted file mode 100644 index 5346aad1..00000000 --- a/src/quickcontrols2/fusion/TextArea.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.TextArea { - id: control - - implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, - implicitBackgroundWidth + leftInset + rightInset, - placeholder.implicitWidth + leftPadding + rightPadding) - implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, - implicitBackgroundHeight + topInset + bottomInset, - placeholder.implicitHeight + topPadding + bottomPadding) - - padding: 6 - leftPadding: padding + 4 - - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - placeholderTextColor: control.palette.placeholderText - - PlaceholderText { - id: placeholder - x: control.leftPadding - y: control.topPadding - width: control.width - (control.leftPadding + control.rightPadding) - height: control.height - (control.topPadding + control.bottomPadding) - - text: control.placeholderText - font: control.font - color: control.placeholderTextColor - verticalAlignment: control.verticalAlignment - visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) - elide: Text.ElideRight - renderType: control.renderType - } -} diff --git a/src/quickcontrols2/fusion/TextField.qml b/src/quickcontrols2/fusion/TextField.qml deleted file mode 100644 index d99c3664..00000000 --- a/src/quickcontrols2/fusion/TextField.qml +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.TextField { - id: control - - implicitWidth: implicitBackgroundWidth + leftInset + rightInset - || Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding, - placeholder.implicitHeight + topPadding + bottomPadding) - - padding: 4 - - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - placeholderTextColor: control.palette.placeholderText - verticalAlignment: TextInput.AlignVCenter - - PlaceholderText { - id: placeholder - x: control.leftPadding - y: control.topPadding - width: control.width - (control.leftPadding + control.rightPadding) - height: control.height - (control.topPadding + control.bottomPadding) - - text: control.placeholderText - font: control.font - color: control.placeholderTextColor - verticalAlignment: control.verticalAlignment - visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) - elide: Text.ElideRight - renderType: control.renderType - } - - background: Rectangle { - implicitWidth: 120 - implicitHeight: 24 - - radius: 2 - color: control.palette.base - border.color: control.activeFocus ? Fusion.highlightedOutline(control.palette) : Fusion.outline(control.palette) - - Rectangle { - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 2 - color: "transparent" - border.color: Color.transparent(Fusion.highlightedOutline(control.palette), 40 / 255) - visible: control.activeFocus - radius: 1.7 - } - - Rectangle { - x: 2 - y: 1 - width: parent.width - 4 - height: 1 - color: Fusion.topShadow - } - } -} diff --git a/src/quickcontrols2/fusion/ToolBar.qml b/src/quickcontrols2/fusion/ToolBar.qml deleted file mode 100644 index 747a292d..00000000 --- a/src/quickcontrols2/fusion/ToolBar.qml +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.ToolBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - horizontalPadding: 6 - topPadding: control.position === T.ToolBar.Footer ? 1 : 0 - bottomPadding: control.position === T.ToolBar.Header ? 1 : 0 - - background: Rectangle { - implicitHeight: 26 - - gradient: Gradient { - GradientStop { - position: 0 - color: Qt.lighter(control.palette.window, 1.04) - } - GradientStop { - position: 1 - color: control.palette.window - } - } - - Rectangle { - width: parent.width - height: 1 - color: control.position === T.ToolBar.Header ? Fusion.lightShade : Fusion.darkShade - } - - Rectangle { - y: parent.height - height - width: parent.width - height: 1 - color: control.position === T.ToolBar.Header ? Fusion.darkShade : Fusion.lightShade - } - } -} diff --git a/src/quickcontrols2/fusion/ToolButton.qml b/src/quickcontrols2/fusion/ToolButton.qml deleted file mode 100644 index a364a113..00000000 --- a/src/quickcontrols2/fusion/ToolButton.qml +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.ToolButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 16 - icon.height: 16 - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.palette.buttonText - } - - background: ButtonPanel { - implicitWidth: 20 - implicitHeight: 20 - - control: control - visible: control.down || control.checked || control.highlighted || control.visualFocus || control.hovered - } -} diff --git a/src/quickcontrols2/fusion/ToolSeparator.qml b/src/quickcontrols2/fusion/ToolSeparator.qml deleted file mode 100644 index bfebf205..00000000 --- a/src/quickcontrols2/fusion/ToolSeparator.qml +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.ToolSeparator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: vertical ? 6 : 2 - verticalPadding: vertical ? 2 : 6 - - contentItem: Rectangle { - implicitWidth: vertical ? 2 : 8 - implicitHeight: vertical ? 8 : 2 - color: Qt.darker(control.palette.window, 1.1) - - Rectangle { - x: 1 - width: 1 - height: parent.height - color: Qt.lighter(control.palette.window, 1.1) - } - } -} diff --git a/src/quickcontrols2/fusion/ToolTip.qml b/src/quickcontrols2/fusion/ToolTip.qml deleted file mode 100644 index 90e0c268..00000000 --- a/src/quickcontrols2/fusion/ToolTip.qml +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.ToolTip { - id: control - - x: parent ? (parent.width - implicitWidth) / 2 : 0 - y: -implicitHeight - 3 - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - margins: 6 - padding: 6 - - closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent - - contentItem: Text { - text: control.text - font: control.font - wrapMode: Text.Wrap - color: control.palette.toolTipText - } - - background: Rectangle { - color: control.palette.toolTipBase - border.color: control.palette.toolTipText - - Rectangle { - z: -1 - x: 1; y: 1 - width: parent.width - height: parent.height - color: control.palette.shadow - opacity: 0.5 - } - } -} diff --git a/src/quickcontrols2/fusion/Tumbler.qml b/src/quickcontrols2/fusion/Tumbler.qml deleted file mode 100644 index 0c2841e7..00000000 --- a/src/quickcontrols2/fusion/Tumbler.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -T.Tumbler { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - delegate: Text { - text: modelData - color: control.palette.windowText - font: control.font - opacity: (1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - - contentItem: TumblerView { - implicitWidth: 60 - implicitHeight: 200 - model: control.model - delegate: control.delegate - path: Path { - startX: control.contentItem.width / 2 - startY: -control.contentItem.delegateHeight / 2 - PathLine { - x: control.contentItem.width / 2 - y: (control.visibleItemCount + 1) * control.contentItem.delegateHeight - control.contentItem.delegateHeight / 2 - } - } - - property real delegateHeight: control.availableHeight / control.visibleItemCount - } -} diff --git a/src/quickcontrols2/fusion/VerticalHeaderView.qml b/src/quickcontrols2/fusion/VerticalHeaderView.qml deleted file mode 100644 index 3da51290..00000000 --- a/src/quickcontrols2/fusion/VerticalHeaderView.qml +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.VerticalHeaderView { - id: control - - implicitWidth: contentWidth - implicitHeight: syncView ? syncView.height : 0 - - delegate: Rectangle { - // Qt6: add cellPadding (and font etc) as public API in headerview - readonly property real cellPadding: 8 - - implicitWidth: Math.max(control.width, text.implicitWidth + (cellPadding * 2)) - implicitHeight: text.implicitHeight + (cellPadding * 2) - border.color: "#cacaca" - - gradient: Gradient { - GradientStop { - position: 0 - color: "#fbfbfb" - } - GradientStop { - position: 1 - color: "#e0dfe0" - } - } - - Text { - id: text - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] - : model[control.textRole]) - : modelData - width: parent.width - height: parent.height - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - color: "#ff26282a" - } - } -} diff --git a/src/quickcontrols2/fusion/fusion.pri b/src/quickcontrols2/fusion/fusion.pri deleted file mode 100644 index b57ded65..00000000 --- a/src/quickcontrols2/fusion/fusion.pri +++ /dev/null @@ -1,58 +0,0 @@ -HEADERS += \ - $$PWD/qquickfusionstyle_p.h \ - $$PWD/qquickfusiontheme_p.h - -SOURCES += \ - $$PWD/qquickfusionstyle.cpp \ - $$PWD/qquickfusiontheme.cpp - -QML_FILES += \ - $$PWD/ApplicationWindow.qml \ - $$PWD/BusyIndicator.qml \ - $$PWD/Button.qml \ - $$PWD/CheckBox.qml \ - $$PWD/CheckDelegate.qml \ - $$PWD/ComboBox.qml \ - $$PWD/DelayButton.qml \ - $$PWD/Dial.qml \ - $$PWD/Dialog.qml \ - $$PWD/DialogButtonBox.qml \ - $$PWD/Drawer.qml \ - $$PWD/Frame.qml \ - $$PWD/GroupBox.qml \ - $$PWD/HorizontalHeaderView.qml \ - $$PWD/ItemDelegate.qml \ - $$PWD/Label.qml \ - $$PWD/Menu.qml \ - $$PWD/MenuBar.qml \ - $$PWD/MenuBarItem.qml \ - $$PWD/MenuItem.qml \ - $$PWD/MenuSeparator.qml \ - $$PWD/Page.qml \ - $$PWD/PageIndicator.qml \ - $$PWD/Pane.qml \ - $$PWD/Popup.qml \ - $$PWD/ProgressBar.qml \ - $$PWD/RadioButton.qml \ - $$PWD/RadioDelegate.qml \ - $$PWD/RangeSlider.qml \ - $$PWD/RoundButton.qml \ - $$PWD/ScrollBar.qml \ - $$PWD/ScrollView.qml \ - $$PWD/ScrollIndicator.qml \ - $$PWD/Slider.qml \ - $$PWD/SpinBox.qml \ - $$PWD/SplitView.qml \ - $$PWD/SwipeDelegate.qml \ - $$PWD/SwitchDelegate.qml \ - $$PWD/Switch.qml \ - $$PWD/TabBar.qml \ - $$PWD/TabButton.qml \ - $$PWD/TextArea.qml \ - $$PWD/TextField.qml \ - $$PWD/ToolBar.qml \ - $$PWD/ToolButton.qml \ - $$PWD/ToolSeparator.qml \ - $$PWD/ToolTip.qml \ - $$PWD/Tumbler.qml \ - $$PWD/VerticalHeaderView.qml diff --git a/src/quickcontrols2/fusion/images/arrow.png b/src/quickcontrols2/fusion/images/arrow.png Binary files differdeleted file mode 100644 index 97ef0238..00000000 --- a/src/quickcontrols2/fusion/images/arrow.png +++ /dev/null diff --git a/src/quickcontrols2/fusion/images/arrow.svg b/src/quickcontrols2/fusion/images/arrow.svg deleted file mode 100644 index 44383924..00000000 --- a/src/quickcontrols2/fusion/images/arrow.svg +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="10" - height="6" - viewBox="0 0 10 6" - id="svg2" - version="1.1" - inkscape:version="0.91 r13725" - inkscape:export-filename="/Users/jpnurmi/Downloads/[email protected]" - inkscape:export-xdpi="360" - inkscape:export-ydpi="360" - sodipodi:docname="arrow.svg"> - <defs - id="defs4" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="31.678384" - inkscape:cx="7.9810383" - inkscape:cy="3.0344775" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="true" - units="px" - inkscape:snap-to-guides="true" - inkscape:snap-page="true" - inkscape:window-width="1440" - inkscape:window-height="851" - inkscape:window-x="0" - inkscape:window-y="1" - inkscape:window-maximized="1"> - <inkscape:grid - type="xygrid" - id="grid3336" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1046.3622)"> - <path - transform="matrix(1.2371791,0,0,0.85714284,1.0769252,150.19463)" - style="fill:#000000;fill-opacity:0.7254902" - inkscape:transform-center-y="1.4999605" - d="m 3.1709837,1051.3622 -3.2331616,-4.6667 6.4663233,0 z" - id="path3365" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccc" /> - </g> -</svg> diff --git a/src/quickcontrols2/fusion/images/[email protected] b/src/quickcontrols2/fusion/images/[email protected] Binary files differdeleted file mode 100644 index 9bfc4e6e..00000000 --- a/src/quickcontrols2/fusion/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/fusion/images/[email protected] b/src/quickcontrols2/fusion/images/[email protected] Binary files differdeleted file mode 100644 index 6fd9c988..00000000 --- a/src/quickcontrols2/fusion/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/fusion/images/[email protected] b/src/quickcontrols2/fusion/images/[email protected] Binary files differdeleted file mode 100644 index f5e1e66a..00000000 --- a/src/quickcontrols2/fusion/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/fusion/images/checkmark.png b/src/quickcontrols2/fusion/images/checkmark.png Binary files differdeleted file mode 100644 index deb30419..00000000 --- a/src/quickcontrols2/fusion/images/checkmark.png +++ /dev/null diff --git a/src/quickcontrols2/fusion/images/checkmark.svg b/src/quickcontrols2/fusion/images/checkmark.svg deleted file mode 100644 index f1afdc4f..00000000 --- a/src/quickcontrols2/fusion/images/checkmark.svg +++ /dev/null @@ -1,72 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="14" - height="14" - viewBox="0 0 14 14" - id="svg3386" - version="1.1" - inkscape:version="0.91 r13725" - inkscape:export-filename="/Users/jpnurmi/Downloads/[email protected]" - inkscape:export-xdpi="360" - inkscape:export-ydpi="360" - sodipodi:docname="checkmark.svg"> - <defs - id="defs3388" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="32" - inkscape:cx="1.9865044" - inkscape:cy="6.0706667" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - units="px" - inkscape:snap-page="true" - inkscape:snap-grids="true" - inkscape:snap-to-guides="true" - inkscape:window-width="1440" - inkscape:window-height="851" - inkscape:window-x="0" - inkscape:window-y="1" - inkscape:window-maximized="1" /> - <metadata - id="metadata3391"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1038.3622)"> - <path - style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 5,1045.3622 2,4 2.5,-8" - id="path4198" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccc" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /> - </g> -</svg> diff --git a/src/quickcontrols2/fusion/images/[email protected] b/src/quickcontrols2/fusion/images/[email protected] Binary files differdeleted file mode 100644 index f80de0a4..00000000 --- a/src/quickcontrols2/fusion/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/fusion/images/[email protected] b/src/quickcontrols2/fusion/images/[email protected] Binary files differdeleted file mode 100644 index c095eed1..00000000 --- a/src/quickcontrols2/fusion/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/fusion/images/[email protected] b/src/quickcontrols2/fusion/images/[email protected] Binary files differdeleted file mode 100644 index e58c7b4d..00000000 --- a/src/quickcontrols2/fusion/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/fusion/images/progressmask.png b/src/quickcontrols2/fusion/images/progressmask.png Binary files differdeleted file mode 100644 index a354377c..00000000 --- a/src/quickcontrols2/fusion/images/progressmask.png +++ /dev/null diff --git a/src/quickcontrols2/fusion/images/progressmask.svg b/src/quickcontrols2/fusion/images/progressmask.svg deleted file mode 100644 index a0dfc426..00000000 --- a/src/quickcontrols2/fusion/images/progressmask.svg +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="31" - height="22" - viewBox="0 0 8.202083 5.8208335" - version="1.1" - id="svg8" - inkscape:export-filename="/home/jpnurmi/Projects/qt-dev/qtquickcontrols2/src/imports/controls/fusion/images/[email protected]" - inkscape:export-xdpi="384" - inkscape:export-ydpi="384" - inkscape:version="0.92.1 r" - sodipodi:docname="progressmask.svg"> - <defs - id="defs2" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="15.839192" - inkscape:cx="61.144853" - inkscape:cy="14.574824" - inkscape:document-units="mm" - inkscape:current-layer="layer1" - showgrid="false" - units="px" - inkscape:pagecheckerboard="true" - inkscape:window-width="3840" - inkscape:window-height="2031" - inkscape:window-x="0" - inkscape:window-y="55" - inkscape:window-maximized="1" /> - <metadata - id="metadata5"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-291.17915)"> - <path - style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 0,296.99998 4.7625,-5.82083" - id="path4485" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 8.2020833,296.99998 4.7624997,-5.82083" - id="path4485-3" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - </g> -</svg> diff --git a/src/quickcontrols2/fusion/images/[email protected] b/src/quickcontrols2/fusion/images/[email protected] Binary files differdeleted file mode 100644 index 69476bf4..00000000 --- a/src/quickcontrols2/fusion/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/fusion/images/[email protected] b/src/quickcontrols2/fusion/images/[email protected] Binary files differdeleted file mode 100644 index 00a1c09d..00000000 --- a/src/quickcontrols2/fusion/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/fusion/images/[email protected] b/src/quickcontrols2/fusion/images/[email protected] Binary files differdeleted file mode 100644 index 263110d5..00000000 --- a/src/quickcontrols2/fusion/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/fusion/impl/ButtonPanel.qml b/src/quickcontrols2/fusion/impl/ButtonPanel.qml deleted file mode 100644 index ffe87003..00000000 --- a/src/quickcontrols2/fusion/impl/ButtonPanel.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -Rectangle { - id: panel - - property Item control - property bool highlighted: control.highlighted - - visible: !control.flat || control.down || control.checked - - color: Fusion.buttonColor(control.palette, panel.highlighted, control.down || control.checked, control.hovered) - gradient: control.down || control.checked ? null : buttonGradient - - Gradient { - id: buttonGradient - GradientStop { - position: 0 - color: Fusion.gradientStart(Fusion.buttonColor(panel.control.palette, panel.highlighted, panel.control.down, panel.control.hovered)) - } - GradientStop { - position: 1 - color: Fusion.gradientStop(Fusion.buttonColor(panel.control.palette, panel.highlighted, panel.control.down, panel.control.hovered)) - } - } - - radius: 2 - border.color: Fusion.buttonOutline(control.palette, panel.highlighted || control.visualFocus, control.enabled) - - Rectangle { - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 2 - border.color: Fusion.innerContrastLine - color: "transparent" - radius: 2 - } -} diff --git a/src/quickcontrols2/fusion/impl/CMakeLists.txt b/src/quickcontrols2/fusion/impl/CMakeLists.txt deleted file mode 100644 index 8aca54d5..00000000 --- a/src/quickcontrols2/fusion/impl/CMakeLists.txt +++ /dev/null @@ -1,39 +0,0 @@ -##################################################################### -## qtquickcontrols2fusionstyleimplplugin Plugin: -##################################################################### - -set(qml_files - "ButtonPanel.qml" - "CheckIndicator.qml" - "RadioIndicator.qml" - "SliderGroove.qml" - "SliderHandle.qml" - "SwitchIndicator.qml" -) -set_source_files_properties(${qml_files} PROPERTIES - QT_QML_SOURCE_VERSION "2.3" -) - -qt_internal_add_qml_module(qtquickcontrols2fusionstyleimplplugin - URI "QtQuick.Controls.Fusion.impl" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2FusionStyleImplPlugin - PLUGIN_TARGET qtquickcontrols2fusionstyleimplplugin - NO_PLUGIN_OPTIONAL - SOURCES - qquickfusionbusyindicator.cpp qquickfusionbusyindicator_p.h - qquickfusiondial.cpp qquickfusiondial_p.h - qquickfusionknob.cpp qquickfusionknob_p.h - QML_FILES - ${qml_files} - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::Gui - Qt::QmlPrivate - Qt::QuickControls2ImplPrivate - Qt::QuickPrivate - Qt::QuickTemplates2Private -) diff --git a/src/quickcontrols2/fusion/impl/CheckIndicator.qml b/src/quickcontrols2/fusion/impl/CheckIndicator.qml deleted file mode 100644 index 3a083653..00000000 --- a/src/quickcontrols2/fusion/impl/CheckIndicator.qml +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -Rectangle { - id: indicator - - property Item control - readonly property color pressedColor: Fusion.mergedColors(control.palette.base, control.palette.windowText, 85) - readonly property color checkMarkColor: Qt.darker(control.palette.text, 1.2) - - implicitWidth: 14 - implicitHeight: 14 - - color: control.down ? indicator.pressedColor : control.palette.base - border.color: control.visualFocus ? Fusion.highlightedOutline(control.palette) - : Qt.lighter(Fusion.outline(control.palette), 1.1) - - Rectangle { - x: 1; y: 1 - width: parent.width - 2 - height: 1 - color: Fusion.topShadow - visible: indicator.control.enabled && !indicator.control.down - } - - ColorImage { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - color: Color.transparent(indicator.checkMarkColor, 210 / 255) - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Fusion/images/checkmark.png" - visible: indicator.control.checkState === Qt.Checked || (indicator.control.checked && indicator.control.checkState === undefined) - } - - Rectangle { - x: 3; y: 3 - width: parent.width - 6 - height: parent.width - 6 - - visible: indicator.control.checkState === Qt.PartiallyChecked - - gradient: Gradient { - GradientStop { - position: 0 - color: Color.transparent(indicator.checkMarkColor, 80 / 255) - } - GradientStop { - position: 1 - color: Color.transparent(indicator.checkMarkColor, 140 / 255) - } - } - border.color: Color.transparent(indicator.checkMarkColor, 180 / 255) - } -} diff --git a/src/quickcontrols2/fusion/impl/RadioIndicator.qml b/src/quickcontrols2/fusion/impl/RadioIndicator.qml deleted file mode 100644 index d459a2e8..00000000 --- a/src/quickcontrols2/fusion/impl/RadioIndicator.qml +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -Rectangle { - id: indicator - - property Item control - readonly property color pressedColor: Fusion.mergedColors(control.palette.base, control.palette.windowText, 85) - readonly property color checkMarkColor: Qt.darker(control.palette.text, 1.2) - - implicitWidth: 14 - implicitHeight: 14 - - radius: width / 2 - color: control.down ? indicator.pressedColor : control.palette.base - border.color: control.visualFocus ? Fusion.highlightedOutline(control.palette) - : Qt.darker(control.palette.window, 1.5) - - Rectangle { - y: 1 - width: parent.width - height: parent.height - 1 - radius: width / 2 - color: "transparent" - border.color: Fusion.topShadow - visible: indicator.control.enabled && !indicator.control.down - } - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: parent.width / 2.32 - height: parent.height / 2.32 - radius: width / 2 - color: Color.transparent(indicator.checkMarkColor, 180 / 255) - border.color: Color.transparent(indicator.checkMarkColor, 200 / 255) - visible: indicator.control.checked - } -} diff --git a/src/quickcontrols2/fusion/impl/SliderGroove.qml b/src/quickcontrols2/fusion/impl/SliderGroove.qml deleted file mode 100644 index 76b7156a..00000000 --- a/src/quickcontrols2/fusion/impl/SliderGroove.qml +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -Rectangle { - id: groove - - property Item control - property real offset - property real progress - property real visualProgress - - x: control.horizontal ? 0 : (control.availableWidth - width) / 2 - y: control.horizontal ? (control.availableHeight - height) / 2 : 0 - - implicitWidth: control.horizontal ? 160 : 5 - implicitHeight: control.horizontal ? 5 : 160 - width: control.horizontal ? control.availableWidth : implicitWidth - height: control.horizontal ? implicitHeight : control.availableHeight - - radius: 2 - border.color: Fusion.outline(control.palette) - scale: control.horizontal && control.mirrored ? -1 : 1 - - gradient: Gradient { - GradientStop { - position: 0 - color: Qt.darker(Fusion.grooveColor(groove.control.palette), 1.1) - } - GradientStop { - position: 1 - color: Qt.lighter(Fusion.grooveColor(groove.control.palette), 1.1) - } - } - - Rectangle { - x: groove.control.horizontal ? groove.offset * parent.width : 0 - y: groove.control.horizontal ? 0 : groove.visualProgress * parent.height - width: groove.control.horizontal ? groove.progress * parent.width - groove.offset * parent.width : 5 - height: groove.control.horizontal ? 5 : groove.progress * parent.height - groove.offset * parent.height - - radius: 2 - border.color: Qt.darker(Fusion.highlightedOutline(groove.control.palette), 1.1) - - gradient: Gradient { - GradientStop { - position: 0 - color: Fusion.highlight(groove.control.palette) - } - GradientStop { - position: 1 - color: Qt.lighter(Fusion.highlight(groove.control.palette), 1.2) - } - } - } -} diff --git a/src/quickcontrols2/fusion/impl/SliderHandle.qml b/src/quickcontrols2/fusion/impl/SliderHandle.qml deleted file mode 100644 index 00a955b9..00000000 --- a/src/quickcontrols2/fusion/impl/SliderHandle.qml +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -Rectangle { - id: handle - - property var palette - property bool pressed - property bool hovered - property bool vertical - property bool visualFocus - - implicitWidth: 13 - implicitHeight: 13 - - gradient: Gradient { - GradientStop { - position: 0 - color: Fusion.gradientStart(Fusion.buttonColor(handle.palette, handle.visualFocus, handle.pressed, handle.hovered)) - } - GradientStop { - position: 1 - color: Fusion.gradientStop(Fusion.buttonColor(handle.palette, handle.visualFocus, handle.pressed, handle.hovered)) - } - } - rotation: handle.vertical ? -90 : 0 - border.width: 1 - border.color: "transparent" - radius: 2 - - Rectangle { - width: parent.width - height: parent.height - border.color: handle.visualFocus ? Fusion.highlightedOutline(handle.palette) : Fusion.outline(handle.palette) - color: "transparent" - radius: 2 - - Rectangle { - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 2 - border.color: Fusion.innerContrastLine - color: "transparent" - radius: 2 - } - } -} diff --git a/src/quickcontrols2/fusion/impl/SwitchIndicator.qml b/src/quickcontrols2/fusion/impl/SwitchIndicator.qml deleted file mode 100644 index 5a561913..00000000 --- a/src/quickcontrols2/fusion/impl/SwitchIndicator.qml +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl - -Rectangle { - id: indicator - - property Item control - readonly property color pressedColor: Fusion.mergedColors(control.palette.base, control.palette.windowText, 85) - readonly property color checkMarkColor: Qt.darker(control.palette.text, 1.2) - - implicitWidth: 40 - implicitHeight: 16 - - radius: 2 - border.color: Fusion.outline(control.palette) - - gradient: Gradient { - GradientStop { - position: 0 - color: Qt.darker(Fusion.grooveColor(indicator.control.palette), 1.1) - } - GradientStop { - position: 1 - color: Qt.lighter(Fusion.grooveColor(indicator.control.palette), 1.1) - } - } - - Rectangle { - x: indicator.control.mirrored ? handle.x : 0 - width: indicator.control.mirrored ? parent.width - handle.x : handle.x + handle.width - height: parent.height - - opacity: indicator.control.checked ? 1 : 0 - Behavior on opacity { - enabled: !indicator.control.down - NumberAnimation { duration: 80 } - } - - radius: 2 - border.color: Qt.darker(Fusion.highlightedOutline(indicator.control.palette), 1.1) - border.width: indicator.control.enabled ? 1 : 0 - - gradient: Gradient { - GradientStop { - position: 0 - color: Fusion.highlight(indicator.control.palette) - } - GradientStop { - position: 1 - color: Qt.lighter(Fusion.highlight(indicator.control.palette), 1.2) - } - } - } - - Rectangle { - id: handle - x: Math.max(0, Math.min(parent.width - width, indicator.control.visualPosition * parent.width - (width / 2))) - y: (parent.height - height) / 2 - width: 20 - height: 16 - radius: 2 - - gradient: Gradient { - GradientStop { - position: 0 - color: Fusion.gradientStart(Fusion.buttonColor(indicator.control.palette, indicator.control.visualFocus, indicator.control.pressed, indicator.control.hovered)) - } - GradientStop { - position: 1 - color: Fusion.gradientStop(Fusion.buttonColor(indicator.control.palette, indicator.control.visualFocus, indicator.control.pressed, indicator.control.hovered)) - } - } - border.width: 1 - border.color: "transparent" - - Rectangle { - width: parent.width - height: parent.height - border.color: indicator.control.visualFocus ? Fusion.highlightedOutline(indicator.control.palette) : Fusion.outline(indicator.control.palette) - color: "transparent" - radius: 2 - - Rectangle { - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 2 - border.color: Fusion.innerContrastLine - color: "transparent" - radius: 2 - } - } - - Behavior on x { - enabled: !indicator.control.down - SmoothedAnimation { velocity: 200 } - } - } -} diff --git a/src/quickcontrols2/fusion/impl/qquickfusionbusyindicator.cpp b/src/quickcontrols2/fusion/impl/qquickfusionbusyindicator.cpp deleted file mode 100644 index a9b75d27..00000000 --- a/src/quickcontrols2/fusion/impl/qquickfusionbusyindicator.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickfusionbusyindicator_p.h" - -#include <QtGui/qpainter.h> - -QT_BEGIN_NAMESPACE - -QQuickFusionBusyIndicator::QQuickFusionBusyIndicator(QQuickItem *parent) - : QQuickPaintedItem(parent) -{ -} - -QColor QQuickFusionBusyIndicator::color() const -{ - return m_color; -} - -void QQuickFusionBusyIndicator::setColor(const QColor &color) -{ - if (color == m_color) - return; - - m_color = color; - update(); -} - -bool QQuickFusionBusyIndicator::isRunning() const -{ - return isVisible(); -} - -void QQuickFusionBusyIndicator::setRunning(bool running) -{ - if (running) { - setVisible(true); - update(); - } -} - -void QQuickFusionBusyIndicator::paint(QPainter *painter) -{ - const qreal w = width(); - const qreal h = height(); - if (w <= 0 || h <= 0 || !isRunning()) - return; - - const qreal sz = qMin(w, h); - const qreal dx = (w - sz) / 2; - const qreal dy = (h - sz) / 2; - const int hpw = qRound(qMax(qreal(1), sz / 14)) & -1; - const int pw = 2 * hpw; - const QRectF bounds(dx + hpw, dy + hpw, sz - pw - 1, sz - pw - 1); - - QConicalGradient gradient; - gradient.setCenter(QPointF(dx + sz / 2, dy + sz / 2)); - gradient.setColorAt(0, m_color); - gradient.setColorAt(0.1, m_color); - gradient.setColorAt(1, Qt::transparent); - - painter->translate(0.5, 0.5); - painter->setRenderHint(QPainter::Antialiasing, true); - painter->setPen(QPen(gradient, pw, Qt::SolidLine)); - painter->drawArc(bounds, 0, 360 * 16); - painter->setPen(QPen(m_color, pw, Qt::SolidLine, Qt::RoundCap)); - painter->drawArc(bounds, 0, 20 * 16); -} - -void QQuickFusionBusyIndicator::itemChange(ItemChange change, const ItemChangeData &data) -{ - QQuickPaintedItem::itemChange(change, data); - - if (change == ItemOpacityHasChanged && qFuzzyIsNull(data.realValue)) - setVisible(false); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/fusion/impl/qquickfusionbusyindicator_p.h b/src/quickcontrols2/fusion/impl/qquickfusionbusyindicator_p.h deleted file mode 100644 index 5aeea6c4..00000000 --- a/src/quickcontrols2/fusion/impl/qquickfusionbusyindicator_p.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFUSIONBUSYINDICATOR_P_H -#define QQUICKFUSIONBUSYINDICATOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qcolor.h> -#include <QtQuick/qquickpainteditem.h> - -QT_BEGIN_NAMESPACE - -class QQuickFusionBusyIndicator : public QQuickPaintedItem -{ - Q_OBJECT - Q_PROPERTY(QColor color READ color WRITE setColor FINAL) - Q_PROPERTY(bool running READ isRunning WRITE setRunning) - QML_NAMED_ELEMENT(BusyIndicatorImpl) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickFusionBusyIndicator(QQuickItem *parent = nullptr); - - QColor color() const; - void setColor(const QColor &color); - - bool isRunning() const; - void setRunning(bool running); - - void paint(QPainter *painter) override; - -protected: - void itemChange(ItemChange change, const ItemChangeData &data) override; - -private: - QColor m_color; -}; - -QT_END_NAMESPACE - -#endif // QQUICKFUSIONBUSYINDICATOR_P_H diff --git a/src/quickcontrols2/fusion/impl/qquickfusiondial.cpp b/src/quickcontrols2/fusion/impl/qquickfusiondial.cpp deleted file mode 100644 index eb6f21ad..00000000 --- a/src/quickcontrols2/fusion/impl/qquickfusiondial.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickfusiondial_p.h" - -#include <QtGui/qpainter.h> -#include <QtGui/private/qmath_p.h> -#include <QtQuick/private/qquickpalette_p.h> -#include <QtQuick/private/qquickitem_p.h> - -QT_BEGIN_NAMESPACE - -QQuickFusionDial::QQuickFusionDial(QQuickItem *parent) - : QQuickPaintedItem(parent) -{ -} - -bool QQuickFusionDial::highlight() const -{ - return m_highlight; -} - -void QQuickFusionDial::setHighlight(bool highlight) -{ - if (m_highlight == highlight) - return; - - m_highlight = highlight; - update(); -} - -// based on QStyleHelper::drawDial() -void QQuickFusionDial::paint(QPainter *painter) -{ - const int width = QQuickItem::width(); - const int height = QQuickItem::height(); - if (width <= 0 || height <= 0 || !isVisible()) - return; - - QColor buttonColor = QQuickItemPrivate::get(this)->palette()->button(); - const bool enabled = isEnabled(); - qreal r = qMin(width, height) / 2.0; - r -= r/50; - const qreal penSize = r/20.0; - - painter->setRenderHint(QPainter::Antialiasing); - - const qreal d_ = r / 6; - const qreal dx = d_ + (width - 2 * r) / 2 + 1; - const qreal dy = d_ + (height - 2 * r) / 2 + 1; - - QRectF br = QRectF(dx + 0.5, dy + 0.5, - int(r * 2 - 2 * d_ - 2), - int(r * 2 - 2 * d_ - 2)); - buttonColor.setHsv(buttonColor .hue(), - qMin(140, buttonColor .saturation()), - qMax(180, buttonColor.value())); - - if (enabled) { - // Drop shadow - qreal shadowSize = qMax(1.0, penSize/2.0); - QRectF shadowRect= br.adjusted(-2*shadowSize, -2*shadowSize, - 2*shadowSize, 2*shadowSize); - QRadialGradient shadowGradient(shadowRect.center().x(), - shadowRect.center().y(), shadowRect.width()/2.0, - shadowRect.center().x(), shadowRect.center().y()); - shadowGradient.setColorAt(qreal(0.91), QColor(0, 0, 0, 40)); - shadowGradient.setColorAt(qreal(1.0), Qt::transparent); - painter->setBrush(shadowGradient); - painter->setPen(Qt::NoPen); - painter->translate(shadowSize, shadowSize); - painter->drawEllipse(shadowRect); - painter->translate(-shadowSize, -shadowSize); - - // Main gradient - QRadialGradient gradient(br.center().x() - br.width()/3, dy, - br.width()*1.3, br.center().x(), - br.center().y() - br.height()/2); - gradient.setColorAt(0, buttonColor.lighter(110)); - gradient.setColorAt(qreal(0.5), buttonColor); - gradient.setColorAt(qreal(0.501), buttonColor.darker(102)); - gradient.setColorAt(1, buttonColor.darker(115)); - painter->setBrush(gradient); - } else { - painter->setBrush(Qt::NoBrush); - } - - painter->setPen(QPen(buttonColor.darker(280))); - painter->drawEllipse(br); - painter->setBrush(Qt::NoBrush); - painter->setPen(buttonColor.lighter(110)); - painter->drawEllipse(br.adjusted(1, 1, -1, -1)); - - if (m_highlight) { - QColor highlight = QQuickItemPrivate::get(this)->palette()->highlight(); - highlight.setHsv(highlight.hue(), - qMin(160, highlight.saturation()), - qMax(230, highlight.value())); - highlight.setAlpha(127); - painter->setPen(QPen(highlight, 2.0)); - painter->setBrush(Qt::NoBrush); - painter->drawEllipse(br.adjusted(-1, -1, 1, 1)); - } -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/fusion/impl/qquickfusiondial_p.h b/src/quickcontrols2/fusion/impl/qquickfusiondial_p.h deleted file mode 100644 index c320527a..00000000 --- a/src/quickcontrols2/fusion/impl/qquickfusiondial_p.h +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFUSIONDIAL_P_H -#define QQUICKFUSIONDIAL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/qquickpainteditem.h> - -QT_BEGIN_NAMESPACE - -class QQuickFusionDial : public QQuickPaintedItem -{ - Q_OBJECT - Q_PROPERTY(bool highlight READ highlight WRITE setHighlight FINAL) - QML_NAMED_ELEMENT(DialImpl) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickFusionDial(QQuickItem *parent = nullptr); - - bool highlight() const; - void setHighlight(bool highlight); - - void paint(QPainter *painter) override; - -private: - bool m_highlight = false; -}; - -QT_END_NAMESPACE - -#endif // QQUICKFUSIONDIAL_P_H diff --git a/src/quickcontrols2/fusion/impl/qquickfusionknob.cpp b/src/quickcontrols2/fusion/impl/qquickfusionknob.cpp deleted file mode 100644 index 27ac54d3..00000000 --- a/src/quickcontrols2/fusion/impl/qquickfusionknob.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickfusionknob_p.h" - -#include <QtCore/qmath.h> -#include <QtGui/qpainter.h> -#include <QtQuick/private/qquickpalette_p.h> -#include <QtQuick/private/qquickitem_p.h> - -QT_BEGIN_NAMESPACE - -QQuickFusionKnob::QQuickFusionKnob(QQuickItem *parent) - : QQuickPaintedItem(parent) -{ - connect(this, &QQuickItem::paletteChanged, this, [this](){ update(); }); -} - -// extracted from QStyleHelper::drawDial() -void QQuickFusionKnob::paint(QPainter *painter) -{ - const qreal w = width(); - const qreal h = height(); - if (w <= 0 || h <= 0) - return; - - QColor color = QQuickItemPrivate::get(this)->palette()->button(); - color.setHsv(color.hue(), - qMin(140, color .saturation()), - qMax(180, color.value())); - color = color.lighter(104); - color.setAlphaF(0.8f); - - const qreal sz = qMin(w, h); - QRectF rect(0, 0, sz, sz); - rect.moveCenter(QPointF(w / 2.0, h / 2.0)); - const QPointF center = rect.center(); - - QRadialGradient gradient(center.x() + rect.width() / 2, - center.y() + rect.width(), - rect.width() * 2, - center.x(), center.y()); - gradient.setColorAt(1, color.darker(140)); - gradient.setColorAt(qreal(0.4), color.darker(120)); - gradient.setColorAt(0, color.darker(110)); - - painter->setRenderHint(QPainter::Antialiasing); - painter->setBrush(gradient); - painter->setPen(QColor(255, 255, 255, 150)); - painter->drawEllipse(rect); - painter->setPen(QColor(0, 0, 0, 80)); - painter->drawEllipse(rect.adjusted(1, 1, -1, -1)); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/fusion/impl/qquickfusionknob_p.h b/src/quickcontrols2/fusion/impl/qquickfusionknob_p.h deleted file mode 100644 index b9b9c377..00000000 --- a/src/quickcontrols2/fusion/impl/qquickfusionknob_p.h +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFUSIONKNOB_P_H -#define QQUICKFUSIONKNOB_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/qquickpainteditem.h> - -QT_BEGIN_NAMESPACE - -class QQuickFusionKnob : public QQuickPaintedItem -{ - Q_OBJECT - QML_NAMED_ELEMENT(KnobImpl) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickFusionKnob(QQuickItem *parent = nullptr); - - void paint(QPainter *painter) override; -}; - -QT_END_NAMESPACE - -#endif // QQUICKFUSIONKNOB_P_H diff --git a/src/quickcontrols2/fusion/qquickfusionstyle.cpp b/src/quickcontrols2/fusion/qquickfusionstyle.cpp deleted file mode 100644 index f2e8f823..00000000 --- a/src/quickcontrols2/fusion/qquickfusionstyle.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickfusionstyle_p.h" - -#include <QtGui/qcolor.h> -#include <QtGui/qpalette.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtGui/private/qguiapplication_p.h> - -#include <QtQuick/private/qquickpalette_p.h> - -QT_BEGIN_NAMESPACE - -QQuickFusionStyle::QQuickFusionStyle(QObject *parent) - : QObject(parent) -{ -} - -QColor QQuickFusionStyle::lightShade() -{ - return QColor(255, 255, 255, 90); -} - -QColor QQuickFusionStyle::darkShade() -{ - return QColor(0, 0, 0, 60); -} - -QColor QQuickFusionStyle::topShadow() -{ - return QColor(0, 0, 0, 18); -} - -QColor QQuickFusionStyle::innerContrastLine() -{ - return QColor(255, 255, 255, 30); -} - -QColor QQuickFusionStyle::highlight(QQuickPalette *palette) -{ - return palette->highlight(); -} - -QColor QQuickFusionStyle::highlightedText(QQuickPalette *palette) -{ - return palette->highlightedText(); -} - -QColor QQuickFusionStyle::outline(QQuickPalette *palette) -{ - return palette->window().darker(140); -} - -QColor QQuickFusionStyle::highlightedOutline(QQuickPalette *palette) -{ - QColor highlightedOutline = highlight(palette).darker(125); - if (highlightedOutline.value() > 160) - highlightedOutline.setHsl(highlightedOutline.hue(), highlightedOutline.saturation(), 160); - return highlightedOutline; -} - -QColor QQuickFusionStyle::tabFrameColor(QQuickPalette *palette) -{ - return buttonColor(palette).lighter(104); -} - -QColor QQuickFusionStyle::buttonColor(QQuickPalette *palette, bool highlighted, bool down, bool hovered) -{ - QColor buttonColor = palette->button(); - int val = qGray(buttonColor.rgb()); - buttonColor = buttonColor.lighter(100 + qMax(1, (180 - val)/6)); - buttonColor.setHsv(buttonColor.hue(), int(buttonColor.saturation() * 0.75), buttonColor.value()); - if (highlighted) - buttonColor = mergedColors(buttonColor, highlightedOutline(palette).lighter(130), 90); - if (!hovered) - buttonColor = buttonColor.darker(104); - if (down) - buttonColor = buttonColor.darker(110); - return buttonColor; -} - -QColor QQuickFusionStyle::buttonOutline(QQuickPalette *palette, bool highlighted, bool enabled) -{ - QColor darkOutline = enabled && highlighted ? highlightedOutline(palette) : outline(palette); - return !enabled ? darkOutline.lighter(115) : darkOutline; -} - -QColor QQuickFusionStyle::gradientStart(const QColor &baseColor) -{ - return baseColor.lighter(124); -} - -QColor QQuickFusionStyle::gradientStop(const QColor &baseColor) -{ - return baseColor.lighter(102); -} - -QColor QQuickFusionStyle::mergedColors(const QColor &colorA, const QColor &colorB, int factor) -{ - const int maxFactor = 100; - QColor tmp = colorA; - tmp.setRed((tmp.red() * factor) / maxFactor + (colorB.red() * (maxFactor - factor)) / maxFactor); - tmp.setGreen((tmp.green() * factor) / maxFactor + (colorB.green() * (maxFactor - factor)) / maxFactor); - tmp.setBlue((tmp.blue() * factor) / maxFactor + (colorB.blue() * (maxFactor - factor)) / maxFactor); - return tmp; -} - -QColor QQuickFusionStyle::grooveColor(QQuickPalette *palette) -{ - QColor color = buttonColor(palette); - color.setHsv(color.hue(), - qMin(255, color.saturation()), - qMin<int>(255, color.value() * 0.9)); - return color; -} - -QT_END_NAMESPACE - -#include "moc_qquickfusionstyle_p.cpp" diff --git a/src/quickcontrols2/fusion/qquickfusionstyle_p.h b/src/quickcontrols2/fusion/qquickfusionstyle_p.h deleted file mode 100644 index c609e9c6..00000000 --- a/src/quickcontrols2/fusion/qquickfusionstyle_p.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFUSIONSTYLE_P_H -#define QQUICKFUSIONSTYLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtGui/qcolor.h> -#include <QtQml/qqml.h> -#include <QtQuick/private/qquickpalette_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickFusionStyle : public QObject -{ - Q_OBJECT - Q_PROPERTY(QColor lightShade READ lightShade CONSTANT) - Q_PROPERTY(QColor darkShade READ darkShade CONSTANT) - Q_PROPERTY(QColor topShadow READ topShadow CONSTANT) - Q_PROPERTY(QColor innerContrastLine READ innerContrastLine CONSTANT) - QML_NAMED_ELEMENT(Fusion) - QML_SINGLETON - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickFusionStyle(QObject *parent = nullptr); - - static QColor lightShade(); - static QColor darkShade(); - static QColor topShadow(); - static QColor innerContrastLine(); - - Q_INVOKABLE static QColor highlight(QQuickPalette *palette); - Q_INVOKABLE static QColor highlightedText(QQuickPalette *palette); - Q_INVOKABLE static QColor outline(QQuickPalette *palette); - Q_INVOKABLE static QColor highlightedOutline(QQuickPalette *palette); - Q_INVOKABLE static QColor tabFrameColor(QQuickPalette *palette); - Q_INVOKABLE static QColor buttonColor(QQuickPalette *palette, bool highlighted = false, bool down = false, bool hovered = false); - Q_INVOKABLE static QColor buttonOutline(QQuickPalette *palette, bool highlighted = false, bool enabled = true); - Q_INVOKABLE static QColor gradientStart(const QColor &baseColor); - Q_INVOKABLE static QColor gradientStop(const QColor &baseColor); - Q_INVOKABLE static QColor mergedColors(const QColor &colorA, const QColor &colorB, int factor = 50); - Q_INVOKABLE static QColor grooveColor(QQuickPalette *palette); -}; - -QT_END_NAMESPACE - -#endif // QQUICKFUSIONSTYLE_P_H diff --git a/src/quickcontrols2/fusion/qquickfusiontheme.cpp b/src/quickcontrols2/fusion/qquickfusiontheme.cpp deleted file mode 100644 index 29d2ed1a..00000000 --- a/src/quickcontrols2/fusion/qquickfusiontheme.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickfusiontheme_p.h" - -#include <QtQuickTemplates2/private/qquicktheme_p.h> -#include <QtQuickControls2/private/qquickstyle_p.h> - -QT_BEGIN_NAMESPACE - -void QQuickFusionTheme::initialize(QQuickTheme *theme) -{ - const bool isDarkSystemTheme = QQuickStylePrivate::isDarkSystemTheme(); - QPalette systemPalette; - systemPalette.setColor(QPalette::Active, QPalette::ButtonText, - isDarkSystemTheme ? QColor::fromRgb(0xe7e7e7) : QColor::fromRgb(0x252525)); - systemPalette.setColor(QPalette::Inactive, QPalette::ButtonText, - isDarkSystemTheme ? QColor::fromRgb(0xe7e7e7) : QColor::fromRgb(0x252525)); - systemPalette.setColor(QPalette::Disabled, QPalette::ButtonText, - isDarkSystemTheme ? QColor::fromRgb(0x777777) : QColor::fromRgb(0xb6b6b6)); - theme->setPalette(QQuickTheme::System, systemPalette); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/fusion/qquickfusiontheme_p.h b/src/quickcontrols2/fusion/qquickfusiontheme_p.h deleted file mode 100644 index 814c1919..00000000 --- a/src/quickcontrols2/fusion/qquickfusiontheme_p.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFUSIONTHEME_P_H -#define QQUICKFUSIONTHEME_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qglobal.h> - -QT_BEGIN_NAMESPACE - -class QQuickTheme; - -class QQuickFusionTheme -{ -public: - static void initialize(QQuickTheme *theme); -}; - -QT_END_NAMESPACE - -#endif // QQUICKFUSIONTHEME_P_H diff --git a/src/quickcontrols2/fusion/qtquickcontrols2fusionstyle.qrc b/src/quickcontrols2/fusion/qtquickcontrols2fusionstyle.qrc deleted file mode 100644 index 0a9e195a..00000000 --- a/src/quickcontrols2/fusion/qtquickcontrols2fusionstyle.qrc +++ /dev/null @@ -1,16 +0,0 @@ -<!DOCTYPE RCC><RCC version="1.0"> -<qresource prefix="qt-project.org/imports/QtQuick/Controls/Fusion"> - <file>images/arrow.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/checkmark.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/progressmask.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> -</qresource> -</RCC> diff --git a/src/quickcontrols2/fusion/qtquickcontrols2fusionstyleplugin.cpp b/src/quickcontrols2/fusion/qtquickcontrols2fusionstyleplugin.cpp deleted file mode 100644 index f0d0e41a..00000000 --- a/src/quickcontrols2/fusion/qtquickcontrols2fusionstyleplugin.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickfusionstyle_p.h" -#include "qquickfusiontheme_p.h" - -#include <QtQml/qqml.h> -#include <QtQuickControls2/private/qquickstyleplugin_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -extern void qml_register_types_QtQuick_Controls_Fusion(); - -QT_BEGIN_NAMESPACE - -class QtQuickControls2FusionStylePlugin : public QQuickStylePlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) - -public: - QtQuickControls2FusionStylePlugin(QObject *parent = nullptr); - - QString name() const override; - void initializeTheme(QQuickTheme *theme) override; - - QQuickFusionTheme theme; -}; - -QtQuickControls2FusionStylePlugin::QtQuickControls2FusionStylePlugin(QObject *parent) : QQuickStylePlugin(parent) -{ - volatile auto registration = &qml_register_types_QtQuick_Controls_Fusion; - Q_UNUSED(registration); -} - -QString QtQuickControls2FusionStylePlugin::name() const -{ - return QStringLiteral("Fusion"); -} - -void QtQuickControls2FusionStylePlugin::initializeTheme(QQuickTheme *theme) -{ - this->theme.initialize(theme); -} - -QT_END_NAMESPACE - -#include "qtquickcontrols2fusionstyleplugin.moc" diff --git a/src/quickcontrols2/imagine/ApplicationWindow.qml b/src/quickcontrols2/imagine/ApplicationWindow.qml deleted file mode 100644 index b54527eb..00000000 --- a/src/quickcontrols2/imagine/ApplicationWindow.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Window -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.ApplicationWindow { - id: window - - background: NinePatchImage { - width: window.width - height: window.height - - source: Imagine.url + "applicationwindow-background" - NinePatchImageSelector on source { - states: [ - {"active": window.active} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/BusyIndicator.qml b/src/quickcontrols2/imagine/BusyIndicator.qml deleted file mode 100644 index 163a64b4..00000000 --- a/src/quickcontrols2/imagine/BusyIndicator.qml +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.BusyIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - contentItem: AnimatedImage { - opacity: control.running ? 1 : 0 - playing: control.running || opacity > 0 - visible: control.running || opacity > 0 - Behavior on opacity { OpacityAnimator { duration: 250 } } - - source: Imagine.url + "busyindicator-animation" - AnimatedImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"running": control.running}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - background: NinePatchImage { - source: Imagine.url + "busyindicator-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"running": control.running}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/Button.qml b/src/quickcontrols2/imagine/Button.qml deleted file mode 100644 index f2228ec7..00000000 --- a/src/quickcontrols2/imagine/Button.qml +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.Button { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - spacing: 6 // ### - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - icon.width: 24 - icon.height: 24 - icon.color: control.enabled && control.flat && control.highlighted ? control.palette.highlight - : control.enabled && (control.down || control.checked || control.highlighted) && !control.flat - ? control.palette.brightText : control.flat ? control.palette.windowText : control.palette.buttonText - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.enabled && control.flat && control.highlighted ? control.palette.highlight - : control.enabled && (control.down || control.checked || control.highlighted) && !control.flat - ? control.palette.brightText : control.flat ? control.palette.windowText : control.palette.buttonText - } - - background: NinePatchImage { - source: Imagine.url + "button-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"checkable": control.checkable}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"flat": control.flat}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/CMakeLists.txt b/src/quickcontrols2/imagine/CMakeLists.txt deleted file mode 100644 index 088aeba6..00000000 --- a/src/quickcontrols2/imagine/CMakeLists.txt +++ /dev/null @@ -1,255 +0,0 @@ -##################################################################### -## qtquickcontrols2imaginestyleplugin Plugin: -##################################################################### - -set(qml_files - "ApplicationWindow.qml" - "BusyIndicator.qml" - "Button.qml" - "CheckBox.qml" - "CheckDelegate.qml" - "ComboBox.qml" - "DelayButton.qml" - "Dial.qml" - "Dialog.qml" - "DialogButtonBox.qml" - "Drawer.qml" - "Frame.qml" - "GroupBox.qml" - "HorizontalHeaderView.qml" - "ItemDelegate.qml" - "Label.qml" - "Menu.qml" - "MenuItem.qml" - "MenuSeparator.qml" - "PageIndicator.qml" - "Page.qml" - "Pane.qml" - "Popup.qml" - "ProgressBar.qml" - "RadioButton.qml" - "RadioDelegate.qml" - "RangeSlider.qml" - "RoundButton.qml" - "ScrollView.qml" - "ScrollBar.qml" - "ScrollIndicator.qml" - "Slider.qml" - "SpinBox.qml" - "SplitView.qml" - "StackView.qml" - "SwipeDelegate.qml" - "SwipeView.qml" - "Switch.qml" - "SwitchDelegate.qml" - "TextField.qml" - "TextArea.qml" - "TabBar.qml" - "TabButton.qml" - "ToolBar.qml" - "ToolButton.qml" - "ToolSeparator.qml" - "ToolTip.qml" - "Tumbler.qml" - "VerticalHeaderView.qml" -) -set_source_files_properties(ApplicationWindow.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(BusyIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Button.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(CheckBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(CheckDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ComboBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(DelayButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.2;6.0" -) -set_source_files_properties(Dial.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Dialog.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(DialogButtonBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(Drawer.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Frame.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(GroupBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(HorizontalHeaderView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.15;6.0" -) -set_source_files_properties(ItemDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Label.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Menu.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(MenuItem.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(MenuSeparator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(PageIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Page.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Pane.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Popup.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ProgressBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RadioButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RadioDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RangeSlider.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RoundButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(ScrollView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ScrollBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ScrollIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Slider.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SpinBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SplitView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.13;6.0" -) -set_source_files_properties(StackView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SwipeDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SwipeView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Switch.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SwitchDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TextField.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TextArea.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TabBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TabButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolSeparator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(ToolTip.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Tumbler.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(VerticalHeaderView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.15;6.0" -) - -qt_internal_add_qml_module(qtquickcontrols2imaginestyleplugin - URI "QtQuick.Controls.Imagine" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2ImagineStylePlugin - IMPORTS - QtQuick.Controls.Basic/auto - PLUGIN_TARGET qtquickcontrols2imaginestyleplugin - NO_PLUGIN_OPTIONAL - NO_GENERATE_PLUGIN_SOURCE - SOURCES - qquickimaginestyle.cpp qquickimaginestyle_p.h - qquickimaginetheme.cpp qquickimaginetheme_p.h - qtquickcontrols2imaginestyleplugin.cpp - QML_FILES - ${qml_files} - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickControls2ImplPrivate - Qt::QuickControls2Private - Qt::QuickPrivate - Qt::QuickTemplates2Private -) - -file(GLOB resource_glob_0 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "images/*.png") -foreach(file IN LISTS resource_glob_0) - set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}") -endforeach() - -file(GLOB resource_glob_1 RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "images/*.webp") -foreach(file IN LISTS resource_glob_1) - set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/${file}" PROPERTIES QT_RESOURCE_ALIAS "${file}") -endforeach() - -# Resources: -set(qmake_qtquickcontrols2imaginestyleplugin_resource_files - ${resource_glob_0} - ${resource_glob_1} -) - -qt_internal_add_resource(qtquickcontrols2imaginestyleplugin "qmake_qtquickcontrols2imaginestyleplugin" - PREFIX - "/qt-project.org/imports/QtQuick/Controls/Imagine" - FILES - ${qmake_qtquickcontrols2imaginestyleplugin_resource_files} -) - -add_subdirectory(impl) diff --git a/src/quickcontrols2/imagine/CheckBox.qml b/src/quickcontrols2/imagine/CheckBox.qml deleted file mode 100644 index a92837b5..00000000 --- a/src/quickcontrols2/imagine/CheckBox.qml +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.CheckBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 6 // ### - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - indicator: Image { - x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - - source: Imagine.url + "checkbox-indicator" - ImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checkState === Qt.Checked}, - {"partially-checked": control.checkState === Qt.PartiallyChecked}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - color: control.palette.windowText - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - background: NinePatchImage { - source: Imagine.url + "checkbox-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checkState === Qt.Checked}, - {"partially-checked": control.checkState === Qt.PartiallyChecked}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/CheckDelegate.qml b/src/quickcontrols2/imagine/CheckDelegate.qml deleted file mode 100644 index 08be7085..00000000 --- a/src/quickcontrols2/imagine/CheckDelegate.qml +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.CheckDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 12 // ### - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.text - - indicator: Image { - x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 - - source: Imagine.url + "checkdelegate-indicator" - ImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checkState === Qt.Checked}, - {"partially-checked": control.checkState === Qt.PartiallyChecked}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - contentItem: IconLabel { - leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.palette.text - } - - background: NinePatchImage { - source: Imagine.url + "checkdelegate-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checkState === Qt.Checked}, - {"partially-checked": control.checkState === Qt.PartiallyChecked}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/ComboBox.qml b/src/quickcontrols2/imagine/ComboBox.qml deleted file mode 100644 index 58683a84..00000000 --- a/src/quickcontrols2/imagine/ComboBox.qml +++ /dev/null @@ -1,173 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Window -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.ComboBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentItem.implicitWidth + background ? (background.leftPadding + background.rightPadding) : 0) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - Math.max(implicitContentHeight, - implicitIndicatorHeight) + background ? (background.topPadding + background.bottomPadding) : 0) - - leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) - rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - delegate: ItemDelegate { - width: ListView.view.width - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData - font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal - highlighted: control.highlightedIndex === index - hoverEnabled: control.hoverEnabled - } - - indicator: Image { - x: control.mirrored ? control.padding : control.width - width - control.padding - y: control.topPadding + (control.availableHeight - height) / 2 - - source: Imagine.url + "combobox-indicator" - ImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.pressed}, - {"editable": control.editable}, - {"open": control.down}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered}, - {"flat": control.flat} - ] - } - } - - contentItem: T.TextField { - topPadding: control.background ? control.background.topPadding : 0 - leftPadding: control.background ? control.background.leftPadding : 0 - rightPadding: control.background ? control.background.rightPadding : 0 - bottomPadding: control.background ? control.background.bottomPadding : 0 - - text: control.editable ? control.editText : control.displayText - - enabled: control.editable - autoScroll: control.editable - readOnly: control.down - inputMethodHints: control.inputMethodHints - validator: control.validator - selectByMouse: control.selectTextByMouse - - font: control.font - color: control.flat ? control.palette.windowText : control.editable ? control.palette.text : control.palette.buttonText - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - verticalAlignment: Text.AlignVCenter - } - - background: NinePatchImage { - source: Imagine.url + "combobox-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.pressed}, - {"editable": control.editable}, - {"open": control.down}, - {"focused": control.visualFocus || (control.editable && control.activeFocus)}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered}, - {"flat": control.flat} - ] - } - } - - popup: T.Popup { - width: control.width - height: Math.min(contentItem.implicitHeight + topPadding + bottomPadding, control.Window.height - topMargin - bottomMargin) - - topMargin: background.topInset - bottomMargin: background.bottomInset - - topPadding: background.topPadding - leftPadding: background.leftPadding - rightPadding: background.rightPadding - bottomPadding: background.bottomPadding - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - palette.text: control.palette.text - palette.highlight: control.palette.highlight - palette.highlightedText: control.palette.highlightedText - palette.windowText: control.palette.windowText - palette.buttonText: control.palette.buttonText - - contentItem: ListView { - clip: true - implicitHeight: contentHeight - model: control.delegateModel - currentIndex: control.highlightedIndex - highlightMoveDuration: 0 - - T.ScrollIndicator.vertical: ScrollIndicator { } - } - - background: NinePatchImage { - source: Imagine.url + "combobox-popup" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.pressed}, - {"editable": control.editable}, - {"focused": control.visualFocus || (control.editable && control.activeFocus)}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered}, - {"flat": control.flat} - ] - } - } - } -} diff --git a/src/quickcontrols2/imagine/DelayButton.qml b/src/quickcontrols2/imagine/DelayButton.qml deleted file mode 100644 index e542eb69..00000000 --- a/src/quickcontrols2/imagine/DelayButton.qml +++ /dev/null @@ -1,137 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.DelayButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - transition: Transition { - NumberAnimation { - duration: control.delay * (control.pressed ? 1.0 - control.progress : 0.3 * control.progress) - } - } - - contentItem: Text { - text: control.text - font: control.font - color: control.palette.buttonText - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - background: NinePatchImage { - source: Imagine.url + "delaybutton-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - - readonly property NinePatchImage progress: NinePatchImage { - parent: control.background - width: control.progress * parent.width - height: parent.height - visible: false - - source: Imagine.url + "delaybutton-progress" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - readonly property NinePatchImage mask: NinePatchImage { - width: control.background.width - height: control.background.height - visible: false - - source: Imagine.url + "delaybutton-mask" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - readonly property OpacityMask effect: OpacityMask { - parent: control.background - width: source.width - height: source.height - source: control.background.progress - - maskSource: ShaderEffectSource { - sourceItem: control.background.mask - sourceRect: Qt.rect(0, 0, control.background.effect.width, control.background.effect.height) - } - } - } -} diff --git a/src/quickcontrols2/imagine/Dial.qml b/src/quickcontrols2/imagine/Dial.qml deleted file mode 100644 index 224bff56..00000000 --- a/src/quickcontrols2/imagine/Dial.qml +++ /dev/null @@ -1,105 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.Dial { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - (handle ? handle.implicitWidth : 0) + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - (handle ? handle.implicitHeight : 0) + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - handle: Image { - x: background.x + background.width / 2 - width / 2 - y: background.y + background.height / 2 - height / 2 - - source: Imagine.url + "dial-handle" - ImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.pressed}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - - transform: [ - Translate { - y: -Math.min(control.background.width, control.background.height) * 0.4 + control.handle.height / 2 - }, - Rotation { - angle: control.angle - origin.x: handle.width / 2 - origin.y: handle.height / 2 - } - ] - } - - background: NinePatchImage { - x: control.width / 2 - width / 2 - y: control.height / 2 - height / 2 - width: Math.max(64, Math.min(control.width, control.height)) - height: width - fillMode: Image.PreserveAspectFit - - source: Imagine.url + "dial-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.pressed}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/Dialog.qml b/src/quickcontrols2/imagine/Dialog.qml deleted file mode 100644 index b788cc3c..00000000 --- a/src/quickcontrols2/imagine/Dialog.qml +++ /dev/null @@ -1,116 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.Dialog { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - background: NinePatchImage { - source: Imagine.url + "dialog-background" - NinePatchImageSelector on source { - states: [ - {"modal": control.modal}, - {"dim": control.dim} - ] - } - } - - header: Label { - text: control.title - visible: control.title - elide: Label.ElideRight - font.bold: true - padding: 12 - - background: NinePatchImage { - width: parent.width - height: parent.height - - source: Imagine.url + "dialog-title" - NinePatchImageSelector on source { - states: [ - {"modal": control.modal}, - {"dim": control.dim} - ] - } - } - } - - footer: DialogButtonBox { - visible: count > 0 - } - - T.Overlay.modal: NinePatchImage { - source: Imagine.url + "dialog-overlay" - NinePatchImageSelector on source { - states: [ - {"modal": true} - ] - } - } - - T.Overlay.modeless: NinePatchImage { - source: Imagine.url + "dialog-overlay" - NinePatchImageSelector on source { - states: [ - {"modal": false} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/DialogButtonBox.qml b/src/quickcontrols2/imagine/DialogButtonBox.qml deleted file mode 100644 index 1f3ccd0f..00000000 --- a/src/quickcontrols2/imagine/DialogButtonBox.qml +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.DialogButtonBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - (control.count === 1 ? contentWidth * 2 : contentWidth) + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - spacing: 6 - - delegate: Button { - width: control.count === 1 ? control.availableWidth / 2 : undefined - flat: true - } - - contentItem: ListView { - model: control.contentModel - spacing: control.spacing - orientation: ListView.Horizontal - boundsBehavior: Flickable.StopAtBounds - snapMode: ListView.SnapToItem - } - - background: NinePatchImage { - source: Imagine.url + "dialogbuttonbox-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/Drawer.qml b/src/quickcontrols2/imagine/Drawer.qml deleted file mode 100644 index 414516d3..00000000 --- a/src/quickcontrols2/imagine/Drawer.qml +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.Drawer { - id: control - - parent: T.Overlay.overlay - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - enter: Transition { SmoothedAnimation { velocity: 5 } } - exit: Transition { SmoothedAnimation { velocity: 5 } } - - background: NinePatchImage { - source: Imagine.url + "drawer-background" - NinePatchImageSelector on source { - states: [ - {"modal": control.modal}, - {"dim": control.dim}, - {"top": control.edge === Qt.TopEdge}, - {"left": control.edge === Qt.LeftEdge}, - {"right": control.edge === Qt.RightEdge}, - {"bottom": control.edge === Qt.BottomEdge} - ] - } - } - - T.Overlay.modal: NinePatchImage { - source: Imagine.url + "drawer-overlay" - NinePatchImageSelector on source { - states: [ - {"modal": true} - ] - } - } - - T.Overlay.modeless: NinePatchImage { - source: Imagine.url + "drawer-overlay" - NinePatchImageSelector on source { - states: [ - {"modal": false} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/Frame.qml b/src/quickcontrols2/imagine/Frame.qml deleted file mode 100644 index 7ba93dbc..00000000 --- a/src/quickcontrols2/imagine/Frame.qml +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.Frame { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - background: NinePatchImage { - source: Imagine.url + "frame-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/GroupBox.qml b/src/quickcontrols2/imagine/GroupBox.qml deleted file mode 100644 index b0a8645f..00000000 --- a/src/quickcontrols2/imagine/GroupBox.qml +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.GroupBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitLabelWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: (background ? background.topPadding : 0) + (implicitLabelWidth > 0 ? implicitLabelHeight + spacing : 0) - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - label: Label { - width: control.width - - topPadding: background.topPadding - leftPadding: background.leftPadding - rightPadding: background.rightPadding - bottomPadding: background.bottomPadding - - text: control.title - font: control.font - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - - color: control.palette.windowText - - background: NinePatchImage { - width: parent.width - height: parent.height - - source: Imagine.url + "groupbox-title" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored} - ] - } - } - } - - background: NinePatchImage { - x: -leftInset - y: control.topPadding - control.bottomPadding - topInset - width: control.width + leftInset + rightInset - height: control.height + topInset + bottomInset - control.topPadding + control.bottomPadding - - source: Imagine.url + "groupbox-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/HorizontalHeaderView.qml b/src/quickcontrols2/imagine/HorizontalHeaderView.qml deleted file mode 100644 index e5214593..00000000 --- a/src/quickcontrols2/imagine/HorizontalHeaderView.qml +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.HorizontalHeaderView { - id: control - - implicitWidth: syncView ? syncView.width : 0 - implicitHeight: contentHeight - - delegate: Rectangle { - // Qt6: add cellPadding (and font etc) as public API in headerview - readonly property real cellPadding: 8 - - implicitWidth: text.implicitWidth + (cellPadding * 2) - implicitHeight: Math.max(control.height, text.implicitHeight + (cellPadding * 2)) - color: "#f6f6f6" - border.color: "#e4e4e4" - - Text { - id: text - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] - : model[control.textRole]) - : modelData - width: parent.width - height: parent.height - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - color: "#ff26282a" - } - } -} diff --git a/src/quickcontrols2/imagine/ItemDelegate.qml b/src/quickcontrols2/imagine/ItemDelegate.qml deleted file mode 100644 index 25c9a223..00000000 --- a/src/quickcontrols2/imagine/ItemDelegate.qml +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.ItemDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 12 // ### - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.text - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.palette.text - } - - background: NinePatchImage { - source: Imagine.url + "itemdelegate-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/Label.qml b/src/quickcontrols2/imagine/Label.qml deleted file mode 100644 index 3654cd7d..00000000 --- a/src/quickcontrols2/imagine/Label.qml +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.Label { - id: control - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - color: control.palette.windowText - linkColor: control.palette.link - - background: NinePatchImage { - source: Imagine.url + "label-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/Menu.qml b/src/quickcontrols2/imagine/Menu.qml deleted file mode 100644 index 346c6490..00000000 --- a/src/quickcontrols2/imagine/Menu.qml +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl -import QtQuick.Window - -T.Menu { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topMargin: background ? background.topInset : 0 - leftMargin: background ? background.leftInset : 0 - rightMargin: background ? background.rightInset : 0 - bottomMargin: background ? background.bottomInset : 0 - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - delegate: MenuItem { } - - contentItem: ListView { - implicitHeight: contentHeight - model: control.contentModel - interactive: Window.window - ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height - : false - clip: true - currentIndex: control.currentIndex - - T.ScrollIndicator.vertical: ScrollIndicator { } - } - - background: NinePatchImage { - source: Imagine.url + "menu-background" - NinePatchImageSelector on source { - states: [ - {"modal": control.modal}, - {"dim": control.dim} - ] - } - } - - T.Overlay.modal: NinePatchImage { - source: Imagine.url + "menu-overlay" - NinePatchImageSelector on source { - states: [ - {"modal": true} - ] - } - } - - T.Overlay.modeless: NinePatchImage { - source: Imagine.url + "menu-overlay" - NinePatchImageSelector on source { - states: [ - {"modal": false} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/MenuItem.qml b/src/quickcontrols2/imagine/MenuItem.qml deleted file mode 100644 index 963b3bba..00000000 --- a/src/quickcontrols2/imagine/MenuItem.qml +++ /dev/null @@ -1,137 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.MenuItem { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 6 // ### - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.windowText - - contentItem: IconLabel { - readonly property real arrowPadding: control.subMenu && control.arrow ? control.arrow.width + control.spacing : 0 - readonly property real indicatorPadding: control.checkable && control.indicator ? control.indicator.width + control.spacing : 0 - leftPadding: !control.mirrored ? indicatorPadding : arrowPadding - rightPadding: control.mirrored ? indicatorPadding : arrowPadding - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.palette.windowText - } - - arrow: Image { - x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 - - visible: control.subMenu - source: Imagine.url + "menuitem-arrow" - ImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - indicator: Image { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - - visible: control.checkable - source: Imagine.url + "menuitem-indicator" - ImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - background: NinePatchImage { - source: Imagine.url + "menuitem-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/MenuSeparator.qml b/src/quickcontrols2/imagine/MenuSeparator.qml deleted file mode 100644 index 42d1812f..00000000 --- a/src/quickcontrols2/imagine/MenuSeparator.qml +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.MenuSeparator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - contentItem: NinePatchImage { - source: Imagine.url + "menuseparator-separator" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored} - ] - } - } - - background: NinePatchImage { - source: Imagine.url + "menuseparator-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/Page.qml b/src/quickcontrols2/imagine/Page.qml deleted file mode 100644 index 1b77112f..00000000 --- a/src/quickcontrols2/imagine/Page.qml +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.Page { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - background: NinePatchImage { - source: Imagine.url + "page-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/PageIndicator.qml b/src/quickcontrols2/imagine/PageIndicator.qml deleted file mode 100644 index ba9bb85c..00000000 --- a/src/quickcontrols2/imagine/PageIndicator.qml +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.PageIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - delegate: Image { - source: Imagine.url + "pageindicator-delegate" - ImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": pressed}, - {"current": index === control.currentIndex}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} // ### TODO: context property - ] - } - } - - contentItem: Row { - spacing: control.spacing - - Repeater { - model: control.count - delegate: control.delegate - } - } - - background: NinePatchImage { - source: Imagine.url + "pageindicator-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/Pane.qml b/src/quickcontrols2/imagine/Pane.qml deleted file mode 100644 index 4fdfaa18..00000000 --- a/src/quickcontrols2/imagine/Pane.qml +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.Pane { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - background: NinePatchImage { - source: Imagine.url + "pane-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/Popup.qml b/src/quickcontrols2/imagine/Popup.qml deleted file mode 100644 index bc7e544b..00000000 --- a/src/quickcontrols2/imagine/Popup.qml +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.Popup { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : undefined - leftPadding: background ? background.leftPadding : undefined - rightPadding: background ? background.rightPadding : undefined - bottomPadding: background ? background.bottomPadding : undefined - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - background: NinePatchImage { - source: Imagine.url + "popup-background" - NinePatchImageSelector on source { - states: [ - {"modal": control.modal}, - {"dim": control.dim} - ] - } - } - - T.Overlay.modal: NinePatchImage { - source: Imagine.url + "popup-overlay" - NinePatchImageSelector on source { - states: [ - {"modal": true} - ] - } - } - - T.Overlay.modeless: NinePatchImage { - source: Imagine.url + "popup-overlay" - NinePatchImageSelector on source { - states: [ - {"modal": false} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/ProgressBar.qml b/src/quickcontrols2/imagine/ProgressBar.qml deleted file mode 100644 index 0c2ed8d7..00000000 --- a/src/quickcontrols2/imagine/ProgressBar.qml +++ /dev/null @@ -1,141 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.ProgressBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - contentItem: Item { - implicitWidth: control.indeterminate ? animation.implicitWidth || progress.implicitWidth : progress.implicitWidth - implicitHeight: control.indeterminate ? animation.implicitHeight || progress.implicitHeight : progress.implicitHeight - scale: control.mirrored ? -1 : 1 - - readonly property bool hasMask: mask.status !== Image.Null - - readonly property NinePatchImage progress: NinePatchImage { - parent: control.contentItem - width: control.position * parent.width - height: parent.height - visible: !control.indeterminate && !control.contentItem.hasMask - - source: Imagine.url + "progressbar-progress" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"indeterminate": control.indeterminate}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - readonly property AnimatedImage animation: AnimatedImage { - parent: control.contentItem - width: parent.width - height: parent.height - playing: control.indeterminate - visible: control.indeterminate && !control.contentItem.hasMask - - source: Imagine.url + "progressbar-animation" - AnimatedImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - readonly property NinePatchImage mask: NinePatchImage { - width: control.availableWidth - height: control.availableHeight - visible: false - - source: Imagine.url + "progressbar-mask" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"indeterminate": control.indeterminate}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - readonly property OpacityMask effect: OpacityMask { - parent: control.contentItem - width: source.width - height: source.height - source: control.indeterminate ? control.contentItem.animation : control.contentItem.progress - - maskSource: ShaderEffectSource { - sourceItem: control.contentItem.mask - sourceRect: Qt.rect(0, 0, control.contentItem.effect.width, control.contentItem.effect.height) - } - } - } - - background: NinePatchImage { - source: Imagine.url + "progressbar-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"indeterminate": control.indeterminate}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/RadioButton.qml b/src/quickcontrols2/imagine/RadioButton.qml deleted file mode 100644 index e1a81321..00000000 --- a/src/quickcontrols2/imagine/RadioButton.qml +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.RadioButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 6 // ### - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - indicator: Image { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - - source: Imagine.url + "radiobutton-indicator" - ImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - color: control.palette.windowText - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - background: NinePatchImage { - source: Imagine.url + "radiobutton-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/RadioDelegate.qml b/src/quickcontrols2/imagine/RadioDelegate.qml deleted file mode 100644 index 0344160c..00000000 --- a/src/quickcontrols2/imagine/RadioDelegate.qml +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.RadioDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 12 // ### - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.text - - indicator: Image { - x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 - - source: Imagine.url + "radiodelegate-indicator" - ImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - contentItem: IconLabel { - leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.palette.text - } - - background: NinePatchImage { - source: Imagine.url + "radiodelegate-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/RangeSlider.qml b/src/quickcontrols2/imagine/RangeSlider.qml deleted file mode 100644 index 37f59a3a..00000000 --- a/src/quickcontrols2/imagine/RangeSlider.qml +++ /dev/null @@ -1,134 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.RangeSlider { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - first.implicitHandleWidth + leftPadding + rightPadding, - second.implicitHandleWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - first.implicitHandleHeight + topPadding + bottomPadding, - second.implicitHandleHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - first.handle: Image { - x: control.leftPadding + (control.horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) - - source: Imagine.url + "rangeslider-handle" - ImageSelector on source { - states: [ - {"first": true}, - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"pressed": control.first.pressed}, - {"focused": control.first.handle.activeFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.first.hovered} - ] - } - } - - second.handle: Image { - x: control.leftPadding + (control.horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) - - source: Imagine.url + "rangeslider-handle" - ImageSelector on source { - states: [ - {"second": true}, - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"pressed": control.second.pressed}, - {"focused": control.second.handle.activeFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.second.hovered} - ] - } - } - - background: NinePatchImage { - scale: control.horizontal && control.mirrored ? -1 : 1 - - source: Imagine.url + "rangeslider-background" - NinePatchImageSelector on source { - states: [ - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - - NinePatchImage { - x: control.horizontal ? control.first.handle.width / 2 + control.first.position * (parent.width - control.first.handle.width) : (parent.width - width) / 2 - y: control.horizontal ? (parent.height - height) / 2 : control.first.handle.height / 2 + control.second.visualPosition * (parent.height - control.first.handle.height) - width: control.horizontal ? control.second.position * (parent.width - control.first.handle.width) - control.first.position * (parent.width - control.first.handle.width) : parent.width - height: control.vertical ? control.second.position * (parent.height - control.first.handle.height) - control.first.position * (parent.height - control.first.handle.height): parent.height - - source: Imagine.url + "rangeslider-progress" - NinePatchImageSelector on source { - states: [ - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - } -} diff --git a/src/quickcontrols2/imagine/RoundButton.qml b/src/quickcontrols2/imagine/RoundButton.qml deleted file mode 100644 index 5c9580a3..00000000 --- a/src/quickcontrols2/imagine/RoundButton.qml +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.RoundButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - icon.width: 24 - icon.height: 24 - icon.color: control.enabled && control.flat && control.highlighted ? control.palette.highlight - : control.enabled && (control.down || control.checked || control.highlighted) && !control.flat - ? control.palette.brightText : control.flat ? control.palette.windowText : control.palette.buttonText - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.enabled && control.flat && control.highlighted ? control.palette.highlight - : control.enabled && (control.down || control.checked || control.highlighted) && !control.flat - ? control.palette.brightText : control.flat ? control.palette.windowText : control.palette.buttonText - } - - background: NinePatchImage { - // ### TODO: radius? - source: Imagine.url + "roundbutton-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"checkable": control.checkable}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"flat": control.flat}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/ScrollBar.qml b/src/quickcontrols2/imagine/ScrollBar.qml deleted file mode 100644 index f512a0b7..00000000 --- a/src/quickcontrols2/imagine/ScrollBar.qml +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.ScrollBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - visible: control.policy !== T.ScrollBar.AlwaysOff - minimumSize: orientation == Qt.Horizontal ? height / width : width / height - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - contentItem: NinePatchImage { - width: control.availableWidth - height: control.availableHeight - - source: Imagine.url + "scrollbar-handle" - NinePatchImageSelector on source { - states: [ - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"interactive": control.interactive}, - {"pressed": control.pressed}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - opacity: 0.0 - } - - background: NinePatchImage { - source: Imagine.url + "scrollbar-background" - NinePatchImageSelector on source { - states: [ - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"interactive": control.interactive}, - {"pressed": control.pressed}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - opacity: 0.0 - } - - states: [ - State { - name: "active" - when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0) - } - ] - - transitions: [ - Transition { - to: "active" - NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 1.0 } - }, - Transition { - from: "active" - SequentialAnimation { - PropertyAction{ targets: [control.contentItem, control.background]; property: "opacity"; value: 1.0 } - PauseAnimation { duration: 3000 } - NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 0.0 } - } - } - ] -} diff --git a/src/quickcontrols2/imagine/ScrollIndicator.qml b/src/quickcontrols2/imagine/ScrollIndicator.qml deleted file mode 100644 index 316b749c..00000000 --- a/src/quickcontrols2/imagine/ScrollIndicator.qml +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.ScrollIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - contentItem: NinePatchImage { - width: control.availableWidth - height: control.availableHeight - - source: Imagine.url + "scrollindicator-handle" - NinePatchImageSelector on source { - states: [ - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - opacity: 0.0 - } - - background: NinePatchImage { - source: Imagine.url + "scrollindicator-background" - NinePatchImageSelector on source { - states: [ - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - opacity: 0.0 - } - - states: [ - State { - name: "active" - when: (control.active && control.size < 1.0) - } - ] - - transitions: [ - Transition { - to: "active" - NumberAnimation { targets: [contentItem, control.background]; property: "opacity"; to: 1.0 } - }, - Transition { - from: "active" - SequentialAnimation { - PauseAnimation { duration: 5000 } - NumberAnimation { targets: [contentItem, control.background]; property: "opacity"; to: 0.0 } - } - } - ] -} diff --git a/src/quickcontrols2/imagine/ScrollView.qml b/src/quickcontrols2/imagine/ScrollView.qml deleted file mode 100644 index 80427e9d..00000000 --- a/src/quickcontrols2/imagine/ScrollView.qml +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.ScrollView { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - T.ScrollBar.vertical: ScrollBar { - parent: control - x: control.mirrored ? 0 : control.width - width - y: control.topPadding - height: control.availableHeight - active: control.T.ScrollBar.horizontal.active - } - - T.ScrollBar.horizontal: ScrollBar { - parent: control - x: control.leftPadding - y: control.height - height - width: control.availableWidth - active: control.T.ScrollBar.vertical.active - } - - background: NinePatchImage { - source: Imagine.path + "scrollview-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/Slider.qml b/src/quickcontrols2/imagine/Slider.qml deleted file mode 100644 index 597e222a..00000000 --- a/src/quickcontrols2/imagine/Slider.qml +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.Slider { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitHandleWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitHandleHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - handle: Image { - x: Math.round(control.leftPadding + (control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2)) - y: Math.round(control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height))) - - source: Imagine.url + "slider-handle" - ImageSelector on source { - states: [ - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"pressed": control.pressed}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - - background: NinePatchImage { - scale: control.horizontal && control.mirrored ? -1 : 1 - - source: Imagine.url + "slider-background" - NinePatchImageSelector on source { - states: [ - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - - NinePatchImage { - x: control.horizontal ? 0 : (parent.width - width) / 2 - y: control.horizontal - ? (parent.height - height) / 2 - : control.handle.height / 2 + control.visualPosition * (parent.height - control.handle.height) - width: control.horizontal - ? control.handle.width / 2 + control.position * (parent.width - control.handle.width) - : parent.width - height: control.vertical - ? control.handle.height / 2 + control.position * (parent.height - control.handle.height) - : parent.height - - source: Imagine.url + "slider-progress" - NinePatchImageSelector on source { - states: [ - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - } -} diff --git a/src/quickcontrols2/imagine/SpinBox.qml b/src/quickcontrols2/imagine/SpinBox.qml deleted file mode 100644 index 6d1bdaba..00000000 --- a/src/quickcontrols2/imagine/SpinBox.qml +++ /dev/null @@ -1,152 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.SpinBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentItem.implicitWidth + 2 * padding + - up.implicitIndicatorWidth + - down.implicitIndicatorWidth) - implicitHeight: Math.max(implicitContentHeight + topPadding + bottomPadding, - implicitBackgroundHeight, - up.implicitIndicatorHeight, - down.implicitIndicatorHeight) - - topPadding: background ? background.topPadding : 0 - leftPadding: (background ? background.leftPadding : 0) + (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) - rightPadding: (background ? background.rightPadding : 0) + (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - validator: IntValidator { - locale: control.locale.name - bottom: Math.min(control.from, control.to) - top: Math.max(control.from, control.to) - } - - contentItem: TextInput { - z: 2 - text: control.displayText - opacity: control.enabled ? 1 : 0.3 - - font: control.font - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - horizontalAlignment: Qt.AlignHCenter - verticalAlignment: Qt.AlignVCenter - - readOnly: !control.editable - validator: control.validator - inputMethodHints: control.inputMethodHints - - NinePatchImage { - z: -1 - width: control.width - height: control.height - visible: control.editable - - source: Imagine.url + "spinbox-editor" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"focused": control.activeFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } - } - - up.indicator: NinePatchImage { - x: control.mirrored ? 0 : parent.width - width - height: parent.height - - source: Imagine.url + "spinbox-indicator" - NinePatchImageSelector on source { - states: [ - {"up": true}, - {"disabled": !control.up.indicator.enabled}, - {"editable": control.editable}, - {"pressed": control.up.pressed}, - {"focused": control.activeFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.up.hovered} - ] - } - } - - down.indicator: NinePatchImage { - x: control.mirrored ? parent.width - width : 0 - height: parent.height - - source: Imagine.url + "spinbox-indicator" - NinePatchImageSelector on source { - states: [ - {"down": true}, - {"disabled": !control.down.indicator.enabled}, - {"editable": control.editable}, - {"pressed": control.down.pressed}, - {"focused": control.activeFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.down.hovered} - ] - } - } - - background: NinePatchImage { - source: Imagine.url + "spinbox-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"editable": control.editable}, - {"focused": control.activeFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/SplitView.qml b/src/quickcontrols2/imagine/SplitView.qml deleted file mode 100644 index 36e1b213..00000000 --- a/src/quickcontrols2/imagine/SplitView.qml +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.SplitView { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - handle: NinePatchImage { - source: Imagine.url + "splitview-handle" - NinePatchImageSelector on source { - states: [ - {"vertical": control.orientation === Qt.Vertical}, - {"horizontal":control.orientation === Qt.Horizontal}, - {"disabled": !control.enabled}, - {"pressed": T.SplitHandle.pressed}, - {"mirrored": control.mirrored}, - {"hovered": T.SplitHandle.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/StackView.qml b/src/quickcontrols2/imagine/StackView.qml deleted file mode 100644 index a9ddac66..00000000 --- a/src/quickcontrols2/imagine/StackView.qml +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.StackView { - id: control - - implicitWidth: implicitBackgroundWidth - implicitHeight: implicitBackgroundHeight - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - popEnter: Transition { - XAnimator { from: (control.mirrored ? -1 : 1) * -control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } - } - - popExit: Transition { - XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * control.width; duration: 400; easing.type: Easing.OutCubic } - } - - pushEnter: Transition { - XAnimator { from: (control.mirrored ? -1 : 1) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } - } - - pushExit: Transition { - XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * -control.width; duration: 400; easing.type: Easing.OutCubic } - } - - replaceEnter: Transition { - XAnimator { from: (control.mirrored ? -1 : 1) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } - } - - replaceExit: Transition { - XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * -control.width; duration: 400; easing.type: Easing.OutCubic } - } - - background: NinePatchImage { - source: Imagine.url + "stackview-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"mirrored": control.mirrored} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/SwipeDelegate.qml b/src/quickcontrols2/imagine/SwipeDelegate.qml deleted file mode 100644 index 5e13fc6b..00000000 --- a/src/quickcontrols2/imagine/SwipeDelegate.qml +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.SwipeDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 12 // ### - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.text - - swipe.transition: Transition { SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } } - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.palette.text - } - - background: NinePatchImage { - source: Imagine.url + "swipedelegate-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/SwipeView.qml b/src/quickcontrols2/imagine/SwipeView.qml deleted file mode 100644 index 12cafbb8..00000000 --- a/src/quickcontrols2/imagine/SwipeView.qml +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.SwipeView { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - contentItem: ListView { - model: control.contentModel - interactive: control.interactive - currentIndex: control.currentIndex - focus: control.focus - - spacing: control.spacing - orientation: control.orientation - snapMode: ListView.SnapOneItem - boundsBehavior: Flickable.StopAtBounds - - highlightRangeMode: ListView.StrictlyEnforceRange - preferredHighlightBegin: 0 - preferredHighlightEnd: 0 - highlightMoveDuration: 250 - } - - background: NinePatchImage { - source: Imagine.url + "swipeview-background" - NinePatchImageSelector on source { - states: [ - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"interactive": control.interactive}, - {"focused": control.contentItem.activeFocus}, - {"mirrored": control.mirrored} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/Switch.qml b/src/quickcontrols2/imagine/Switch.qml deleted file mode 100644 index a2f7a9a7..00000000 --- a/src/quickcontrols2/imagine/Switch.qml +++ /dev/null @@ -1,134 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.Switch { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 6 // ### - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - indicator: NinePatchImage { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - width: Math.max(implicitWidth, handle.leftPadding && handle.rightPadding ? handle.implicitWidth : 2 * handle.implicitWidth) - height: Math.max(implicitHeight, handle.implicitHeight) - - source: Imagine.url + "switch-indicator" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - - property NinePatchImage handle: NinePatchImage { - readonly property real minPos: parent.leftPadding - leftPadding - readonly property real maxPos: parent.width - width + rightPadding - parent.rightPadding - readonly property real dragPos: control.visualPosition * parent.width - (width / 2) - - parent: control.indicator - - x: Math.max(minPos, Math.min(maxPos, control.visualPosition * parent.width - (width / 2))) - y: (parent.height - height) / 2 - - source: Imagine.url + "switch-handle" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - - Behavior on x { - enabled: !control.down - SmoothedAnimation { velocity: 200 } - } - } - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - color: control.palette.windowText - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - background: NinePatchImage { - source: Imagine.url + "switch-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/SwitchDelegate.qml b/src/quickcontrols2/imagine/SwitchDelegate.qml deleted file mode 100644 index 6fde82c1..00000000 --- a/src/quickcontrols2/imagine/SwitchDelegate.qml +++ /dev/null @@ -1,146 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.SwitchDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 12 // ### - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.text - - indicator: NinePatchImage { - x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - width: Math.max(implicitWidth, handle.leftPadding && handle.rightPadding ? handle.implicitWidth : 2 * handle.implicitWidth) - height: Math.max(implicitHeight, handle.implicitHeight) - - source: Imagine.url + "switchdelegate-indicator" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - - property NinePatchImage handle: NinePatchImage { - readonly property real minPos: parent.leftPadding - leftPadding - readonly property real maxPos: parent.width - width + rightPadding - parent.rightPadding - readonly property real dragPos: control.visualPosition * parent.width - (width / 2) - - parent: control.indicator - - x: Math.max(minPos, Math.min(maxPos, control.visualPosition * parent.width - (width / 2))) - y: (parent.height - height) / 2 - - source: Imagine.url + "switchdelegate-handle" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - - Behavior on x { - enabled: !control.down - SmoothedAnimation { velocity: 200 } - } - } - } - - contentItem: IconLabel { - leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.palette.text - } - - background: NinePatchImage { - source: Imagine.url + "switchdelegate-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/TabBar.qml b/src/quickcontrols2/imagine/TabBar.qml deleted file mode 100644 index 26c30e92..00000000 --- a/src/quickcontrols2/imagine/TabBar.qml +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.TabBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - contentItem: ListView { - model: control.contentModel - currentIndex: control.currentIndex - - spacing: control.spacing - orientation: ListView.Horizontal - boundsBehavior: Flickable.StopAtBounds - flickableDirection: Flickable.AutoFlickIfNeeded - snapMode: ListView.SnapToItem - - highlightMoveDuration: 0 - highlightRangeMode: ListView.ApplyRange - preferredHighlightBegin: 48 - preferredHighlightEnd: width - 48 - } - - background: NinePatchImage { - source: Imagine.url + "tabbar-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"header": control.position === T.TabBar.Header }, - {"footer": control.position === T.TabBar.Footer }, - {"mirrored": control.mirrored} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/TabButton.qml b/src/quickcontrols2/imagine/TabButton.qml deleted file mode 100644 index 023da2cb..00000000 --- a/src/quickcontrols2/imagine/TabButton.qml +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.TabButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - spacing: 6 // ### - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.buttonText - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.palette.buttonText - } - - background: NinePatchImage { - source: Imagine.url + "tabbutton-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/TextArea.qml b/src/quickcontrols2/imagine/TextArea.qml deleted file mode 100644 index 556e746a..00000000 --- a/src/quickcontrols2/imagine/TextArea.qml +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.TextArea { - id: control - - implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, - implicitBackgroundWidth + leftInset + rightInset, - placeholder.implicitWidth + leftPadding + rightPadding) - implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, - implicitBackgroundHeight + topInset + bottomInset, - placeholder.implicitHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - verticalAlignment: Qt.AlignVCenter - placeholderTextColor: control.palette.placeholderText - - PlaceholderText { - id: placeholder - x: control.leftPadding - y: control.topPadding - width: control.width - (control.leftPadding + control.rightPadding) - height: control.height - (control.topPadding + control.bottomPadding) - - text: control.placeholderText - font: control.font - color: control.placeholderTextColor - verticalAlignment: control.verticalAlignment - visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) - elide: Text.ElideRight - renderType: control.renderType - } - - background: NinePatchImage { - source: Imagine.url + "textarea-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"focused": control.activeFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/TextField.qml b/src/quickcontrols2/imagine/TextField.qml deleted file mode 100644 index e641a749..00000000 --- a/src/quickcontrols2/imagine/TextField.qml +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.TextField { - id: control - - implicitWidth: implicitBackgroundWidth + leftInset + rightInset - || Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding, - placeholder.implicitHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - placeholderTextColor: control.palette.placeholderText - verticalAlignment: Qt.AlignVCenter - - PlaceholderText { - id: placeholder - x: control.leftPadding - y: control.topPadding - width: control.width - (control.leftPadding + control.rightPadding) - height: control.height - (control.topPadding + control.bottomPadding) - - text: control.placeholderText - font: control.font - color: control.placeholderTextColor - verticalAlignment: control.verticalAlignment - visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) - elide: Text.ElideRight - renderType: control.renderType - } - - background: NinePatchImage { - source: Imagine.url + "textfield-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"focused": control.activeFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/ToolBar.qml b/src/quickcontrols2/imagine/ToolBar.qml deleted file mode 100644 index 4a343e3c..00000000 --- a/src/quickcontrols2/imagine/ToolBar.qml +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.ToolBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - background: NinePatchImage { - source: Imagine.url + "toolbar-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"header": control.position === T.ToolBar.Header }, - {"footer": control.position === T.ToolBar.Footer }, - {"mirrored": control.mirrored} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/ToolButton.qml b/src/quickcontrols2/imagine/ToolButton.qml deleted file mode 100644 index 1ef570e0..00000000 --- a/src/quickcontrols2/imagine/ToolButton.qml +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.ToolButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - spacing: 6 // ### - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - icon.width: 24 - icon.height: 24 - icon.color: control.palette.buttonText - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.palette.buttonText - } - - background: NinePatchImage { - source: Imagine.url + "toolbutton-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"pressed": control.down}, - {"checked": control.checked}, - {"checkable": control.checkable}, - {"focused": control.visualFocus}, - {"highlighted": control.highlighted}, - {"flat": control.flat}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/ToolSeparator.qml b/src/quickcontrols2/imagine/ToolSeparator.qml deleted file mode 100644 index 962c14c7..00000000 --- a/src/quickcontrols2/imagine/ToolSeparator.qml +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.ToolSeparator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - contentItem: NinePatchImage { - source: Imagine.url + "toolseparator-separator" - NinePatchImageSelector on source { - states: [ - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"mirrored": control.mirrored} - ] - } - } - - background: NinePatchImage { - source: Imagine.url + "toolseparator-background" - NinePatchImageSelector on source { - states: [ - {"vertical": control.vertical}, - {"horizontal": control.horizontal}, - {"disabled": !control.enabled}, - {"mirrored": control.mirrored} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/ToolTip.qml b/src/quickcontrols2/imagine/ToolTip.qml deleted file mode 100644 index f5261400..00000000 --- a/src/quickcontrols2/imagine/ToolTip.qml +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.ToolTip { - id: control - - x: parent ? (parent.width - implicitWidth) / 2 : 0 - (background ? background.leftInset : 0) - y: -implicitHeight - (background ? background.topInset : 0) - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topMargin: background ? background.topInset : 0 - leftMargin: background ? background.leftInset : 0 - rightMargin: background ? background.rightInset : 0 - bottomMargin: background ? background.bottomInset : 0 - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent - - contentItem: Text { - text: control.text - font: control.font - wrapMode: Text.Wrap - color: control.palette.toolTipText - } - - background: NinePatchImage { - source: Imagine.url + "tooltip-background" - NinePatchImageSelector on source { - states: [ - // ### - ] - } - } -} diff --git a/src/quickcontrols2/imagine/Tumbler.qml b/src/quickcontrols2/imagine/Tumbler.qml deleted file mode 100644 index f380a000..00000000 --- a/src/quickcontrols2/imagine/Tumbler.qml +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl - -T.Tumbler { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - delegate: Text { - text: modelData - font: control.font - color: control.palette.text - opacity: (1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - - contentItem: TumblerView { - implicitWidth: 60 - implicitHeight: 200 - model: control.model - delegate: control.delegate - path: Path { - startX: control.contentItem.width / 2 - startY: -control.contentItem.delegateHeight / 2 - PathLine { - x: control.contentItem.width / 2 - y: (control.visibleItemCount + 1) * control.contentItem.delegateHeight - control.contentItem.delegateHeight / 2 - } - } - - property real delegateHeight: control.availableHeight / control.visibleItemCount - } - - background: NinePatchImage { - source: Imagine.url + "tumbler-background" - NinePatchImageSelector on source { - states: [ - {"disabled": !control.enabled}, - {"focused": control.visualFocus}, - {"mirrored": control.mirrored}, - {"hovered": control.hovered} - ] - } - } -} diff --git a/src/quickcontrols2/imagine/VerticalHeaderView.qml b/src/quickcontrols2/imagine/VerticalHeaderView.qml deleted file mode 100644 index 7c057e01..00000000 --- a/src/quickcontrols2/imagine/VerticalHeaderView.qml +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T - -T.VerticalHeaderView { - id: control - - implicitWidth: contentWidth - implicitHeight: syncView ? syncView.height : 0 - - delegate: Rectangle { - // Qt6: add cellPadding (and font etc) as public API in headerview - readonly property real cellPadding: 8 - - implicitWidth: Math.max(control.width, text.implicitWidth + (cellPadding * 2)) - implicitHeight: text.implicitHeight + (cellPadding * 2) - color: "#f6f6f6" - border.color: "#e4e4e4" - - Text { - id: text - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] - : model[control.textRole]) - : modelData - width: parent.width - height: parent.height - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - color: "#ff26282a" - } - } -} diff --git a/src/quickcontrols2/imagine/design/9-patch-export.sketchplugin/Contents/Sketch/9-patch-export.js b/src/quickcontrols2/imagine/design/9-patch-export.sketchplugin/Contents/Sketch/9-patch-export.js deleted file mode 100644 index a7f9a459..00000000 --- a/src/quickcontrols2/imagine/design/9-patch-export.sketchplugin/Contents/Sketch/9-patch-export.js +++ /dev/null @@ -1,24 +0,0 @@ -// 9-patch export -// -// This plugin crops upscaled 9-patch PNG assets when exported from Sketch, -// to ensure that 9-patch borders remain 1px wide when upscaled. -// -function onExportSlices(context) { - var exports = context.actionContext.exports; - for (var i = 0; i < exports.count(); ++i) { - var name = exports[i].request.name(); - var scale = exports[i].request.scale(); - if (scale > 1 && name.endsWith(".9")) - cropAsset(exports[i].path, scale - 1); - } -} - -function cropAsset(path, inset) { - var url = NSURL.fileURLWithPath(path); - var img = CIImage.imageWithContentsOfURL(url); - var rect = NSInsetRect(img.extent(), inset, inset); - var cropped = img.imageByCroppingToRect(rect); - var rep = NSBitmapImageRep.alloc().initWithCIImage(cropped); - var data = rep.PNGRepresentationWithInterlaced(false); - data.writeToFile(path); -} diff --git a/src/quickcontrols2/imagine/design/9-patch-export.sketchplugin/Contents/Sketch/manifest.json b/src/quickcontrols2/imagine/design/9-patch-export.sketchplugin/Contents/Sketch/manifest.json deleted file mode 100644 index 40807aa3..00000000 --- a/src/quickcontrols2/imagine/design/9-patch-export.sketchplugin/Contents/Sketch/manifest.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name" : "9-patch export", - "description" : "Crops upscaled 9-patch PNG assets when exported from Sketch.", - "version" : "0.1", - "identifier" : "org.qt-project.sketch.9-patch-export", - "author" : "The Qt Project", - "commands" : [ - { - "name" : "9-patch export", - "identifier" : "9-patch-export", - "script" : "9-patch-export.js", - "handlers" : { - "actions" : { - "ExportSlices": "onExportSlices", - }, - }, - }, - ], -} diff --git a/src/quickcontrols2/imagine/design/imagine.sketch b/src/quickcontrols2/imagine/design/imagine.sketch Binary files differdeleted file mode 100644 index f3535b37..00000000 --- a/src/quickcontrols2/imagine/design/imagine.sketch +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/applicationwindow-background.png b/src/quickcontrols2/imagine/images/applicationwindow-background.png Binary files differdeleted file mode 100644 index 2d8d70f2..00000000 --- a/src/quickcontrols2/imagine/images/applicationwindow-background.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 18fbaa4c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 241232b1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8eb1b1ec..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/applicationwindow-overlay-modal.png b/src/quickcontrols2/imagine/images/applicationwindow-overlay-modal.png Binary files differdeleted file mode 100644 index d4a43d1c..00000000 --- a/src/quickcontrols2/imagine/images/applicationwindow-overlay-modal.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c9a8f412..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4a1084a9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b92e600d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/applicationwindow-overlay.png b/src/quickcontrols2/imagine/images/applicationwindow-overlay.png Binary files differdeleted file mode 100644 index b7da23c0..00000000 --- a/src/quickcontrols2/imagine/images/applicationwindow-overlay.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 23828d5a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d9d53828..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a76c1a3a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/busyindicator-animation.webp b/src/quickcontrols2/imagine/images/busyindicator-animation.webp Binary files differdeleted file mode 100644 index ebf04c4a..00000000 --- a/src/quickcontrols2/imagine/images/busyindicator-animation.webp +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 43805a0b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b700b81f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bfaa8df9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-checked-disabled.9.png b/src/quickcontrols2/imagine/images/button-background-checked-disabled.9.png Binary files differdeleted file mode 100644 index 8196289c..00000000 --- a/src/quickcontrols2/imagine/images/button-background-checked-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 76cd4490..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bd6259a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e081520..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-checked-focused.9.png b/src/quickcontrols2/imagine/images/button-background-checked-focused.9.png Binary files differdeleted file mode 100644 index e3d14e99..00000000 --- a/src/quickcontrols2/imagine/images/button-background-checked-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ebc74b4a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 75834723..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9b570f4d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-checked-hovered.9.png b/src/quickcontrols2/imagine/images/button-background-checked-hovered.9.png Binary files differdeleted file mode 100644 index e3d14e99..00000000 --- a/src/quickcontrols2/imagine/images/button-background-checked-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ebc74b4a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 75834723..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9b570f4d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-checked.9.png b/src/quickcontrols2/imagine/images/button-background-checked.9.png Binary files differdeleted file mode 100644 index d0942509..00000000 --- a/src/quickcontrols2/imagine/images/button-background-checked.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c38bcd02..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 80889bf8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 05de8377..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-disabled.9.png b/src/quickcontrols2/imagine/images/button-background-disabled.9.png Binary files differdeleted file mode 100644 index 8196289c..00000000 --- a/src/quickcontrols2/imagine/images/button-background-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 76cd4490..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bd6259a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e081520..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-flat-checked-pressed.9.png b/src/quickcontrols2/imagine/images/button-background-flat-checked-pressed.9.png Binary files differdeleted file mode 100644 index 8196289c..00000000 --- a/src/quickcontrols2/imagine/images/button-background-flat-checked-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 76cd4490..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bd6259a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e081520..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-flat-checked.9.png b/src/quickcontrols2/imagine/images/button-background-flat-checked.9.png Binary files differdeleted file mode 100644 index 8196289c..00000000 --- a/src/quickcontrols2/imagine/images/button-background-flat-checked.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 76cd4490..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bd6259a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e081520..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-flat-disabled.9.png b/src/quickcontrols2/imagine/images/button-background-flat-disabled.9.png Binary files differdeleted file mode 100644 index 59907409..00000000 --- a/src/quickcontrols2/imagine/images/button-background-flat-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d66acd9c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 89b8c353..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d3a675cf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-flat-highlighted-checked.9.png b/src/quickcontrols2/imagine/images/button-background-flat-highlighted-checked.9.png Binary files differdeleted file mode 100644 index 8196289c..00000000 --- a/src/quickcontrols2/imagine/images/button-background-flat-highlighted-checked.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 76cd4490..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bd6259a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e081520..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-flat-highlighted-pressed.9.png b/src/quickcontrols2/imagine/images/button-background-flat-highlighted-pressed.9.png Binary files differdeleted file mode 100644 index 8196289c..00000000 --- a/src/quickcontrols2/imagine/images/button-background-flat-highlighted-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 76cd4490..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bd6259a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e081520..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-flat-highlighted.9.png b/src/quickcontrols2/imagine/images/button-background-flat-highlighted.9.png Binary files differdeleted file mode 100644 index 59907409..00000000 --- a/src/quickcontrols2/imagine/images/button-background-flat-highlighted.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d66acd9c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 89b8c353..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d3a675cf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-flat-hovered.9.png b/src/quickcontrols2/imagine/images/button-background-flat-hovered.9.png Binary files differdeleted file mode 100644 index 8196289c..00000000 --- a/src/quickcontrols2/imagine/images/button-background-flat-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 76cd4490..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bd6259a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e081520..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-flat-pressed.9.png b/src/quickcontrols2/imagine/images/button-background-flat-pressed.9.png Binary files differdeleted file mode 100644 index 8196289c..00000000 --- a/src/quickcontrols2/imagine/images/button-background-flat-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 76cd4490..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bd6259a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e081520..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-flat.9.png b/src/quickcontrols2/imagine/images/button-background-flat.9.png Binary files differdeleted file mode 100644 index 59907409..00000000 --- a/src/quickcontrols2/imagine/images/button-background-flat.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d66acd9c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 89b8c353..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d3a675cf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-focused.9.png b/src/quickcontrols2/imagine/images/button-background-focused.9.png Binary files differdeleted file mode 100644 index 42e40e60..00000000 --- a/src/quickcontrols2/imagine/images/button-background-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 90dc70bf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2ed2340c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e1428e37..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-highlighted-checked.9.png b/src/quickcontrols2/imagine/images/button-background-highlighted-checked.9.png Binary files differdeleted file mode 100644 index 7a2a4011..00000000 --- a/src/quickcontrols2/imagine/images/button-background-highlighted-checked.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 05b2f214..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c22e1f3..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c5617f0e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-highlighted-disabled.9.png b/src/quickcontrols2/imagine/images/button-background-highlighted-disabled.9.png Binary files differdeleted file mode 100644 index 8196289c..00000000 --- a/src/quickcontrols2/imagine/images/button-background-highlighted-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 76cd4490..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bd6259a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e081520..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-highlighted-focused.9.png b/src/quickcontrols2/imagine/images/button-background-highlighted-focused.9.png Binary files differdeleted file mode 100644 index 3ea580e0..00000000 --- a/src/quickcontrols2/imagine/images/button-background-highlighted-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index effcce1f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 502ac689..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3243231e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-highlighted-hovered.9.png b/src/quickcontrols2/imagine/images/button-background-highlighted-hovered.9.png Binary files differdeleted file mode 100644 index 3ea580e0..00000000 --- a/src/quickcontrols2/imagine/images/button-background-highlighted-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index effcce1f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 502ac689..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3243231e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-highlighted-pressed.9.png b/src/quickcontrols2/imagine/images/button-background-highlighted-pressed.9.png Binary files differdeleted file mode 100644 index 7a2a4011..00000000 --- a/src/quickcontrols2/imagine/images/button-background-highlighted-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 05b2f214..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c22e1f3..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c5617f0e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-highlighted.9.png b/src/quickcontrols2/imagine/images/button-background-highlighted.9.png Binary files differdeleted file mode 100644 index 7761595f..00000000 --- a/src/quickcontrols2/imagine/images/button-background-highlighted.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bb42c45..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c23c021..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 365cd048..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-hovered.9.png b/src/quickcontrols2/imagine/images/button-background-hovered.9.png Binary files differdeleted file mode 100644 index 42e40e60..00000000 --- a/src/quickcontrols2/imagine/images/button-background-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 90dc70bf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2ed2340c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e1428e37..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background-pressed.9.png b/src/quickcontrols2/imagine/images/button-background-pressed.9.png Binary files differdeleted file mode 100644 index d0942509..00000000 --- a/src/quickcontrols2/imagine/images/button-background-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c38bcd02..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 80889bf8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 05de8377..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/button-background.9.png b/src/quickcontrols2/imagine/images/button-background.9.png Binary files differdeleted file mode 100644 index 6f1daed8..00000000 --- a/src/quickcontrols2/imagine/images/button-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4a2507f5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4f13b4ef..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0e1ab452..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator-checked-focused.png b/src/quickcontrols2/imagine/images/checkbox-indicator-checked-focused.png Binary files differdeleted file mode 100644 index d55a5204..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator-checked-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7289f639..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 02d6cdf2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3f074dbf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator-checked-hovered.png b/src/quickcontrols2/imagine/images/checkbox-indicator-checked-hovered.png Binary files differdeleted file mode 100644 index d55a5204..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator-checked-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7289f639..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 02d6cdf2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3f074dbf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator-checked-pressed.png b/src/quickcontrols2/imagine/images/checkbox-indicator-checked-pressed.png Binary files differdeleted file mode 100644 index 9c03d096..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator-checked-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 680ba3ef..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 974205de..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2c8b6aab..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator-checked.png b/src/quickcontrols2/imagine/images/checkbox-indicator-checked.png Binary files differdeleted file mode 100644 index 598b163a..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator-checked.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 06382264..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 12a32dcd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4bc6701d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator-disabled.png b/src/quickcontrols2/imagine/images/checkbox-indicator-disabled.png Binary files differdeleted file mode 100644 index 0a499f8f..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index db652c5a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 482f045d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a386e272..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator-focused.png b/src/quickcontrols2/imagine/images/checkbox-indicator-focused.png Binary files differdeleted file mode 100644 index c5eb8527..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8496fb1a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 30849fd0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 55ce7c0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator-hovered.png b/src/quickcontrols2/imagine/images/checkbox-indicator-hovered.png Binary files differdeleted file mode 100644 index c5eb8527..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8496fb1a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 30849fd0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 55ce7c0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator-partially-checked-focused.png b/src/quickcontrols2/imagine/images/checkbox-indicator-partially-checked-focused.png Binary files differdeleted file mode 100644 index cd07b1cc..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator-partially-checked-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index acae6aff..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1e8d2c45..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 577017c4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator-partially-checked-hovered.png b/src/quickcontrols2/imagine/images/checkbox-indicator-partially-checked-hovered.png Binary files differdeleted file mode 100644 index cd07b1cc..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator-partially-checked-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index acae6aff..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1e8d2c45..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 577017c4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator-partially-checked-pressed.png b/src/quickcontrols2/imagine/images/checkbox-indicator-partially-checked-pressed.png Binary files differdeleted file mode 100644 index 928706ab..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator-partially-checked-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3645d78a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ade63bd0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cd73617e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator-partially-checked.png b/src/quickcontrols2/imagine/images/checkbox-indicator-partially-checked.png Binary files differdeleted file mode 100644 index e404a4e3..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator-partially-checked.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2d0f5176..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4b9777b7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e0f67e98..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator-pressed.png b/src/quickcontrols2/imagine/images/checkbox-indicator-pressed.png Binary files differdeleted file mode 100644 index a1baaf90..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 81a7c364..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9325de38..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c93b8fb8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkbox-indicator.png b/src/quickcontrols2/imagine/images/checkbox-indicator.png Binary files differdeleted file mode 100644 index 2b3e2323..00000000 --- a/src/quickcontrols2/imagine/images/checkbox-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ce8985db..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2968731d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ea8da284..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-background-disabled.9.png b/src/quickcontrols2/imagine/images/checkdelegate-background-disabled.9.png Binary files differdeleted file mode 100644 index 23570729..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-background-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c7abb65c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 46b84d7d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f4dfd338..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-background-focused.9.png b/src/quickcontrols2/imagine/images/checkdelegate-background-focused.9.png Binary files differdeleted file mode 100644 index 6ae574d5..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-background-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b61562c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e46c0bf1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 010444e8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-background-highlighted.9.png b/src/quickcontrols2/imagine/images/checkdelegate-background-highlighted.9.png Binary files differdeleted file mode 100644 index e79d8e1d..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-background-highlighted.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ea68d35f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6d610415..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 590cca96..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-background-hovered.9.png b/src/quickcontrols2/imagine/images/checkdelegate-background-hovered.9.png Binary files differdeleted file mode 100644 index b8749743..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-background-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5a136a0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f47a366b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ecb680f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-background-pressed.9.png b/src/quickcontrols2/imagine/images/checkdelegate-background-pressed.9.png Binary files differdeleted file mode 100644 index 6ae574d5..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-background-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b61562c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e46c0bf1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 010444e8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-background.9.png b/src/quickcontrols2/imagine/images/checkdelegate-background.9.png Binary files differdeleted file mode 100644 index b8749743..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5a136a0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f47a366b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ecb680f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator-checked-focused.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator-checked-focused.png Binary files differdeleted file mode 100644 index d55a5204..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator-checked-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7289f639..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 02d6cdf2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3f074dbf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator-checked-hovered.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator-checked-hovered.png Binary files differdeleted file mode 100644 index d55a5204..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator-checked-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7289f639..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 02d6cdf2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3f074dbf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator-checked-pressed.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator-checked-pressed.png Binary files differdeleted file mode 100644 index 9c03d096..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator-checked-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 680ba3ef..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 974205de..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2c8b6aab..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator-checked.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator-checked.png Binary files differdeleted file mode 100644 index 598b163a..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator-checked.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 06382264..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 12a32dcd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4bc6701d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator-disabled.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator-disabled.png Binary files differdeleted file mode 100644 index 0a499f8f..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index db652c5a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 482f045d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a386e272..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator-focused.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator-focused.png Binary files differdeleted file mode 100644 index c5eb8527..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8496fb1a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 30849fd0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 55ce7c0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator-hovered.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator-hovered.png Binary files differdeleted file mode 100644 index c5eb8527..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8496fb1a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 30849fd0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 55ce7c0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator-partially-checked-focused.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator-partially-checked-focused.png Binary files differdeleted file mode 100644 index cd07b1cc..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator-partially-checked-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index acae6aff..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1e8d2c45..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 577017c4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator-partially-checked-hovered.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator-partially-checked-hovered.png Binary files differdeleted file mode 100644 index cd07b1cc..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator-partially-checked-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index acae6aff..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1e8d2c45..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 577017c4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator-partially-checked-pressed.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator-partially-checked-pressed.png Binary files differdeleted file mode 100644 index 928706ab..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator-partially-checked-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3645d78a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ade63bd0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cd73617e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator-partially-checked.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator-partially-checked.png Binary files differdeleted file mode 100644 index e404a4e3..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator-partially-checked.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2d0f5176..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4b9777b7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e0f67e98..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator-pressed.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator-pressed.png Binary files differdeleted file mode 100644 index a1baaf90..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 81a7c364..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9325de38..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c93b8fb8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/checkdelegate-indicator.png b/src/quickcontrols2/imagine/images/checkdelegate-indicator.png Binary files differdeleted file mode 100644 index 2b3e2323..00000000 --- a/src/quickcontrols2/imagine/images/checkdelegate-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ce8985db..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2968731d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ea8da284..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-background-disabled.9.png b/src/quickcontrols2/imagine/images/combobox-background-disabled.9.png Binary files differdeleted file mode 100644 index a91b4b55..00000000 --- a/src/quickcontrols2/imagine/images/combobox-background-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 570b990c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b0f9b9c4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6e810f75..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-background-editable-disabled.9.png b/src/quickcontrols2/imagine/images/combobox-background-editable-disabled.9.png Binary files differdeleted file mode 100644 index e192afb8..00000000 --- a/src/quickcontrols2/imagine/images/combobox-background-editable-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 58a0f6e9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cd6f226b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ff9103b0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-background-editable-focused.9.png b/src/quickcontrols2/imagine/images/combobox-background-editable-focused.9.png Binary files differdeleted file mode 100644 index a0f079bc..00000000 --- a/src/quickcontrols2/imagine/images/combobox-background-editable-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 83cb503f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4cf96edf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5823de80..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-background-editable.9.png b/src/quickcontrols2/imagine/images/combobox-background-editable.9.png Binary files differdeleted file mode 100644 index 8edac132..00000000 --- a/src/quickcontrols2/imagine/images/combobox-background-editable.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 15e465f1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 910b48d2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ff0f6411..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-background-focused.9.png b/src/quickcontrols2/imagine/images/combobox-background-focused.9.png Binary files differdeleted file mode 100644 index a3865fa6..00000000 --- a/src/quickcontrols2/imagine/images/combobox-background-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index fc49f4b8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b432b4ec..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 15862059..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-background-hovered.9.png b/src/quickcontrols2/imagine/images/combobox-background-hovered.9.png Binary files differdeleted file mode 100644 index a3865fa6..00000000 --- a/src/quickcontrols2/imagine/images/combobox-background-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index fc49f4b8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b432b4ec..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 15862059..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-background-open.9.png b/src/quickcontrols2/imagine/images/combobox-background-open.9.png Binary files differdeleted file mode 100644 index 1be84403..00000000 --- a/src/quickcontrols2/imagine/images/combobox-background-open.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 95f7cd6d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2f71271c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 17f6f2ce..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-background-pressed.9.png b/src/quickcontrols2/imagine/images/combobox-background-pressed.9.png Binary files differdeleted file mode 100644 index 1be84403..00000000 --- a/src/quickcontrols2/imagine/images/combobox-background-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 95f7cd6d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2f71271c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 17f6f2ce..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-background.9.png b/src/quickcontrols2/imagine/images/combobox-background.9.png Binary files differdeleted file mode 100644 index 4ed8ddc3..00000000 --- a/src/quickcontrols2/imagine/images/combobox-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1d7a8894..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 313630f8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index be63d56e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-indicator-disabled.png b/src/quickcontrols2/imagine/images/combobox-indicator-disabled.png Binary files differdeleted file mode 100644 index 761537f9..00000000 --- a/src/quickcontrols2/imagine/images/combobox-indicator-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 322b7b68..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 73feec34..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 910c4d3d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-indicator-editable-disabled.png b/src/quickcontrols2/imagine/images/combobox-indicator-editable-disabled.png Binary files differdeleted file mode 100644 index 4399b6aa..00000000 --- a/src/quickcontrols2/imagine/images/combobox-indicator-editable-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e45a2ad1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 23f74b10..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index db495899..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-indicator-editable-mirrored-disabled.png b/src/quickcontrols2/imagine/images/combobox-indicator-editable-mirrored-disabled.png Binary files differdeleted file mode 100644 index 2e954ae9..00000000 --- a/src/quickcontrols2/imagine/images/combobox-indicator-editable-mirrored-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 252a5e37..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6d939a93..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 00a21ebd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-indicator-editable-mirrored.png b/src/quickcontrols2/imagine/images/combobox-indicator-editable-mirrored.png Binary files differdeleted file mode 100644 index ad529912..00000000 --- a/src/quickcontrols2/imagine/images/combobox-indicator-editable-mirrored.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 70b995c1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9b865377..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b4f7ae25..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-indicator-editable.png b/src/quickcontrols2/imagine/images/combobox-indicator-editable.png Binary files differdeleted file mode 100644 index e053109f..00000000 --- a/src/quickcontrols2/imagine/images/combobox-indicator-editable.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b8dfd6fe..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2cdee7a8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2569b4ae..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-indicator.png b/src/quickcontrols2/imagine/images/combobox-indicator.png Binary files differdeleted file mode 100644 index cc32f2a2..00000000 --- a/src/quickcontrols2/imagine/images/combobox-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 57ea3f30..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 384f8152..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f326c03b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/combobox-popup.9.png b/src/quickcontrols2/imagine/images/combobox-popup.9.png Binary files differdeleted file mode 100644 index 7344cdf6..00000000 --- a/src/quickcontrols2/imagine/images/combobox-popup.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 00c88c7d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 82d911ed..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 98db30af..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/delaybutton-background-checked-focused.9.png b/src/quickcontrols2/imagine/images/delaybutton-background-checked-focused.9.png Binary files differdeleted file mode 100644 index e3d14e99..00000000 --- a/src/quickcontrols2/imagine/images/delaybutton-background-checked-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ebc74b4a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 75834723..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9b570f4d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/delaybutton-background-checked-hovered.9.png b/src/quickcontrols2/imagine/images/delaybutton-background-checked-hovered.9.png Binary files differdeleted file mode 100644 index e3d14e99..00000000 --- a/src/quickcontrols2/imagine/images/delaybutton-background-checked-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ebc74b4a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 75834723..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9b570f4d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/delaybutton-background-checked.9.png b/src/quickcontrols2/imagine/images/delaybutton-background-checked.9.png Binary files differdeleted file mode 100644 index d0942509..00000000 --- a/src/quickcontrols2/imagine/images/delaybutton-background-checked.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c38bcd02..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 80889bf8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 05de8377..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/delaybutton-background-disabled-checked.9.png b/src/quickcontrols2/imagine/images/delaybutton-background-disabled-checked.9.png Binary files differdeleted file mode 100644 index 8196289c..00000000 --- a/src/quickcontrols2/imagine/images/delaybutton-background-disabled-checked.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 76cd4490..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bd6259a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e081520..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/delaybutton-background-disabled.9.png b/src/quickcontrols2/imagine/images/delaybutton-background-disabled.9.png Binary files differdeleted file mode 100644 index 8196289c..00000000 --- a/src/quickcontrols2/imagine/images/delaybutton-background-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 76cd4490..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bd6259a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e081520..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/delaybutton-background-focused.9.png b/src/quickcontrols2/imagine/images/delaybutton-background-focused.9.png Binary files differdeleted file mode 100644 index 294ff8bd..00000000 --- a/src/quickcontrols2/imagine/images/delaybutton-background-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 48e2bbcb..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0981eb2a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4ae48bfa..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/delaybutton-background-hovered.9.png b/src/quickcontrols2/imagine/images/delaybutton-background-hovered.9.png Binary files differdeleted file mode 100644 index 42e40e60..00000000 --- a/src/quickcontrols2/imagine/images/delaybutton-background-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 90dc70bf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2ed2340c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e1428e37..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/delaybutton-background-pressed.9.png b/src/quickcontrols2/imagine/images/delaybutton-background-pressed.9.png Binary files differdeleted file mode 100644 index d0942509..00000000 --- a/src/quickcontrols2/imagine/images/delaybutton-background-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c38bcd02..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 80889bf8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 05de8377..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/delaybutton-background.9.png b/src/quickcontrols2/imagine/images/delaybutton-background.9.png Binary files differdeleted file mode 100644 index 6f1daed8..00000000 --- a/src/quickcontrols2/imagine/images/delaybutton-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4a2507f5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4f13b4ef..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0e1ab452..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/delaybutton-mask.9.png b/src/quickcontrols2/imagine/images/delaybutton-mask.9.png Binary files differdeleted file mode 100644 index 76d3967d..00000000 --- a/src/quickcontrols2/imagine/images/delaybutton-mask.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b8db224c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3bff2c15..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 045c7fac..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/delaybutton-progress-disabled.9.png b/src/quickcontrols2/imagine/images/delaybutton-progress-disabled.9.png Binary files differdeleted file mode 100644 index 5c209c9c..00000000 --- a/src/quickcontrols2/imagine/images/delaybutton-progress-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0ef11a8d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f3f8e547..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b24f50e6..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/delaybutton-progress.9.png b/src/quickcontrols2/imagine/images/delaybutton-progress.9.png Binary files differdeleted file mode 100644 index 4dd3aec5..00000000 --- a/src/quickcontrols2/imagine/images/delaybutton-progress.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cd422076..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 08610300..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 24cc19ba..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dial-background-disabled.png b/src/quickcontrols2/imagine/images/dial-background-disabled.png Binary files differdeleted file mode 100644 index d7c4f847..00000000 --- a/src/quickcontrols2/imagine/images/dial-background-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 56b085df..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4f1e17e7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4aacbf82..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dial-background-focused.png b/src/quickcontrols2/imagine/images/dial-background-focused.png Binary files differdeleted file mode 100644 index fc53d5c4..00000000 --- a/src/quickcontrols2/imagine/images/dial-background-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b547a17..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7b8a2582..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 406f46b5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dial-background.png b/src/quickcontrols2/imagine/images/dial-background.png Binary files differdeleted file mode 100644 index 58aa09ed..00000000 --- a/src/quickcontrols2/imagine/images/dial-background.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 87cd9a0f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 103fb461..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c290f84a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dial-handle-disabled.png b/src/quickcontrols2/imagine/images/dial-handle-disabled.png Binary files differdeleted file mode 100644 index a93fd0f2..00000000 --- a/src/quickcontrols2/imagine/images/dial-handle-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2cd536be..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 56b9fe06..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5098d688..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dial-handle-focused-hovered.png b/src/quickcontrols2/imagine/images/dial-handle-focused-hovered.png Binary files differdeleted file mode 100644 index 2a143f2a..00000000 --- a/src/quickcontrols2/imagine/images/dial-handle-focused-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 24dfee82..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 16e128d5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b4523acb..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dial-handle-focused-pressed.png b/src/quickcontrols2/imagine/images/dial-handle-focused-pressed.png Binary files differdeleted file mode 100644 index d43971ff..00000000 --- a/src/quickcontrols2/imagine/images/dial-handle-focused-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index caa2376e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c2913883..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 50ff1c8b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dial-handle-focused.png b/src/quickcontrols2/imagine/images/dial-handle-focused.png Binary files differdeleted file mode 100644 index d2733474..00000000 --- a/src/quickcontrols2/imagine/images/dial-handle-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c7bc8f74..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c0dcd945..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b9d2234c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dial-handle-hovered.png b/src/quickcontrols2/imagine/images/dial-handle-hovered.png Binary files differdeleted file mode 100644 index f5d0ac6f..00000000 --- a/src/quickcontrols2/imagine/images/dial-handle-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index da23baaa..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7287a419..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9f6982dd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dial-handle-pressed.png b/src/quickcontrols2/imagine/images/dial-handle-pressed.png Binary files differdeleted file mode 100644 index 3b98e124..00000000 --- a/src/quickcontrols2/imagine/images/dial-handle-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 454e7364..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 794516da..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 211b1135..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dial-handle.png b/src/quickcontrols2/imagine/images/dial-handle.png Binary files differdeleted file mode 100644 index 652b82d3..00000000 --- a/src/quickcontrols2/imagine/images/dial-handle.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3c86a59b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cbfcdbcd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2872e006..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dialog-background.9.png b/src/quickcontrols2/imagine/images/dialog-background.9.png Binary files differdeleted file mode 100644 index c842b5ff..00000000 --- a/src/quickcontrols2/imagine/images/dialog-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ca23df1f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 46cd4065..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3da74119..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dialog-overlay-modal.png b/src/quickcontrols2/imagine/images/dialog-overlay-modal.png Binary files differdeleted file mode 100644 index d4a43d1c..00000000 --- a/src/quickcontrols2/imagine/images/dialog-overlay-modal.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c9a8f412..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4a1084a9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b92e600d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dialog-overlay.png b/src/quickcontrols2/imagine/images/dialog-overlay.png Binary files differdeleted file mode 100644 index b7da23c0..00000000 --- a/src/quickcontrols2/imagine/images/dialog-overlay.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 23828d5a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d9d53828..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a76c1a3a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/dialogbuttonbox-background.9.png b/src/quickcontrols2/imagine/images/dialogbuttonbox-background.9.png Binary files differdeleted file mode 100644 index 4b080c7f..00000000 --- a/src/quickcontrols2/imagine/images/dialogbuttonbox-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 38306bea..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 66afaabe..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7d0db539..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/drawer-background-bottom.9.png b/src/quickcontrols2/imagine/images/drawer-background-bottom.9.png Binary files differdeleted file mode 100644 index 023d8bf8..00000000 --- a/src/quickcontrols2/imagine/images/drawer-background-bottom.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b229ce9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c61118b6..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 08b2e25f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/drawer-background-left.9.png b/src/quickcontrols2/imagine/images/drawer-background-left.9.png Binary files differdeleted file mode 100644 index 5145a3a3..00000000 --- a/src/quickcontrols2/imagine/images/drawer-background-left.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 95a80ab5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bd330b7f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 10f0702a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/drawer-background-right.9.png b/src/quickcontrols2/imagine/images/drawer-background-right.9.png Binary files differdeleted file mode 100644 index 37afb734..00000000 --- a/src/quickcontrols2/imagine/images/drawer-background-right.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cfbc8f35..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9a49b6d5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 56405776..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/drawer-background-top.9.png b/src/quickcontrols2/imagine/images/drawer-background-top.9.png Binary files differdeleted file mode 100644 index 56da059f..00000000 --- a/src/quickcontrols2/imagine/images/drawer-background-top.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 976671ce..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7c07deba..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e3b1edf7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/drawer-overlay-modal.png b/src/quickcontrols2/imagine/images/drawer-overlay-modal.png Binary files differdeleted file mode 100644 index d4a43d1c..00000000 --- a/src/quickcontrols2/imagine/images/drawer-overlay-modal.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c9a8f412..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4a1084a9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b92e600d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/drawer-overlay.png b/src/quickcontrols2/imagine/images/drawer-overlay.png Binary files differdeleted file mode 100644 index b7da23c0..00000000 --- a/src/quickcontrols2/imagine/images/drawer-overlay.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 23828d5a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d9d53828..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a76c1a3a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/frame-background.9.png b/src/quickcontrols2/imagine/images/frame-background.9.png Binary files differdeleted file mode 100644 index 8674059d..00000000 --- a/src/quickcontrols2/imagine/images/frame-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 19661496..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 07d644be..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bf47d2a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/groupbox-background.9.png b/src/quickcontrols2/imagine/images/groupbox-background.9.png Binary files differdeleted file mode 100644 index 8674059d..00000000 --- a/src/quickcontrols2/imagine/images/groupbox-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 19661496..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 07d644be..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bf47d2a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/groupbox-title.9.png b/src/quickcontrols2/imagine/images/groupbox-title.9.png Binary files differdeleted file mode 100644 index e85e0cb1..00000000 --- a/src/quickcontrols2/imagine/images/groupbox-title.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d5359d85..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0e4b5c9f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 908dfe6b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/itemdelegate-background-disabled.9.png b/src/quickcontrols2/imagine/images/itemdelegate-background-disabled.9.png Binary files differdeleted file mode 100644 index 23570729..00000000 --- a/src/quickcontrols2/imagine/images/itemdelegate-background-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c7abb65c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 46b84d7d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f4dfd338..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/itemdelegate-background-focused.9.png b/src/quickcontrols2/imagine/images/itemdelegate-background-focused.9.png Binary files differdeleted file mode 100644 index 6ae574d5..00000000 --- a/src/quickcontrols2/imagine/images/itemdelegate-background-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b61562c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e46c0bf1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 010444e8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/itemdelegate-background-highlighted.9.png b/src/quickcontrols2/imagine/images/itemdelegate-background-highlighted.9.png Binary files differdeleted file mode 100644 index e79d8e1d..00000000 --- a/src/quickcontrols2/imagine/images/itemdelegate-background-highlighted.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ea68d35f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6d610415..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 590cca96..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/itemdelegate-background-hovered.9.png b/src/quickcontrols2/imagine/images/itemdelegate-background-hovered.9.png Binary files differdeleted file mode 100644 index b8749743..00000000 --- a/src/quickcontrols2/imagine/images/itemdelegate-background-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5a136a0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f47a366b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ecb680f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/itemdelegate-background-pressed.9.png b/src/quickcontrols2/imagine/images/itemdelegate-background-pressed.9.png Binary files differdeleted file mode 100644 index 6ae574d5..00000000 --- a/src/quickcontrols2/imagine/images/itemdelegate-background-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b61562c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e46c0bf1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 010444e8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/itemdelegate-background.9.png b/src/quickcontrols2/imagine/images/itemdelegate-background.9.png Binary files differdeleted file mode 100644 index b8749743..00000000 --- a/src/quickcontrols2/imagine/images/itemdelegate-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5a136a0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f47a366b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ecb680f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menu-background.9.png b/src/quickcontrols2/imagine/images/menu-background.9.png Binary files differdeleted file mode 100644 index 3195fbc3..00000000 --- a/src/quickcontrols2/imagine/images/menu-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 454c347c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 32ed6086..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 948cc3e9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-arrow-disabled.png b/src/quickcontrols2/imagine/images/menuitem-arrow-disabled.png Binary files differdeleted file mode 100644 index 6cad53f6..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-arrow-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bad6fe8c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index da420091..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2d8e44e2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-arrow-mirrored-disabled.png b/src/quickcontrols2/imagine/images/menuitem-arrow-mirrored-disabled.png Binary files differdeleted file mode 100644 index 44ac2771..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-arrow-mirrored-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 71a9b88a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1e03f215..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0f85b409..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-arrow-mirrored.png b/src/quickcontrols2/imagine/images/menuitem-arrow-mirrored.png Binary files differdeleted file mode 100644 index 4ac1160b..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-arrow-mirrored.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 79b089b6..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index aeb191fd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 139fab35..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-arrow.png b/src/quickcontrols2/imagine/images/menuitem-arrow.png Binary files differdeleted file mode 100644 index edf1f6bd..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-arrow.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8e629265..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0cef53ac..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index dbdc83bc..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-background-highlighted.9.png b/src/quickcontrols2/imagine/images/menuitem-background-highlighted.9.png Binary files differdeleted file mode 100644 index 7b8fa0f4..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-background-highlighted.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9edc3079..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 183f6194..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0a1ab863..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-background.9.png b/src/quickcontrols2/imagine/images/menuitem-background.9.png Binary files differdeleted file mode 100644 index aab131ed..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c46938c4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bac1a83f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ba77504c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-indicator-checked-focused.png b/src/quickcontrols2/imagine/images/menuitem-indicator-checked-focused.png Binary files differdeleted file mode 100644 index d55a5204..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-indicator-checked-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7289f639..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 02d6cdf2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3f074dbf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-indicator-checked-hovered.png b/src/quickcontrols2/imagine/images/menuitem-indicator-checked-hovered.png Binary files differdeleted file mode 100644 index d55a5204..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-indicator-checked-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7289f639..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 02d6cdf2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3f074dbf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-indicator-checked-pressed.png b/src/quickcontrols2/imagine/images/menuitem-indicator-checked-pressed.png Binary files differdeleted file mode 100644 index 9c03d096..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-indicator-checked-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 680ba3ef..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 974205de..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2c8b6aab..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-indicator-checked.png b/src/quickcontrols2/imagine/images/menuitem-indicator-checked.png Binary files differdeleted file mode 100644 index 598b163a..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-indicator-checked.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 06382264..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 12a32dcd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4bc6701d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-indicator-disabled.png b/src/quickcontrols2/imagine/images/menuitem-indicator-disabled.png Binary files differdeleted file mode 100644 index 0a499f8f..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-indicator-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index db652c5a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 482f045d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a386e272..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-indicator-focused.png b/src/quickcontrols2/imagine/images/menuitem-indicator-focused.png Binary files differdeleted file mode 100644 index c5eb8527..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-indicator-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8496fb1a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 30849fd0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 55ce7c0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-indicator-hovered.png b/src/quickcontrols2/imagine/images/menuitem-indicator-hovered.png Binary files differdeleted file mode 100644 index c5eb8527..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-indicator-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8496fb1a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 30849fd0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 55ce7c0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-indicator-pressed.png b/src/quickcontrols2/imagine/images/menuitem-indicator-pressed.png Binary files differdeleted file mode 100644 index a1baaf90..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-indicator-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 81a7c364..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9325de38..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c93b8fb8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuitem-indicator.png b/src/quickcontrols2/imagine/images/menuitem-indicator.png Binary files differdeleted file mode 100644 index 2b3e2323..00000000 --- a/src/quickcontrols2/imagine/images/menuitem-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ce8985db..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2968731d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ea8da284..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/menuseparator-separator.9.png b/src/quickcontrols2/imagine/images/menuseparator-separator.9.png Binary files differdeleted file mode 100644 index b8825b99..00000000 --- a/src/quickcontrols2/imagine/images/menuseparator-separator.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e5a023d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index abe775c7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 164c8e3e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/page-background.png b/src/quickcontrols2/imagine/images/page-background.png Binary files differdeleted file mode 100644 index 2d8d70f2..00000000 --- a/src/quickcontrols2/imagine/images/page-background.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 18fbaa4c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 241232b1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8eb1b1ec..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/pageindicator-delegate-current.png b/src/quickcontrols2/imagine/images/pageindicator-delegate-current.png Binary files differdeleted file mode 100644 index dc96d723..00000000 --- a/src/quickcontrols2/imagine/images/pageindicator-delegate-current.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e0d794f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 397501a7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f741a896..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/pageindicator-delegate-disabled-current.png b/src/quickcontrols2/imagine/images/pageindicator-delegate-disabled-current.png Binary files differdeleted file mode 100644 index 848d4351..00000000 --- a/src/quickcontrols2/imagine/images/pageindicator-delegate-disabled-current.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 65b5a9d4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 99e3b644..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f1801fff..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/pageindicator-delegate-disabled.png b/src/quickcontrols2/imagine/images/pageindicator-delegate-disabled.png Binary files differdeleted file mode 100644 index 848d4351..00000000 --- a/src/quickcontrols2/imagine/images/pageindicator-delegate-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 65b5a9d4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 99e3b644..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f1801fff..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/pageindicator-delegate-pressed.png b/src/quickcontrols2/imagine/images/pageindicator-delegate-pressed.png Binary files differdeleted file mode 100644 index dc96d723..00000000 --- a/src/quickcontrols2/imagine/images/pageindicator-delegate-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3e0d794f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 397501a7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f741a896..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/pageindicator-delegate.png b/src/quickcontrols2/imagine/images/pageindicator-delegate.png Binary files differdeleted file mode 100644 index 84d23cd1..00000000 --- a/src/quickcontrols2/imagine/images/pageindicator-delegate.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0e706372..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 85af5a4e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0aacbab1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/pane-background.9.png b/src/quickcontrols2/imagine/images/pane-background.9.png Binary files differdeleted file mode 100644 index 658f4863..00000000 --- a/src/quickcontrols2/imagine/images/pane-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a84ac04a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2b1c4da9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 90295db4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/popup-background.9.png b/src/quickcontrols2/imagine/images/popup-background.9.png Binary files differdeleted file mode 100644 index c842b5ff..00000000 --- a/src/quickcontrols2/imagine/images/popup-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ca23df1f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 46cd4065..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3da74119..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/popup-overlay-modal.png b/src/quickcontrols2/imagine/images/popup-overlay-modal.png Binary files differdeleted file mode 100644 index d4a43d1c..00000000 --- a/src/quickcontrols2/imagine/images/popup-overlay-modal.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c9a8f412..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4a1084a9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b92e600d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/popup-overlay.png b/src/quickcontrols2/imagine/images/popup-overlay.png Binary files differdeleted file mode 100644 index b7da23c0..00000000 --- a/src/quickcontrols2/imagine/images/popup-overlay.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 23828d5a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d9d53828..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a76c1a3a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/progressbar-animation.webp b/src/quickcontrols2/imagine/images/progressbar-animation.webp Binary files differdeleted file mode 100644 index 51c35c88..00000000 --- a/src/quickcontrols2/imagine/images/progressbar-animation.webp +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ee120630..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c2f94a74..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d49657e9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/progressbar-background.9.png b/src/quickcontrols2/imagine/images/progressbar-background.9.png Binary files differdeleted file mode 100644 index e1760070..00000000 --- a/src/quickcontrols2/imagine/images/progressbar-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e69922d5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b3c43205..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 905bdc32..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/progressbar-mask.9.png b/src/quickcontrols2/imagine/images/progressbar-mask.9.png Binary files differdeleted file mode 100644 index 35a47dc8..00000000 --- a/src/quickcontrols2/imagine/images/progressbar-mask.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 23ed1a8c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 25bc843e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 645ff201..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/progressbar-progress.png b/src/quickcontrols2/imagine/images/progressbar-progress.png Binary files differdeleted file mode 100644 index bb31dc9b..00000000 --- a/src/quickcontrols2/imagine/images/progressbar-progress.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6bb464c9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d514c727..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index abc8fa67..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiobutton-indicator-checked-focused.png b/src/quickcontrols2/imagine/images/radiobutton-indicator-checked-focused.png Binary files differdeleted file mode 100644 index 2f9e5e18..00000000 --- a/src/quickcontrols2/imagine/images/radiobutton-indicator-checked-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 47ec5534..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 26cdebf8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 708e286e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiobutton-indicator-checked-hovered.png b/src/quickcontrols2/imagine/images/radiobutton-indicator-checked-hovered.png Binary files differdeleted file mode 100644 index 2f9e5e18..00000000 --- a/src/quickcontrols2/imagine/images/radiobutton-indicator-checked-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 47ec5534..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 26cdebf8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 708e286e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiobutton-indicator-checked-pressed.png b/src/quickcontrols2/imagine/images/radiobutton-indicator-checked-pressed.png Binary files differdeleted file mode 100644 index 1e5ebca4..00000000 --- a/src/quickcontrols2/imagine/images/radiobutton-indicator-checked-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6eaae9bf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e54a1624..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7a7850ba..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiobutton-indicator-checked.png b/src/quickcontrols2/imagine/images/radiobutton-indicator-checked.png Binary files differdeleted file mode 100644 index 83c85623..00000000 --- a/src/quickcontrols2/imagine/images/radiobutton-indicator-checked.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4bdeb456..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2230a8ce..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e3dce04e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiobutton-indicator-disabled.png b/src/quickcontrols2/imagine/images/radiobutton-indicator-disabled.png Binary files differdeleted file mode 100644 index 05b8bfca..00000000 --- a/src/quickcontrols2/imagine/images/radiobutton-indicator-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e26fa5de..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c47e8c7d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bc66dde7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiobutton-indicator-focused.png b/src/quickcontrols2/imagine/images/radiobutton-indicator-focused.png Binary files differdeleted file mode 100644 index 3001638d..00000000 --- a/src/quickcontrols2/imagine/images/radiobutton-indicator-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b9890714..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b6221277..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 49ae2206..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiobutton-indicator-hovered.png b/src/quickcontrols2/imagine/images/radiobutton-indicator-hovered.png Binary files differdeleted file mode 100644 index 3001638d..00000000 --- a/src/quickcontrols2/imagine/images/radiobutton-indicator-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b9890714..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b6221277..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 49ae2206..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiobutton-indicator-pressed.png b/src/quickcontrols2/imagine/images/radiobutton-indicator-pressed.png Binary files differdeleted file mode 100644 index 76c7b4ed..00000000 --- a/src/quickcontrols2/imagine/images/radiobutton-indicator-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d5d4cac6..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ca2a1ed1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1cb753d7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiobutton-indicator.png b/src/quickcontrols2/imagine/images/radiobutton-indicator.png Binary files differdeleted file mode 100644 index c05d4bfc..00000000 --- a/src/quickcontrols2/imagine/images/radiobutton-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 62744d27..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index fa5d241e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7db85e94..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-background-disabled.9.png b/src/quickcontrols2/imagine/images/radiodelegate-background-disabled.9.png Binary files differdeleted file mode 100644 index 23570729..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-background-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c7abb65c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 46b84d7d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f4dfd338..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-background-focused.9.png b/src/quickcontrols2/imagine/images/radiodelegate-background-focused.9.png Binary files differdeleted file mode 100644 index 6ae574d5..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-background-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b61562c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e46c0bf1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 010444e8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-background-highlighted.9.png b/src/quickcontrols2/imagine/images/radiodelegate-background-highlighted.9.png Binary files differdeleted file mode 100644 index e79d8e1d..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-background-highlighted.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ea68d35f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6d610415..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 590cca96..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-background-hovered.9.png b/src/quickcontrols2/imagine/images/radiodelegate-background-hovered.9.png Binary files differdeleted file mode 100644 index b8749743..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-background-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5a136a0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f47a366b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ecb680f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-background-pressed.9.png b/src/quickcontrols2/imagine/images/radiodelegate-background-pressed.9.png Binary files differdeleted file mode 100644 index 6ae574d5..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-background-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b61562c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e46c0bf1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 010444e8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-background.9.png b/src/quickcontrols2/imagine/images/radiodelegate-background.9.png Binary files differdeleted file mode 100644 index b8749743..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5a136a0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f47a366b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ecb680f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-indicator-checked-focused.png b/src/quickcontrols2/imagine/images/radiodelegate-indicator-checked-focused.png Binary files differdeleted file mode 100644 index 2f9e5e18..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-indicator-checked-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 47ec5534..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 26cdebf8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 708e286e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-indicator-checked-hovered.png b/src/quickcontrols2/imagine/images/radiodelegate-indicator-checked-hovered.png Binary files differdeleted file mode 100644 index 2f9e5e18..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-indicator-checked-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 47ec5534..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 26cdebf8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 708e286e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-indicator-checked-pressed.png b/src/quickcontrols2/imagine/images/radiodelegate-indicator-checked-pressed.png Binary files differdeleted file mode 100644 index 1e5ebca4..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-indicator-checked-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6eaae9bf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e54a1624..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7a7850ba..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-indicator-checked.png b/src/quickcontrols2/imagine/images/radiodelegate-indicator-checked.png Binary files differdeleted file mode 100644 index 83c85623..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-indicator-checked.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4bdeb456..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2230a8ce..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e3dce04e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-indicator-disabled.png b/src/quickcontrols2/imagine/images/radiodelegate-indicator-disabled.png Binary files differdeleted file mode 100644 index 05b8bfca..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-indicator-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e26fa5de..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c47e8c7d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bc66dde7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-indicator-focused.png b/src/quickcontrols2/imagine/images/radiodelegate-indicator-focused.png Binary files differdeleted file mode 100644 index 3001638d..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-indicator-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b9890714..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b6221277..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 49ae2206..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-indicator-hovered.png b/src/quickcontrols2/imagine/images/radiodelegate-indicator-hovered.png Binary files differdeleted file mode 100644 index 3001638d..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-indicator-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b9890714..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b6221277..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 49ae2206..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-indicator-pressed.png b/src/quickcontrols2/imagine/images/radiodelegate-indicator-pressed.png Binary files differdeleted file mode 100644 index 76c7b4ed..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-indicator-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d5d4cac6..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ca2a1ed1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1cb753d7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/radiodelegate-indicator.png b/src/quickcontrols2/imagine/images/radiodelegate-indicator.png Binary files differdeleted file mode 100644 index c05d4bfc..00000000 --- a/src/quickcontrols2/imagine/images/radiodelegate-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 62744d27..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index fa5d241e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7db85e94..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-background-horizontal.9.png b/src/quickcontrols2/imagine/images/rangeslider-background-horizontal.9.png Binary files differdeleted file mode 100644 index c4e957ad..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-background-horizontal.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6d839113..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b2e634c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 969c791a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-background-vertical.9.png b/src/quickcontrols2/imagine/images/rangeslider-background-vertical.9.png Binary files differdeleted file mode 100644 index f76e0b21..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-background-vertical.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index fecd0ab2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 77a9c830..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f1613684..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-handle-disabled.png b/src/quickcontrols2/imagine/images/rangeslider-handle-disabled.png Binary files differdeleted file mode 100644 index 4934fb77..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-handle-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 451b719e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1daffca7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 64830707..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-handle-focused-hovered.png b/src/quickcontrols2/imagine/images/rangeslider-handle-focused-hovered.png Binary files differdeleted file mode 100644 index c2958f1b..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-handle-focused-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 12a4d1f8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1696ac95..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e1d13056..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-handle-focused-pressed.png b/src/quickcontrols2/imagine/images/rangeslider-handle-focused-pressed.png Binary files differdeleted file mode 100644 index c2958f1b..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-handle-focused-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 12a4d1f8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1696ac95..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e1d13056..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-handle-focused.png b/src/quickcontrols2/imagine/images/rangeslider-handle-focused.png Binary files differdeleted file mode 100644 index bdf8239a..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-handle-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9f887c5e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8042d4c2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e7e68c47..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-handle-hovered.png b/src/quickcontrols2/imagine/images/rangeslider-handle-hovered.png Binary files differdeleted file mode 100644 index 4934fb77..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-handle-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 451b719e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1daffca7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 64830707..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-handle-pressed.png b/src/quickcontrols2/imagine/images/rangeslider-handle-pressed.png Binary files differdeleted file mode 100644 index 4934fb77..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-handle-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 451b719e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1daffca7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 64830707..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-handle.png b/src/quickcontrols2/imagine/images/rangeslider-handle.png Binary files differdeleted file mode 100644 index fd72dedf..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-handle.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 57eed9f8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e217a644..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c212b59f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-progress-horizontal-disabled.9.png b/src/quickcontrols2/imagine/images/rangeslider-progress-horizontal-disabled.9.png Binary files differdeleted file mode 100644 index 7f7e6b93..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-progress-horizontal-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cbf6fb63..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 643776b8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d64acb90..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-progress-horizontal.9.png b/src/quickcontrols2/imagine/images/rangeslider-progress-horizontal.9.png Binary files differdeleted file mode 100644 index 43192f54..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-progress-horizontal.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ebbbbf82..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0a029b53..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a1354169..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-progress-vertical-disabled.9.png b/src/quickcontrols2/imagine/images/rangeslider-progress-vertical-disabled.9.png Binary files differdeleted file mode 100644 index a4edafc9..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-progress-vertical-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c38226e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a939bffd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9f653770..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/rangeslider-progress-vertical.9.png b/src/quickcontrols2/imagine/images/rangeslider-progress-vertical.9.png Binary files differdeleted file mode 100644 index d3e877fc..00000000 --- a/src/quickcontrols2/imagine/images/rangeslider-progress-vertical.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7790050e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 039d1987..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b3051d1f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background-checked-focused.png b/src/quickcontrols2/imagine/images/roundbutton-background-checked-focused.png Binary files differdeleted file mode 100644 index 032a7caa..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background-checked-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a2944b6a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ffd4d210..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 35a41fc5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background-checked-hovered.png b/src/quickcontrols2/imagine/images/roundbutton-background-checked-hovered.png Binary files differdeleted file mode 100644 index 032a7caa..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background-checked-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a2944b6a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ffd4d210..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 35a41fc5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background-checked.png b/src/quickcontrols2/imagine/images/roundbutton-background-checked.png Binary files differdeleted file mode 100644 index d57d3894..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background-checked.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7c374528..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b0e0b9be..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 748864ef..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background-disabled-checked.png b/src/quickcontrols2/imagine/images/roundbutton-background-disabled-checked.png Binary files differdeleted file mode 100644 index e26fa5de..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background-disabled-checked.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bc66dde7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a0c5f9ad..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 190210c8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background-disabled.png b/src/quickcontrols2/imagine/images/roundbutton-background-disabled.png Binary files differdeleted file mode 100644 index e26fa5de..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bc66dde7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a0c5f9ad..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 190210c8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background-focused.png b/src/quickcontrols2/imagine/images/roundbutton-background-focused.png Binary files differdeleted file mode 100644 index 832955c4..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bb1ed2ac..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cbf02913..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1c765dee..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background-highlighted-focused.png b/src/quickcontrols2/imagine/images/roundbutton-background-highlighted-focused.png Binary files differdeleted file mode 100644 index 269a9d52..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background-highlighted-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bd795651..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5ed0f662..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5bbb8e7a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background-highlighted-hovered.png b/src/quickcontrols2/imagine/images/roundbutton-background-highlighted-hovered.png Binary files differdeleted file mode 100644 index 269a9d52..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background-highlighted-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bd795651..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5ed0f662..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5bbb8e7a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background-highlighted-pressed.png b/src/quickcontrols2/imagine/images/roundbutton-background-highlighted-pressed.png Binary files differdeleted file mode 100644 index a0fa8df0..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background-highlighted-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3082a1d9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d32e8af0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f4916e0b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background-highlighted.png b/src/quickcontrols2/imagine/images/roundbutton-background-highlighted.png Binary files differdeleted file mode 100644 index f90e29f9..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background-highlighted.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7dce11b4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 436abbdd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e728d6fa..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background-hovered.png b/src/quickcontrols2/imagine/images/roundbutton-background-hovered.png Binary files differdeleted file mode 100644 index 832955c4..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bb1ed2ac..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cbf02913..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1c765dee..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background-pressed.png b/src/quickcontrols2/imagine/images/roundbutton-background-pressed.png Binary files differdeleted file mode 100644 index d57d3894..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7c374528..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b0e0b9be..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 748864ef..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/roundbutton-background.png b/src/quickcontrols2/imagine/images/roundbutton-background.png Binary files differdeleted file mode 100644 index d5d4cac6..00000000 --- a/src/quickcontrols2/imagine/images/roundbutton-background.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1cb753d7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6cc304bf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 56ea82f6..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/scrollbar-handle-disabled.png b/src/quickcontrols2/imagine/images/scrollbar-handle-disabled.png Binary files differdeleted file mode 100644 index b0b95bed..00000000 --- a/src/quickcontrols2/imagine/images/scrollbar-handle-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8ab854b0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f3c97231..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 325469b8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/scrollbar-handle-interactive-disabled.png b/src/quickcontrols2/imagine/images/scrollbar-handle-interactive-disabled.png Binary files differdeleted file mode 100644 index 236002ff..00000000 --- a/src/quickcontrols2/imagine/images/scrollbar-handle-interactive-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index abc3d2c0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e215cf5b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c6ec0520..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/scrollbar-handle-interactive-hovered.png b/src/quickcontrols2/imagine/images/scrollbar-handle-interactive-hovered.png Binary files differdeleted file mode 100644 index 19b48f1d..00000000 --- a/src/quickcontrols2/imagine/images/scrollbar-handle-interactive-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8f5abb84..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 73963d75..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 04d6131e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/scrollbar-handle-interactive-pressed.png b/src/quickcontrols2/imagine/images/scrollbar-handle-interactive-pressed.png Binary files differdeleted file mode 100644 index f48f514d..00000000 --- a/src/quickcontrols2/imagine/images/scrollbar-handle-interactive-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e31820ad..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 278ba900..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 01e4e5c8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/scrollbar-handle-interactive.png b/src/quickcontrols2/imagine/images/scrollbar-handle-interactive.png Binary files differdeleted file mode 100644 index fd7832a6..00000000 --- a/src/quickcontrols2/imagine/images/scrollbar-handle-interactive.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bd63a1b1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 31452954..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6db4d81d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/scrollbar-handle.png b/src/quickcontrols2/imagine/images/scrollbar-handle.png Binary files differdeleted file mode 100644 index 255f6c4d..00000000 --- a/src/quickcontrols2/imagine/images/scrollbar-handle.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2b69cef6..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6fdfa487..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cc3205f1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/scrollindicator-handle.png b/src/quickcontrols2/imagine/images/scrollindicator-handle.png Binary files differdeleted file mode 100644 index 255f6c4d..00000000 --- a/src/quickcontrols2/imagine/images/scrollindicator-handle.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2b69cef6..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6fdfa487..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cc3205f1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-background-horizontal.9.png b/src/quickcontrols2/imagine/images/slider-background-horizontal.9.png Binary files differdeleted file mode 100644 index c4e957ad..00000000 --- a/src/quickcontrols2/imagine/images/slider-background-horizontal.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6d839113..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b2e634c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 969c791a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-background-vertical.9.png b/src/quickcontrols2/imagine/images/slider-background-vertical.9.png Binary files differdeleted file mode 100644 index f76e0b21..00000000 --- a/src/quickcontrols2/imagine/images/slider-background-vertical.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index fecd0ab2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 77a9c830..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f1613684..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-handle-disabled.png b/src/quickcontrols2/imagine/images/slider-handle-disabled.png Binary files differdeleted file mode 100644 index 4934fb77..00000000 --- a/src/quickcontrols2/imagine/images/slider-handle-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 451b719e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1daffca7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 64830707..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-handle-focused-hovered.png b/src/quickcontrols2/imagine/images/slider-handle-focused-hovered.png Binary files differdeleted file mode 100644 index c2958f1b..00000000 --- a/src/quickcontrols2/imagine/images/slider-handle-focused-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 12a4d1f8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1696ac95..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e1d13056..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-handle-focused-pressed.png b/src/quickcontrols2/imagine/images/slider-handle-focused-pressed.png Binary files differdeleted file mode 100644 index c2958f1b..00000000 --- a/src/quickcontrols2/imagine/images/slider-handle-focused-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 12a4d1f8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1696ac95..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e1d13056..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-handle-focused.png b/src/quickcontrols2/imagine/images/slider-handle-focused.png Binary files differdeleted file mode 100644 index bdf8239a..00000000 --- a/src/quickcontrols2/imagine/images/slider-handle-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9f887c5e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8042d4c2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e7e68c47..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-handle-hovered.png b/src/quickcontrols2/imagine/images/slider-handle-hovered.png Binary files differdeleted file mode 100644 index 4934fb77..00000000 --- a/src/quickcontrols2/imagine/images/slider-handle-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 451b719e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1daffca7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 64830707..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-handle-pressed.png b/src/quickcontrols2/imagine/images/slider-handle-pressed.png Binary files differdeleted file mode 100644 index 4934fb77..00000000 --- a/src/quickcontrols2/imagine/images/slider-handle-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 451b719e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1daffca7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 64830707..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-handle.png b/src/quickcontrols2/imagine/images/slider-handle.png Binary files differdeleted file mode 100644 index fd72dedf..00000000 --- a/src/quickcontrols2/imagine/images/slider-handle.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 57eed9f8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e217a644..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c212b59f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-progress-horizontal-disabled.9.png b/src/quickcontrols2/imagine/images/slider-progress-horizontal-disabled.9.png Binary files differdeleted file mode 100644 index 7f7e6b93..00000000 --- a/src/quickcontrols2/imagine/images/slider-progress-horizontal-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cbf6fb63..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 643776b8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d64acb90..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-progress-horizontal.9.png b/src/quickcontrols2/imagine/images/slider-progress-horizontal.9.png Binary files differdeleted file mode 100644 index 43192f54..00000000 --- a/src/quickcontrols2/imagine/images/slider-progress-horizontal.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ebbbbf82..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0a029b53..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a1354169..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-progress-vertical-disabled.9.png b/src/quickcontrols2/imagine/images/slider-progress-vertical-disabled.9.png Binary files differdeleted file mode 100644 index a4edafc9..00000000 --- a/src/quickcontrols2/imagine/images/slider-progress-vertical-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c38226e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a939bffd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9f653770..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/slider-progress-vertical.9.png b/src/quickcontrols2/imagine/images/slider-progress-vertical.9.png Binary files differdeleted file mode 100644 index d3e877fc..00000000 --- a/src/quickcontrols2/imagine/images/slider-progress-vertical.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7790050e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 039d1987..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b3051d1f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-background-disabled.9.png b/src/quickcontrols2/imagine/images/spinbox-background-disabled.9.png Binary files differdeleted file mode 100644 index 7baaeec5..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-background-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e0d59070..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 24b3054d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8ac4740a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-background-editable.9.png b/src/quickcontrols2/imagine/images/spinbox-background-editable.9.png Binary files differdeleted file mode 100644 index 995c8276..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-background-editable.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 42c9dd6b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4ee974a1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 59b00915..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-background-focused.9.png b/src/quickcontrols2/imagine/images/spinbox-background-focused.9.png Binary files differdeleted file mode 100644 index 27751eac..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-background-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1692578f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4c44c1bb..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f8632bf2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-background.9.png b/src/quickcontrols2/imagine/images/spinbox-background.9.png Binary files differdeleted file mode 100644 index ae8b043b..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index eaae097e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d8add811..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d954febf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-disabled.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-disabled.9.png Binary files differdeleted file mode 100644 index b3953398..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 18e2ca65..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ed6674b4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0da2cf93..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-focused.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-focused.9.png Binary files differdeleted file mode 100644 index 46220a8e..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b8ebb7b7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 10561d8d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ccd09d69..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-hovered.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-hovered.9.png Binary files differdeleted file mode 100644 index 46220a8e..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b8ebb7b7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 10561d8d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ccd09d69..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-mirrored-focused.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-mirrored-focused.9.png Binary files differdeleted file mode 100644 index 23842de4..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-mirrored-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e5078932..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7edec0c9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f6e5ff82..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-mirrored-hovered.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-mirrored-hovered.9.png Binary files differdeleted file mode 100644 index 23842de4..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-mirrored-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e5078932..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7edec0c9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f6e5ff82..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-mirrored-pressed.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-mirrored-pressed.9.png Binary files differdeleted file mode 100644 index b6917a03..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-mirrored-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8999d3e4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 77aa0044..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4f2fd261..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-mirrored.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-mirrored.9.png Binary files differdeleted file mode 100644 index 3c3da5b1..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-mirrored.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e0760e07..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c37080f5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bdc24823..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-pressed.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-pressed.9.png Binary files differdeleted file mode 100644 index 65f2821b..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 010dd9d0..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f647f489..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index db0486d1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable.9.png Binary files differdeleted file mode 100644 index c3207f31..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-editable.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c8c2630e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d0a6c818..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 40e89762..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-focused.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-focused.9.png Binary files differdeleted file mode 100644 index 6ad31bb0..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6cc60b4b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 722c7ec7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 64fa4ab6..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-hovered.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-hovered.9.png Binary files differdeleted file mode 100644 index 6ad31bb0..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6cc60b4b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 722c7ec7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 64fa4ab6..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored-disabled.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored-disabled.9.png Binary files differdeleted file mode 100644 index ac7da20e..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a12f3615..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index de11317b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8be41f38..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored-focused.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored-focused.9.png Binary files differdeleted file mode 100644 index 6b6e5264..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e0c36da3..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ca2389da..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7e6c5474..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored-hovered.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored-hovered.9.png Binary files differdeleted file mode 100644 index 6b6e5264..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e0c36da3..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ca2389da..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7e6c5474..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored-pressed.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored-pressed.9.png Binary files differdeleted file mode 100644 index d756679f..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e49c7e89..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6041ffdc..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e23dda15..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored.9.png Binary files differdeleted file mode 100644 index 58be2120..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-mirrored.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 709a1ab6..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ee5b5b82..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1e88d44d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down-pressed.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down-pressed.9.png Binary files differdeleted file mode 100644 index 9703314b..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 173eccfb..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 77737c75..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6a2bb865..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-down.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-down.9.png Binary files differdeleted file mode 100644 index a6c9679a..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-down.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bd14cdbb..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 02d18c1d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ec1bf04..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-disabled.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-disabled.9.png Binary files differdeleted file mode 100644 index 5fe5ab6a..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f7a2a5d5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3244c93f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 82482005..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-focused.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-focused.9.png Binary files differdeleted file mode 100644 index d291c50a..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 06e27b1b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 34b43735..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4a95cca4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-hovered.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-hovered.9.png Binary files differdeleted file mode 100644 index d291c50a..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 06e27b1b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 34b43735..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4a95cca4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-mirrored-focused.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-mirrored-focused.9.png Binary files differdeleted file mode 100644 index a98d5a1d..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-mirrored-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4b845860..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index da241c07..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d1333671..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-mirrored-hovered.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-mirrored-hovered.9.png Binary files differdeleted file mode 100644 index a98d5a1d..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-mirrored-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4b845860..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index da241c07..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d1333671..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-mirrored-pressed.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-mirrored-pressed.9.png Binary files differdeleted file mode 100644 index 793e009d..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-mirrored-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index aca00c57..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a49b9549..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e0814f3b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-mirrored.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-mirrored.9.png Binary files differdeleted file mode 100644 index ac4c46d1..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-mirrored.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b1c335ee..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3f0d9f2f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cac6eca8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-pressed.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-pressed.9.png Binary files differdeleted file mode 100644 index 87a1ae7a..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 95c5ea06..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3ed6cddf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8f5e3f02..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable.9.png Binary files differdeleted file mode 100644 index b3cc7bea..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-editable.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 51313f59..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8db540f5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 310400a2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-focused.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-focused.9.png Binary files differdeleted file mode 100644 index d88bd00d..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 77dbb52a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0739b1b1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d53ee543..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-hovered.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-hovered.9.png Binary files differdeleted file mode 100644 index d88bd00d..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 77dbb52a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0739b1b1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d53ee543..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored-disabled.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored-disabled.9.png Binary files differdeleted file mode 100644 index 53f6d7e5..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7c7bb214..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5a69027c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index fe2171a5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored-focused.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored-focused.9.png Binary files differdeleted file mode 100644 index cf31f936..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 48b8861e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d6a41720..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e0c7e374..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored-hovered.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored-hovered.9.png Binary files differdeleted file mode 100644 index cf31f936..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 48b8861e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d6a41720..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e0c7e374..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored-pressed.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored-pressed.9.png Binary files differdeleted file mode 100644 index 4548cddd..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c5fb9d1b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ffbe520a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 784f9bee..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored.9.png Binary files differdeleted file mode 100644 index f2679457..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-mirrored.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7f07e625..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0b060816..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index df76dfce..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up-pressed.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up-pressed.9.png Binary files differdeleted file mode 100644 index cbba897f..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a49e11fa..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 720e4543..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 46333e3d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/spinbox-indicator-up.9.png b/src/quickcontrols2/imagine/images/spinbox-indicator-up.9.png Binary files differdeleted file mode 100644 index 67cbe434..00000000 --- a/src/quickcontrols2/imagine/images/spinbox-indicator-up.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8e804b87..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 15baec74..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7112de67..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/splitview-handle-disabled.png b/src/quickcontrols2/imagine/images/splitview-handle-disabled.png Binary files differdeleted file mode 100644 index 8ab854b0..00000000 --- a/src/quickcontrols2/imagine/images/splitview-handle-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 325469b8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5357e847..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e215cf5b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/splitview-handle-hovered.png b/src/quickcontrols2/imagine/images/splitview-handle-hovered.png Binary files differdeleted file mode 100644 index 429d5508..00000000 --- a/src/quickcontrols2/imagine/images/splitview-handle-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6f17b06e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 11dcfa26..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 73963d75..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/splitview-handle-pressed.png b/src/quickcontrols2/imagine/images/splitview-handle-pressed.png Binary files differdeleted file mode 100644 index 6e00db20..00000000 --- a/src/quickcontrols2/imagine/images/splitview-handle-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e1392de6..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ff6a397f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 278ba900..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/splitview-handle.png b/src/quickcontrols2/imagine/images/splitview-handle.png Binary files differdeleted file mode 100644 index 2b69cef6..00000000 --- a/src/quickcontrols2/imagine/images/splitview-handle.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index cc3205f1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b8be2b4d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 31452954..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/swipedelegate-background-disabled.9.png b/src/quickcontrols2/imagine/images/swipedelegate-background-disabled.9.png Binary files differdeleted file mode 100644 index 23570729..00000000 --- a/src/quickcontrols2/imagine/images/swipedelegate-background-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c7abb65c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 46b84d7d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f4dfd338..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/swipedelegate-background-focused.9.png b/src/quickcontrols2/imagine/images/swipedelegate-background-focused.9.png Binary files differdeleted file mode 100644 index 6ae574d5..00000000 --- a/src/quickcontrols2/imagine/images/swipedelegate-background-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b61562c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e46c0bf1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 010444e8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/swipedelegate-background-highlighted.9.png b/src/quickcontrols2/imagine/images/swipedelegate-background-highlighted.9.png Binary files differdeleted file mode 100644 index e79d8e1d..00000000 --- a/src/quickcontrols2/imagine/images/swipedelegate-background-highlighted.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ea68d35f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6d610415..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 590cca96..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/swipedelegate-background-hovered.9.png b/src/quickcontrols2/imagine/images/swipedelegate-background-hovered.9.png Binary files differdeleted file mode 100644 index b8749743..00000000 --- a/src/quickcontrols2/imagine/images/swipedelegate-background-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5a136a0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f47a366b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ecb680f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/swipedelegate-background-pressed.9.png b/src/quickcontrols2/imagine/images/swipedelegate-background-pressed.9.png Binary files differdeleted file mode 100644 index 6ae574d5..00000000 --- a/src/quickcontrols2/imagine/images/swipedelegate-background-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b61562c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e46c0bf1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 010444e8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/swipedelegate-background.9.png b/src/quickcontrols2/imagine/images/swipedelegate-background.9.png Binary files differdeleted file mode 100644 index b8749743..00000000 --- a/src/quickcontrols2/imagine/images/swipedelegate-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5a136a0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f47a366b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ecb680f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switch-handle-disabled.png b/src/quickcontrols2/imagine/images/switch-handle-disabled.png Binary files differdeleted file mode 100644 index 595dd546..00000000 --- a/src/quickcontrols2/imagine/images/switch-handle-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5be736aa..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c8002ca3..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 00e70c1b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switch-handle-pressed.png b/src/quickcontrols2/imagine/images/switch-handle-pressed.png Binary files differdeleted file mode 100644 index 595dd546..00000000 --- a/src/quickcontrols2/imagine/images/switch-handle-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5be736aa..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c8002ca3..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 00e70c1b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switch-handle.png b/src/quickcontrols2/imagine/images/switch-handle.png Binary files differdeleted file mode 100644 index 15649c34..00000000 --- a/src/quickcontrols2/imagine/images/switch-handle.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 04f84ed9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e0cfb637..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 73fa381a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switch-indicator-checked-focused.png b/src/quickcontrols2/imagine/images/switch-indicator-checked-focused.png Binary files differdeleted file mode 100644 index 7f5ba5df..00000000 --- a/src/quickcontrols2/imagine/images/switch-indicator-checked-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a0090df4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0c7e5264..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3a5e1d36..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switch-indicator-checked-hovered.png b/src/quickcontrols2/imagine/images/switch-indicator-checked-hovered.png Binary files differdeleted file mode 100644 index 7f5ba5df..00000000 --- a/src/quickcontrols2/imagine/images/switch-indicator-checked-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a0090df4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0c7e5264..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3a5e1d36..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switch-indicator-checked-pressed.png b/src/quickcontrols2/imagine/images/switch-indicator-checked-pressed.png Binary files differdeleted file mode 100644 index ecbc552a..00000000 --- a/src/quickcontrols2/imagine/images/switch-indicator-checked-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 07fe7241..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c65c27f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f6a1e476..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switch-indicator-checked.png b/src/quickcontrols2/imagine/images/switch-indicator-checked.png Binary files differdeleted file mode 100644 index 2b7265cd..00000000 --- a/src/quickcontrols2/imagine/images/switch-indicator-checked.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6ec88c7f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 48c97985..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e9f81807..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switch-indicator-disabled.png b/src/quickcontrols2/imagine/images/switch-indicator-disabled.png Binary files differdeleted file mode 100644 index 9cfab791..00000000 --- a/src/quickcontrols2/imagine/images/switch-indicator-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3bbbb8df..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 80d9a746..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ee7bfab..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switch-indicator-focused.png b/src/quickcontrols2/imagine/images/switch-indicator-focused.png Binary files differdeleted file mode 100644 index 4867bcac..00000000 --- a/src/quickcontrols2/imagine/images/switch-indicator-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d833a0cd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a632b6ae..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b5affab7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switch-indicator-hovered.png b/src/quickcontrols2/imagine/images/switch-indicator-hovered.png Binary files differdeleted file mode 100644 index 4867bcac..00000000 --- a/src/quickcontrols2/imagine/images/switch-indicator-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d833a0cd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a632b6ae..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b5affab7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switch-indicator-pressed.png b/src/quickcontrols2/imagine/images/switch-indicator-pressed.png Binary files differdeleted file mode 100644 index 4fbbc060..00000000 --- a/src/quickcontrols2/imagine/images/switch-indicator-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7939f943..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index adcbe45b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 74c0c77e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switch-indicator.png b/src/quickcontrols2/imagine/images/switch-indicator.png Binary files differdeleted file mode 100644 index b6b4f1cd..00000000 --- a/src/quickcontrols2/imagine/images/switch-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bfeedeb7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 19e5ba2c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9345cd4f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-background-disabled.9.png b/src/quickcontrols2/imagine/images/switchdelegate-background-disabled.9.png Binary files differdeleted file mode 100644 index 23570729..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-background-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c7abb65c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 46b84d7d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f4dfd338..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-background-focused.9.png b/src/quickcontrols2/imagine/images/switchdelegate-background-focused.9.png Binary files differdeleted file mode 100644 index 6ae574d5..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-background-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b61562c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e46c0bf1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 010444e8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-background-hovered.9.png b/src/quickcontrols2/imagine/images/switchdelegate-background-hovered.9.png Binary files differdeleted file mode 100644 index b8749743..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-background-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5a136a0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f47a366b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ecb680f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-background-pressed.9.png b/src/quickcontrols2/imagine/images/switchdelegate-background-pressed.9.png Binary files differdeleted file mode 100644 index 6ae574d5..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-background-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6b61562c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e46c0bf1..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 010444e8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-background.9.png b/src/quickcontrols2/imagine/images/switchdelegate-background.9.png Binary files differdeleted file mode 100644 index b8749743..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5a136a0c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f47a366b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ecb680f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-handle-disabled.png b/src/quickcontrols2/imagine/images/switchdelegate-handle-disabled.png Binary files differdeleted file mode 100644 index 595dd546..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-handle-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5be736aa..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c8002ca3..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 00e70c1b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-handle-pressed.png b/src/quickcontrols2/imagine/images/switchdelegate-handle-pressed.png Binary files differdeleted file mode 100644 index 595dd546..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-handle-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5be736aa..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c8002ca3..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 00e70c1b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-handle.png b/src/quickcontrols2/imagine/images/switchdelegate-handle.png Binary files differdeleted file mode 100644 index 15649c34..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-handle.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 04f84ed9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e0cfb637..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 73fa381a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-indicator-checked-focused.png b/src/quickcontrols2/imagine/images/switchdelegate-indicator-checked-focused.png Binary files differdeleted file mode 100644 index 7f5ba5df..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-indicator-checked-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a0090df4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0c7e5264..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3a5e1d36..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-indicator-checked-hovered.png b/src/quickcontrols2/imagine/images/switchdelegate-indicator-checked-hovered.png Binary files differdeleted file mode 100644 index 7f5ba5df..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-indicator-checked-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a0090df4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0c7e5264..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3a5e1d36..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-indicator-checked-pressed.png b/src/quickcontrols2/imagine/images/switchdelegate-indicator-checked-pressed.png Binary files differdeleted file mode 100644 index ecbc552a..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-indicator-checked-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 07fe7241..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c65c27f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f6a1e476..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-indicator-checked.png b/src/quickcontrols2/imagine/images/switchdelegate-indicator-checked.png Binary files differdeleted file mode 100644 index 2b7265cd..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-indicator-checked.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6ec88c7f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 48c97985..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e9f81807..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-indicator-disabled.png b/src/quickcontrols2/imagine/images/switchdelegate-indicator-disabled.png Binary files differdeleted file mode 100644 index 9cfab791..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-indicator-disabled.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3bbbb8df..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 80d9a746..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9ee7bfab..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-indicator-focused.png b/src/quickcontrols2/imagine/images/switchdelegate-indicator-focused.png Binary files differdeleted file mode 100644 index 4867bcac..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-indicator-focused.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d833a0cd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a632b6ae..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b5affab7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-indicator-hovered.png b/src/quickcontrols2/imagine/images/switchdelegate-indicator-hovered.png Binary files differdeleted file mode 100644 index 4867bcac..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-indicator-hovered.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d833a0cd..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a632b6ae..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b5affab7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-indicator-pressed.png b/src/quickcontrols2/imagine/images/switchdelegate-indicator-pressed.png Binary files differdeleted file mode 100644 index 4fbbc060..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-indicator-pressed.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7939f943..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index adcbe45b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 74c0c77e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/switchdelegate-indicator.png b/src/quickcontrols2/imagine/images/switchdelegate-indicator.png Binary files differdeleted file mode 100644 index b6b4f1cd..00000000 --- a/src/quickcontrols2/imagine/images/switchdelegate-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bfeedeb7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 19e5ba2c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9345cd4f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/tabbar-background.png b/src/quickcontrols2/imagine/images/tabbar-background.png Binary files differdeleted file mode 100644 index 002efded..00000000 --- a/src/quickcontrols2/imagine/images/tabbar-background.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index aaa1cbaf..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c4eb9e1f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4a4e234a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/tabbutton-background-checked.9.png b/src/quickcontrols2/imagine/images/tabbutton-background-checked.9.png Binary files differdeleted file mode 100644 index d2f0fa76..00000000 --- a/src/quickcontrols2/imagine/images/tabbutton-background-checked.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index bee13292..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 70afb7d3..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3a2015c4..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/tabbutton-background-disabled-checked.9.png b/src/quickcontrols2/imagine/images/tabbutton-background-disabled-checked.9.png Binary files differdeleted file mode 100644 index a6d3011b..00000000 --- a/src/quickcontrols2/imagine/images/tabbutton-background-disabled-checked.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8ebfa026..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1d5a1d51..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f06dc55f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/tabbutton-background-disabled.9.png b/src/quickcontrols2/imagine/images/tabbutton-background-disabled.9.png Binary files differdeleted file mode 100644 index a6d3011b..00000000 --- a/src/quickcontrols2/imagine/images/tabbutton-background-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8ebfa026..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1d5a1d51..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f06dc55f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/tabbutton-background-hovered.9.png b/src/quickcontrols2/imagine/images/tabbutton-background-hovered.9.png Binary files differdeleted file mode 100644 index 3f945184..00000000 --- a/src/quickcontrols2/imagine/images/tabbutton-background-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8a19720a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index eadcf457..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8bf8e992..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/tabbutton-background-pressed.9.png b/src/quickcontrols2/imagine/images/tabbutton-background-pressed.9.png Binary files differdeleted file mode 100644 index d48733ed..00000000 --- a/src/quickcontrols2/imagine/images/tabbutton-background-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index fbbaad7b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3a0ba70e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c04f124e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/tabbutton-background.9.png b/src/quickcontrols2/imagine/images/tabbutton-background.9.png Binary files differdeleted file mode 100644 index 2266c722..00000000 --- a/src/quickcontrols2/imagine/images/tabbutton-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b7adb7ad..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d8f4eae5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 066d35b3..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/textarea-background-disabled.9.png b/src/quickcontrols2/imagine/images/textarea-background-disabled.9.png Binary files differdeleted file mode 100644 index 97d48f8c..00000000 --- a/src/quickcontrols2/imagine/images/textarea-background-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f9ea1d49..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 04e7ef6f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index feaaa3bc..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/textarea-background-focused.9.png b/src/quickcontrols2/imagine/images/textarea-background-focused.9.png Binary files differdeleted file mode 100644 index 1d73acfa..00000000 --- a/src/quickcontrols2/imagine/images/textarea-background-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 5be4cd6f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 6ba3e246..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 366aa511..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/textarea-background.9.png b/src/quickcontrols2/imagine/images/textarea-background.9.png Binary files differdeleted file mode 100644 index 0b9ca9f3..00000000 --- a/src/quickcontrols2/imagine/images/textarea-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a806ed1b..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 547ef33c..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b759b1e8..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/textfield-background-disabled.9.png b/src/quickcontrols2/imagine/images/textfield-background-disabled.9.png Binary files differdeleted file mode 100644 index 312a1294..00000000 --- a/src/quickcontrols2/imagine/images/textfield-background-disabled.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 2c6c7e91..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 1d1aca71..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index ed93182a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/textfield-background-focused.9.png b/src/quickcontrols2/imagine/images/textfield-background-focused.9.png Binary files differdeleted file mode 100644 index 1251f4e4..00000000 --- a/src/quickcontrols2/imagine/images/textfield-background-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index d535e8bc..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9fca3bb2..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index a275a52e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/textfield-background.9.png b/src/quickcontrols2/imagine/images/textfield-background.9.png Binary files differdeleted file mode 100644 index 7ea60968..00000000 --- a/src/quickcontrols2/imagine/images/textfield-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 0a4c3f2a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index e8552741..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 29ef5bb9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/toolbar-background.png b/src/quickcontrols2/imagine/images/toolbar-background.png Binary files differdeleted file mode 100644 index 9c67cf27..00000000 --- a/src/quickcontrols2/imagine/images/toolbar-background.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index b0602519..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 7f227ca3..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 4788ecc7..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/toolbutton-background-checked-focused.9.png b/src/quickcontrols2/imagine/images/toolbutton-background-checked-focused.9.png Binary files differdeleted file mode 100644 index 287a2872..00000000 --- a/src/quickcontrols2/imagine/images/toolbutton-background-checked-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index aa844165..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c682255..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 89bdd096..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/toolbutton-background-checked-hovered.9.png b/src/quickcontrols2/imagine/images/toolbutton-background-checked-hovered.9.png Binary files differdeleted file mode 100644 index 287a2872..00000000 --- a/src/quickcontrols2/imagine/images/toolbutton-background-checked-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index aa844165..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c682255..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 89bdd096..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/toolbutton-background-checked.9.png b/src/quickcontrols2/imagine/images/toolbutton-background-checked.9.png Binary files differdeleted file mode 100644 index 287a2872..00000000 --- a/src/quickcontrols2/imagine/images/toolbutton-background-checked.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index aa844165..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c682255..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 89bdd096..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/toolbutton-background-disabled-checked.9.png b/src/quickcontrols2/imagine/images/toolbutton-background-disabled-checked.9.png Binary files differdeleted file mode 100644 index 287a2872..00000000 --- a/src/quickcontrols2/imagine/images/toolbutton-background-disabled-checked.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index aa844165..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c682255..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 89bdd096..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/toolbutton-background-focused.9.png b/src/quickcontrols2/imagine/images/toolbutton-background-focused.9.png Binary files differdeleted file mode 100644 index 287a2872..00000000 --- a/src/quickcontrols2/imagine/images/toolbutton-background-focused.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index aa844165..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c682255..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 89bdd096..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/toolbutton-background-hovered.9.png b/src/quickcontrols2/imagine/images/toolbutton-background-hovered.9.png Binary files differdeleted file mode 100644 index 287a2872..00000000 --- a/src/quickcontrols2/imagine/images/toolbutton-background-hovered.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index aa844165..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c682255..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 89bdd096..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/toolbutton-background-pressed.9.png b/src/quickcontrols2/imagine/images/toolbutton-background-pressed.9.png Binary files differdeleted file mode 100644 index 287a2872..00000000 --- a/src/quickcontrols2/imagine/images/toolbutton-background-pressed.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index aa844165..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 8c682255..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 89bdd096..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/toolbutton-background.9.png b/src/quickcontrols2/imagine/images/toolbutton-background.9.png Binary files differdeleted file mode 100644 index 5a72a621..00000000 --- a/src/quickcontrols2/imagine/images/toolbutton-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 688a071a..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 64375a7e..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 96004a10..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/toolseparator-separator-horizontal.9.png b/src/quickcontrols2/imagine/images/toolseparator-separator-horizontal.9.png Binary files differdeleted file mode 100644 index 75e3e662..00000000 --- a/src/quickcontrols2/imagine/images/toolseparator-separator-horizontal.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 3662dec9..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 27714701..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index deeda9f5..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/toolseparator-separator-vertical.9.png b/src/quickcontrols2/imagine/images/toolseparator-separator-vertical.9.png Binary files differdeleted file mode 100644 index 5b607aaf..00000000 --- a/src/quickcontrols2/imagine/images/toolseparator-separator-vertical.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index f5a11e04..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c957280f..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index c888689d..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/tooltip-background.9.png b/src/quickcontrols2/imagine/images/tooltip-background.9.png Binary files differdeleted file mode 100644 index 2e0dc67c..00000000 --- a/src/quickcontrols2/imagine/images/tooltip-background.9.png +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index dd560998..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index fed46542..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/images/[email protected] b/src/quickcontrols2/imagine/images/[email protected] Binary files differdeleted file mode 100644 index 9bc96490..00000000 --- a/src/quickcontrols2/imagine/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/imagine/imagine.pri b/src/quickcontrols2/imagine/imagine.pri deleted file mode 100644 index 134aa2c3..00000000 --- a/src/quickcontrols2/imagine/imagine.pri +++ /dev/null @@ -1,58 +0,0 @@ -HEADERS += \ - $$PWD/qquickimaginestyle_p.h \ - $$PWD/qquickimaginetheme_p.h - -SOURCES += \ - $$PWD/qquickimaginestyle.cpp \ - $$PWD/qquickimaginetheme.cpp - -QML_FILES += \ - $$PWD/ApplicationWindow.qml \ - $$PWD/BusyIndicator.qml \ - $$PWD/Button.qml \ - $$PWD/CheckBox.qml \ - $$PWD/CheckDelegate.qml \ - $$PWD/ComboBox.qml \ - $$PWD/DelayButton.qml \ - $$PWD/Dial.qml \ - $$PWD/Dialog.qml \ - $$PWD/DialogButtonBox.qml \ - $$PWD/Drawer.qml \ - $$PWD/Frame.qml \ - $$PWD/GroupBox.qml \ - $$PWD/HorizontalHeaderView.qml \ - $$PWD/ItemDelegate.qml \ - $$PWD/Label.qml \ - $$PWD/Menu.qml \ - $$PWD/MenuItem.qml \ - $$PWD/MenuSeparator.qml \ - $$PWD/PageIndicator.qml \ - $$PWD/Page.qml \ - $$PWD/Pane.qml \ - $$PWD/Popup.qml \ - $$PWD/ProgressBar.qml \ - $$PWD/RadioButton.qml \ - $$PWD/RadioDelegate.qml \ - $$PWD/RangeSlider.qml \ - $$PWD/RoundButton.qml \ - $$PWD/ScrollView.qml \ - $$PWD/ScrollBar.qml \ - $$PWD/ScrollIndicator.qml \ - $$PWD/Slider.qml \ - $$PWD/SpinBox.qml \ - $$PWD/SplitView.qml \ - $$PWD/StackView.qml \ - $$PWD/SwipeDelegate.qml \ - $$PWD/SwipeView.qml \ - $$PWD/Switch.qml \ - $$PWD/SwitchDelegate.qml \ - $$PWD/TextField.qml \ - $$PWD/TextArea.qml \ - $$PWD/TabBar.qml \ - $$PWD/TabButton.qml \ - $$PWD/ToolBar.qml \ - $$PWD/ToolButton.qml \ - $$PWD/ToolSeparator.qml \ - $$PWD/ToolTip.qml \ - $$PWD/Tumbler.qml \ - $$PWD/VerticalHeaderView.qml diff --git a/src/quickcontrols2/imagine/impl/CMakeLists.txt b/src/quickcontrols2/imagine/impl/CMakeLists.txt deleted file mode 100644 index 87cfc332..00000000 --- a/src/quickcontrols2/imagine/impl/CMakeLists.txt +++ /dev/null @@ -1,47 +0,0 @@ -##################################################################### -## qtquickcontrols2imaginestyleimplplugin Plugin: -##################################################################### - -set(qml_files - "OpacityMask.qml" -) -set_source_files_properties(OpacityMask.qml PROPERTIES - QT_QML_SOURCE_VERSION "6.0" -) - -qt_internal_add_qml_module(qtquickcontrols2imaginestyleimplplugin - URI "QtQuick.Controls.Imagine.impl" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2ImagineStyleImplPlugin - PLUGIN_TARGET qtquickcontrols2imaginestyleimplplugin - NO_PLUGIN_OPTIONAL - SOURCES - qquickimageselector.cpp qquickimageselector_p.h - qquickninepatchimage.cpp qquickninepatchimage_p.h - QML_FILES - ${qml_files} - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::Gui - Qt::QmlPrivate - Qt::QuickControls2ImplPrivate - Qt::QuickPrivate - Qt::QuickTemplates2Private -) - -# Resources: -set(qmake_qtquickcontrols2imaginestyleimplplugin_resource_files - "shaders/+glslcore/OpacityMask.frag" - "shaders/+qsb/OpacityMask.frag" - "shaders/OpacityMask.frag" -) - -qt_internal_add_resource(qtquickcontrols2imaginestyleimplplugin "qmake_qtquickcontrols2imaginestyleimplplugin" - PREFIX - "qt-project.org/imports/QtQuick/Controls/Imagine/impl" - FILES - ${qmake_qtquickcontrols2imaginestyleimplplugin_resource_files} -) diff --git a/src/quickcontrols2/imagine/impl/OpacityMask.qml b/src/quickcontrols2/imagine/impl/OpacityMask.qml deleted file mode 100644 index 26663a1b..00000000 --- a/src/quickcontrols2/imagine/impl/OpacityMask.qml +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick - -/* - A cross-graphics API implementation of QtGraphicalEffects' OpacityMask. - */ -Item { - id: rootItem - - property variant source - property variant maskSource - property bool cached: false - - ShaderEffectSource { - id: cacheItem - anchors.fill: parent - visible: rootItem.cached - smooth: true - sourceItem: shaderItem - live: true - hideSource: visible - } - - ShaderEffect { - id: shaderItem - property variant source: rootItem.source - property variant maskSource: rootItem.maskSource - - anchors.fill: parent - - fragmentShader: "qrc:/qt-project.org/imports/QtQuick/Controls/Imagine/impl/shaders/OpacityMask.frag" - } -} diff --git a/src/quickcontrols2/imagine/impl/qquickimageselector.cpp b/src/quickcontrols2/imagine/impl/qquickimageselector.cpp deleted file mode 100644 index dcb7738c..00000000 --- a/src/quickcontrols2/imagine/impl/qquickimageselector.cpp +++ /dev/null @@ -1,338 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickimageselector_p.h" - -#include <QtCore/qdir.h> -#include <QtCore/qfileinfo.h> -#include <QtCore/qcache.h> -#include <QtCore/qloggingcategory.h> -#include <QtCore/qfileselector.h> -#include <QtQml/qqmlfile.h> -#include <QtQml/private/qqmlproperty_p.h> -#include <algorithm> - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcQtQuickControlsImagine, "qt.quick.controls.imagine") - -static const int DEFAULT_CACHE = 500; - -static inline int cacheSize() -{ - static bool ok = false; - static const int size = qEnvironmentVariableIntValue("QT_QUICK_CONTROLS_IMAGINE_CACHE", &ok); - return ok ? size : DEFAULT_CACHE; -} - -// input: [focused, pressed] -// => [[focused, pressed], [pressed, focused], [focused], [pressed]] -static QList<QStringList> permutations(const QStringList &input, int count = -1) -{ - if (count == -1) - count = input.count(); - - QList<QStringList> output; - for (int i = 0; i < input.count(); ++i) { - QStringList sub = input.mid(i, count); - - if (count > 1) { - if (i + count > input.count()) - sub += input.mid(0, count - i + 1); - - std::sort(sub.begin(), sub.end()); - do { - if (!sub.isEmpty()) - output += sub; - } while (std::next_permutation(sub.begin(), sub.end())); - } else { - output += sub; - } - - if (count == input.count()) - break; - } - - if (count > 1) - output += permutations(input, --count); - - return output; -} - -static QString findFile(const QDir &dir, const QString &baseName, const QStringList &extensions) -{ - for (const QString &ext : extensions) { - QString filePath = dir.filePath(baseName + QLatin1Char('.') + ext); - if (QFile::exists(filePath)) - return QFileSelector().select(filePath); - } - // return an empty string to indicate that the lookup has been done - // even if no matching asset was found - return QLatin1String(""); -} - -QQuickImageSelector::QQuickImageSelector(QObject *parent) - : QObject(parent), - m_cache(cacheSize() > 0) -{ -} - -QUrl QQuickImageSelector::source() const -{ - return m_source; -} - -void QQuickImageSelector::setSource(const QUrl &source) -{ - if (m_property.isValid()) - QQmlPropertyPrivate::write(m_property, source, QQmlPropertyData::BypassInterceptor | QQmlPropertyData::DontRemoveBinding); - if (m_source == source) - return; - - m_source = source; - emit sourceChanged(); -} - -QString QQuickImageSelector::name() const -{ - return m_name; -} - -void QQuickImageSelector::setName(const QString &name) -{ - if (m_name == name) - return; - - m_name = name; - if (m_complete) - updateSource(); -} - -QString QQuickImageSelector::path() const -{ - return m_path; -} - -void QQuickImageSelector::setPath(const QString &path) -{ - if (m_path == path) - return; - - m_path = path; - if (m_complete) - updateSource(); -} - -QVariantList QQuickImageSelector::states() const -{ - return m_allStates; -} - -void QQuickImageSelector::setStates(const QVariantList &states) -{ - if (m_allStates == states) - return; - - m_allStates = states; - if (updateActiveStates() && m_complete) - updateSource(); -} - -QString QQuickImageSelector::separator() const -{ - return m_separator; -} - -void QQuickImageSelector::setSeparator(const QString &separator) -{ - if (m_separator == separator) - return; - - m_separator = separator; - if (m_complete) - updateSource(); -} - -bool QQuickImageSelector::cache() const -{ - return m_cache; -} - -void QQuickImageSelector::setCache(bool cache) -{ - m_cache = cache; -} - -void QQuickImageSelector::write(const QVariant &value) -{ - setUrl(value.toUrl()); -} - -void QQuickImageSelector::setTarget(const QQmlProperty &property) -{ - m_property = property; -} - -void QQuickImageSelector::classBegin() -{ -} - -void QQuickImageSelector::componentComplete() -{ - setUrl(m_property.read().toUrl()); - m_complete = true; - updateSource(); -} - -QStringList QQuickImageSelector::fileExtensions() const -{ - static const QStringList extensions = QStringList() << QStringLiteral("png"); - return extensions; -} - -QString QQuickImageSelector::cacheKey() const -{ - if (!m_cache) - return QString(); - - return m_path + m_name + m_activeStates.join(m_separator); -} - -void QQuickImageSelector::updateSource() -{ - static QCache<QString, QString> cache(cacheSize()); - - const QString key = cacheKey(); - - QString bestFilePath; - - if (m_cache) { - QString *cachedPath = cache.object(key); - if (cachedPath) - bestFilePath = *cachedPath; - } - - // note: a cached file path may be empty - if (bestFilePath.isNull()) { - QDir dir(m_path); - int bestScore = -1; - - const QStringList extensions = fileExtensions(); - - const QList<QStringList> statePerms = permutations(m_activeStates); - for (const QStringList &perm : statePerms) { - const QString filePath = findFile(dir, m_name + m_separator + perm.join(m_separator), extensions); - if (!filePath.isEmpty()) { - int score = calculateScore(perm); - if (score > bestScore) { - bestScore = score; - bestFilePath = filePath; - } - } - } - - if (bestFilePath.isEmpty()) - bestFilePath = findFile(dir, m_name, extensions); - - if (m_cache) - cache.insert(key, new QString(bestFilePath)); - } - - qCDebug(lcQtQuickControlsImagine) << m_name << m_activeStates << "->" << bestFilePath; - - if (bestFilePath.startsWith(QLatin1Char(':'))) - setSource(QUrl(QLatin1String("qrc") + bestFilePath)); - else - setSource(QUrl::fromLocalFile(bestFilePath)); -} - -void QQuickImageSelector::setUrl(const QUrl &url) -{ - QFileInfo fileInfo(QQmlFile::urlToLocalFileOrQrc(url)); - setName(fileInfo.fileName()); - setPath(fileInfo.path()); -} - -bool QQuickImageSelector::updateActiveStates() -{ - QStringList active; - for (const QVariant &v : qAsConst(m_allStates)) { - const QVariantMap state = v.toMap(); - if (state.isEmpty()) - continue; - auto it = state.begin(); - if (it.value().toBool()) - active += it.key(); - } - - if (m_activeStates == active) - return false; - - m_activeStates = active; - return true; -} - -int QQuickImageSelector::calculateScore(const QStringList &states) const -{ - int score = 0; - for (int i = 0; i < states.count(); ++i) - score += (m_activeStates.count() - m_activeStates.indexOf(states.at(i))) << 1; - return score; -} - -QQuickNinePatchImageSelector::QQuickNinePatchImageSelector(QObject *parent) - : QQuickImageSelector(parent) -{ -} - -QStringList QQuickNinePatchImageSelector::fileExtensions() const -{ - static const QStringList extensions = QStringList() << QStringLiteral("9.png") << QStringLiteral("png"); - return extensions; -} - -QQuickAnimatedImageSelector::QQuickAnimatedImageSelector(QObject *parent) - : QQuickImageSelector(parent) -{ -} - -QStringList QQuickAnimatedImageSelector::fileExtensions() const -{ - static const QStringList extensions = QStringList() << QStringLiteral("webp") << QStringLiteral("gif"); - return extensions; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/imagine/impl/qquickimageselector_p.h b/src/quickcontrols2/imagine/impl/qquickimageselector_p.h deleted file mode 100644 index 351caefb..00000000 --- a/src/quickcontrols2/imagine/impl/qquickimageselector_p.h +++ /dev/null @@ -1,157 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKIMAGESELECTOR_P_H -#define QQUICKIMAGESELECTOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qurl.h> -#include <QtCore/qobject.h> -#include <QtCore/qvariant.h> -#include <QtQml/qqmlproperty.h> -#include <QtQml/qqmlparserstatus.h> -#include <QtQml/private/qqmlpropertyvalueinterceptor_p.h> -#include <QtQml/qqmlproperty.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QQuickImageSelector : public QObject, public QQmlParserStatus, public QQmlPropertyValueInterceptor -{ - Q_OBJECT - Q_PROPERTY(QUrl source READ source NOTIFY sourceChanged FINAL) - Q_PROPERTY(QString name READ name WRITE setName FINAL) - Q_PROPERTY(QString path READ path WRITE setPath FINAL) - Q_PROPERTY(QVariantList states READ states WRITE setStates FINAL) - Q_PROPERTY(QString separator READ separator WRITE setSeparator FINAL) - Q_PROPERTY(bool cache READ cache WRITE setCache FINAL) - Q_INTERFACES(QQmlParserStatus QQmlPropertyValueInterceptor) - QML_NAMED_ELEMENT(ImageSelector) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickImageSelector(QObject *parent = nullptr); - - QUrl source() const; - void setSource(const QUrl &source); - - QString name() const; - void setName(const QString &name); - - QString path() const; - void setPath(const QString &path); - - QVariantList states() const; - void setStates(const QVariantList &states); - - QString separator() const; - void setSeparator(const QString &separator); - - bool cache() const; - void setCache(bool cache); - - void write(const QVariant &value) override; - void setTarget(const QQmlProperty &property) override; - -Q_SIGNALS: - void sourceChanged(); - -protected: - void classBegin() override; - void componentComplete() override; - - virtual QStringList fileExtensions() const; - - QString cacheKey() const; - void updateSource(); - void setUrl(const QUrl &url); - bool updateActiveStates(); - int calculateScore(const QStringList &states) const; - -private: - bool m_cache = false; - bool m_complete = false; - QUrl m_source; - QString m_path; - QString m_name; - QString m_separator = QLatin1String("-"); - QVariantList m_allStates; - QStringList m_activeStates; - QQmlProperty m_property; -}; - -class QQuickNinePatchImageSelector : public QQuickImageSelector -{ - Q_OBJECT - QML_NAMED_ELEMENT(NinePatchImageSelector) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickNinePatchImageSelector(QObject *parent = nullptr); - -protected: - QStringList fileExtensions() const override; -}; - -class QQuickAnimatedImageSelector : public QQuickImageSelector -{ - Q_OBJECT - QML_NAMED_ELEMENT(AnimatedImageSelector) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickAnimatedImageSelector(QObject *parent = nullptr); - -protected: - QStringList fileExtensions() const override; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickImageSelector) -QML_DECLARE_TYPE(QQuickAnimatedImageSelector) - -#endif // QQUICKIMAGESELECTOR_P_H diff --git a/src/quickcontrols2/imagine/impl/qquickninepatchimage.cpp b/src/quickcontrols2/imagine/impl/qquickninepatchimage.cpp deleted file mode 100644 index 66404ba4..00000000 --- a/src/quickcontrols2/imagine/impl/qquickninepatchimage.cpp +++ /dev/null @@ -1,469 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickninepatchimage_p.h" - -#include <QtCore/qfileinfo.h> -#include <QtQuick/qsggeometry.h> -#include <QtQuick/qsgtexturematerial.h> -#include <QtQuick/private/qsgnode_p.h> -#include <QtQuick/private/qquickimage_p_p.h> - -QT_BEGIN_NAMESPACE - -struct QQuickNinePatchData -{ - QList<qreal> coordsForSize(qreal count) const; - - inline bool isNull() const { return data.isEmpty(); } - inline int count() const { return data.size(); } - inline qreal at(int index) const { return data.at(index); } - inline qreal size() const { return data.last(); } - - void fill(const QList<qreal> &coords, qreal count); - void clear(); - -private: - bool inverted = false; - QList<qreal> data; -}; - -QList<qreal> QQuickNinePatchData::coordsForSize(qreal size) const -{ - // n = number of stretchable sections - // We have to compensate when adding 0 and/or - // the source image width to the divs vector. - const int l = data.size(); - const int n = (inverted ? l - 1 : l) / 2; - const qreal stretch = (size - data.last()) / n; - - QList<qreal> coords; - coords.reserve(l); - coords.append(0); - - bool stretched = !inverted; - for (int i = 1; i < l; ++i) { - qreal advance = data[i] - data[i - 1]; - if (stretched) - advance += stretch; - coords.append(coords.last() + advance); - - stretched = !stretched; - } - - return coords; -} - -void QQuickNinePatchData::fill(const QList<qreal> &coords, qreal size) -{ - data.clear(); - inverted = coords.isEmpty() || coords.first() != 0; - - // Reserve an extra item in case we need to add the image width/height - if (inverted) { - data.reserve(coords.size() + 2); - data.append(0); - } else { - data.reserve(coords.size() + 1); - } - - data += coords; - data.append(size); -} - -void QQuickNinePatchData::clear() -{ - data.clear(); -} - -class QQuickNinePatchNode : public QSGGeometryNode -{ -public: - QQuickNinePatchNode(); - ~QQuickNinePatchNode(); - - void initialize(QSGTexture *texture, const QSizeF &targetSize, const QSize &sourceSize, - const QQuickNinePatchData &xDivs, const QQuickNinePatchData &yDivs, qreal dpr); - -private: - QSGGeometry m_geometry; - QSGTextureMaterial m_material; -}; - -QQuickNinePatchNode::QQuickNinePatchNode() - : m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4) -{ - m_geometry.setDrawingMode(QSGGeometry::DrawTriangles); - setGeometry(&m_geometry); - setMaterial(&m_material); -} - -QQuickNinePatchNode::~QQuickNinePatchNode() -{ - delete m_material.texture(); -} - -void QQuickNinePatchNode::initialize(QSGTexture *texture, const QSizeF &targetSize, const QSize &sourceSize, - const QQuickNinePatchData &xDivs, const QQuickNinePatchData &yDivs, qreal dpr) -{ - delete m_material.texture(); - m_material.setTexture(texture); - - const int xlen = xDivs.count(); - const int ylen = yDivs.count(); - - if (xlen > 0 && ylen > 0) { - const int quads = (xlen - 1) * (ylen - 1); - static const int verticesPerQuad = 6; - m_geometry.allocate(xlen * ylen, verticesPerQuad * quads); - - QSGGeometry::TexturedPoint2D *vertices = m_geometry.vertexDataAsTexturedPoint2D(); - QList<qreal> xCoords = xDivs.coordsForSize(targetSize.width()); - QList<qreal> yCoords = yDivs.coordsForSize(targetSize.height()); - - for (int y = 0; y < ylen; ++y) { - for (int x = 0; x < xlen; ++x, ++vertices) - vertices->set(xCoords[x] / dpr, yCoords[y] / dpr, - xDivs.at(x) / sourceSize.width(), - yDivs.at(y) / sourceSize.height()); - } - - quint16 *indices = m_geometry.indexDataAsUShort(); - int n = quads; - for (int q = 0; n--; ++q) { - if ((q + 1) % xlen == 0) // next row - ++q; - // Bottom-left half quad triangle - indices[0] = q; - indices[1] = q + xlen; - indices[2] = q + xlen + 1; - - // Top-right half quad triangle - indices[3] = q; - indices[4] = q + xlen + 1; - indices[5] = q + 1; - - indices += verticesPerQuad; - } - } - - markDirty(QSGNode::DirtyGeometry | QSGNode::DirtyMaterial); -} - -class QQuickNinePatchImagePrivate : public QQuickImagePrivate -{ - Q_DECLARE_PUBLIC(QQuickNinePatchImage) - -public: - void updatePatches(); - void updatePaddings(const QSizeF &size, const QList<qreal> &horizontal, const QList<qreal> &vertical); - void updateInsets(const QList<qreal> &horizontal, const QList<qreal> &vertical); - - bool resetNode = false; - qreal topPadding = 0; - qreal leftPadding = 0; - qreal rightPadding = 0; - qreal bottomPadding = 0; - qreal topInset = 0; - qreal leftInset = 0; - qreal rightInset = 0; - qreal bottomInset = 0; - - QImage ninePatch; - QQuickNinePatchData xDivs; - QQuickNinePatchData yDivs; -}; - -static QList<qreal> readCoords(const QRgb *data, int from, int count, int offset, QRgb color) -{ - int p1 = -1; - QList<qreal> coords; - for (int i = 0; i < count; ++i) { - int p2 = from + i * offset; - if (data[p2] == color) { - // colored pixel - if (p1 == -1) - p1 = i; - } else { - // empty pixel - if (p1 != -1) { - coords << p1 << i; - p1 = -1; - } - } - } - return coords; -} - -void QQuickNinePatchImagePrivate::updatePatches() -{ - if (ninePatch.isNull()) - return; - - int w = ninePatch.width(); - int h = ninePatch.height(); - const QRgb *data = reinterpret_cast<const QRgb *>(ninePatch.constBits()); - - const QRgb black = qRgb(0,0,0); - const QRgb red = qRgb(255,0,0); - - xDivs.fill(readCoords(data, 1, w - 1, 1, black), w - 2); // top left -> top right - yDivs.fill(readCoords(data, w, h - 1, w, black), h - 2); // top left -> bottom left - - QList<qreal> hInsets = readCoords(data, (h - 1) * w + 1, w - 1, 1, red); // bottom left -> bottom right - QList<qreal> vInsets = readCoords(data, 2 * w - 1, h - 1, w, red); // top right -> bottom right - updateInsets(hInsets, vInsets); - - const QSizeF sz(w - leftInset - rightInset, h - topInset - bottomInset); - QList<qreal> hPaddings = readCoords(data, (h - 1) * w + leftInset + 1, sz.width() - 2, 1, black); // bottom left -> bottom right - QList<qreal> vPaddings = readCoords(data, (2 + topInset) * w - 1, sz.height() - 2, w, black); // top right -> bottom right - updatePaddings(sz, hPaddings, vPaddings); -} - -void QQuickNinePatchImagePrivate::updatePaddings(const QSizeF &size, const QList<qreal> &horizontal, const QList<qreal> &vertical) -{ - Q_Q(QQuickNinePatchImage); - qreal oldTopPadding = topPadding; - qreal oldLeftPadding = leftPadding; - qreal oldRightPadding = rightPadding; - qreal oldBottomPadding = bottomPadding; - - if (horizontal.count() >= 2) { - leftPadding = horizontal.first(); - rightPadding = size.width() - horizontal.last() - 2; - } else { - leftPadding = 0; - rightPadding = 0; - } - - if (vertical.count() >= 2) { - topPadding = vertical.first(); - bottomPadding = size.height() - vertical.last() - 2; - } else { - topPadding = 0; - bottomPadding = 0; - } - - if (!qFuzzyCompare(oldTopPadding, topPadding)) - emit q->topPaddingChanged(); - if (!qFuzzyCompare(oldBottomPadding, bottomPadding)) - emit q->bottomPaddingChanged(); - if (!qFuzzyCompare(oldLeftPadding, leftPadding)) - emit q->leftPaddingChanged(); - if (!qFuzzyCompare(oldRightPadding, rightPadding)) - emit q->rightPaddingChanged(); -} - -void QQuickNinePatchImagePrivate::updateInsets(const QList<qreal> &horizontal, const QList<qreal> &vertical) -{ - Q_Q(QQuickNinePatchImage); - qreal oldTopInset = topInset; - qreal oldLeftInset = leftInset; - qreal oldRightInset = rightInset; - qreal oldBottomInset = bottomInset; - - if (horizontal.count() >= 2 && horizontal.first() == 0) - leftInset = horizontal.at(1); - else - leftInset = 0; - - if (horizontal.count() == 2 && horizontal.first() > 0) - rightInset = horizontal.last() - horizontal.first(); - else if (horizontal.count() == 4) - rightInset = horizontal.last() - horizontal.at(2); - else - rightInset = 0; - - if (vertical.count() >= 2 && vertical.first() == 0) - topInset = vertical.at(1); - else - topInset = 0; - - if (vertical.count() == 2 && vertical.first() > 0) - bottomInset = vertical.last() - vertical.first(); - else if (vertical.count() == 4) - bottomInset = vertical.last() - vertical.at(2); - else - bottomInset = 0; - - if (!qFuzzyCompare(oldTopInset, topInset)) - emit q->topInsetChanged(); - if (!qFuzzyCompare(oldBottomInset, bottomInset)) - emit q->bottomInsetChanged(); - if (!qFuzzyCompare(oldLeftInset, leftInset)) - emit q->leftInsetChanged(); - if (!qFuzzyCompare(oldRightInset, rightInset)) - emit q->rightInsetChanged(); -} - -QQuickNinePatchImage::QQuickNinePatchImage(QQuickItem *parent) - : QQuickImage(*(new QQuickNinePatchImagePrivate), parent) -{ -} - -qreal QQuickNinePatchImage::topPadding() const -{ - Q_D(const QQuickNinePatchImage); - return d->topPadding / d->devicePixelRatio; -} - -qreal QQuickNinePatchImage::leftPadding() const -{ - Q_D(const QQuickNinePatchImage); - return d->leftPadding / d->devicePixelRatio; -} - -qreal QQuickNinePatchImage::rightPadding() const -{ - Q_D(const QQuickNinePatchImage); - return d->rightPadding / d->devicePixelRatio; -} - -qreal QQuickNinePatchImage::bottomPadding() const -{ - Q_D(const QQuickNinePatchImage); - return d->bottomPadding / d->devicePixelRatio; -} - -qreal QQuickNinePatchImage::topInset() const -{ - Q_D(const QQuickNinePatchImage); - return d->topInset / d->devicePixelRatio; -} - -qreal QQuickNinePatchImage::leftInset() const -{ - Q_D(const QQuickNinePatchImage); - return d->leftInset / d->devicePixelRatio; -} - -qreal QQuickNinePatchImage::rightInset() const -{ - Q_D(const QQuickNinePatchImage); - return d->rightInset / d->devicePixelRatio; -} - -qreal QQuickNinePatchImage::bottomInset() const -{ - Q_D(const QQuickNinePatchImage); - return d->bottomInset / d->devicePixelRatio; -} - -void QQuickNinePatchImage::pixmapChange() -{ - Q_D(QQuickNinePatchImage); - if (QFileInfo(d->url.fileName()).completeSuffix().toLower() == QLatin1String("9.png")) { - // Keep resetNode if it is already set, we do not want to miss an - // ImageNode->NinePatchNode change. Without this there's a chance one gets - // an incorrect cast on oldNode every once in a while with source changes. - if (!d->resetNode) - d->resetNode = d->ninePatch.isNull(); - - d->ninePatch = d->pix.image(); - if (d->ninePatch.depth() != 32) - d->ninePatch = d->ninePatch.convertToFormat(QImage::Format_ARGB32); - - int w = d->ninePatch.width(); - int h = d->ninePatch.height(); - d->pix.setImage(QImage(d->ninePatch.constBits() + 4 * (w + 1), w - 2, h - 2, d->ninePatch.bytesPerLine(), d->ninePatch.format())); - - d->updatePatches(); - } else { - /* - Only change resetNode when it's false; i.e. when no reset is pending. - updatePaintNode() will take care of setting it to false if it's true. - - Consider the following changes in source: - - normal.png => press.9.png => normal.png => focus.png - - If the last two events happen quickly, pixmapChange() can be called - twice with no call to updatePaintNode() inbetween. On the first call, - resetNode will be true (because ninePatch is not null since it is still - in the process of going from a 9-patch image to a regular image), - and on the second call, resetNode would be false if we didn't have this check. - This results in the oldNode never being deleted, and QQuickImage - tries to static_cast a QQuickNinePatchImage to a QSGInternalImageNode. - */ - if (!d->resetNode) - d->resetNode = !d->ninePatch.isNull(); - d->ninePatch = QImage(); - } - QQuickImage::pixmapChange(); -} - -QSGNode *QQuickNinePatchImage::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data) -{ - Q_D(QQuickNinePatchImage); - Q_UNUSED(data); - - if (d->resetNode) { - delete oldNode; - oldNode = nullptr; - d->resetNode = false; - } - - QSizeF sz = size(); - QImage image = d->pix.image(); - if (!sz.isValid() || image.isNull()) { - delete oldNode; - return nullptr; - } - - if (d->ninePatch.isNull()) - return QQuickImage::updatePaintNode(oldNode, data); - - QQuickNinePatchNode *patchNode = static_cast<QQuickNinePatchNode *>(oldNode); - if (!patchNode) - patchNode = new QQuickNinePatchNode; - -#ifdef QSG_RUNTIME_DESCRIPTION - qsgnode_set_description(patchNode, QString::fromLatin1("QQuickNinePatchImage: '%1'").arg(d->url.toString())); -#endif - - // The image may wrap non-owned data (due to pixmapChange). Ensure we never - // pass such an image to the scenegraph, because with a separate render - // thread the data may become invalid (in a subsequent pixmapChange on the - // gui thread) by the time the renderer gets to do something with the QImage - // passed in here. - image.detach(); - - QSGTexture *texture = window()->createTextureFromImage(image); - patchNode->initialize(texture, sz * d->devicePixelRatio, image.size(), d->xDivs, d->yDivs, d->devicePixelRatio); - return patchNode; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/imagine/impl/qquickninepatchimage_p.h b/src/quickcontrols2/imagine/impl/qquickninepatchimage_p.h deleted file mode 100644 index 78cc3068..00000000 --- a/src/quickcontrols2/imagine/impl/qquickninepatchimage_p.h +++ /dev/null @@ -1,108 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKNINEPATCHIMAGE_P_H -#define QQUICKNINEPATCHIMAGE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquickimage_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickNinePatchImagePrivate; - -class QQuickNinePatchImage : public QQuickImage -{ - Q_OBJECT - Q_PROPERTY(qreal topPadding READ topPadding NOTIFY topPaddingChanged FINAL) - Q_PROPERTY(qreal leftPadding READ leftPadding NOTIFY leftPaddingChanged FINAL) - Q_PROPERTY(qreal rightPadding READ rightPadding NOTIFY rightPaddingChanged FINAL) - Q_PROPERTY(qreal bottomPadding READ bottomPadding NOTIFY bottomPaddingChanged FINAL) - Q_PROPERTY(qreal topInset READ topInset NOTIFY topInsetChanged FINAL) - Q_PROPERTY(qreal leftInset READ leftInset NOTIFY leftInsetChanged FINAL) - Q_PROPERTY(qreal rightInset READ rightInset NOTIFY rightInsetChanged FINAL) - Q_PROPERTY(qreal bottomInset READ bottomInset NOTIFY bottomInsetChanged FINAL) - QML_NAMED_ELEMENT(NinePatchImage) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickNinePatchImage(QQuickItem *parent = nullptr); - - qreal topPadding() const; - qreal leftPadding() const; - qreal rightPadding() const; - qreal bottomPadding() const; - - qreal topInset() const; - qreal leftInset() const; - qreal rightInset() const; - qreal bottomInset() const; - -Q_SIGNALS: - void topPaddingChanged(); - void leftPaddingChanged(); - void rightPaddingChanged(); - void bottomPaddingChanged(); - - void topInsetChanged(); - void leftInsetChanged(); - void rightInsetChanged(); - void bottomInsetChanged(); - -protected: - void pixmapChange() override; - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data) override; - -private: - Q_DISABLE_COPY(QQuickNinePatchImage) - Q_DECLARE_PRIVATE(QQuickNinePatchImage) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickNinePatchImage) - -#endif // QQUICKNINEPATCHIMAGE_P_H diff --git a/src/quickcontrols2/imagine/impl/shaders/+glslcore/OpacityMask.frag b/src/quickcontrols2/imagine/impl/shaders/+glslcore/OpacityMask.frag deleted file mode 100644 index 529e2696..00000000 --- a/src/quickcontrols2/imagine/impl/shaders/+glslcore/OpacityMask.frag +++ /dev/null @@ -1,13 +0,0 @@ -#version 150 - -uniform float qt_Opacity; -uniform sampler2D source; -uniform sampler2D maskSource; - -in vec2 qt_TexCoord0; -out vec4 fragColor; - -void main() -{ - fragColor = texture(source, qt_TexCoord0.st) * (texture(maskSource, qt_TexCoord0.st).a) * qt_Opacity; -} diff --git a/src/quickcontrols2/imagine/impl/shaders/+qsb/OpacityMask.frag b/src/quickcontrols2/imagine/impl/shaders/+qsb/OpacityMask.frag Binary files differdeleted file mode 100644 index 331b30b8..00000000 --- a/src/quickcontrols2/imagine/impl/shaders/+qsb/OpacityMask.frag +++ /dev/null diff --git a/src/quickcontrols2/imagine/impl/shaders/OpacityMask.frag b/src/quickcontrols2/imagine/impl/shaders/OpacityMask.frag deleted file mode 100644 index 84f9bc3e..00000000 --- a/src/quickcontrols2/imagine/impl/shaders/OpacityMask.frag +++ /dev/null @@ -1,7 +0,0 @@ -varying highp vec2 qt_TexCoord0; -uniform highp float qt_Opacity; -uniform lowp sampler2D source; -uniform lowp sampler2D maskSource; -void main(void) { - gl_FragColor = texture2D(source, qt_TexCoord0.st) * (texture2D(maskSource, qt_TexCoord0.st).a) * qt_Opacity; -} diff --git a/src/quickcontrols2/imagine/impl/shaders/OpacityMask_rhi.frag b/src/quickcontrols2/imagine/impl/shaders/OpacityMask_rhi.frag deleted file mode 100644 index 9ae32499..00000000 --- a/src/quickcontrols2/imagine/impl/shaders/OpacityMask_rhi.frag +++ /dev/null @@ -1,17 +0,0 @@ -#version 440 - -layout(location = 0) in vec2 qt_TexCoord0; -layout(location = 0) out vec4 fragColor; - -layout(std140, binding = 0) uniform buf { - mat4 qt_Matrix; - float qt_Opacity; -} ubuf; - -layout(binding = 1) uniform sampler2D source; -layout(binding = 2) uniform sampler2D maskSource; - -void main() -{ - fragColor = texture(source, qt_TexCoord0.st) * (texture(maskSource, qt_TexCoord0.st).a) * ubuf.qt_Opacity; -} diff --git a/src/quickcontrols2/imagine/impl/shaders/compile.bat b/src/quickcontrols2/imagine/impl/shaders/compile.bat deleted file mode 100644 index 8f16d7ac..00000000 --- a/src/quickcontrols2/imagine/impl/shaders/compile.bat +++ /dev/null @@ -1,40 +0,0 @@ -::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -:: -:: Copyright (C) 2020 The Qt Company Ltd. -:: Contact: https://www.qt.io/licensing/ -:: -:: This file is part of the QtQuick module of the Qt Toolkit. -:: -:: $QT_BEGIN_LICENSE:LGPL$ -:: Commercial License Usage -:: Licensees holding valid commercial Qt licenses may use this file in -:: accordance with the commercial license agreement provided with the -:: Software or, alternatively, in accordance with the terms contained in -:: a written agreement between you and The Qt Company. For licensing terms -:: and conditions see https://www.qt.io/terms-conditions. For further -:: information use the contact form at https://www.qt.io/contact-us. -:: -:: GNU Lesser General Public License Usage -:: Alternatively, this file may be used under the terms of the GNU Lesser -:: General Public License version 3 as published by the Free Software -:: Foundation and appearing in the file LICENSE.LGPL3 included in the -:: packaging of this file. Please review the following information to -:: ensure the GNU Lesser General Public License version 3 requirements -:: will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -:: -:: GNU General Public License Usage -:: Alternatively, this file may be used under the terms of the GNU -:: General Public License version 2.0 or (at your option) the GNU General -:: Public license version 3 or any later version approved by the KDE Free -:: Qt Foundation. The licenses are as published by the Free Software -:: Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -:: included in the packaging of this file. Please review the following -:: information to ensure the GNU General Public License requirements will -:: be met: https://www.gnu.org/licenses/gpl-2.0.html and -:: https://www.gnu.org/licenses/gpl-3.0.html. -:: -:: $QT_END_LICENSE$ -:: -::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - -qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/OpacityMask.frag OpacityMask_rhi.frag diff --git a/src/quickcontrols2/imagine/qquickimaginestyle.cpp b/src/quickcontrols2/imagine/qquickimaginestyle.cpp deleted file mode 100644 index 37e55b61..00000000 --- a/src/quickcontrols2/imagine/qquickimaginestyle.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickimaginestyle_p.h" - -#include <QtCore/qsettings.h> -#include <QtQuickControls2/private/qquickstyle_p.h> - -QT_BEGIN_NAMESPACE - -Q_GLOBAL_STATIC_WITH_ARGS(QString, GlobalPath, (QLatin1String("qrc:/qt-project.org/imports/QtQuick/Controls/Imagine/images/"))) - -static QString ensureSlash(const QString &path) -{ - const QChar slash = QLatin1Char('/'); - return path.endsWith(slash) ? path : path + slash; -} - -QQuickImagineStyle::QQuickImagineStyle(QObject *parent) - : QQuickAttachedObject(parent), - m_path(*GlobalPath()) -{ - init(); -} - -QQuickImagineStyle *QQuickImagineStyle::qmlAttachedProperties(QObject *object) -{ - return new QQuickImagineStyle(object); -} - -QString QQuickImagineStyle::path() const -{ - return m_path; -} - -void QQuickImagineStyle::setPath(const QString &path) -{ - m_explicitPath = true; - if (m_path == path) - return; - - m_path = path; - propagatePath(); - - emit pathChanged(); -} - -void QQuickImagineStyle::inheritPath(const QString &path) -{ - if (m_explicitPath || m_path == path) - return; - - m_path = path; - propagatePath(); - emit pathChanged(); -} - -void QQuickImagineStyle::propagatePath() -{ - const auto styles = attachedChildren(); - for (QQuickAttachedObject *child : styles) { - QQuickImagineStyle *imagine = qobject_cast<QQuickImagineStyle *>(child); - if (imagine) - imagine->inheritPath(m_path); - } -} - -void QQuickImagineStyle::resetPath() -{ - if (!m_explicitPath) - return; - - m_explicitPath = false; - QQuickImagineStyle *imagine = qobject_cast<QQuickImagineStyle *>(attachedParent()); - inheritPath(imagine ? imagine->path() : *GlobalPath()); -} - -QUrl QQuickImagineStyle::url() const -{ - // Using ApplicationWindow as an example, its NinePatchImage url - // was previously assigned like this: - // - // soruce: Imagine.path + "applicationwindow-background" - // - // If Imagine.path is set to ":/images" by the user, then the final URL would be: - // - // QUrl("file:///home/user/qt/qtbase/qml/QtQuick/Controls/Imagine/:/images/applicationwindow-background") - // - // To ensure that the correct URL is constructed, we do it ourselves here, - // and then the control QML files use the "url" property instead. - const QString path = ensureSlash(m_path); - if (path.startsWith(QLatin1String("qrc"))) - return QUrl(path); - - if (path.startsWith(QLatin1String(":/"))) - return QUrl(QLatin1String("qrc") + path); - - return QUrl::fromLocalFile(path); -} - -void QQuickImagineStyle::attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent) -{ - Q_UNUSED(oldParent); - QQuickImagineStyle *imagine = qobject_cast<QQuickImagineStyle *>(newParent); - if (imagine) - inheritPath(imagine->path()); -} - -static QByteArray resolveSetting(const QByteArray &env, const QSharedPointer<QSettings> &settings, const QString &name) -{ - QByteArray value = qgetenv(env); -#if QT_CONFIG(settings) - if (value.isNull() && !settings.isNull()) - value = settings->value(name).toByteArray(); -#endif - return value; -} - -void QQuickImagineStyle::init() -{ - static bool globalsInitialized = false; - if (!globalsInitialized) { - QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(QStringLiteral("Imagine")); - - QString path = QString::fromUtf8(resolveSetting("QT_QUICK_CONTROLS_IMAGINE_PATH", settings, QStringLiteral("Path"))); - if (!path.isEmpty()) - *GlobalPath() = m_path = ensureSlash(path); - - globalsInitialized = true; - } - - QQuickAttachedObject::init(); // TODO: lazy init? -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/imagine/qquickimaginestyle_p.h b/src/quickcontrols2/imagine/qquickimaginestyle_p.h deleted file mode 100644 index 212096b9..00000000 --- a/src/quickcontrols2/imagine/qquickimaginestyle_p.h +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKIMAGINESTYLE_P_H -#define QQUICKIMAGINESTYLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qvariant.h> -#include <QtQml/qqml.h> -#include <QtQuickControls2Impl/private/qquickattachedobject_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickImagineStyle : public QQuickAttachedObject -{ - Q_OBJECT - Q_PROPERTY(QString path READ path WRITE setPath RESET resetPath NOTIFY pathChanged FINAL) - Q_PROPERTY(QUrl url READ url NOTIFY pathChanged FINAL) - QML_NAMED_ELEMENT(Imagine) - QML_ATTACHED(QQuickImagineStyle) - QML_UNCREATABLE("") - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickImagineStyle(QObject *parent = nullptr); - - static QQuickImagineStyle *qmlAttachedProperties(QObject *object); - - QString path() const; - void setPath(const QString &path); - void inheritPath(const QString &path); - void propagatePath(); - void resetPath(); - - QUrl url() const; - -Q_SIGNALS: - void pathChanged(); - -protected: - void attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent) override; - -private: - void init(); - - bool m_explicitPath = false; - QString m_path; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPEINFO(QQuickImagineStyle, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKIMAGINESTYLE_P_H diff --git a/src/quickcontrols2/imagine/qquickimaginetheme.cpp b/src/quickcontrols2/imagine/qquickimaginetheme.cpp deleted file mode 100644 index 7bae036a..00000000 --- a/src/quickcontrols2/imagine/qquickimaginetheme.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickimaginetheme_p.h" - -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -QT_BEGIN_NAMESPACE - -void QQuickImagineTheme::initialize(QQuickTheme *theme) -{ - QFont systemFont; - systemFont.setFamilies(QStringList{QLatin1String("Open Sans")}); - theme->setFont(QQuickTheme::System, systemFont); - - const QColor accentColor = QColor::fromRgb(0x4fc1e9); - const QColor windowTextColor = QColor::fromRgb(0x434a54); - const QColor disabledWindowTextColor = QColor::fromRgb(0xccd1d9); - - QPalette systemPalette; - systemPalette.setColor(QPalette::ButtonText, Qt::white); - systemPalette.setColor(QPalette::BrightText, Qt::white); - systemPalette.setColor(QPalette::Highlight, accentColor); - systemPalette.setColor(QPalette::HighlightedText, Qt::white); - systemPalette.setColor(QPalette::Text, windowTextColor); - systemPalette.setColor(QPalette::ToolTipText, Qt::white); - systemPalette.setColor(QPalette::WindowText, windowTextColor); - systemPalette.setColor(QPalette::Disabled, QPalette::Text, disabledWindowTextColor); - systemPalette.setColor(QPalette::Disabled, QPalette::WindowText, disabledWindowTextColor); - theme->setPalette(QQuickTheme::System, systemPalette); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/imagine/qquickimaginetheme_p.h b/src/quickcontrols2/imagine/qquickimaginetheme_p.h deleted file mode 100644 index d3d43074..00000000 --- a/src/quickcontrols2/imagine/qquickimaginetheme_p.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKIMAGINETHEME_P_H -#define QQUICKIMAGINETHEME_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qglobal.h> - -QT_BEGIN_NAMESPACE - -class QQuickTheme; - -class QQuickImagineTheme -{ -public: - static void initialize(QQuickTheme *theme); -}; - -QT_END_NAMESPACE - -#endif // QQUICKIMAGINETHEME_P_H diff --git a/src/quickcontrols2/imagine/qtquickcontrols2imaginestyleplugin.cpp b/src/quickcontrols2/imagine/qtquickcontrols2imaginestyleplugin.cpp deleted file mode 100644 index bc885cfd..00000000 --- a/src/quickcontrols2/imagine/qtquickcontrols2imaginestyleplugin.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickimaginestyle_p.h" -#include "qquickimaginetheme_p.h" - -#include <QtCore/qloggingcategory.h> -#include <QtQml/qqml.h> -#include <QtQuickControls2/private/qquickstyleplugin_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -extern void qml_register_types_QtQuick_Controls_Imagine(); - -QT_BEGIN_NAMESPACE - -class QtQuickControls2ImagineStylePlugin : public QQuickStylePlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) - -public: - QtQuickControls2ImagineStylePlugin(QObject *parent = nullptr); - - QString name() const override; - void initializeTheme(QQuickTheme *theme) override; - - QQuickImagineTheme theme; -}; - -QtQuickControls2ImagineStylePlugin::QtQuickControls2ImagineStylePlugin(QObject *parent) : QQuickStylePlugin(parent) -{ - volatile auto registration = &qml_register_types_QtQuick_Controls_Imagine; - Q_UNUSED(registration); -} - -QString QtQuickControls2ImagineStylePlugin::name() const -{ - return QStringLiteral("Imagine"); -} - -void QtQuickControls2ImagineStylePlugin::initializeTheme(QQuickTheme *theme) -{ - this->theme.initialize(theme); -} - -QT_END_NAMESPACE - -#include "qtquickcontrols2imaginestyleplugin.moc" diff --git a/src/quickcontrols2/macos/Button.qml b/src/quickcontrols2/macos/Button.qml deleted file mode 100644 index 58658c52..00000000 --- a/src/quickcontrols2/macos/Button.qml +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultButton { - id: control - readonly property Item __focusFrameTarget: control -} diff --git a/src/quickcontrols2/macos/CMakeLists.txt b/src/quickcontrols2/macos/CMakeLists.txt deleted file mode 100644 index d2578070..00000000 --- a/src/quickcontrols2/macos/CMakeLists.txt +++ /dev/null @@ -1,49 +0,0 @@ -##################################################################### -## qtquickcontrols2macosstyleplugin Plugin: -##################################################################### - -set(qml_files - "Button.qml" - "Slider.qml" - "GroupBox.qml" - "CheckBox.qml" - "RadioButton.qml" - "SpinBox.qml" - "TextField.qml" - "Frame.qml" - "TextArea.qml" - "ComboBox.qml" - "ScrollView.qml" - "ScrollBar.qml" - "ProgressBar.qml" - "Dial.qml" -) -set_source_files_properties(${qml_files} PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) - -qt_internal_add_qml_module(qtquickcontrols2macosstyleplugin - URI "QtQuick.Controls.macOS" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2MacOSStylePlugin - IMPORTS - QtQuick.Controls.Fusion/auto - PAST_MAJOR_VERSIONS 2 - PLUGIN_TARGET qtquickcontrols2macosstyleplugin - NO_PLUGIN_OPTIONAL - NO_GENERATE_PLUGIN_SOURCE - SOURCES - qtquickcontrols2macosstyleplugin.cpp - QML_FILES - ${qml_files} - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickControls2Private - Qt::QuickPrivate - Qt::QuickTemplates2Private -) diff --git a/src/quickcontrols2/macos/CheckBox.qml b/src/quickcontrols2/macos/CheckBox.qml deleted file mode 100644 index 23ad4426..00000000 --- a/src/quickcontrols2/macos/CheckBox.qml +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultCheckBox { - readonly property Item __focusFrameTarget: indicator - readonly property Item __focusFrameStyleItem: indicator -} diff --git a/src/quickcontrols2/macos/ComboBox.qml b/src/quickcontrols2/macos/ComboBox.qml deleted file mode 100644 index 53baabf8..00000000 --- a/src/quickcontrols2/macos/ComboBox.qml +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultComboBox { - id: control - readonly property Item __focusFrameTarget: control - - contentItem: T.TextField { - implicitWidth: contentWidth - implicitHeight: contentHeight - text: control.editable ? control.editText : control.displayText - - enabled: control.editable - autoScroll: control.editable - readOnly: control.down - inputMethodHints: control.inputMethodHints - validator: control.validator - selectByMouse: control.selectTextByMouse - - font: control.font - color: control.editable ? control.palette.text : control.palette.buttonText - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - verticalAlignment: Text.AlignVCenter - - readonly property Item __focusFrameControl: control - } -} diff --git a/src/quickcontrols2/macos/Dial.qml b/src/quickcontrols2/macos/Dial.qml deleted file mode 100644 index 2076a54a..00000000 --- a/src/quickcontrols2/macos/Dial.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultDial { -} diff --git a/src/quickcontrols2/macos/Frame.qml b/src/quickcontrols2/macos/Frame.qml deleted file mode 100644 index f16a0835..00000000 --- a/src/quickcontrols2/macos/Frame.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultFrame { -} diff --git a/src/quickcontrols2/macos/GroupBox.qml b/src/quickcontrols2/macos/GroupBox.qml deleted file mode 100644 index 142ddd15..00000000 --- a/src/quickcontrols2/macos/GroupBox.qml +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultGroupBox { - id: control - label: Item { - readonly property point labelPos : control.__nativeBackground - ? background.labelPos - : Qt.point(0,0) - x: labelPos.x + background.x - y: labelPos.y + background.y - groupBoxPadding.top - width: children[0].implicitWidth - height: children[0].implicitHeight - Text { - width: parent.width - height: parent.height - text: control.title - font: control.font - color: control.palette.windowText - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - } -} diff --git a/src/quickcontrols2/macos/ProgressBar.qml b/src/quickcontrols2/macos/ProgressBar.qml deleted file mode 100644 index 59a1689d..00000000 --- a/src/quickcontrols2/macos/ProgressBar.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultProgressBar { -} diff --git a/src/quickcontrols2/macos/RadioButton.qml b/src/quickcontrols2/macos/RadioButton.qml deleted file mode 100644 index c9cdf985..00000000 --- a/src/quickcontrols2/macos/RadioButton.qml +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultRadioButton { - readonly property Item __focusFrameTarget: indicator - readonly property Item __focusFrameStyleItem: indicator -} diff --git a/src/quickcontrols2/macos/ScrollBar.qml b/src/quickcontrols2/macos/ScrollBar.qml deleted file mode 100644 index 4a9f764b..00000000 --- a/src/quickcontrols2/macos/ScrollBar.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultScrollBar { - id: controlRoot - - contentItem: NativeStyle.ScrollBar { - control: controlRoot - subControl: NativeStyle.ScrollBar.Handle - overrideState: NativeStyle.ScrollBar.NeverHovered - } - - NativeStyle.ScrollBar { - // Fade a hovered-looking version of the handle - // on top of the default handle when hovering it - x: contentItem.x - y: contentItem.y - width: contentItem.width - height: contentItem.height - control: controlRoot - subControl: NativeStyle.ScrollBar.Handle - overrideState: NativeStyle.StyleItem.AlwaysHovered - opacity: controlRoot.hovered || control.pressed ? 1 : 0 - visible: contentItem instanceof NativeStyle.StyleItem - Behavior on opacity { NumberAnimation { duration: contentItem.transitionDuration } } - } - -} diff --git a/src/quickcontrols2/macos/ScrollView.qml b/src/quickcontrols2/macos/ScrollView.qml deleted file mode 100644 index 954c5d8a..00000000 --- a/src/quickcontrols2/macos/ScrollView.qml +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.ScrollView { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - rightPadding: ScrollBar.vertical.visible ? ScrollBar.vertical.width : 0 - bottomPadding: ScrollBar.horizontal.visible ? ScrollBar.horizontal.height : 0 - - ScrollBar.vertical: ScrollBar { - parent: control - x: control.mirrored ? 0 : control.width - width - y: 0 - height: control.height - (control.ScrollBar.horizontal.visible ? control.ScrollBar.horizontal.height : 0) - active: control.ScrollBar.horizontal.active - - NativeStyle.ScrollViewCorner { - y: parent.height - control: control - visible: control.ScrollBar.horizontal.visible - useNinePatchImage: false - } - } - - ScrollBar.horizontal: ScrollBar { - parent: control - x: 0 - y: control.height - height - width: control.width - (control.ScrollBar.vertical.visible ? control.ScrollBar.vertical.width : 0) - active: control.ScrollBar.vertical.active - } -} diff --git a/src/quickcontrols2/macos/Slider.qml b/src/quickcontrols2/macos/Slider.qml deleted file mode 100644 index 77543577..00000000 --- a/src/quickcontrols2/macos/Slider.qml +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultSlider { - id: control - readonly property Item __focusFrameTarget: handle - readonly property Item __focusFrameStyleItem: handle - - background: NativeStyle.Slider { - control: control - subControl: NativeStyle.Slider.Groove | NativeStyle.Slider.Handle - // We normally cannot use a nine patch image for the - // groove if we draw tickmarks (since then the scaling - // would scale the tickmarks too). The groove might - // also use a different background color before, and - // after, the handle. - useNinePatchImage: false - } - - handle: NativeStyle.Slider { - // The handle is hidden, since it will be drawn as a part - // of the background. But will still needs it to be here so - // that we can place the focus rect correctly. - visible: false - - control: control - subControl: NativeStyle.Slider.Handle - x: control.leftPadding + (control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) - useNinePatchImage: false - } -} diff --git a/src/quickcontrols2/macos/SpinBox.qml b/src/quickcontrols2/macos/SpinBox.qml deleted file mode 100644 index 5928d37e..00000000 --- a/src/quickcontrols2/macos/SpinBox.qml +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.SpinBox { - id: control - - property bool __nativeBackground: background instanceof NativeStyle.StyleItem - property bool nativeIndicators: up.indicator.hasOwnProperty("_qt_default") - && down.indicator.hasOwnProperty("_qt_default") - - font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - 90 /* minimum */ ) - implicitHeight: Math.max(implicitBackgroundHeight, up.implicitIndicatorHeight + down.implicitIndicatorHeight) - + topInset + bottomInset - - spacing: 2 - - // Push the background right to make room for the indicators - rightInset: nativeIndicators ? up.implicitIndicatorWidth + spacing : 0 - - leftPadding: __nativeBackground ? background.contentPadding.left: 0 - topPadding: __nativeBackground ? background.contentPadding.top: 0 - rightPadding: (__nativeBackground ? background.contentPadding.right : 0) + rightInset - bottomPadding: __nativeBackground ? background.contentPadding.bottom: 0 - - readonly property Item __focusFrameTarget: contentItem - - validator: IntValidator { - locale: control.locale.name - bottom: Math.min(control.from, control.to) - top: Math.max(control.from, control.to) - } - - contentItem: TextInput { - text: control.displayText - font: control.font - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - horizontalAlignment: Qt.AlignLeft - verticalAlignment: Qt.AlignVCenter - - topPadding: 2 - bottomPadding: 2 - leftPadding: 10 - rightPadding: 10 - - readOnly: !control.editable - validator: control.validator - inputMethodHints: control.inputMethodHints - - readonly property Item __focusFrameControl: control - } - - NativeStyle.SpinBox { - id: upAndDown - control: control - subControl: NativeStyle.SpinBox.Up - visible: nativeIndicators - x: up.indicator.x - y: up.indicator.y - useNinePatchImage: false - } - - up.indicator: Item { - x: parent.width - width - y: (parent.height / 2) - height - implicitWidth: upAndDown.width - implicitHeight: upAndDown.height / 2 - property bool _qt_default - } - - down.indicator: Item { - x: parent.width - width - y: up.indicator.y + upAndDown.height / 2 - implicitWidth: upAndDown.width - implicitHeight: upAndDown.height / 2 - property bool _qt_default - } - - background: NativeStyle.SpinBox { - control: control - subControl: NativeStyle.SpinBox.Frame - contentWidth: contentItem.implicitWidth - contentHeight: contentItem.implicitHeight - } -} diff --git a/src/quickcontrols2/macos/TextArea.qml b/src/quickcontrols2/macos/TextArea.qml deleted file mode 100644 index f6b88303..00000000 --- a/src/quickcontrols2/macos/TextArea.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultTextArea { -} diff --git a/src/quickcontrols2/macos/TextField.qml b/src/quickcontrols2/macos/TextField.qml deleted file mode 100644 index f3a748f6..00000000 --- a/src/quickcontrols2/macos/TextField.qml +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultTextField { - id: control - readonly property Item __focusFrameTarget: control -} diff --git a/src/quickcontrols2/macos/macos.pri b/src/quickcontrols2/macos/macos.pri deleted file mode 100644 index d059151e..00000000 --- a/src/quickcontrols2/macos/macos.pri +++ /dev/null @@ -1,15 +0,0 @@ -QML_FILES += \ - $$PWD/Button.qml \ - $$PWD/Slider.qml \ - $$PWD/GroupBox.qml \ - $$PWD/CheckBox.qml \ - $$PWD/RadioButton.qml \ - $$PWD/SpinBox.qml \ - $$PWD/TextField.qml \ - $$PWD/Frame.qml \ - $$PWD/TextArea.qml \ - $$PWD/ComboBox.qml \ - $$PWD/ScrollView.qml \ - $$PWD/ScrollBar.qml \ - $$PWD/ProgressBar.qml \ - $$PWD/Dial.qml \ diff --git a/src/quickcontrols2/macos/qtquickcontrols2macosstyleplugin.cpp b/src/quickcontrols2/macos/qtquickcontrols2macosstyleplugin.cpp deleted file mode 100644 index 9a4fd0ce..00000000 --- a/src/quickcontrols2/macos/qtquickcontrols2macosstyleplugin.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtQml/qqml.h> -#include <QtQuickControls2/private/qquickstyleplugin_p.h> -#include <QtQuickControls2/qquickstyle.h> - -extern void qml_register_types_QtQuick_Controls_macOS(); - -QT_BEGIN_NAMESPACE - -class QtQuickControls2MacOSStylePlugin : public QQuickStylePlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) - -public: - QtQuickControls2MacOSStylePlugin(QObject *parent = nullptr); - QString name() const override; - void initializeTheme(QQuickTheme *theme) override; -}; - - -QtQuickControls2MacOSStylePlugin::QtQuickControls2MacOSStylePlugin(QObject *parent): - QQuickStylePlugin(parent) -{ - volatile auto registration = &qml_register_types_QtQuick_Controls_macOS; - Q_UNUSED(registration); -} - -QString QtQuickControls2MacOSStylePlugin::name() const -{ - return QStringLiteral("macOS"); -} - -void QtQuickControls2MacOSStylePlugin::initializeTheme(QQuickTheme */*theme*/) -{ -} - -QT_END_NAMESPACE - -#include "qtquickcontrols2macosstyleplugin.moc" diff --git a/src/quickcontrols2/material/ApplicationWindow.qml b/src/quickcontrols2/material/ApplicationWindow.qml deleted file mode 100644 index 82a0da8b..00000000 --- a/src/quickcontrols2/material/ApplicationWindow.qml +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Window -import QtQuick.Templates as T -import QtQuick.Controls.Material - -T.ApplicationWindow { - id: window - - color: Material.backgroundColor -} diff --git a/src/quickcontrols2/material/BusyIndicator.qml b/src/quickcontrols2/material/BusyIndicator.qml deleted file mode 100644 index 621b2b43..00000000 --- a/src/quickcontrols2/material/BusyIndicator.qml +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.BusyIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - - contentItem: BusyIndicatorImpl { - implicitWidth: control.Material.touchTarget - implicitHeight: control.Material.touchTarget - color: control.Material.accentColor - - running: control.running - opacity: control.running ? 1 : 0 - Behavior on opacity { OpacityAnimator { duration: 250 } } - } -} diff --git a/src/quickcontrols2/material/Button.qml b/src/quickcontrols2/material/Button.qml deleted file mode 100644 index 352eebec..00000000 --- a/src/quickcontrols2/material/Button.qml +++ /dev/null @@ -1,117 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.Button { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - topInset: 6 - bottomInset: 6 - padding: 12 - horizontalPadding: padding - 4 - spacing: 6 - - icon.width: 24 - icon.height: 24 - icon.color: !enabled ? Material.hintTextColor : - flat && highlighted ? Material.accentColor : - highlighted ? Material.primaryHighlightedTextColor : Material.foreground - - Material.elevation: flat ? control.down || control.hovered ? 2 : 0 - : control.down ? 8 : 2 - Material.background: flat ? "transparent" : undefined - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: !control.enabled ? control.Material.hintTextColor : - control.flat && control.highlighted ? control.Material.accentColor : - control.highlighted ? control.Material.primaryHighlightedTextColor : control.Material.foreground - } - - background: Rectangle { - implicitWidth: 64 - implicitHeight: control.Material.buttonHeight - - radius: 2 - color: !control.enabled ? control.Material.buttonDisabledColor : - control.highlighted ? control.Material.highlightedButtonColor : control.Material.buttonColor - - PaddedRectangle { - y: parent.height - 4 - width: parent.width - height: 4 - radius: 2 - topPadding: -2 - clip: true - visible: control.checkable && (!control.highlighted || control.flat) - color: control.checked && control.enabled ? control.Material.accentColor : control.Material.secondaryTextColor - } - - // The layer is disabled when the button color is transparent so you can do - // Material.background: "transparent" and get a proper flat button without needing - // to set Material.elevation as well - layer.enabled: control.enabled && control.Material.buttonColor.a > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - } - - Ripple { - clipRadius: 2 - width: parent.width - height: parent.height - pressed: control.pressed - anchor: control - active: control.down || control.visualFocus || control.hovered - color: control.flat && control.highlighted ? control.Material.highlightedRippleColor : control.Material.rippleColor - } - } -} diff --git a/src/quickcontrols2/material/CMakeLists.txt b/src/quickcontrols2/material/CMakeLists.txt deleted file mode 100644 index bc73bdb9..00000000 --- a/src/quickcontrols2/material/CMakeLists.txt +++ /dev/null @@ -1,262 +0,0 @@ -##################################################################### -## qtquickcontrols2materialstyleplugin Plugin: -##################################################################### - -set(qml_files - "ApplicationWindow.qml" - "BusyIndicator.qml" - "Button.qml" - "CheckBox.qml" - "CheckDelegate.qml" - "ComboBox.qml" - "DelayButton.qml" - "Dial.qml" - "Dialog.qml" - "DialogButtonBox.qml" - "Drawer.qml" - "Frame.qml" - "GroupBox.qml" - "HorizontalHeaderView.qml" - "ItemDelegate.qml" - "Label.qml" - "Menu.qml" - "MenuBar.qml" - "MenuBarItem.qml" - "MenuItem.qml" - "MenuSeparator.qml" - "Page.qml" - "PageIndicator.qml" - "Pane.qml" - "Popup.qml" - "ProgressBar.qml" - "RadioButton.qml" - "RadioDelegate.qml" - "RangeSlider.qml" - "RoundButton.qml" - "ScrollView.qml" - "ScrollBar.qml" - "ScrollIndicator.qml" - "Slider.qml" - "SpinBox.qml" - "SplitView.qml" - "StackView.qml" - "SwipeDelegate.qml" - "SwipeView.qml" - "Switch.qml" - "SwitchDelegate.qml" - "TabBar.qml" - "TabButton.qml" - "TextArea.qml" - "TextField.qml" - "ToolBar.qml" - "ToolButton.qml" - "ToolSeparator.qml" - "ToolTip.qml" - "Tumbler.qml" - "VerticalHeaderView.qml" -) -set_source_files_properties(ApplicationWindow.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(BusyIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Button.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(CheckBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(CheckDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ComboBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(DelayButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.2;6.0" -) -set_source_files_properties(Dial.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Dialog.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(DialogButtonBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(Drawer.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Frame.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(GroupBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(HorizontalHeaderView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.15;6.0" -) -set_source_files_properties(ItemDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Label.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Menu.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(MenuBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.3;6.0" -) -set_source_files_properties(MenuBarItem.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.3;6.0" -) -set_source_files_properties(MenuItem.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(MenuSeparator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(Page.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(PageIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Pane.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Popup.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ProgressBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RadioButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RadioDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RangeSlider.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RoundButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(ScrollView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ScrollBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ScrollIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Slider.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SpinBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SplitView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.13;6.0" -) -set_source_files_properties(StackView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SwipeDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SwipeView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Switch.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SwitchDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TabBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TabButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TextArea.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TextField.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolSeparator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(ToolTip.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Tumbler.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(VerticalHeaderView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.15;6.0" -) - -qt_internal_add_qml_module(qtquickcontrols2materialstyleplugin - URI "QtQuick.Controls.Material" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2MaterialStylePlugin - IMPORTS - QtQuick.Controls.Basic/auto - PLUGIN_TARGET qtquickcontrols2materialstyleplugin - NO_PLUGIN_OPTIONAL - NO_GENERATE_PLUGIN_SOURCE - SOURCES - qquickmaterialstyle.cpp qquickmaterialstyle_p.h - qquickmaterialtheme.cpp qquickmaterialtheme_p.h - qtquickcontrols2materialstyleplugin.cpp - QML_FILES - ${qml_files} - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickControls2ImplPrivate - Qt::QuickControls2Private - Qt::QuickPrivate - Qt::QuickTemplates2Private -) - -qt_internal_add_resource(qtquickcontrols2materialstyleplugin "qtquickcontrols2materialstyleplugin" - PREFIX - "/qt-project.org/imports/QtQuick/Controls/Material" - FILES - "images/arrow-indicator.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/check.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/drop-indicator.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "shaders/+glslcore/RectangularGlow.frag" - "shaders/+hlsl/RectangularGlow.frag" - "shaders/+qsb/RectangularGlow.frag" - "shaders/RectangularGlow.frag" -) - -add_subdirectory(impl) diff --git a/src/quickcontrols2/material/CheckBox.qml b/src/quickcontrols2/material/CheckBox.qml deleted file mode 100644 index a3f717be..00000000 --- a/src/quickcontrols2/material/CheckBox.qml +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.CheckBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 8 - padding: 8 - verticalPadding: padding + 7 - - indicator: CheckIndicator { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - - Ripple { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: 28; height: 28 - - z: -1 - anchor: control - pressed: control.pressed - active: control.down || control.visualFocus || control.hovered - color: control.checked ? control.Material.highlightedRippleColor : control.Material.rippleColor - } - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } -} diff --git a/src/quickcontrols2/material/CheckDelegate.qml b/src/quickcontrols2/material/CheckDelegate.qml deleted file mode 100644 index ea42d666..00000000 --- a/src/quickcontrols2/material/CheckDelegate.qml +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.CheckDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 16 - verticalPadding: 8 - spacing: 16 - - icon.width: 24 - icon.height: 24 - icon.color: enabled ? Material.foreground : Material.hintTextColor - - indicator: CheckIndicator { - x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: IconLabel { - leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing - rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - } - - background: Rectangle { - implicitHeight: control.Material.delegateHeight - - color: control.highlighted ? control.Material.listHighlightColor : "transparent" - - Ripple { - width: parent.width - height: parent.height - - clip: visible - pressed: control.pressed - anchor: control - active: control.down || control.visualFocus || control.hovered - color: control.Material.rippleColor - } - } -} diff --git a/src/quickcontrols2/material/ComboBox.qml b/src/quickcontrols2/material/ComboBox.qml deleted file mode 100644 index 15f4c1ad..00000000 --- a/src/quickcontrols2/material/ComboBox.qml +++ /dev/null @@ -1,179 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Window -import QtQuick.Controls.impl -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.ComboBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - topInset: 6 - bottomInset: 6 - - leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) - rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) - - Material.elevation: flat ? control.pressed || control.hovered ? 2 : 0 - : control.pressed ? 8 : 2 - Material.background: flat ? "transparent" : undefined - Material.foreground: flat ? undefined : Material.primaryTextColor - - delegate: MenuItem { - width: ListView.view.width - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData - Material.foreground: control.currentIndex === index ? ListView.view.contentItem.Material.accent : ListView.view.contentItem.Material.foreground - highlighted: control.highlightedIndex === index - hoverEnabled: control.hoverEnabled - } - - indicator: ColorImage { - x: control.mirrored ? control.padding : control.width - width - control.padding - y: control.topPadding + (control.availableHeight - height) / 2 - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Material/images/drop-indicator.png" - } - - contentItem: T.TextField { - padding: 6 - leftPadding: control.editable ? 2 : control.mirrored ? 0 : 12 - rightPadding: control.editable ? 2 : control.mirrored ? 12 : 0 - - text: control.editable ? control.editText : control.displayText - - enabled: control.editable - autoScroll: control.editable - readOnly: control.down - inputMethodHints: control.inputMethodHints - validator: control.validator - selectByMouse: control.selectTextByMouse - - font: control.font - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - selectionColor: control.Material.accentColor - selectedTextColor: control.Material.primaryHighlightedTextColor - verticalAlignment: Text.AlignVCenter - - cursorDelegate: CursorDelegate { } - } - - background: Rectangle { - implicitWidth: 120 - implicitHeight: control.Material.buttonHeight - - radius: control.flat ? 0 : 2 - color: !control.editable ? control.Material.dialogColor : "transparent" - - layer.enabled: control.enabled && !control.editable && control.Material.background.a > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - } - - Rectangle { - visible: control.editable - y: parent.y + control.baselineOffset - width: parent.width - height: control.activeFocus ? 2 : 1 - color: control.editable && control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor - } - - Ripple { - clip: control.flat - clipRadius: control.flat ? 0 : 2 - x: control.editable && control.indicator ? control.indicator.x : 0 - width: control.editable && control.indicator ? control.indicator.width : parent.width - height: parent.height - pressed: control.pressed - anchor: control.editable && control.indicator ? control.indicator : control - active: control.pressed || control.visualFocus || control.hovered - color: control.Material.rippleColor - } - } - - popup: T.Popup { - y: control.editable ? control.height - 5 : 0 - width: control.width - height: Math.min(contentItem.implicitHeight, control.Window.height - topMargin - bottomMargin) - transformOrigin: Item.Top - topMargin: 12 - bottomMargin: 12 - - Material.theme: control.Material.theme - Material.accent: control.Material.accent - Material.primary: control.Material.primary - - enter: Transition { - // grow_fade_in - NumberAnimation { property: "scale"; from: 0.9; easing.type: Easing.OutQuint; duration: 220 } - NumberAnimation { property: "opacity"; from: 0.0; easing.type: Easing.OutCubic; duration: 150 } - } - - exit: Transition { - // shrink_fade_out - NumberAnimation { property: "scale"; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } - NumberAnimation { property: "opacity"; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } - } - - contentItem: ListView { - clip: true - implicitHeight: contentHeight - model: control.delegateModel - currentIndex: control.highlightedIndex - highlightMoveDuration: 0 - - T.ScrollIndicator.vertical: ScrollIndicator { } - } - - background: Rectangle { - radius: 2 - color: parent.Material.dialogColor - - layer.enabled: control.enabled - layer.effect: ElevationEffect { - elevation: 8 - } - } - } -} diff --git a/src/quickcontrols2/material/DelayButton.qml b/src/quickcontrols2/material/DelayButton.qml deleted file mode 100644 index d35df35c..00000000 --- a/src/quickcontrols2/material/DelayButton.qml +++ /dev/null @@ -1,116 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.DelayButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - topInset: 6 - bottomInset: 6 - padding: 12 - horizontalPadding: padding - 4 - - Material.elevation: control.down ? 8 : 2 - - transition: Transition { - NumberAnimation { - duration: control.delay * (control.pressed ? 1.0 - control.progress : 0.3 * control.progress) - } - } - - contentItem: Text { - text: control.text - font: control.font - color: !control.enabled ? control.Material.hintTextColor : control.Material.foreground - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - } - - // TODO: Add a proper ripple/ink effect for mouse/touch input and focus state - background: Rectangle { - implicitWidth: 64 - implicitHeight: control.Material.buttonHeight - - radius: 2 - color: !control.enabled ? control.Material.buttonDisabledColor : control.Material.buttonColor - - PaddedRectangle { - y: parent.height - 4 - width: parent.width - height: 4 - radius: 2 - topPadding: -2 - clip: true - color: control.checked && control.enabled ? control.Material.accentColor : control.Material.secondaryTextColor - - PaddedRectangle { - width: parent.width * control.progress - height: 4 - radius: 2 - topPadding: -2 - rightPadding: Math.max(-2, width - parent.width) - clip: true - color: control.Material.accentColor - } - } - - layer.enabled: control.enabled && control.Material.buttonColor.a > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - } - - Ripple { - clipRadius: 2 - width: parent.width - height: parent.height - pressed: control.pressed - anchor: control - active: control.down || control.visualFocus || control.hovered - color: control.Material.rippleColor - } - } -} diff --git a/src/quickcontrols2/material/Dial.qml b/src/quickcontrols2/material/Dial.qml deleted file mode 100644 index 2731436f..00000000 --- a/src/quickcontrols2/material/Dial.qml +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.Dial { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 100 - - x: control.width / 2 - width / 2 - y: control.height / 2 - height / 2 - width: Math.max(64, Math.min(control.width, control.height)) - height: width - color: "transparent" - radius: width / 2 - - border.color: control.enabled ? control.Material.accentColor : control.Material.hintTextColor - } - - handle: SliderHandle { - x: control.background.x + control.background.width / 2 - width / 2 - y: control.background.y + control.background.height / 2 - height / 2 - transform: [ - Translate { - y: -control.background.height * 0.4 + control.handle.height / 2 - }, - Rotation { - angle: control.angle - origin.x: control.handle.width / 2 - origin.y: control.handle.height / 2 - } - ] - implicitWidth: 10 - implicitHeight: 10 - - value: control.value - handleHasFocus: control.visualFocus - handlePressed: control.pressed - handleHovered: control.hovered - } -} diff --git a/src/quickcontrols2/material/Dialog.qml b/src/quickcontrols2/material/Dialog.qml deleted file mode 100644 index 1cb7f8c1..00000000 --- a/src/quickcontrols2/material/Dialog.qml +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.Dialog { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - padding: 24 - topPadding: 20 - - Material.elevation: 24 - - enter: Transition { - // grow_fade_in - NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } - NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } - } - - exit: Transition { - // shrink_fade_out - NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } - NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } - } - - background: Rectangle { - radius: 2 - color: control.Material.dialogColor - - layer.enabled: control.Material.elevation > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - } - } - - header: Label { - text: control.title - visible: control.title - elide: Label.ElideRight - padding: 24 - bottomPadding: 0 - // TODO: QPlatformTheme::TitleBarFont - font.bold: true - font.pixelSize: 16 - background: PaddedRectangle { - radius: 2 - color: control.Material.dialogColor - bottomPadding: -2 - clip: true - } - } - - footer: DialogButtonBox { - visible: count > 0 - } - - T.Overlay.modal: Rectangle { - color: control.Material.backgroundDimColor - Behavior on opacity { NumberAnimation { duration: 150 } } - } - - T.Overlay.modeless: Rectangle { - color: control.Material.backgroundDimColor - Behavior on opacity { NumberAnimation { duration: 150 } } - } -} diff --git a/src/quickcontrols2/material/DialogButtonBox.qml b/src/quickcontrols2/material/DialogButtonBox.qml deleted file mode 100644 index e32fa812..00000000 --- a/src/quickcontrols2/material/DialogButtonBox.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.DialogButtonBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - spacing: 8 - padding: 8 - verticalPadding: 2 - alignment: Qt.AlignRight - buttonLayout: T.DialogButtonBox.AndroidLayout - - Material.foreground: Material.accent - - delegate: Button { flat: true } - - contentItem: ListView { - model: control.contentModel - spacing: control.spacing - orientation: ListView.Horizontal - boundsBehavior: Flickable.StopAtBounds - snapMode: ListView.SnapToItem - } - - background: PaddedRectangle { - implicitHeight: control.Material.dialogButtonBoxHeight - radius: 2 - color: control.Material.dialogColor - // Rounded corners should be only at the top or at the bottom - topPadding: control.position === T.DialogButtonBox.Footer ? -2 : 0 - bottomPadding: control.position === T.DialogButtonBox.Header ? -2 : 0 - clip: true - } -} diff --git a/src/quickcontrols2/material/Drawer.qml b/src/quickcontrols2/material/Drawer.qml deleted file mode 100644 index 93c4bf56..00000000 --- a/src/quickcontrols2/material/Drawer.qml +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.Drawer { - id: control - - parent: T.Overlay.overlay - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: !dim && edge === Qt.BottomEdge && Material.elevation === 0 - leftPadding: !dim && edge === Qt.RightEdge && Material.elevation === 0 - rightPadding: !dim && edge === Qt.LeftEdge && Material.elevation === 0 - bottomPadding: !dim && edge === Qt.TopEdge && Material.elevation === 0 - - enter: Transition { SmoothedAnimation { velocity: 5 } } - exit: Transition { SmoothedAnimation { velocity: 5 } } - - Material.elevation: !interactive && !dim ? 0 : 16 - - background: Rectangle { - color: control.Material.dialogColor - - Rectangle { - readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge - width: horizontal ? 1 : parent.width - height: horizontal ? parent.height : 1 - color: control.Material.dividerColor - x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 - y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 - visible: !control.dim && control.Material.elevation === 0 - } - - layer.enabled: control.position > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - fullHeight: true - } - } - - T.Overlay.modal: Rectangle { - color: control.Material.backgroundDimColor - Behavior on opacity { NumberAnimation { duration: 150 } } - } - - T.Overlay.modeless: Rectangle { - color: control.Material.backgroundDimColor - Behavior on opacity { NumberAnimation { duration: 150 } } - } -} diff --git a/src/quickcontrols2/material/Frame.qml b/src/quickcontrols2/material/Frame.qml deleted file mode 100644 index 8626f766..00000000 --- a/src/quickcontrols2/material/Frame.qml +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.Frame { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - padding: 12 - verticalPadding: Material.frameVerticalPadding - - background: Rectangle { - radius: 2 - color: control.Material.elevation > 0 ? control.Material.backgroundColor : "transparent" - border.color: control.Material.frameColor - - layer.enabled: control.enabled && control.Material.elevation > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - } - } -} diff --git a/src/quickcontrols2/material/GroupBox.qml b/src/quickcontrols2/material/GroupBox.qml deleted file mode 100644 index 4a27b832..00000000 --- a/src/quickcontrols2/material/GroupBox.qml +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.GroupBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitLabelWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - spacing: 6 - padding: 12 - topPadding: Material.frameVerticalPadding + (implicitLabelWidth > 0 ? implicitLabelHeight + spacing : 0) - bottomPadding: Material.frameVerticalPadding - - label: Text { - x: control.leftPadding - width: control.availableWidth - - text: control.title - font: control.font - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - background: Rectangle { - y: control.topPadding - control.bottomPadding - width: parent.width - height: parent.height - control.topPadding + control.bottomPadding - - radius: 2 - color: control.Material.elevation > 0 ? control.Material.backgroundColor : "transparent" - border.color: control.Material.frameColor - - layer.enabled: control.enabled && control.Material.elevation > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - } - } -} diff --git a/src/quickcontrols2/material/HorizontalHeaderView.qml b/src/quickcontrols2/material/HorizontalHeaderView.qml deleted file mode 100644 index d2608c76..00000000 --- a/src/quickcontrols2/material/HorizontalHeaderView.qml +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.HorizontalHeaderView { - id: control - - implicitWidth: syncView ? syncView.width : 0 - implicitHeight: contentHeight - - delegate: Rectangle { - // Qt6: add cellPadding (and font etc) as public API in headerview - readonly property real cellPadding: 8 - - implicitWidth: text.implicitWidth + (cellPadding * 2) - implicitHeight: Math.max(control.height, text.implicitHeight + (cellPadding * 2)) - color: control.Material.backgroundColor - - Text { - id: text - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] - : model[control.textRole]) - : modelData - width: parent.width - height: parent.height - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - color: enabled ? control.Material.foreground : control.Material.hintTextColor - } - } -} diff --git a/src/quickcontrols2/material/ItemDelegate.qml b/src/quickcontrols2/material/ItemDelegate.qml deleted file mode 100644 index 7d06b05b..00000000 --- a/src/quickcontrols2/material/ItemDelegate.qml +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.ItemDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 16 - verticalPadding: 8 - spacing: 16 - - icon.width: 24 - icon.height: 24 - icon.color: enabled ? Material.foreground : Material.hintTextColor - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - } - - background: Rectangle { - implicitHeight: control.Material.delegateHeight - - color: control.highlighted ? control.Material.listHighlightColor : "transparent" - - Ripple { - width: parent.width - height: parent.height - - clip: visible - pressed: control.pressed - anchor: control - active: control.down || control.visualFocus || control.hovered - color: control.Material.rippleColor - } - } -} diff --git a/src/quickcontrols2/material/LICENSE_ANGULARJS.txt b/src/quickcontrols2/material/LICENSE_ANGULARJS.txt deleted file mode 100644 index c1f2a826..00000000 --- a/src/quickcontrols2/material/LICENSE_ANGULARJS.txt +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2014-2016 Google, Inc. http://angularjs.org - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/src/quickcontrols2/material/Label.qml b/src/quickcontrols2/material/Label.qml deleted file mode 100644 index 77e85f42..00000000 --- a/src/quickcontrols2/material/Label.qml +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material - -T.Label { - id: control - - color: enabled ? Material.foreground : Material.hintTextColor - linkColor: Material.accentColor -} diff --git a/src/quickcontrols2/material/Menu.qml b/src/quickcontrols2/material/Menu.qml deleted file mode 100644 index b7e80c92..00000000 --- a/src/quickcontrols2/material/Menu.qml +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl -import QtQuick.Window - -T.Menu { - id: control - - Material.elevation: 8 - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - margins: 0 - verticalPadding: 8 - - transformOrigin: !cascade ? Item.Top : (mirrored ? Item.TopRight : Item.TopLeft) - - delegate: MenuItem { } - - enter: Transition { - // grow_fade_in - NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } - NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } - } - - exit: Transition { - // shrink_fade_out - NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } - NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } - } - - contentItem: ListView { - implicitHeight: contentHeight - - model: control.contentModel - interactive: Window.window - ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height - : false - clip: true - currentIndex: control.currentIndex - - ScrollIndicator.vertical: ScrollIndicator {} - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: control.Material.menuItemHeight - - radius: 3 - color: control.Material.dialogColor - - layer.enabled: control.Material.elevation > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - } - } - - T.Overlay.modal: Rectangle { - color: control.Material.backgroundDimColor - Behavior on opacity { NumberAnimation { duration: 150 } } - } - - T.Overlay.modeless: Rectangle { - color: control.Material.backgroundDimColor - Behavior on opacity { NumberAnimation { duration: 150 } } - } -} diff --git a/src/quickcontrols2/material/MenuBar.qml b/src/quickcontrols2/material/MenuBar.qml deleted file mode 100644 index a0c3bd3f..00000000 --- a/src/quickcontrols2/material/MenuBar.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.MenuBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - delegate: MenuBarItem { } - - contentItem: Row { - spacing: control.spacing - Repeater { - model: control.contentModel - } - } - - background: Rectangle { - implicitHeight: 40 - color: control.Material.dialogColor - } -} diff --git a/src/quickcontrols2/material/MenuBarItem.qml b/src/quickcontrols2/material/MenuBarItem.qml deleted file mode 100644 index f1d4e87d..00000000 --- a/src/quickcontrols2/material/MenuBarItem.qml +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.MenuBarItem { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 16 - verticalPadding: 12 - spacing: 16 - - icon.width: 24 - icon.height: 24 - icon.color: enabled ? Material.foreground : Material.hintTextColor - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - } - - background: Rectangle { - implicitWidth: 40 - implicitHeight: 40 - color: control.highlighted ? control.Material.listHighlightColor : "transparent" - - Ripple { - width: parent.width - height: parent.height - - clip: visible - pressed: control.pressed - anchor: control - active: control.down || control.highlighted - color: control.Material.rippleColor - } - } -} diff --git a/src/quickcontrols2/material/MenuItem.qml b/src/quickcontrols2/material/MenuItem.qml deleted file mode 100644 index fab2de26..00000000 --- a/src/quickcontrols2/material/MenuItem.qml +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.MenuItem { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 16 - verticalPadding: Material.menuItemVerticalPadding - spacing: 16 - - icon.width: 24 - icon.height: 24 - icon.color: enabled ? Material.foreground : Material.hintTextColor - - indicator: CheckIndicator { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - visible: control.checkable - control: control - checkState: control.checked ? Qt.Checked : Qt.Unchecked - } - - arrow: ColorImage { - x: control.mirrored ? control.padding : control.width - width - control.padding - y: control.topPadding + (control.availableHeight - height) / 2 - - visible: control.subMenu - mirror: control.mirrored - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Material/images/arrow-indicator.png" - } - - contentItem: IconLabel { - readonly property real arrowPadding: control.subMenu && control.arrow ? control.arrow.width + control.spacing : 0 - readonly property real indicatorPadding: control.checkable && control.indicator ? control.indicator.width + control.spacing : 0 - leftPadding: !control.mirrored ? indicatorPadding : arrowPadding - rightPadding: control.mirrored ? indicatorPadding : arrowPadding - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: control.Material.menuItemHeight - color: control.highlighted ? control.Material.listHighlightColor : "transparent" - - Ripple { - width: parent.width - height: parent.height - - clip: visible - pressed: control.pressed - anchor: control - active: control.down || control.highlighted - color: control.Material.rippleColor - } - } -} diff --git a/src/quickcontrols2/material/MenuSeparator.qml b/src/quickcontrols2/material/MenuSeparator.qml deleted file mode 100644 index 08a33ffe..00000000 --- a/src/quickcontrols2/material/MenuSeparator.qml +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material - -T.MenuSeparator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - verticalPadding: 8 - - contentItem: Rectangle { - implicitWidth: 200 - implicitHeight: 1 - color: control.Material.dividerColor - } -} diff --git a/src/quickcontrols2/material/Page.qml b/src/quickcontrols2/material/Page.qml deleted file mode 100644 index 711fac2d..00000000 --- a/src/quickcontrols2/material/Page.qml +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material - -T.Page { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - background: Rectangle { - color: control.Material.backgroundColor - } -} diff --git a/src/quickcontrols2/material/PageIndicator.qml b/src/quickcontrols2/material/PageIndicator.qml deleted file mode 100644 index 8ccd7de3..00000000 --- a/src/quickcontrols2/material/PageIndicator.qml +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material - -T.PageIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - delegate: Rectangle { - implicitWidth: 8 - implicitHeight: 8 - - radius: width / 2 - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - - opacity: index === currentIndex ? 0.95 : pressed ? 0.7 : 0.45 - Behavior on opacity { OpacityAnimator { duration: 100 } } - } - - contentItem: Row { - spacing: control.spacing - - Repeater { - model: control.count - delegate: control.delegate - } - } -} diff --git a/src/quickcontrols2/material/Pane.qml b/src/quickcontrols2/material/Pane.qml deleted file mode 100644 index 055a8d23..00000000 --- a/src/quickcontrols2/material/Pane.qml +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.Pane { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - padding: 12 - - background: Rectangle { - color: control.Material.backgroundColor - radius: control.Material.elevation > 0 ? 2 : 0 - - layer.enabled: control.enabled && control.Material.elevation > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - } - } -} diff --git a/src/quickcontrols2/material/Popup.qml b/src/quickcontrols2/material/Popup.qml deleted file mode 100644 index cb5b62ec..00000000 --- a/src/quickcontrols2/material/Popup.qml +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.Popup { - id: control - - Material.elevation: 24 - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - padding: 12 - - enter: Transition { - // grow_fade_in - NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } - NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } - } - - exit: Transition { - // shrink_fade_out - NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } - NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } - } - - background: Rectangle { - radius: 2 - color: control.Material.dialogColor - - layer.enabled: control.Material.elevation > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - } - } - - T.Overlay.modal: Rectangle { - color: control.Material.backgroundDimColor - Behavior on opacity { NumberAnimation { duration: 150 } } - } - - T.Overlay.modeless: Rectangle { - color: control.Material.backgroundDimColor - Behavior on opacity { NumberAnimation { duration: 150 } } - } -} diff --git a/src/quickcontrols2/material/ProgressBar.qml b/src/quickcontrols2/material/ProgressBar.qml deleted file mode 100644 index dd4fae0e..00000000 --- a/src/quickcontrols2/material/ProgressBar.qml +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.ProgressBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - contentItem: ProgressBarImpl { - implicitHeight: 4 - - scale: control.mirrored ? -1 : 1 - color: control.Material.accentColor - progress: control.position - indeterminate: control.visible && control.indeterminate - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 4 - y: (control.height - height) / 2 - height: 4 - - color: Qt.rgba(control.Material.accentColor.r, control.Material.accentColor.g, control.Material.accentColor.b, 0.25) - } -} diff --git a/src/quickcontrols2/material/RadioButton.qml b/src/quickcontrols2/material/RadioButton.qml deleted file mode 100644 index 664cb19e..00000000 --- a/src/quickcontrols2/material/RadioButton.qml +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.RadioButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 8 - padding: 8 - verticalPadding: padding + 6 - - indicator: RadioIndicator { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - - Ripple { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: 28; height: 28 - - z: -1 - anchor: control - pressed: control.pressed - active: control.down || control.visualFocus || control.hovered - color: control.checked ? control.Material.highlightedRippleColor : control.Material.rippleColor - } - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } -} diff --git a/src/quickcontrols2/material/RadioDelegate.qml b/src/quickcontrols2/material/RadioDelegate.qml deleted file mode 100644 index 334e570b..00000000 --- a/src/quickcontrols2/material/RadioDelegate.qml +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.RadioDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 16 - verticalPadding: 8 - spacing: 16 - - icon.width: 24 - icon.height: 24 - icon.color: enabled ? Material.foreground : Material.hintTextColor - - indicator: RadioIndicator { - x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: IconLabel { - leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing - rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - } - - background: Rectangle { - implicitHeight: control.Material.delegateHeight - - color: control.highlighted ? control.Material.listHighlightColor : "transparent" - - Ripple { - width: parent.width - height: parent.height - - clip: visible - pressed: control.pressed - anchor: control - active: control.down || control.visualFocus || control.hovered - color: control.Material.rippleColor - } - } -} diff --git a/src/quickcontrols2/material/RangeSlider.qml b/src/quickcontrols2/material/RangeSlider.qml deleted file mode 100644 index d1d22115..00000000 --- a/src/quickcontrols2/material/RangeSlider.qml +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.RangeSlider { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - first.implicitHandleWidth + leftPadding + rightPadding, - second.implicitHandleWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - first.implicitHandleHeight + topPadding + bottomPadding, - second.implicitHandleHeight + topPadding + bottomPadding) - - padding: 6 - - first.handle: SliderHandle { - x: control.leftPadding + (control.horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) - value: first.value - handleHasFocus: activeFocus - handlePressed: first.pressed - handleHovered: first.hovered - } - - second.handle: SliderHandle { - x: control.leftPadding + (control.horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) - value: second.value - handleHasFocus: activeFocus - handlePressed: second.pressed - handleHovered: second.hovered - } - - background: Rectangle { - x: control.leftPadding + (control.horizontal ? 0 : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : 0) - implicitWidth: control.horizontal ? 200 : 48 - implicitHeight: control.horizontal ? 48 : 200 - width: control.horizontal ? control.availableWidth : 4 - height: control.horizontal ? 4 : control.availableHeight - scale: control.horizontal && control.mirrored ? -1 : 1 - color: control.enabled ? Color.transparent(control.Material.accentColor, 0.33) : control.Material.sliderDisabledColor - - Rectangle { - x: control.horizontal ? control.first.position * parent.width : 0 - y: control.horizontal ? 0 : control.second.visualPosition * parent.height - width: control.horizontal ? control.second.position * parent.width - control.first.position * parent.width : 4 - height: control.horizontal ? 4 : control.second.position * parent.height - control.first.position * parent.height - - color: control.enabled ? control.Material.accentColor : control.Material.sliderDisabledColor - } - } -} diff --git a/src/quickcontrols2/material/RoundButton.qml b/src/quickcontrols2/material/RoundButton.qml deleted file mode 100644 index f93f2425..00000000 --- a/src/quickcontrols2/material/RoundButton.qml +++ /dev/null @@ -1,114 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.RoundButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - topInset: 6 - leftInset: 6 - rightInset: 6 - bottomInset: 6 - padding: 12 - spacing: 6 - - icon.width: 24 - icon.height: 24 - icon.color: !enabled ? Material.hintTextColor : - flat && highlighted ? Material.accentColor : - highlighted ? Material.primaryHighlightedTextColor : Material.foreground - - Material.elevation: flat ? control.down || control.hovered ? 2 : 0 - : control.down ? 12 : 6 - Material.background: flat ? "transparent" : undefined - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: !control.enabled ? control.Material.hintTextColor : - control.flat && control.highlighted ? control.Material.accentColor : - control.highlighted ? control.Material.primaryHighlightedTextColor : control.Material.foreground - } - - // TODO: Add a proper ripple/ink effect for mouse/touch input and focus state - background: Rectangle { - implicitWidth: control.Material.buttonHeight - implicitHeight: control.Material.buttonHeight - - radius: control.radius - color: !control.enabled ? control.Material.buttonDisabledColor - : control.checked || control.highlighted ? control.Material.highlightedButtonColor : control.Material.buttonColor - - Rectangle { - width: parent.width - height: parent.height - radius: control.radius - visible: control.hovered || control.visualFocus - color: control.Material.rippleColor - } - - Rectangle { - width: parent.width - height: parent.height - radius: control.radius - visible: control.down - color: control.Material.rippleColor - } - - // The layer is disabled when the button color is transparent so that you can do - // Material.background: "transparent" and get a proper flat button without needing - // to set Material.elevation as well - layer.enabled: control.enabled && control.Material.buttonColor.a > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - } - } -} diff --git a/src/quickcontrols2/material/ScrollBar.qml b/src/quickcontrols2/material/ScrollBar.qml deleted file mode 100644 index 55de0d13..00000000 --- a/src/quickcontrols2/material/ScrollBar.qml +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material - -T.ScrollBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: control.interactive ? 1 : 2 - visible: control.policy !== T.ScrollBar.AlwaysOff - minimumSize: orientation == Qt.Horizontal ? height / width : width / height - - contentItem: Rectangle { - implicitWidth: control.interactive ? 13 : 4 - implicitHeight: control.interactive ? 13 : 4 - - color: control.pressed ? control.Material.scrollBarPressedColor : - control.interactive && control.hovered ? control.Material.scrollBarHoveredColor : control.Material.scrollBarColor - opacity: 0.0 - } - - background: Rectangle { - implicitWidth: control.interactive ? 16 : 4 - implicitHeight: control.interactive ? 16 : 4 - color: "#0e000000" - opacity: 0.0 - visible: control.interactive - } - - states: State { - name: "active" - when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0) - } - - transitions: [ - Transition { - to: "active" - NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 1.0 } - }, - Transition { - from: "active" - SequentialAnimation { - PropertyAction{ targets: [control.contentItem, control.background]; property: "opacity"; value: 1.0 } - PauseAnimation { duration: 2450 } - NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 0.0 } - } - } - ] -} diff --git a/src/quickcontrols2/material/ScrollIndicator.qml b/src/quickcontrols2/material/ScrollIndicator.qml deleted file mode 100644 index bc81c630..00000000 --- a/src/quickcontrols2/material/ScrollIndicator.qml +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material - -T.ScrollIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 2 - - contentItem: Rectangle { - implicitWidth: 4 - implicitHeight: 4 - - color: control.Material.scrollBarColor - visible: control.size < 1.0 - opacity: 0.0 - - states: State { - name: "active" - when: control.active - PropertyChanges { target: control.contentItem; opacity: 0.75 } - } - - transitions: [ - Transition { - from: "active" - SequentialAnimation { - PauseAnimation { duration: 450 } - NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 } - } - } - ] - } -} diff --git a/src/quickcontrols2/material/ScrollView.qml b/src/quickcontrols2/material/ScrollView.qml deleted file mode 100644 index a6bba9de..00000000 --- a/src/quickcontrols2/material/ScrollView.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ScrollView { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - ScrollBar.vertical: ScrollBar { - parent: control - x: control.mirrored ? 0 : control.width - width - y: control.topPadding - height: control.availableHeight - active: control.ScrollBar.horizontal.active - } - - ScrollBar.horizontal: ScrollBar { - parent: control - x: control.leftPadding - y: control.height - height - width: control.availableWidth - active: control.ScrollBar.vertical.active - } -} diff --git a/src/quickcontrols2/material/Slider.qml b/src/quickcontrols2/material/Slider.qml deleted file mode 100644 index 2a366734..00000000 --- a/src/quickcontrols2/material/Slider.qml +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.Slider { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitHandleWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitHandleHeight + topPadding + bottomPadding) - - padding: 6 - - handle: SliderHandle { - x: control.leftPadding + (control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) - value: control.value - handleHasFocus: control.visualFocus - handlePressed: control.pressed - handleHovered: control.hovered - } - - background: Rectangle { - x: control.leftPadding + (control.horizontal ? 0 : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : 0) - implicitWidth: control.horizontal ? 200 : 48 - implicitHeight: control.horizontal ? 48 : 200 - width: control.horizontal ? control.availableWidth : 4 - height: control.horizontal ? 4 : control.availableHeight - scale: control.horizontal && control.mirrored ? -1 : 1 - color: control.enabled ? Color.transparent(control.Material.accentColor, 0.33) : control.Material.sliderDisabledColor - - Rectangle { - x: control.horizontal ? 0 : (parent.width - width) / 2 - y: control.horizontal ? (parent.height - height) / 2 : control.visualPosition * parent.height - width: control.horizontal ? control.position * parent.width : 4 - height: control.horizontal ? 4 : control.position * parent.height - - color: control.enabled ? control.Material.accentColor : control.Material.sliderDisabledColor - } - } -} diff --git a/src/quickcontrols2/material/SpinBox.qml b/src/quickcontrols2/material/SpinBox.qml deleted file mode 100644 index 4f69dd25..00000000 --- a/src/quickcontrols2/material/SpinBox.qml +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.SpinBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentItem.implicitWidth + - up.implicitIndicatorWidth + - down.implicitIndicatorWidth) - implicitHeight: Math.max(implicitContentHeight + topPadding + bottomPadding, - implicitBackgroundHeight, - up.implicitIndicatorHeight, - down.implicitIndicatorHeight) - - spacing: 6 - topPadding: 8 - bottomPadding: 16 - leftPadding: (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) - rightPadding: (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) - - validator: IntValidator { - locale: control.locale.name - bottom: Math.min(control.from, control.to) - top: Math.max(control.from, control.to) - } - - contentItem: TextInput { - text: control.displayText - - font: control.font - color: enabled ? control.Material.foreground : control.Material.hintTextColor - selectionColor: control.Material.textSelectionColor - selectedTextColor: control.Material.foreground - horizontalAlignment: Qt.AlignHCenter - verticalAlignment: Qt.AlignVCenter - - cursorDelegate: CursorDelegate { } - - readOnly: !control.editable - validator: control.validator - inputMethodHints: control.inputMethodHints - } - - up.indicator: Item { - x: control.mirrored ? 0 : parent.width - width - implicitWidth: control.Material.touchTarget - implicitHeight: control.Material.touchTarget - height: parent.height - width: height - - Ripple { - clipRadius: 2 - x: control.spacing - y: control.spacing - width: parent.width - 2 * control.spacing - height: parent.height - 2 * control.spacing - pressed: control.up.pressed - active: control.up.pressed || control.up.hovered || control.visualFocus - color: control.Material.rippleColor - } - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: Math.min(parent.width / 3, parent.height / 3) - height: 2 - color: enabled ? control.Material.foreground : control.Material.spinBoxDisabledIconColor - } - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: 2 - height: Math.min(parent.width / 3, parent.height / 3) - color: enabled ? control.Material.foreground : control.Material.spinBoxDisabledIconColor - } - } - - down.indicator: Item { - x: control.mirrored ? parent.width - width : 0 - implicitWidth: control.Material.touchTarget - implicitHeight: control.Material.touchTarget - height: parent.height - width: height - - Ripple { - clipRadius: 2 - x: control.spacing - y: control.spacing - width: parent.width - 2 * control.spacing - height: parent.height - 2 * control.spacing - pressed: control.down.pressed - active: control.down.pressed || control.down.hovered || control.visualFocus - color: control.Material.rippleColor - } - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: parent.width / 3 - height: 2 - color: enabled ? control.Material.foreground : control.Material.spinBoxDisabledIconColor - } - } - - background: Item { - implicitWidth: 192 - implicitHeight: control.Material.touchTarget - - Rectangle { - x: parent.width / 2 - width / 2 - y: parent.y + parent.height - height - control.bottomPadding / 2 - width: control.availableWidth - height: control.activeFocus ? 2 : 1 - color: control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor - } - } -} diff --git a/src/quickcontrols2/material/SplitView.qml b/src/quickcontrols2/material/SplitView.qml deleted file mode 100644 index 95556cd0..00000000 --- a/src/quickcontrols2/material/SplitView.qml +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material - -T.SplitView { - id: control - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - handle: Rectangle { - implicitWidth: control.orientation === Qt.Horizontal ? 6 : control.width - implicitHeight: control.orientation === Qt.Horizontal ? control.height : 6 - color: T.SplitHandle.pressed ? control.Material.background - : Qt.lighter(control.Material.background, T.SplitHandle.hovered ? 1.2 : 1.1) - - Rectangle { - color: control.Material.secondaryTextColor - width: control.orientation === Qt.Horizontal ? thickness : length - height: control.orientation === Qt.Horizontal ? length : thickness - radius: thickness - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - - property int length: parent.T.SplitHandle.pressed ? 3 : 8 - readonly property int thickness: parent.T.SplitHandle.pressed ? 3 : 1 - - Behavior on length { - NumberAnimation { - duration: 100 - } - } - } - } -} diff --git a/src/quickcontrols2/material/StackView.qml b/src/quickcontrols2/material/StackView.qml deleted file mode 100644 index 4c3e6749..00000000 --- a/src/quickcontrols2/material/StackView.qml +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material - -T.StackView { - id: control - - popEnter: Transition { - // slide_in_left - NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * -control.width; to: 0; duration: 200; easing.type: Easing.OutCubic } - NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic } - } - - popExit: Transition { - // slide_out_right - NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * control.width; duration: 200; easing.type: Easing.OutCubic } - NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic } - } - - pushEnter: Transition { - // slide_in_right - NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * control.width; to: 0; duration: 200; easing.type: Easing.OutCubic } - NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic } - } - - pushExit: Transition { - // slide_out_left - NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * -control.width; duration: 200; easing.type: Easing.OutCubic } - NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic } - } - - replaceEnter: Transition { - // slide_in_right - NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * control.width; to: 0; duration: 200; easing.type: Easing.OutCubic } - NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic } - } - - replaceExit: Transition { - // slide_out_left - NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * -control.width; duration: 200; easing.type: Easing.OutCubic } - NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic } - } -} diff --git a/src/quickcontrols2/material/SwipeDelegate.qml b/src/quickcontrols2/material/SwipeDelegate.qml deleted file mode 100644 index c7aff94a..00000000 --- a/src/quickcontrols2/material/SwipeDelegate.qml +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.SwipeDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 16 - verticalPadding: 8 - spacing: 16 - - icon.width: 24 - icon.height: 24 - icon.color: enabled ? Material.foreground : Material.hintTextColor - - swipe.transition: Transition { SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } } - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - } - - background: Rectangle { - implicitHeight: control.Material.delegateHeight - - color: control.Material.backgroundColor - - Rectangle { - width: parent.width - height: parent.height - visible: control.highlighted - color: control.Material.listHighlightColor - } - - Ripple { - width: parent.width - height: parent.height - - clip: visible - pressed: control.pressed - anchor: control - active: control.down || control.visualFocus || control.hovered - color: control.Material.rippleColor - enabled: control.swipe.position === 0 - } - } -} diff --git a/src/quickcontrols2/material/SwipeView.qml b/src/quickcontrols2/material/SwipeView.qml deleted file mode 100644 index cd4da229..00000000 --- a/src/quickcontrols2/material/SwipeView.qml +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material - -T.SwipeView { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - contentItem: ListView { - model: control.contentModel - interactive: control.interactive - currentIndex: control.currentIndex - focus: control.focus - - spacing: control.spacing - orientation: control.orientation - snapMode: ListView.SnapOneItem - boundsBehavior: Flickable.StopAtBounds - - highlightRangeMode: ListView.StrictlyEnforceRange - preferredHighlightBegin: 0 - preferredHighlightEnd: 0 - highlightMoveDuration: 250 - maximumFlickVelocity: 4 * (control.orientation === Qt.Horizontal ? width : height) - } -} diff --git a/src/quickcontrols2/material/Switch.qml b/src/quickcontrols2/material/Switch.qml deleted file mode 100644 index a43e8730..00000000 --- a/src/quickcontrols2/material/Switch.qml +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl -import QtQuick.Templates as T - -T.Switch { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 8 - spacing: 8 - - indicator: SwitchIndicator { - x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - - Ripple { - x: parent.handle.x + parent.handle.width / 2 - width / 2 - y: parent.handle.y + parent.handle.height / 2 - height / 2 - width: 28; height: 28 - pressed: control.pressed - active: control.down || control.visualFocus || control.hovered - color: control.checked ? control.Material.highlightedRippleColor : control.Material.rippleColor - } - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } -} diff --git a/src/quickcontrols2/material/SwitchDelegate.qml b/src/quickcontrols2/material/SwitchDelegate.qml deleted file mode 100644 index fd7b7ab0..00000000 --- a/src/quickcontrols2/material/SwitchDelegate.qml +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.SwitchDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 16 - verticalPadding: Material.switchDelegateVerticalPadding - spacing: 16 - - icon.width: 24 - icon.height: 24 - icon.color: enabled ? Material.foreground : Material.hintTextColor - - indicator: SwitchIndicator { - x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: IconLabel { - leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing - rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: control.enabled ? control.Material.foreground : control.Material.hintTextColor - } - - background: Rectangle { - implicitHeight: control.Material.delegateHeight - - color: control.highlighted ? control.Material.listHighlightColor : "transparent" - - Ripple { - width: parent.width - height: parent.height - - clip: visible - pressed: control.pressed - anchor: control - active: control.down || control.visualFocus || control.hovered - color: control.Material.rippleColor - } - } -} diff --git a/src/quickcontrols2/material/TabBar.qml b/src/quickcontrols2/material/TabBar.qml deleted file mode 100644 index 9e9585f3..00000000 --- a/src/quickcontrols2/material/TabBar.qml +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.TabBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - spacing: 1 - - contentItem: ListView { - model: control.contentModel - currentIndex: control.currentIndex - - spacing: control.spacing - orientation: ListView.Horizontal - boundsBehavior: Flickable.StopAtBounds - flickableDirection: Flickable.AutoFlickIfNeeded - snapMode: ListView.SnapToItem - - highlightMoveDuration: 250 - highlightResizeDuration: 0 - highlightFollowsCurrentItem: true - highlightRangeMode: ListView.ApplyRange - preferredHighlightBegin: 48 - preferredHighlightEnd: width - 48 - - highlight: Item { - z: 2 - Rectangle { - height: 2 - width: parent.width - y: control.position === T.TabBar.Footer ? 0 : parent.height - height - color: control.Material.accentColor - } - } - } - - background: Rectangle { - color: control.Material.backgroundColor - - layer.enabled: control.Material.elevation > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - fullWidth: true - } - } -} diff --git a/src/quickcontrols2/material/TabButton.qml b/src/quickcontrols2/material/TabButton.qml deleted file mode 100644 index bae0cdb8..00000000 --- a/src/quickcontrols2/material/TabButton.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.TabButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 12 - spacing: 6 - - icon.width: 24 - icon.height: 24 - icon.color: !enabled ? Material.hintTextColor : down || checked ? Material.accentColor : Material.foreground - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: !control.enabled ? control.Material.hintTextColor : control.down || control.checked ? control.Material.accentColor : control.Material.foreground - } - - background: Ripple { - implicitHeight: control.Material.touchTarget - - clip: true - pressed: control.pressed - anchor: control - active: control.down || control.visualFocus || control.hovered - color: control.Material.rippleColor - } -} diff --git a/src/quickcontrols2/material/TextArea.qml b/src/quickcontrols2/material/TextArea.qml deleted file mode 100644 index a213bd7a..00000000 --- a/src/quickcontrols2/material/TextArea.qml +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.TextArea { - id: control - - implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, - implicitBackgroundWidth + leftInset + rightInset, - placeholder.implicitWidth + leftPadding + rightPadding) - implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, - implicitBackgroundHeight + topInset + bottomInset, - placeholder.implicitHeight + 1 + topPadding + bottomPadding) - - topPadding: 8 - bottomPadding: 16 - - color: enabled ? Material.foreground : Material.hintTextColor - selectionColor: Material.accentColor - selectedTextColor: Material.primaryHighlightedTextColor - placeholderTextColor: Material.hintTextColor - cursorDelegate: CursorDelegate { } - - PlaceholderText { - id: placeholder - x: control.leftPadding - y: control.topPadding - width: control.width - (control.leftPadding + control.rightPadding) - height: control.height - (control.topPadding + control.bottomPadding) - text: control.placeholderText - font: control.font - color: control.placeholderTextColor - verticalAlignment: control.verticalAlignment - elide: Text.ElideRight - renderType: control.renderType - visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) - } - - background: Rectangle { - y: parent.height - height - control.bottomPadding / 2 - implicitWidth: 120 - height: control.activeFocus ? 2 : 1 - color: control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor - } -} diff --git a/src/quickcontrols2/material/TextField.qml b/src/quickcontrols2/material/TextField.qml deleted file mode 100644 index 8623ddf5..00000000 --- a/src/quickcontrols2/material/TextField.qml +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.TextField { - id: control - - implicitWidth: implicitBackgroundWidth + leftInset + rightInset - || Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding, - placeholder.implicitHeight + topPadding + bottomPadding) - - topPadding: 8 - bottomPadding: 16 - - color: enabled ? Material.foreground : Material.hintTextColor - selectionColor: Material.accentColor - selectedTextColor: Material.primaryHighlightedTextColor - placeholderTextColor: Material.hintTextColor - verticalAlignment: TextInput.AlignVCenter - - cursorDelegate: CursorDelegate { } - - PlaceholderText { - id: placeholder - x: control.leftPadding - y: control.topPadding - width: control.width - (control.leftPadding + control.rightPadding) - height: control.height - (control.topPadding + control.bottomPadding) - text: control.placeholderText - font: control.font - color: control.placeholderTextColor - verticalAlignment: control.verticalAlignment - elide: Text.ElideRight - renderType: control.renderType - visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) - } - - background: Rectangle { - y: control.height - height - control.bottomPadding + 8 - implicitWidth: 120 - height: control.activeFocus || control.hovered ? 2 : 1 - color: control.activeFocus ? control.Material.accentColor - : (control.hovered ? control.Material.primaryTextColor : control.Material.hintTextColor) - } -} diff --git a/src/quickcontrols2/material/ToolBar.qml b/src/quickcontrols2/material/ToolBar.qml deleted file mode 100644 index a1aa82bd..00000000 --- a/src/quickcontrols2/material/ToolBar.qml +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.ToolBar { - id: control - - Material.elevation: 4 - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - Material.foreground: Material.toolTextColor - - spacing: 16 - - background: Rectangle { - implicitHeight: 48 - color: control.Material.toolBarColor - - layer.enabled: control.Material.elevation > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - fullWidth: true - } - } -} diff --git a/src/quickcontrols2/material/ToolButton.qml b/src/quickcontrols2/material/ToolButton.qml deleted file mode 100644 index be7ae332..00000000 --- a/src/quickcontrols2/material/ToolButton.qml +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.ToolButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - icon.width: 24 - icon.height: 24 - icon.color: !enabled ? Material.hintTextColor : checked || highlighted ? Material.accent : Material.foreground - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: !control.enabled ? control.Material.hintTextColor : - control.checked || control.highlighted ? control.Material.accent : control.Material.foreground - } - - background: Ripple { - implicitWidth: control.Material.touchTarget - implicitHeight: control.Material.touchTarget - - readonly property bool square: control.contentItem.width <= control.contentItem.height - - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - clip: !square - width: square ? parent.height / 2 : parent.width - height: square ? parent.height / 2 : parent.height - pressed: control.pressed - anchor: control - active: control.enabled && (control.down || control.visualFocus || control.hovered) - color: control.Material.rippleColor - } -} diff --git a/src/quickcontrols2/material/ToolSeparator.qml b/src/quickcontrols2/material/ToolSeparator.qml deleted file mode 100644 index 4bce553d..00000000 --- a/src/quickcontrols2/material/ToolSeparator.qml +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material - -T.ToolSeparator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - horizontalPadding: vertical ? 12 : 5 - verticalPadding: vertical ? 5 : 12 - - contentItem: Rectangle { - implicitWidth: vertical ? 1 : 38 - implicitHeight: vertical ? 38 : 1 - color: control.Material.hintTextColor - } -} diff --git a/src/quickcontrols2/material/ToolTip.qml b/src/quickcontrols2/material/ToolTip.qml deleted file mode 100644 index 033e48a3..00000000 --- a/src/quickcontrols2/material/ToolTip.qml +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material - -T.ToolTip { - id: control - - x: parent ? (parent.width - implicitWidth) / 2 : 0 - y: -implicitHeight - 24 - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - margins: 12 - padding: 8 - horizontalPadding: padding + 8 - - closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent - - Material.theme: Material.Dark - - enter: Transition { - // toast_enter - NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutQuad; duration: 500 } - } - - exit: Transition { - // toast_exit - NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.InQuad; duration: 500 } - } - - contentItem: Text { - text: control.text - font: control.font - wrapMode: Text.Wrap - color: control.Material.foreground - } - - background: Rectangle { - implicitHeight: control.Material.tooltipHeight - color: control.Material.tooltipColor - opacity: 0.9 - radius: 2 - } -} diff --git a/src/quickcontrols2/material/Tumbler.qml b/src/quickcontrols2/material/Tumbler.qml deleted file mode 100644 index 2c1e5d66..00000000 --- a/src/quickcontrols2/material/Tumbler.qml +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T -import QtQuick.Controls.Material - -T.Tumbler { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - delegate: Text { - text: modelData - color: control.Material.foreground - font: control.font - opacity: (1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - - contentItem: TumblerView { - implicitWidth: 60 - implicitHeight: 200 - model: control.model - delegate: control.delegate - path: Path { - startX: control.contentItem.width / 2 - startY: -control.contentItem.delegateHeight / 2 - PathLine { - x: control.contentItem.width / 2 - y: (control.visibleItemCount + 1) * control.contentItem.delegateHeight - control.contentItem.delegateHeight / 2 - } - } - - property real delegateHeight: control.availableHeight / control.visibleItemCount - } -} diff --git a/src/quickcontrols2/material/VerticalHeaderView.qml b/src/quickcontrols2/material/VerticalHeaderView.qml deleted file mode 100644 index 9769627e..00000000 --- a/src/quickcontrols2/material/VerticalHeaderView.qml +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -T.VerticalHeaderView { - id: control - - implicitWidth: contentWidth - implicitHeight: syncView ? syncView.height : 0 - - delegate: Rectangle { - // Qt6: add cellPadding (and font etc) as public API in headerview - readonly property real cellPadding: 8 - - implicitWidth: Math.max(control.width, text.implicitWidth + (cellPadding * 2)) - implicitHeight: text.implicitHeight + (cellPadding * 2) - color: control.Material.backgroundColor - - Text { - id: text - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] - : model[control.textRole]) - : modelData - width: parent.width - height: parent.height - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - color: enabled ? control.Material.foreground : control.Material.hintTextColor - } - } -} diff --git a/src/quickcontrols2/material/images/arrow-indicator.png b/src/quickcontrols2/material/images/arrow-indicator.png Binary files differdeleted file mode 100644 index 5a978001..00000000 --- a/src/quickcontrols2/material/images/arrow-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/material/images/arrow-indicator.svg b/src/quickcontrols2/material/images/arrow-indicator.svg deleted file mode 100644 index 1e7217c8..00000000 --- a/src/quickcontrols2/material/images/arrow-indicator.svg +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="5" - height="10" - viewBox="0 0 5 10" - version="1.1" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="arrow-indicator.svg"> - <metadata - id="metadata10"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="2560" - inkscape:window-height="1571" - id="namedview6" - showgrid="false" - inkscape:zoom="27.812867" - inkscape:cx="13.137558" - inkscape:cy="12.83583" - inkscape:window-x="0" - inkscape:window-y="55" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <path - d="M 0,10 5,5 0,0 Z" - id="path4" - inkscape:connector-curvature="0" - style="fill:#757575" /> -</svg> diff --git a/src/quickcontrols2/material/images/[email protected] b/src/quickcontrols2/material/images/[email protected] Binary files differdeleted file mode 100644 index 37ce3a95..00000000 --- a/src/quickcontrols2/material/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/material/images/[email protected] b/src/quickcontrols2/material/images/[email protected] Binary files differdeleted file mode 100644 index 57abd972..00000000 --- a/src/quickcontrols2/material/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/material/images/[email protected] b/src/quickcontrols2/material/images/[email protected] Binary files differdeleted file mode 100644 index 26d3d7c1..00000000 --- a/src/quickcontrols2/material/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/material/images/check.png b/src/quickcontrols2/material/images/check.png Binary files differdeleted file mode 100644 index 756a43a5..00000000 --- a/src/quickcontrols2/material/images/check.png +++ /dev/null diff --git a/src/quickcontrols2/material/images/[email protected] b/src/quickcontrols2/material/images/[email protected] Binary files differdeleted file mode 100644 index 9d1d6a32..00000000 --- a/src/quickcontrols2/material/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/material/images/[email protected] b/src/quickcontrols2/material/images/[email protected] Binary files differdeleted file mode 100644 index 32ed72f0..00000000 --- a/src/quickcontrols2/material/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/material/images/[email protected] b/src/quickcontrols2/material/images/[email protected] Binary files differdeleted file mode 100644 index 1767cee6..00000000 --- a/src/quickcontrols2/material/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/material/images/drop-indicator.png b/src/quickcontrols2/material/images/drop-indicator.png Binary files differdeleted file mode 100644 index 93560f50..00000000 --- a/src/quickcontrols2/material/images/drop-indicator.png +++ /dev/null diff --git a/src/quickcontrols2/material/images/drop-indicator.svg b/src/quickcontrols2/material/images/drop-indicator.svg deleted file mode 100644 index 94b5ca15..00000000 --- a/src/quickcontrols2/material/images/drop-indicator.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" version="1.1"> - <path d="M7,10l5,5,5-5z" fill="#757575"/> -</svg> diff --git a/src/quickcontrols2/material/images/[email protected] b/src/quickcontrols2/material/images/[email protected] Binary files differdeleted file mode 100644 index d32f8160..00000000 --- a/src/quickcontrols2/material/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/material/images/[email protected] b/src/quickcontrols2/material/images/[email protected] Binary files differdeleted file mode 100644 index 34c3e7d1..00000000 --- a/src/quickcontrols2/material/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/material/images/[email protected] b/src/quickcontrols2/material/images/[email protected] Binary files differdeleted file mode 100644 index 0613f6dd..00000000 --- a/src/quickcontrols2/material/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/material/impl/BoxShadow.qml b/src/quickcontrols2/material/impl/BoxShadow.qml deleted file mode 100644 index ea09570e..00000000 --- a/src/quickcontrols2/material/impl/BoxShadow.qml +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -/* - A implementation of CSS's box-shadow, used by ElevationEffect for a Material Design - elevation shadow effect. - */ -RectangularGlow { - // The 4 properties from CSS box-shadow, plus the inherited color property - property int offsetX - property int offsetY - property int blurRadius - property int spreadRadius - - // The source item the shadow is being applied to, used for correctly - // calculating the corner radious - property Item source - - property bool fullWidth - property bool fullHeight - - x: (parent.width - width)/2 + offsetX - y: (parent.height - height)/2 + offsetY - - implicitWidth: source ? source.width : parent.width - implicitHeight: source ? source.height : parent.height - - width: implicitWidth + 2 * spreadRadius + (fullWidth ? 2 * cornerRadius : 0) - height: implicitHeight + 2 * spreadRadius + (fullHeight ? 2 * cornerRadius : 0) - glowRadius: blurRadius/2 - spread: 0.05 - cornerRadius: blurRadius + (source && source.radius || 0) -} diff --git a/src/quickcontrols2/material/impl/CMakeLists.txt b/src/quickcontrols2/material/impl/CMakeLists.txt deleted file mode 100644 index 289a4b05..00000000 --- a/src/quickcontrols2/material/impl/CMakeLists.txt +++ /dev/null @@ -1,41 +0,0 @@ -##################################################################### -## qtquickcontrols2materialstyleimplplugin Plugin: -##################################################################### - -set(qml_files - "BoxShadow.qml" - "CheckIndicator.qml" - "CursorDelegate.qml" - "ElevationEffect.qml" - "RadioIndicator.qml" - "RectangularGlow.qml" - "SliderHandle.qml" - "SwitchIndicator.qml" -) -set_source_files_properties(${qml_files} PROPERTIES - QT_QML_SOURCE_VERSION "2.0" -) - -qt_internal_add_qml_module(qtquickcontrols2materialstyleimplplugin - URI "QtQuick.Controls.Material.impl" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2MaterialStyleImplPlugin - PLUGIN_TARGET qtquickcontrols2materialstyleimplplugin - NO_PLUGIN_OPTIONAL - SOURCES - qquickmaterialbusyindicator.cpp qquickmaterialbusyindicator_p.h - qquickmaterialprogressbar.cpp qquickmaterialprogressbar_p.h - qquickmaterialripple.cpp qquickmaterialripple_p.h - QML_FILES - ${qml_files} - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::Gui - Qt::QmlPrivate - Qt::QuickControls2ImplPrivate - Qt::QuickPrivate - Qt::QuickTemplates2Private -) diff --git a/src/quickcontrols2/material/impl/CheckIndicator.qml b/src/quickcontrols2/material/impl/CheckIndicator.qml deleted file mode 100644 index b6593fab..00000000 --- a/src/quickcontrols2/material/impl/CheckIndicator.qml +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -Rectangle { - id: indicatorItem - implicitWidth: 18 - implicitHeight: 18 - color: "transparent" - border.color: !control.enabled ? control.Material.hintTextColor - : checkState !== Qt.Unchecked ? control.Material.accentColor : control.Material.secondaryTextColor - border.width: checkState !== Qt.Unchecked ? width / 2 : 2 - radius: 2 - - property Item control - property int checkState: control.checkState - - Behavior on border.width { - NumberAnimation { - duration: 100 - easing.type: Easing.OutCubic - } - } - - Behavior on border.color { - ColorAnimation { - duration: 100 - easing.type: Easing.OutCubic - } - } - - // TODO: This needs to be transparent - Image { - id: checkImage - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: 14 - height: 14 - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Material/images/check.png" - fillMode: Image.PreserveAspectFit - - scale: indicatorItem.checkState === Qt.Checked ? 1 : 0 - Behavior on scale { NumberAnimation { duration: 100 } } - } - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: 12 - height: 3 - - scale: indicatorItem.checkState === Qt.PartiallyChecked ? 1 : 0 - Behavior on scale { NumberAnimation { duration: 100 } } - } - - states: [ - State { - name: "checked" - when: indicatorItem.checkState === Qt.Checked - }, - State { - name: "partiallychecked" - when: indicatorItem.checkState === Qt.PartiallyChecked - } - ] - - transitions: Transition { - SequentialAnimation { - NumberAnimation { - target: indicatorItem - property: "scale" - // Go down 2 pixels in size. - to: 1 - 2 / indicatorItem.width - duration: 120 - } - NumberAnimation { - target: indicatorItem - property: "scale" - to: 1 - duration: 120 - } - } - } -} diff --git a/src/quickcontrols2/material/impl/CursorDelegate.qml b/src/quickcontrols2/material/impl/CursorDelegate.qml deleted file mode 100644 index a913ab84..00000000 --- a/src/quickcontrols2/material/impl/CursorDelegate.qml +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.Material - -Rectangle { - id: cursor - - color: parent.Material.accentColor - width: 2 - visible: parent.activeFocus && !parent.readOnly && parent.selectionStart === parent.selectionEnd - - Connections { - target: cursor.parent - function onCursorPositionChanged() { - // keep a moving cursor visible - cursor.opacity = 1 - timer.restart() - } - } - - Timer { - id: timer - running: cursor.parent.activeFocus && !cursor.parent.readOnly && interval != 0 - repeat: true - interval: Qt.styleHints.cursorFlashTime / 2 - onTriggered: cursor.opacity = !cursor.opacity ? 1 : 0 - // force the cursor visible when gaining focus - onRunningChanged: cursor.opacity = 1 - } -} diff --git a/src/quickcontrols2/material/impl/ElevationEffect.qml b/src/quickcontrols2/material/impl/ElevationEffect.qml deleted file mode 100644 index 8a4e98e3..00000000 --- a/src/quickcontrols2/material/impl/ElevationEffect.qml +++ /dev/null @@ -1,279 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -/* - An effect for standard Material Design elevation shadows. Useful for using as \c layer.effect. - */ -Item { - id: effect - - /* - The source the effect is applied to. - */ - property var source - - /* - The elevation of the \l source Item. - */ - property int elevation: 0 - - /* - Set to \c true if the \l source Item is the same width as its parent and the shadow - should be full width instead of rounding around the corner of the Item. - - \sa fullHeight - */ - property bool fullWidth: false - - /* - Set to \c true if the \l source Item is the same height as its parent and the shadow - should be full height instead of rounding around the corner of the Item. - - \sa fullWidth - */ - property bool fullHeight: false - - /* - \internal - - The actual source Item the effect is applied to. - */ - readonly property Item sourceItem: source.sourceItem - - /* - * The following shadow values are taken from Angular Material - * - * The MIT License (MIT) - * - * Copyright (c) 2014-2016 Google, Inc. http://angularjs.org - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - /* - \internal - - The shadows to use for each possible elevation. There are three shadows that when combined - make up the elevation. - */ - readonly property var _shadows: [ - [{offset: 0, blur: 0, spread: 0}, - {offset: 0, blur: 0, spread: 0}, - {offset: 0, blur: 0, spread: 0}], - - [{offset: 1, blur: 3, spread: 0}, - {offset: 1, blur: 1, spread: 0}, - {offset: 2, blur: 1, spread: -1}], - - [{offset: 1, blur: 5, spread: 0}, - {offset: 2, blur: 2, spread: 0}, - {offset: 3, blur: 1, spread: -2}], - - [{offset: 1, blur: 8, spread: 0}, - {offset: 3, blur: 4, spread: 0}, - {offset: 3, blur: 3, spread: -2}], - - [{offset: 2, blur: 4, spread: -1}, - {offset: 4, blur: 5, spread: 0}, - {offset: 1, blur: 10, spread: 0}], - - [{offset: 3, blur: 5, spread: -1}, - {offset: 5, blur: 8, spread: 0}, - {offset: 1, blur: 14, spread: 0}], - - [{offset: 3, blur: 5, spread: -1}, - {offset: 6, blur: 10, spread: 0}, - {offset: 1, blur: 18, spread: 0}], - - [{offset: 4, blur: 5, spread: -2}, - {offset: 7, blur: 10, spread: 1}, - {offset: 2, blur: 16, spread: 1}], - - [{offset: 5, blur: 5, spread: -3}, - {offset: 8, blur: 10, spread: 1}, - {offset: 3, blur: 14, spread: 2}], - - [{offset: 5, blur: 6, spread: -3}, - {offset: 9, blur: 12, spread: 1}, - {offset: 3, blur: 16, spread: 2}], - - [{offset: 6, blur: 6, spread: -3}, - {offset: 10, blur: 14, spread: 1}, - {offset: 4, blur: 18, spread: 3}], - - [{offset: 6, blur: 7, spread: -4}, - {offset: 11, blur: 15, spread: 1}, - {offset: 4, blur: 20, spread: 3}], - - [{offset: 7, blur: 8, spread: -4}, - {offset: 12, blur: 17, spread: 2}, - {offset: 5, blur: 22, spread: 4}], - - [{offset: 7, blur: 8, spread: -4}, - {offset: 13, blur: 19, spread: 2}, - {offset: 5, blur: 24, spread: 4}], - - [{offset: 7, blur: 9, spread: -4}, - {offset: 14, blur: 21, spread: 2}, - {offset: 5, blur: 26, spread: 4}], - - [{offset: 8, blur: 9, spread: -5}, - {offset: 15, blur: 22, spread: 2}, - {offset: 6, blur: 28, spread: 5}], - - [{offset: 8, blur: 10, spread: -5}, - {offset: 16, blur: 24, spread: 2}, - {offset: 6, blur: 30, spread: 5}], - - [{offset: 8, blur: 11, spread: -5}, - {offset: 17, blur: 26, spread: 2}, - {offset: 6, blur: 32, spread: 5}], - - [{offset: 9, blur: 11, spread: -5}, - {offset: 18, blur: 28, spread: 2}, - {offset: 7, blur: 34, spread: 6}], - - [{offset: 9, blur: 12, spread: -6}, - {offset: 19, blur: 29, spread: 2}, - {offset: 7, blur: 36, spread: 6}], - - [{offset: 10, blur: 13, spread: -6}, - {offset: 20, blur: 31, spread: 3}, - {offset: 8, blur: 38, spread: 7}], - - [{offset: 10, blur: 13, spread: -6}, - {offset: 21, blur: 33, spread: 3}, - {offset: 8, blur: 40, spread: 7}], - - [{offset: 10, blur: 14, spread: -6}, - {offset: 22, blur: 35, spread: 3}, - {offset: 8, blur: 42, spread: 7}], - - [{offset: 11, blur: 14, spread: -7}, - {offset: 23, blur: 36, spread: 3}, - {offset: 9, blur: 44, spread: 8}], - - [{offset: 11, blur: 15, spread: -7}, - {offset: 24, blur: 38, spread: 3}, - {offset: 9, blur: 46, spread: 8}] - ] - - /* - \internal - - The current shadow based on the elevation. - */ - readonly property var _shadow: _shadows[Math.max(0, Math.min(elevation, _shadows.length - 1))] - - // Nest the shadows and source view in two items rendered as a layer - // so the shadow is not clipped by the bounds of the source view - Item { - property int margin: -100 - - x: margin - y: margin - width: parent.width - 2 * margin - height: parent.height - 2 * margin - - // By rendering as a layer, the shadow will never show through the source item, - // even when the source item's opacity is less than 1 - layer.enabled: true - - // The box shadows automatically pick up the size of the source Item and not - // the size of the parent, so we don't need to worry about the extra padding - // in the parent Item - BoxShadow { - offsetY: effect._shadow[0].offset - blurRadius: effect._shadow[0].blur - spreadRadius: effect._shadow[0].spread - color: Qt.rgba(0,0,0, 0.2) - - fullWidth: effect.fullWidth - fullHeight: effect.fullHeight - source: effect.sourceItem - } - - BoxShadow { - offsetY: effect._shadow[1].offset - blurRadius: effect._shadow[1].blur - spreadRadius: effect._shadow[1].spread - color: Qt.rgba(0,0,0, 0.14) - - fullWidth: effect.fullWidth - fullHeight: effect.fullHeight - source: effect.sourceItem - } - - BoxShadow { - offsetY: effect._shadow[2].offset - blurRadius: effect._shadow[2].blur - spreadRadius: effect._shadow[2].spread - color: Qt.rgba(0,0,0, 0.12) - - fullWidth: effect.fullWidth - fullHeight: effect.fullHeight - source: effect.sourceItem - } - - ShaderEffect { - property alias source: effect.source - - x: (parent.width - width)/2 - y: (parent.height - height)/2 - width: effect.sourceItem.width - height: effect.sourceItem.height - } - } -} diff --git a/src/quickcontrols2/material/impl/RadioIndicator.qml b/src/quickcontrols2/material/impl/RadioIndicator.qml deleted file mode 100644 index 68681c44..00000000 --- a/src/quickcontrols2/material/impl/RadioIndicator.qml +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -Rectangle { - id: indicator - implicitWidth: 20 - implicitHeight: 20 - radius: width / 2 - border.width: 2 - border.color: !control.enabled ? control.Material.hintTextColor - : control.checked || control.down ? control.Material.accentColor : control.Material.secondaryTextColor - color: "transparent" - - property Item control - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: 10 - height: 10 - radius: width / 2 - color: parent.border.color - visible: indicator.control.checked || indicator.control.down - } -} diff --git a/src/quickcontrols2/material/impl/RectangularGlow.qml b/src/quickcontrols2/material/impl/RectangularGlow.qml deleted file mode 100644 index b2337afc..00000000 --- a/src/quickcontrols2/material/impl/RectangularGlow.qml +++ /dev/null @@ -1,240 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick - -/* - A cross-graphics API implementation of QtGraphicalEffects' RectangularGlow. - */ -Item { - id: rootItem - - /* - This property defines how many pixels outside the item area are reached - by the glow. - - The value ranges from 0.0 (no glow) to inf (infinite glow). By default, - the property is set to \c 0.0. - - \table - \header - \li Output examples with different glowRadius values - \li - \li - \row - \li \image RectangularGlow_glowRadius1.png - \li \image RectangularGlow_glowRadius2.png - \li \image RectangularGlow_glowRadius3.png - \row - \li \b { glowRadius: 10 } - \li \b { glowRadius: 20 } - \li \b { glowRadius: 40 } - \row - \li \l spread: 0 - \li \l spread: 0 - \li \l spread: 0 - \row - \li \l color: #ffffff - \li \l color: #ffffff - \li \l color: #ffffff - \row - \li \l cornerRadius: 25 - \li \l cornerRadius: 25 - \li \l cornerRadius: 25 - \endtable - - */ - property real glowRadius: 0.0 - - /* - This property defines how large part of the glow color is strenghtened - near the source edges. - - The value ranges from 0.0 (no strenght increase) to 1.0 (maximum - strenght increase). By default, the property is set to \c 0.0. - - \table - \header - \li Output examples with different spread values - \li - \li - \row - \li \image RectangularGlow_spread1.png - \li \image RectangularGlow_spread2.png - \li \image RectangularGlow_spread3.png - \row - \li \b { spread: 0.0 } - \li \b { spread: 0.5 } - \li \b { spread: 1.0 } - \row - \li \l glowRadius: 20 - \li \l glowRadius: 20 - \li \l glowRadius: 20 - \row - \li \l color: #ffffff - \li \l color: #ffffff - \li \l color: #ffffff - \row - \li \l cornerRadius: 25 - \li \l cornerRadius: 25 - \li \l cornerRadius: 25 - \endtable - */ - property real spread: 0.0 - - /* - This property defines the RGBA color value which is used for the glow. - - By default, the property is set to \c "white". - - \table - \header - \li Output examples with different color values - \li - \li - \row - \li \image RectangularGlow_color1.png - \li \image RectangularGlow_color2.png - \li \image RectangularGlow_color3.png - \row - \li \b { color: #ffffff } - \li \b { color: #55ff55 } - \li \b { color: #5555ff } - \row - \li \l glowRadius: 20 - \li \l glowRadius: 20 - \li \l glowRadius: 20 - \row - \li \l spread: 0 - \li \l spread: 0 - \li \l spread: 0 - \row - \li \l cornerRadius: 25 - \li \l cornerRadius: 25 - \li \l cornerRadius: 25 - \endtable - */ - property color color: "white" - - /* - This property defines the corner radius that is used to draw a glow with - rounded corners. - - The value ranges from 0.0 to half of the effective width or height of - the glow, whichever is smaller. This can be calculated with: \c{ - min(width, height) / 2.0 + glowRadius} - - By default, the property is bound to glowRadius property. The glow - behaves as if the rectangle was blurred when adjusting the glowRadius - property. - - \table - \header - \li Output examples with different cornerRadius values - \li - \li - \row - \li \image RectangularGlow_cornerRadius1.png - \li \image RectangularGlow_cornerRadius2.png - \li \image RectangularGlow_cornerRadius3.png - \row - \li \b { cornerRadius: 0 } - \li \b { cornerRadius: 25 } - \li \b { cornerRadius: 50 } - \row - \li \l glowRadius: 20 - \li \l glowRadius: 20 - \li \l glowRadius: 20 - \row - \li \l spread: 0 - \li \l spread: 0 - \li \l spread: 0 - \row - \li \l color: #ffffff - \li \l color: #ffffff - \li \l color: #ffffff - \endtable - */ - property real cornerRadius: glowRadius - - /* - This property allows the effect output pixels to be cached in order to - improve the rendering performance. - - Every time the source or effect properties are changed, the pixels in - the cache must be updated. Memory consumption is increased, because an - extra buffer of memory is required for storing the effect output. - - It is recommended to disable the cache when the source or the effect - properties are animated. - - By default, the property is set to \c false. - */ - property bool cached: false - - ShaderEffectSource { - id: cacheItem - anchors.fill: shaderItem - visible: rootItem.cached - smooth: true - sourceItem: shaderItem - live: true - hideSource: visible - } - - ShaderEffect { - id: shaderItem - - x: (parent.width - width) / 2.0 - y: (parent.height - height) / 2.0 - width: parent.width + rootItem.glowRadius * 2 + cornerRadius * 2 - height: parent.height + rootItem.glowRadius * 2 + cornerRadius * 2 - - function clampedCornerRadius() { - var maxCornerRadius = Math.min(rootItem.width, rootItem.height) / 2 + rootItem.glowRadius; - return Math.max(0, Math.min(rootItem.cornerRadius, maxCornerRadius)) - } - - property color color: rootItem.color - property real inverseSpread: 1.0 - rootItem.spread - property real relativeSizeX: ((inverseSpread * inverseSpread) * rootItem.glowRadius + cornerRadius * 2.0) / width - property real relativeSizeY: relativeSizeX * (width / height) - property real spread: rootItem.spread / 2.0 - property real cornerRadius: clampedCornerRadius() - - fragmentShader: "qrc:/qt-project.org/imports/QtQuick/Controls/Material/shaders/RectangularGlow.frag" - } -} diff --git a/src/quickcontrols2/material/impl/SliderHandle.qml b/src/quickcontrols2/material/impl/SliderHandle.qml deleted file mode 100644 index 60fd7aed..00000000 --- a/src/quickcontrols2/material/impl/SliderHandle.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -Item { - id: root - implicitWidth: initialSize - implicitHeight: initialSize - - property real value: 0 - property bool handleHasFocus: false - property bool handlePressed: false - property bool handleHovered: false - readonly property int initialSize: 13 - readonly property var control: parent - - Rectangle { - id: handleRect - width: parent.width - height: parent.height - radius: width / 2 - scale: root.handlePressed ? 1.5 : 1 - color: control.enabled ? root.control.Material.accentColor : root.control.Material.sliderDisabledColor - - Behavior on scale { - NumberAnimation { - duration: 250 - } - } - } - - Ripple { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: 22; height: 22 - pressed: root.handlePressed - active: root.handlePressed || root.handleHasFocus || root.handleHovered - color: root.control.Material.highlightedRippleColor - } -} diff --git a/src/quickcontrols2/material/impl/SwitchIndicator.qml b/src/quickcontrols2/material/impl/SwitchIndicator.qml deleted file mode 100644 index ae1709b6..00000000 --- a/src/quickcontrols2/material/impl/SwitchIndicator.qml +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl - -Item { - id: indicator - implicitWidth: 38 - implicitHeight: 32 - - property Item control - property alias handle: handle - - Material.elevation: 1 - - Rectangle { - width: parent.width - height: 14 - radius: height / 2 - y: parent.height / 2 - height / 2 - color: indicator.control.enabled ? (indicator.control.checked ? indicator.control.Material.switchCheckedTrackColor : indicator.control.Material.switchUncheckedTrackColor) - : indicator.control.Material.switchDisabledTrackColor - } - - Rectangle { - id: handle - x: Math.max(0, Math.min(parent.width - width, indicator.control.visualPosition * parent.width - (width / 2))) - y: (parent.height - height) / 2 - width: 20 - height: 20 - radius: width / 2 - color: indicator.control.enabled ? (indicator.control.checked ? indicator.control.Material.switchCheckedHandleColor : indicator.control.Material.switchUncheckedHandleColor) - : indicator.control.Material.switchDisabledHandleColor - - Behavior on x { - enabled: !indicator.control.pressed - SmoothedAnimation { - duration: 300 - } - } - layer.enabled: indicator.Material.elevation > 0 - layer.effect: ElevationEffect { - elevation: indicator.Material.elevation - } - } -} diff --git a/src/quickcontrols2/material/impl/qquickmaterialbusyindicator.cpp b/src/quickcontrols2/material/impl/qquickmaterialbusyindicator.cpp deleted file mode 100644 index 10bcc035..00000000 --- a/src/quickcontrols2/material/impl/qquickmaterialbusyindicator.cpp +++ /dev/null @@ -1,245 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmaterialbusyindicator_p.h" - -#include <QtCore/qmath.h> -#include <QtCore/qeasingcurve.h> -#include <QtGui/qpainter.h> -#include <QtQuick/qsgimagenode.h> -#include <QtQuick/qquickwindow.h> -#include <QtQuickControls2Impl/private/qquickanimatednode_p.h> - -QT_BEGIN_NAMESPACE - -/* - Relevant Android code: - - - core/res/res/anim/progress_indeterminate_rotation_material.xml contains - the rotation animation data. - - core/res/res/anim/progress_indeterminate_material.xml contains the trim - animation data. - - core/res/res/interpolator/trim_start_interpolator.xml and - core/res/res/interpolator/trim_end_interpolator.xml contain the start - and end trim path interpolators. - - addCommand() in core/java/android/util/PathParser.java has a list of the - different path commands available. -*/ - -static const int SpanAnimationDuration = 700; -static const int RotationAnimationDuration = SpanAnimationDuration * 6; -static const int TargetRotation = 720; -static const int OneDegree = 16; -static const qreal MinSweepSpan = 10 * OneDegree; -static const qreal MaxSweepSpan = 300 * OneDegree; - -class QQuickMaterialBusyIndicatorNode : public QQuickAnimatedNode -{ -public: - QQuickMaterialBusyIndicatorNode(QQuickMaterialBusyIndicator *item); - - void sync(QQuickItem *item) override; - -protected: - void updateCurrentTime(int time) override; - -private: - int m_lastStartAngle = 0; - int m_lastEndAngle = 0; - qreal m_width = 0; - qreal m_height = 0; - qreal m_devicePixelRatio = 1; - QColor m_color; -}; - -QQuickMaterialBusyIndicatorNode::QQuickMaterialBusyIndicatorNode(QQuickMaterialBusyIndicator *item) - : QQuickAnimatedNode(item) -{ - setLoopCount(Infinite); - setCurrentTime(item->elapsed()); - setDuration(RotationAnimationDuration); - - QSGImageNode *textureNode = item->window()->createImageNode(); - textureNode->setOwnsTexture(true); - appendChildNode(textureNode); - - // A texture seems to be required here, but we don't have one yet, as we haven't drawn anything, - // so just use a blank image. - QImage blankImage(item->width(), item->height(), QImage::Format_ARGB32_Premultiplied); - blankImage.fill(Qt::transparent); - textureNode->setTexture(item->window()->createTextureFromImage(blankImage)); -} - -void QQuickMaterialBusyIndicatorNode::updateCurrentTime(int time) -{ - const qreal w = m_width; - const qreal h = m_height; - const qreal size = qMin(w, h); - const qreal dx = (w - size) / 2; - const qreal dy = (h - size) / 2; - - QImage image(size * m_devicePixelRatio, size * m_devicePixelRatio, QImage::Format_ARGB32_Premultiplied); - image.fill(Qt::transparent); - - QPainter painter(&image); - painter.setRenderHint(QPainter::Antialiasing); - - QPen pen; - QSGImageNode *textureNode = static_cast<QSGImageNode *>(firstChild()); - pen.setColor(m_color); - pen.setWidth(qCeil(size / 12) * m_devicePixelRatio); - painter.setPen(pen); - - const qreal percentageComplete = time / qreal(RotationAnimationDuration); - const qreal spanPercentageComplete = (time % SpanAnimationDuration) / qreal(SpanAnimationDuration); - const int iteration = time / SpanAnimationDuration; - int startAngle = 0; - int endAngle = 0; - - if (iteration % 2 == 0) { - if (m_lastStartAngle > 360 * OneDegree) - m_lastStartAngle -= 360 * OneDegree; - - // The start angle is only affected by the rotation animation for the "grow" phase. - startAngle = m_lastStartAngle; - QEasingCurve angleCurve(QEasingCurve::OutQuad); - const qreal percentage = angleCurve.valueForProgress(spanPercentageComplete); - endAngle = m_lastStartAngle + MinSweepSpan + percentage * (MaxSweepSpan - MinSweepSpan); - m_lastEndAngle = endAngle; - } else { - // Both the start angle *and* the span are affected by the "shrink" phase. - QEasingCurve angleCurve(QEasingCurve::InQuad); - const qreal percentage = angleCurve.valueForProgress(spanPercentageComplete); - startAngle = m_lastEndAngle - MaxSweepSpan + percentage * (MaxSweepSpan - MinSweepSpan); - endAngle = m_lastEndAngle; - m_lastStartAngle = startAngle; - } - - const int halfPen = pen.width() / 2; - const QRectF arcBounds = QRectF(halfPen, halfPen, - m_devicePixelRatio * size - pen.width(), - m_devicePixelRatio * size - pen.width()); - // The current angle of the rotation animation. - const qreal rotation = OneDegree * percentageComplete * -TargetRotation; - startAngle -= rotation; - endAngle -= rotation; - const int angleSpan = endAngle - startAngle; - painter.drawArc(arcBounds, -startAngle, -angleSpan); - painter.end(); - - textureNode->setRect(QRectF(dx, dy, size, size)); - textureNode->setTexture(window()->createTextureFromImage(image)); -} - -void QQuickMaterialBusyIndicatorNode::sync(QQuickItem *item) -{ - QQuickMaterialBusyIndicator *indicator = static_cast<QQuickMaterialBusyIndicator *>(item); - m_color = indicator->color(); - m_width = indicator->width(); - m_height = indicator->height(); - m_devicePixelRatio = indicator->window()->effectiveDevicePixelRatio(); -} - -QQuickMaterialBusyIndicator::QQuickMaterialBusyIndicator(QQuickItem *parent) : - QQuickItem(parent) -{ - setFlag(ItemHasContents); -} - -QColor QQuickMaterialBusyIndicator::color() const -{ - return m_color; -} - -void QQuickMaterialBusyIndicator::setColor(const QColor &color) -{ - if (m_color == color) - return; - - m_color = color; - update(); -} - -bool QQuickMaterialBusyIndicator::isRunning() const -{ - return isVisible(); -} - -void QQuickMaterialBusyIndicator::setRunning(bool running) -{ - if (running) - setVisible(true); -} - -int QQuickMaterialBusyIndicator::elapsed() const -{ - return m_elapsed; -} - -void QQuickMaterialBusyIndicator::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - QQuickItem::itemChange(change, data); - switch (change) { - case ItemOpacityHasChanged: - if (qFuzzyIsNull(data.realValue)) - setVisible(false); - break; - case ItemVisibleHasChanged: - update(); - break; - default: - break; - } -} - -QSGNode *QQuickMaterialBusyIndicator::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) -{ - QQuickMaterialBusyIndicatorNode *node = static_cast<QQuickMaterialBusyIndicatorNode *>(oldNode); - if (isRunning() && width() > 0 && height() > 0) { - if (!node) { - node = new QQuickMaterialBusyIndicatorNode(this); - node->start(); - } - node->sync(this); - } else { - m_elapsed = node ? node->currentTime() : 0; - delete node; - node = nullptr; - } - return node; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/material/impl/qquickmaterialbusyindicator_p.h b/src/quickcontrols2/material/impl/qquickmaterialbusyindicator_p.h deleted file mode 100644 index 72aeaf66..00000000 --- a/src/quickcontrols2/material/impl/qquickmaterialbusyindicator_p.h +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMATERIALBUSYINDICATOR_P_H -#define QQUICKMATERIALBUSYINDICATOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qcolor.h> -#include <QtQuick/qquickitem.h> - -QT_BEGIN_NAMESPACE - -class QQuickMaterialBusyIndicator : public QQuickItem -{ - Q_OBJECT - Q_PROPERTY(QColor color READ color WRITE setColor FINAL) - Q_PROPERTY(bool running READ isRunning WRITE setRunning FINAL) - QML_NAMED_ELEMENT(BusyIndicatorImpl) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickMaterialBusyIndicator(QQuickItem *parent = nullptr); - - QColor color() const; - void setColor(const QColor &color); - - bool isRunning() const; - void setRunning(bool running); - - int elapsed() const; - -protected: - void itemChange(ItemChange change, const ItemChangeData &data) override; - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override; - -private: - int m_elapsed = 0; - QColor m_color = Qt::black; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickMaterialBusyIndicator) - -#endif // QQUICKMATERIALBUSYINDICATOR_P_H diff --git a/src/quickcontrols2/material/impl/qquickmaterialprogressbar.cpp b/src/quickcontrols2/material/impl/qquickmaterialprogressbar.cpp deleted file mode 100644 index 8b3dde23..00000000 --- a/src/quickcontrols2/material/impl/qquickmaterialprogressbar.cpp +++ /dev/null @@ -1,245 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmaterialprogressbar_p.h" - -#include <QtCore/qmath.h> -#include <QtCore/qeasingcurve.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qsgadaptationlayer_p.h> -#include <QtQuick/qsgrectanglenode.h> -#include <QtQuick/qsgimagenode.h> -#include <QtQuick/qquickwindow.h> -#include <QtQuickControls2Impl/private/qquickanimatednode_p.h> - -QT_BEGIN_NAMESPACE - -static const int PauseDuration = 520; -static const int SlideDuration = 1240; -static const int TotalDuration = SlideDuration + PauseDuration; - -class QQuickMaterialProgressBarNode : public QQuickAnimatedNode -{ -public: - QQuickMaterialProgressBarNode(QQuickMaterialProgressBar *item); - - void updateCurrentTime(int time) override; - void sync(QQuickItem *item) override; - -private: - void moveNode(QSGTransformNode *node, const QRectF &geometry, qreal progress); - - bool m_indeterminate = false; - QEasingCurve m_easing = QEasingCurve::OutCubic; -}; - -QQuickMaterialProgressBarNode::QQuickMaterialProgressBarNode(QQuickMaterialProgressBar *item) - : QQuickAnimatedNode(item) -{ - setLoopCount(Infinite); - setDuration(TotalDuration); -} - -void QQuickMaterialProgressBarNode::updateCurrentTime(int time) -{ - QSGRectangleNode *geometryNode = static_cast<QSGRectangleNode *>(firstChild()); - Q_ASSERT(geometryNode->type() == QSGNode::GeometryNodeType); - const QRectF geometry = geometryNode->rect(); - - QSGTransformNode *firstNode = static_cast<QSGTransformNode *>(geometryNode->firstChild()); - if (firstNode) { - Q_ASSERT(firstNode->type() == QSGNode::TransformNodeType); - - const qreal progress = qMin<qreal>(1.0, static_cast<qreal>(time) / SlideDuration); - moveNode(static_cast<QSGTransformNode *>(firstNode), geometry, progress); - } - - QSGTransformNode *secondNode = static_cast<QSGTransformNode *>(geometryNode->lastChild()); - if (secondNode) { - Q_ASSERT(secondNode->type() == QSGNode::TransformNodeType); - - const qreal progress = qMax<qreal>(0.0, static_cast<qreal>(time - PauseDuration) / SlideDuration); - moveNode(static_cast<QSGTransformNode *>(secondNode), geometry, progress); - } -} - -void QQuickMaterialProgressBarNode::sync(QQuickItem *item) -{ - QQuickMaterialProgressBar *bar = static_cast<QQuickMaterialProgressBar *>(item); - if (m_indeterminate != bar->isIndeterminate()) { - m_indeterminate = bar->isIndeterminate(); - if (m_indeterminate) - start(); - else - stop(); - } - - QQuickItemPrivate *d = QQuickItemPrivate::get(item); - - QRectF bounds = item->boundingRect(); - bounds.setHeight(item->implicitHeight()); - bounds.moveTop((item->height() - bounds.height()) / 2.0); - - QSGRectangleNode *geometryNode = static_cast<QSGRectangleNode *>(firstChild()); - if (!geometryNode) { - geometryNode = item->window()->createRectangleNode(); - geometryNode->setColor(Qt::transparent); - appendChildNode(geometryNode); - } - geometryNode->setRect(bounds); - - const int count = m_indeterminate ? 2 : 1; - const qreal w = m_indeterminate ? 0 : bar->progress() * item->width(); - const QRectF rect(0, bounds.y(), w, bounds.height()); - - QSGNode *transformNode = geometryNode->firstChild(); - for (int i = 0; i < count; ++i) { - if (!transformNode) { - transformNode = new QSGTransformNode; - geometryNode->appendChildNode(transformNode); - - QSGInternalRectangleNode *rectNode = d->sceneGraphContext()->createInternalRectangleNode(); - rectNode->setAntialiasing(true); - transformNode->appendChildNode(rectNode); - } - Q_ASSERT(transformNode->type() == QSGNode::TransformNodeType); - static_cast<QSGTransformNode *>(transformNode)->setMatrix(QMatrix4x4()); - - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(transformNode->firstChild()); - Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); - - rectNode->setRect(rect); - rectNode->setColor(bar->color()); - rectNode->update(); - - transformNode = transformNode->nextSibling(); - } - - while (transformNode) { - QSGNode *nextSibling = transformNode->nextSibling(); - delete transformNode; - transformNode = nextSibling; - } -} - -void QQuickMaterialProgressBarNode::moveNode(QSGTransformNode *transformNode, const QRectF &geometry, qreal progress) -{ - const qreal value = m_easing.valueForProgress(progress); - const qreal x = value * geometry.width(); - - QMatrix4x4 matrix; - matrix.translate(x, 0); - transformNode->setMatrix(matrix); - - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(transformNode->firstChild()); - Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); - - QRectF r = geometry; - r.setWidth(value * (geometry.width() - x)); - rectNode->setRect(r); - rectNode->update(); -} - -QQuickMaterialProgressBar::QQuickMaterialProgressBar(QQuickItem *parent) - : QQuickItem(parent) -{ - setFlag(ItemHasContents); -} - -QColor QQuickMaterialProgressBar::color() const -{ - return m_color; -} - -void QQuickMaterialProgressBar::setColor(const QColor &color) -{ - if (color == m_color) - return; - - m_color = color; - update(); -} - -qreal QQuickMaterialProgressBar::progress() const -{ - return m_progress; -} - -void QQuickMaterialProgressBar::setProgress(qreal progress) -{ - if (progress == m_progress) - return; - - m_progress = progress; - update(); -} - -bool QQuickMaterialProgressBar::isIndeterminate() const -{ - return m_indeterminate; -} - -void QQuickMaterialProgressBar::setIndeterminate(bool indeterminate) -{ - if (indeterminate == m_indeterminate) - return; - - m_indeterminate = indeterminate; - update(); -} - -void QQuickMaterialProgressBar::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - QQuickItem::itemChange(change, data); - if (change == ItemVisibleHasChanged) - update(); -} - -QSGNode *QQuickMaterialProgressBar::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *) -{ - QQuickMaterialProgressBarNode *node = static_cast<QQuickMaterialProgressBarNode *>(oldNode); - if (isVisible() && width() > 0 && height() > 0) { - if (!node) - node = new QQuickMaterialProgressBarNode(this); - node->sync(this); - } else { - delete node; - node = nullptr; - } - return node; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/material/impl/qquickmaterialprogressbar_p.h b/src/quickcontrols2/material/impl/qquickmaterialprogressbar_p.h deleted file mode 100644 index bf93812d..00000000 --- a/src/quickcontrols2/material/impl/qquickmaterialprogressbar_p.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMATERIALPROGRESSBAR_P_H -#define QQUICKMATERIALPROGRESSBAR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qcolor.h> -#include <QtQuick/qquickitem.h> - -QT_BEGIN_NAMESPACE - -class QQuickMaterialProgressBar : public QQuickItem -{ - Q_OBJECT - Q_PROPERTY(QColor color READ color WRITE setColor FINAL) - Q_PROPERTY(qreal progress READ progress WRITE setProgress FINAL) - Q_PROPERTY(bool indeterminate READ isIndeterminate WRITE setIndeterminate FINAL) - QML_NAMED_ELEMENT(ProgressBarImpl) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickMaterialProgressBar(QQuickItem *parent = nullptr); - - QColor color() const; - void setColor(const QColor &color); - - qreal progress() const; - void setProgress(qreal progress); - - bool isIndeterminate() const; - void setIndeterminate(bool indeterminate); - -protected: - void itemChange(ItemChange change, const ItemChangeData &data) override; - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override; - -private: - QColor m_color = Qt::black; - qreal m_progress = 0.0; - bool m_indeterminate = false; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickMaterialProgressBar) - -#endif // QQUICKMATERIALPROGRESSBAR_P_H diff --git a/src/quickcontrols2/material/impl/qquickmaterialripple.cpp b/src/quickcontrols2/material/impl/qquickmaterialripple.cpp deleted file mode 100644 index a39a115b..00000000 --- a/src/quickcontrols2/material/impl/qquickmaterialripple.cpp +++ /dev/null @@ -1,442 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmaterialripple_p.h" - -#include <QtCore/qmath.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qsgadaptationlayer_p.h> -#include <QtQuickControls2Impl/private/qquickanimatednode_p.h> -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> -#include <QtQuickTemplates2/private/qquickabstractbutton_p_p.h> - -QT_BEGIN_NAMESPACE - -namespace { - enum WavePhase { WaveEnter, WaveExit }; -} - -static const int RIPPLE_ENTER_DELAY = 80; -static const int OPACITY_ENTER_DURATION_FAST = 120; -static const int WAVE_OPACITY_DECAY_DURATION = 333; -static const qreal WAVE_TOUCH_DOWN_ACCELERATION = 1024.0; - -class QQuickMaterialRippleWaveNode : public QQuickAnimatedNode -{ -public: - QQuickMaterialRippleWaveNode(QQuickMaterialRipple *ripple); - - void exit(); - void updateCurrentTime(int time) override; - void sync(QQuickItem *item) override; - -private: - qreal m_from = 0; - qreal m_to = 0; - qreal m_value = 0; - WavePhase m_phase = WaveEnter; - QPointF m_anchor; - QRectF m_bounds; -}; - -QQuickMaterialRippleWaveNode::QQuickMaterialRippleWaveNode(QQuickMaterialRipple *ripple) - : QQuickAnimatedNode(ripple) -{ - start(qRound(1000.0 * qSqrt(ripple->diameter() / 2.0 / WAVE_TOUCH_DOWN_ACCELERATION))); - - QSGOpacityNode *opacityNode = new QSGOpacityNode; - appendChildNode(opacityNode); - - QQuickItemPrivate *d = QQuickItemPrivate::get(ripple); - QSGInternalRectangleNode *rectNode = d->sceneGraphContext()->createInternalRectangleNode(); - rectNode->setAntialiasing(true); - opacityNode->appendChildNode(rectNode); -} - -void QQuickMaterialRippleWaveNode::exit() -{ - m_phase = WaveExit; - m_from = m_value; - setDuration(WAVE_OPACITY_DECAY_DURATION); - restart(); - connect(this, &QQuickAnimatedNode::stopped, this, &QObject::deleteLater); -} - -void QQuickMaterialRippleWaveNode::updateCurrentTime(int time) -{ - qreal p = 1.0; - if (duration() > 0) - p = time / static_cast<qreal>(duration()); - - m_value = m_from + (m_to - m_from) * p; - p = m_value / m_to; - - const qreal dx = (1.0 - p) * (m_anchor.x() - m_bounds.width() / 2); - const qreal dy = (1.0 - p) * (m_anchor.y() - m_bounds.height() / 2); - - QMatrix4x4 m; - m.translate(qRound((m_bounds.width() - m_value) / 2 + dx), - qRound((m_bounds.height() - m_value) / 2 + dy)); - setMatrix(m); - - QSGOpacityNode *opacityNode = static_cast<QSGOpacityNode *>(firstChild()); - Q_ASSERT(opacityNode->type() == QSGNode::OpacityNodeType); - qreal opacity = 1.0; - if (m_phase == WaveExit) - opacity -= static_cast<qreal>(time) / WAVE_OPACITY_DECAY_DURATION; - opacityNode->setOpacity(opacity); - - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(opacityNode->firstChild()); - Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); - rectNode->setRect(QRectF(0, 0, m_value, m_value)); - rectNode->setRadius(m_value / 2); - rectNode->update(); -} - -void QQuickMaterialRippleWaveNode::sync(QQuickItem *item) -{ - QQuickMaterialRipple *ripple = static_cast<QQuickMaterialRipple *>(item); - m_to = ripple->diameter(); - m_anchor = ripple->anchorPoint(); - m_bounds = ripple->boundingRect(); - - QSGOpacityNode *opacityNode = static_cast<QSGOpacityNode *>(firstChild()); - Q_ASSERT(opacityNode->type() == QSGNode::OpacityNodeType); - - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(opacityNode->firstChild()); - Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); - rectNode->setColor(ripple->color()); -} - -class QQuickMaterialRippleBackgroundNode : public QQuickAnimatedNode -{ - Q_OBJECT - -public: - QQuickMaterialRippleBackgroundNode(QQuickMaterialRipple *ripple); - - void updateCurrentTime(int time) override; - void sync(QQuickItem *item) override; - -private: - bool m_active = false; -}; - -QQuickMaterialRippleBackgroundNode::QQuickMaterialRippleBackgroundNode(QQuickMaterialRipple *ripple) - : QQuickAnimatedNode(ripple) -{ - setDuration(OPACITY_ENTER_DURATION_FAST); - - QSGOpacityNode *opacityNode = new QSGOpacityNode; - opacityNode->setOpacity(0.0); - appendChildNode(opacityNode); - - QQuickItemPrivate *d = QQuickItemPrivate::get(ripple); - QSGInternalRectangleNode *rectNode = d->sceneGraphContext()->createInternalRectangleNode(); - rectNode->setAntialiasing(true); - opacityNode->appendChildNode(rectNode); -} - -void QQuickMaterialRippleBackgroundNode::updateCurrentTime(int time) -{ - qreal opacity = time / static_cast<qreal>(duration()); - if (!m_active) - opacity = 1.0 - opacity; - - QSGOpacityNode *opacityNode = static_cast<QSGOpacityNode *>(firstChild()); - Q_ASSERT(opacityNode->type() == QSGNode::OpacityNodeType); - opacityNode->setOpacity(opacity); -} - -void QQuickMaterialRippleBackgroundNode::sync(QQuickItem *item) -{ - QQuickMaterialRipple *ripple = static_cast<QQuickMaterialRipple *>(item); - if (m_active != ripple->isActive()) { - m_active = ripple->isActive(); - setDuration(m_active ? OPACITY_ENTER_DURATION_FAST : WAVE_OPACITY_DECAY_DURATION); - restart(); - } - - QSGOpacityNode *opacityNode = static_cast<QSGOpacityNode *>(firstChild()); - Q_ASSERT(opacityNode->type() == QSGNode::OpacityNodeType); - - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(opacityNode->firstChild()); - Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); - - const qreal w = ripple->width(); - const qreal h = ripple->height(); - const qreal sz = qSqrt(w * w + h * h); - - QMatrix4x4 matrix; - if (qFuzzyIsNull(ripple->clipRadius())) { - matrix.translate(qRound((w - sz) / 2), qRound((h - sz) / 2)); - rectNode->setRect(QRectF(0, 0, sz, sz)); - rectNode->setRadius(sz / 2); - } else { - rectNode->setRect(QRectF(0, 0, w, h)); - rectNode->setRadius(ripple->clipRadius()); - } - - setMatrix(matrix); - rectNode->setColor(ripple->color()); - rectNode->update(); -} - -QQuickMaterialRipple::QQuickMaterialRipple(QQuickItem *parent) - : QQuickItem(parent) -{ - setFlag(ItemHasContents); -} - -bool QQuickMaterialRipple::isActive() const -{ - return m_active; -} - -void QQuickMaterialRipple::setActive(bool active) -{ - if (active == m_active) - return; - - m_active = active; - update(); -} - -QColor QQuickMaterialRipple::color() const -{ - return m_color; -} - -void QQuickMaterialRipple::setColor(const QColor &color) -{ - if (m_color == color) - return; - - m_color = color; - update(); -} - -qreal QQuickMaterialRipple::clipRadius() const -{ - return m_clipRadius; -} - -void QQuickMaterialRipple::setClipRadius(qreal radius) -{ - if (qFuzzyCompare(m_clipRadius, radius)) - return; - - m_clipRadius = radius; - setClip(!qFuzzyIsNull(radius)); - update(); -} - -bool QQuickMaterialRipple::isPressed() const -{ - return m_pressed; -} - -void QQuickMaterialRipple::setPressed(bool pressed) -{ - if (pressed == m_pressed) - return; - - m_pressed = pressed; - - if (!isEnabled()) { - exitWave(); - return; - } - - if (pressed) { - if (m_trigger == Press) - prepareWave(); - else - exitWave(); - } else { - if (m_trigger == Release) - enterWave(); - else - exitWave(); - } -} - -QQuickMaterialRipple::Trigger QQuickMaterialRipple::trigger() const -{ - return m_trigger; -} - -void QQuickMaterialRipple::setTrigger(Trigger trigger) -{ - m_trigger = trigger; -} - -QPointF QQuickMaterialRipple::anchorPoint() const -{ - const QRectF bounds = boundingRect(); - const QPointF center = bounds.center(); - if (!m_anchor) - return center; - - QPointF anchorPoint = bounds.center(); - if (QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(m_anchor)) - anchorPoint = QQuickAbstractButtonPrivate::get(button)->pressPoint; - anchorPoint = mapFromItem(m_anchor, anchorPoint); - - // calculate whether the anchor point is within the ripple circle bounds, - // that is, whether waves should start expanding from the anchor point - const qreal r = qSqrt(bounds.width() * bounds.width() + bounds.height() * bounds.height()) / 2; - if (QLineF(center, anchorPoint).length() < r) - return anchorPoint; - - // if the anchor point is outside the ripple circle bounds, start expanding - // from the intersection point of the ripple circle and a line from its center - // to the the anchor point - const qreal p = qAtan2(anchorPoint.y() - center.y(), anchorPoint.x() - center.x()); - return QPointF(center.x() + r * qCos(p), center.y() + r * qSin(p)); -} - -QQuickItem *QQuickMaterialRipple::anchor() const -{ - return m_anchor; -} - -void QQuickMaterialRipple::setAnchor(QQuickItem *item) -{ - m_anchor = item; -} - -qreal QQuickMaterialRipple::diameter() const -{ - const qreal w = width(); - const qreal h = height(); - return qSqrt(w * w + h * h); -} - -void QQuickMaterialRipple::itemChange(ItemChange change, const ItemChangeData &data) -{ - QQuickItem::itemChange(change, data); -} - -QSGNode *QQuickMaterialRipple::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) -{ - QQuickItemPrivate *d = QQuickItemPrivate::get(this); - QQuickDefaultClipNode *clipNode = d->clipNode(); - if (clipNode) { - // TODO: QTBUG-51894 - // clipNode->setRadius(m_clipRadius); - clipNode->setRect(boundingRect()); - clipNode->update(); - } - - QSGNode *container = oldNode; - if (!container) - container = new QSGNode; - - QQuickMaterialRippleBackgroundNode *backgroundNode = static_cast<QQuickMaterialRippleBackgroundNode *>(container->firstChild()); - if (!backgroundNode) { - backgroundNode = new QQuickMaterialRippleBackgroundNode(this); - backgroundNode->setObjectName(objectName()); - container->appendChildNode(backgroundNode); - } - backgroundNode->sync(this); - - // enter new waves - int i = m_waves; - QQuickMaterialRippleWaveNode *enterNode = static_cast<QQuickMaterialRippleWaveNode *>(backgroundNode->nextSibling()); - while (i-- > 0) { - if (!enterNode) { - enterNode = new QQuickMaterialRippleWaveNode(this); - container->appendChildNode(enterNode); - } - enterNode->sync(this); - enterNode = static_cast<QQuickMaterialRippleWaveNode *>(enterNode->nextSibling()); - } - - // exit old waves - int j = container->childCount() - 1 - m_waves; - while (j-- > 0) { - QQuickMaterialRippleWaveNode *exitNode = static_cast<QQuickMaterialRippleWaveNode *>(backgroundNode->nextSibling()); - if (exitNode) { - exitNode->exit(); - exitNode->sync(this); - } - } - - return container; -} - -void QQuickMaterialRipple::timerEvent(QTimerEvent *event) -{ - QQuickItem::timerEvent(event); - - if (event->timerId() == m_enterDelay) - enterWave(); -} - -void QQuickMaterialRipple::prepareWave() -{ - if (m_enterDelay <= 0) - m_enterDelay = startTimer(RIPPLE_ENTER_DELAY); -} - -void QQuickMaterialRipple::enterWave() -{ - if (m_enterDelay > 0) { - killTimer(m_enterDelay); - m_enterDelay = 0; - } - - ++m_waves; - update(); -} - -void QQuickMaterialRipple::exitWave() -{ - if (m_enterDelay > 0) { - killTimer(m_enterDelay); - m_enterDelay = 0; - } - - if (m_waves > 0) { - --m_waves; - update(); - } -} - -QT_END_NAMESPACE - -#include "qquickmaterialripple.moc" diff --git a/src/quickcontrols2/material/impl/qquickmaterialripple_p.h b/src/quickcontrols2/material/impl/qquickmaterialripple_p.h deleted file mode 100644 index 51728389..00000000 --- a/src/quickcontrols2/material/impl/qquickmaterialripple_p.h +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMATERIALRIPPLE_P_H -#define QQUICKMATERIALRIPPLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/qquickitem.h> -#include <QtGui/qcolor.h> - -QT_BEGIN_NAMESPACE - -class QQuickMaterialRipple : public QQuickItem -{ - Q_OBJECT - Q_PROPERTY(QColor color READ color WRITE setColor FINAL) - Q_PROPERTY(qreal clipRadius READ clipRadius WRITE setClipRadius FINAL) - Q_PROPERTY(bool pressed READ isPressed WRITE setPressed FINAL) - Q_PROPERTY(bool active READ isActive WRITE setActive FINAL) - Q_PROPERTY(QQuickItem *anchor READ anchor WRITE setAnchor FINAL) - Q_PROPERTY(Trigger trigger READ trigger WRITE setTrigger FINAL) - QML_NAMED_ELEMENT(Ripple) - QML_ADDED_IN_VERSION(2, 0) - -public: - QQuickMaterialRipple(QQuickItem *parent = nullptr); - - QColor color() const; - void setColor(const QColor &color); - - qreal clipRadius() const; - void setClipRadius(qreal radius); - - bool isActive() const; - void setActive(bool active); - - bool isPressed() const; - void setPressed(bool pressed); - - enum Trigger { Press, Release }; - Q_ENUM (Trigger) - - Trigger trigger() const; - void setTrigger(Trigger trigger); - - QPointF anchorPoint() const; - - QQuickItem *anchor() const; - void setAnchor(QQuickItem *anchor); - - qreal diameter() const; - -protected: - void itemChange(ItemChange change, const ItemChangeData &data) override; - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override; - void timerEvent(QTimerEvent *event) override; - - void prepareWave(); - void enterWave(); - void exitWave(); - -private: - bool m_active = false; - bool m_pressed = false; - int m_waves = 0; - int m_enterDelay = 0; - Trigger m_trigger = Press; - qreal m_clipRadius = 0.0; - QColor m_color; - QQuickItem *m_anchor = nullptr; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickMaterialRipple) - -#endif // QQUICKMATERIALRIPPLE_P_H diff --git a/src/quickcontrols2/material/material.pri b/src/quickcontrols2/material/material.pri deleted file mode 100644 index 9eb14233..00000000 --- a/src/quickcontrols2/material/material.pri +++ /dev/null @@ -1,60 +0,0 @@ -HEADERS += \ - $$PWD/qquickmaterialstyle_p.h \ - $$PWD/qquickmaterialtheme_p.h - -SOURCES += \ - $$PWD/qquickmaterialstyle.cpp \ - $$PWD/qquickmaterialtheme.cpp - -QML_FILES += \ - $$PWD/ApplicationWindow.qml \ - $$PWD/BusyIndicator.qml \ - $$PWD/Button.qml \ - $$PWD/CheckBox.qml \ - $$PWD/CheckDelegate.qml \ - $$PWD/ComboBox.qml \ - $$PWD/DelayButton.qml \ - $$PWD/Dial.qml \ - $$PWD/Dialog.qml \ - $$PWD/DialogButtonBox.qml \ - $$PWD/Drawer.qml \ - $$PWD/Frame.qml \ - $$PWD/GroupBox.qml \ - $$PWD/HorizontalHeaderView.qml \ - $$PWD/ItemDelegate.qml \ - $$PWD/Label.qml \ - $$PWD/Menu.qml \ - $$PWD/MenuBar.qml \ - $$PWD/MenuBarItem.qml \ - $$PWD/MenuItem.qml \ - $$PWD/MenuSeparator.qml \ - $$PWD/Page.qml \ - $$PWD/PageIndicator.qml \ - $$PWD/Pane.qml \ - $$PWD/Popup.qml \ - $$PWD/ProgressBar.qml \ - $$PWD/RadioButton.qml \ - $$PWD/RadioDelegate.qml \ - $$PWD/RangeSlider.qml \ - $$PWD/RoundButton.qml \ - $$PWD/ScrollView.qml \ - $$PWD/ScrollBar.qml \ - $$PWD/ScrollIndicator.qml \ - $$PWD/Slider.qml \ - $$PWD/SpinBox.qml \ - $$PWD/SplitView.qml \ - $$PWD/StackView.qml \ - $$PWD/SwipeDelegate.qml \ - $$PWD/SwipeView.qml \ - $$PWD/Switch.qml \ - $$PWD/SwitchDelegate.qml \ - $$PWD/TabBar.qml \ - $$PWD/TabButton.qml \ - $$PWD/TextArea.qml \ - $$PWD/TextField.qml \ - $$PWD/ToolBar.qml \ - $$PWD/ToolButton.qml \ - $$PWD/ToolSeparator.qml \ - $$PWD/ToolTip.qml \ - $$PWD/Tumbler.qml \ - $$PWD/VerticalHeaderView.qml diff --git a/src/quickcontrols2/material/qquickmaterialstyle.cpp b/src/quickcontrols2/material/qquickmaterialstyle.cpp deleted file mode 100644 index d70728a0..00000000 --- a/src/quickcontrols2/material/qquickmaterialstyle.cpp +++ /dev/null @@ -1,1383 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmaterialstyle_p.h" - -#include <QtCore/qdebug.h> -#include <QtCore/qsettings.h> -#include <QtQml/qqmlinfo.h> -#include <QtQuickControls2/private/qquickstyle_p.h> - -QT_BEGIN_NAMESPACE - -static const QRgb colors[][14] = { - // Red - { - 0xFFFFEBEE, // Shade50 - 0xFFFFCDD2, // Shade100 - 0xFFEF9A9A, // Shade200 - 0xFFE57373, // Shade300 - 0xFFEF5350, // Shade400 - 0xFFF44336, // Shade500 - 0xFFE53935, // Shade600 - 0xFFD32F2F, // Shade700 - 0xFFC62828, // Shade800 - 0xFFB71C1C, // Shade900 - 0xFFFF8A80, // ShadeA100 - 0xFFFF5252, // ShadeA200 - 0xFFFF1744, // ShadeA400 - 0xFFD50000 // ShadeA700 - }, - // Pink - { - 0xFFFCE4EC, // Shade50 - 0xFFF8BBD0, // Shade100 - 0xFFF48FB1, // Shade200 - 0xFFF06292, // Shade300 - 0xFFEC407A, // Shade400 - 0xFFE91E63, // Shade500 - 0xFFD81B60, // Shade600 - 0xFFC2185B, // Shade700 - 0xFFAD1457, // Shade800 - 0xFF880E4F, // Shade900 - 0xFFFF80AB, // ShadeA100 - 0xFFFF4081, // ShadeA200 - 0xFFF50057, // ShadeA400 - 0xFFC51162 // ShadeA700 - }, - // Purple - { - 0xFFF3E5F5, // Shade50 - 0xFFE1BEE7, // Shade100 - 0xFFCE93D8, // Shade200 - 0xFFBA68C8, // Shade300 - 0xFFAB47BC, // Shade400 - 0xFF9C27B0, // Shade500 - 0xFF8E24AA, // Shade600 - 0xFF7B1FA2, // Shade700 - 0xFF6A1B9A, // Shade800 - 0xFF4A148C, // Shade900 - 0xFFEA80FC, // ShadeA100 - 0xFFE040FB, // ShadeA200 - 0xFFD500F9, // ShadeA400 - 0xFFAA00FF // ShadeA700 - }, - // DeepPurple - { - 0xFFEDE7F6, // Shade50 - 0xFFD1C4E9, // Shade100 - 0xFFB39DDB, // Shade200 - 0xFF9575CD, // Shade300 - 0xFF7E57C2, // Shade400 - 0xFF673AB7, // Shade500 - 0xFF5E35B1, // Shade600 - 0xFF512DA8, // Shade700 - 0xFF4527A0, // Shade800 - 0xFF311B92, // Shade900 - 0xFFB388FF, // ShadeA100 - 0xFF7C4DFF, // ShadeA200 - 0xFF651FFF, // ShadeA400 - 0xFF6200EA // ShadeA700 - }, - // Indigo - { - 0xFFE8EAF6, // Shade50 - 0xFFC5CAE9, // Shade100 - 0xFF9FA8DA, // Shade200 - 0xFF7986CB, // Shade300 - 0xFF5C6BC0, // Shade400 - 0xFF3F51B5, // Shade500 - 0xFF3949AB, // Shade600 - 0xFF303F9F, // Shade700 - 0xFF283593, // Shade800 - 0xFF1A237E, // Shade900 - 0xFF8C9EFF, // ShadeA100 - 0xFF536DFE, // ShadeA200 - 0xFF3D5AFE, // ShadeA400 - 0xFF304FFE // ShadeA700 - }, - // Blue - { - 0xFFE3F2FD, // Shade50 - 0xFFBBDEFB, // Shade100 - 0xFF90CAF9, // Shade200 - 0xFF64B5F6, // Shade300 - 0xFF42A5F5, // Shade400 - 0xFF2196F3, // Shade500 - 0xFF1E88E5, // Shade600 - 0xFF1976D2, // Shade700 - 0xFF1565C0, // Shade800 - 0xFF0D47A1, // Shade900 - 0xFF82B1FF, // ShadeA100 - 0xFF448AFF, // ShadeA200 - 0xFF2979FF, // ShadeA400 - 0xFF2962FF // ShadeA700 - }, - // LightBlue - { - 0xFFE1F5FE, // Shade50 - 0xFFB3E5FC, // Shade100 - 0xFF81D4FA, // Shade200 - 0xFF4FC3F7, // Shade300 - 0xFF29B6F6, // Shade400 - 0xFF03A9F4, // Shade500 - 0xFF039BE5, // Shade600 - 0xFF0288D1, // Shade700 - 0xFF0277BD, // Shade800 - 0xFF01579B, // Shade900 - 0xFF80D8FF, // ShadeA100 - 0xFF40C4FF, // ShadeA200 - 0xFF00B0FF, // ShadeA400 - 0xFF0091EA // ShadeA700 - }, - // Cyan - { - 0xFFE0F7FA, // Shade50 - 0xFFB2EBF2, // Shade100 - 0xFF80DEEA, // Shade200 - 0xFF4DD0E1, // Shade300 - 0xFF26C6DA, // Shade400 - 0xFF00BCD4, // Shade500 - 0xFF00ACC1, // Shade600 - 0xFF0097A7, // Shade700 - 0xFF00838F, // Shade800 - 0xFF006064, // Shade900 - 0xFF84FFFF, // ShadeA100 - 0xFF18FFFF, // ShadeA200 - 0xFF00E5FF, // ShadeA400 - 0xFF00B8D4 // ShadeA700 - }, - // Teal - { - 0xFFE0F2F1, // Shade50 - 0xFFB2DFDB, // Shade100 - 0xFF80CBC4, // Shade200 - 0xFF4DB6AC, // Shade300 - 0xFF26A69A, // Shade400 - 0xFF009688, // Shade500 - 0xFF00897B, // Shade600 - 0xFF00796B, // Shade700 - 0xFF00695C, // Shade800 - 0xFF004D40, // Shade900 - 0xFFA7FFEB, // ShadeA100 - 0xFF64FFDA, // ShadeA200 - 0xFF1DE9B6, // ShadeA400 - 0xFF00BFA5 // ShadeA700 - }, - // Green - { - 0xFFE8F5E9, // Shade50 - 0xFFC8E6C9, // Shade100 - 0xFFA5D6A7, // Shade200 - 0xFF81C784, // Shade300 - 0xFF66BB6A, // Shade400 - 0xFF4CAF50, // Shade500 - 0xFF43A047, // Shade600 - 0xFF388E3C, // Shade700 - 0xFF2E7D32, // Shade800 - 0xFF1B5E20, // Shade900 - 0xFFB9F6CA, // ShadeA100 - 0xFF69F0AE, // ShadeA200 - 0xFF00E676, // ShadeA400 - 0xFF00C853 // ShadeA700 - }, - // LightGreen - { - 0xFFF1F8E9, // Shade50 - 0xFFDCEDC8, // Shade100 - 0xFFC5E1A5, // Shade200 - 0xFFAED581, // Shade300 - 0xFF9CCC65, // Shade400 - 0xFF8BC34A, // Shade500 - 0xFF7CB342, // Shade600 - 0xFF689F38, // Shade700 - 0xFF558B2F, // Shade800 - 0xFF33691E, // Shade900 - 0xFFCCFF90, // ShadeA100 - 0xFFB2FF59, // ShadeA200 - 0xFF76FF03, // ShadeA400 - 0xFF64DD17 // ShadeA700 - }, - // Lime - { - 0xFFF9FBE7, // Shade50 - 0xFFF0F4C3, // Shade100 - 0xFFE6EE9C, // Shade200 - 0xFFDCE775, // Shade300 - 0xFFD4E157, // Shade400 - 0xFFCDDC39, // Shade500 - 0xFFC0CA33, // Shade600 - 0xFFAFB42B, // Shade700 - 0xFF9E9D24, // Shade800 - 0xFF827717, // Shade900 - 0xFFF4FF81, // ShadeA100 - 0xFFEEFF41, // ShadeA200 - 0xFFC6FF00, // ShadeA400 - 0xFFAEEA00 // ShadeA700 - }, - // Yellow - { - 0xFFFFFDE7, // Shade50 - 0xFFFFF9C4, // Shade100 - 0xFFFFF59D, // Shade200 - 0xFFFFF176, // Shade300 - 0xFFFFEE58, // Shade400 - 0xFFFFEB3B, // Shade500 - 0xFFFDD835, // Shade600 - 0xFFFBC02D, // Shade700 - 0xFFF9A825, // Shade800 - 0xFFF57F17, // Shade900 - 0xFFFFFF8D, // ShadeA100 - 0xFFFFFF00, // ShadeA200 - 0xFFFFEA00, // ShadeA400 - 0xFFFFD600 // ShadeA700 - }, - // Amber - { - 0xFFFFF8E1, // Shade50 - 0xFFFFECB3, // Shade100 - 0xFFFFE082, // Shade200 - 0xFFFFD54F, // Shade300 - 0xFFFFCA28, // Shade400 - 0xFFFFC107, // Shade500 - 0xFFFFB300, // Shade600 - 0xFFFFA000, // Shade700 - 0xFFFF8F00, // Shade800 - 0xFFFF6F00, // Shade900 - 0xFFFFE57F, // ShadeA100 - 0xFFFFD740, // ShadeA200 - 0xFFFFC400, // ShadeA400 - 0xFFFFAB00 // ShadeA700 - }, - // Orange - { - 0xFFFFF3E0, // Shade50 - 0xFFFFE0B2, // Shade100 - 0xFFFFCC80, // Shade200 - 0xFFFFB74D, // Shade300 - 0xFFFFA726, // Shade400 - 0xFFFF9800, // Shade500 - 0xFFFB8C00, // Shade600 - 0xFFF57C00, // Shade700 - 0xFFEF6C00, // Shade800 - 0xFFE65100, // Shade900 - 0xFFFFD180, // ShadeA100 - 0xFFFFAB40, // ShadeA200 - 0xFFFF9100, // ShadeA400 - 0xFFFF6D00 // ShadeA700 - }, - // DeepOrange - { - 0xFFFBE9E7, // Shade50 - 0xFFFFCCBC, // Shade100 - 0xFFFFAB91, // Shade200 - 0xFFFF8A65, // Shade300 - 0xFFFF7043, // Shade400 - 0xFFFF5722, // Shade500 - 0xFFF4511E, // Shade600 - 0xFFE64A19, // Shade700 - 0xFFD84315, // Shade800 - 0xFFBF360C, // Shade900 - 0xFFFF9E80, // ShadeA100 - 0xFFFF6E40, // ShadeA200 - 0xFFFF3D00, // ShadeA400 - 0xFFDD2C00 // ShadeA700 - }, - // Brown - { - 0xFFEFEBE9, // Shade50 - 0xFFD7CCC8, // Shade100 - 0xFFBCAAA4, // Shade200 - 0xFFA1887F, // Shade300 - 0xFF8D6E63, // Shade400 - 0xFF795548, // Shade500 - 0xFF6D4C41, // Shade600 - 0xFF5D4037, // Shade700 - 0xFF4E342E, // Shade800 - 0xFF3E2723, // Shade900 - 0xFF000000, // ShadeA100 - 0xFF000000, // ShadeA200 - 0xFF000000, // ShadeA400 - 0xFF000000 // ShadeA700 - }, - // Grey - { - 0xFFFAFAFA, // Shade50 - 0xFFF5F5F5, // Shade100 - 0xFFEEEEEE, // Shade200 - 0xFFE0E0E0, // Shade300 - 0xFFBDBDBD, // Shade400 - 0xFF9E9E9E, // Shade500 - 0xFF757575, // Shade600 - 0xFF616161, // Shade700 - 0xFF424242, // Shade800 - 0xFF212121, // Shade900 - 0xFF000000, // ShadeA100 - 0xFF000000, // ShadeA200 - 0xFF000000, // ShadeA400 - 0xFF000000 // ShadeA700 - }, - // BlueGrey - { - 0xFFECEFF1, // Shade50 - 0xFFCFD8DC, // Shade100 - 0xFFB0BEC5, // Shade200 - 0xFF90A4AE, // Shade300 - 0xFF78909C, // Shade400 - 0xFF607D8B, // Shade500 - 0xFF546E7A, // Shade600 - 0xFF455A64, // Shade700 - 0xFF37474F, // Shade800 - 0xFF263238, // Shade900 - 0xFF000000, // ShadeA100 - 0xFF000000, // ShadeA200 - 0xFF000000, // ShadeA400 - 0xFF000000 // ShadeA700 - } -}; - -// If no value was inherited from a parent or explicitly set, the "global" values are used. -// The initial, default values of the globals are hard-coded here, but the environment -// variables and .conf file override them if specified. -static QQuickMaterialStyle::Theme globalTheme = QQuickMaterialStyle::Light; -static uint globalPrimary = QQuickMaterialStyle::Indigo; -static uint globalAccent = QQuickMaterialStyle::Pink; -static uint globalForeground = 0xDD000000; // primaryTextColorLight -static uint globalBackground = 0xFFFAFAFA; // backgroundColorLight -// These represent whether a global foreground/background was set. -// Each style's m_hasForeground/m_hasBackground are initialized to these values. -static bool hasGlobalForeground = false; -static bool hasGlobalBackground = false; -// These represent whether or not the global color value was specified as one of the -// values that QColor accepts, as opposed to one of the pre-defined colors like Red. -static bool globalPrimaryCustom = false; -static bool globalAccentCustom = false; -static bool globalForegroundCustom = true; -static bool globalBackgroundCustom = true; -// This is global because: -// 1) The theme needs access to it to determine font sizes. -// 2) There can only be one variant used for the whole application. -static QQuickMaterialStyle::Variant globalVariant = QQuickMaterialStyle::Normal; - -static const QRgb backgroundColorLight = 0xFFFAFAFA; -static const QRgb backgroundColorDark = 0xFF303030; -static const QRgb dialogColorLight = 0xFFFFFFFF; -static const QRgb dialogColorDark = 0xFF424242; -static const QRgb primaryTextColorLight = 0xDD000000; -static const QRgb primaryTextColorDark = 0xFFFFFFFF; -static const QRgb secondaryTextColorLight = 0x89000000; -static const QRgb secondaryTextColorDark = 0xB2FFFFFF; -static const QRgb hintTextColorLight = 0x60000000; -static const QRgb hintTextColorDark = 0x4CFFFFFF; -static const QRgb dividerColorLight = 0x1E000000; -static const QRgb dividerColorDark = 0x1EFFFFFF; -static const QRgb iconColorLight = 0x89000000; -static const QRgb iconColorDark = 0xFFFFFFFF; -static const QRgb iconDisabledColorLight = 0x42000000; -static const QRgb iconDisabledColorDark = 0x4CFFFFFF; -static const QRgb raisedButtonColorLight = 0xFFD6D7D7; -static const QRgb raisedButtonColorDark = 0x3FCCCCCC; -static const QRgb raisedButtonDisabledColorLight = dividerColorLight; -static const QRgb raisedButtonDisabledColorDark = dividerColorDark; -static const QRgb frameColorLight = hintTextColorLight; -static const QRgb frameColorDark = hintTextColorDark; -static const QRgb switchUncheckedTrackColorLight = 0x42000000; -static const QRgb switchUncheckedTrackColorDark = 0x4CFFFFFF; -static const QRgb switchDisabledTrackColorLight = 0x1E000000; -static const QRgb switchDisabledTrackColorDark = 0x19FFFFFF; -static const QRgb rippleColorLight = 0x10000000; -static const QRgb rippleColorDark = 0x20FFFFFF; -static const QRgb spinBoxDisabledIconColorLight = 0xFFCCCCCC; -static const QRgb spinBoxDisabledIconColorDark = 0xFF666666; -static const QRgb sliderDisabledColorLight = 0xFF9E9E9E; -static const QRgb sliderDisabledColorDark = 0xFF616161; - -static QQuickMaterialStyle::Theme effectiveTheme(QQuickMaterialStyle::Theme theme) -{ - if (theme == QQuickMaterialStyle::System) - theme = QQuickStylePrivate::isDarkSystemTheme() ? QQuickMaterialStyle::Dark : QQuickMaterialStyle::Light; - return theme; -} - -QQuickMaterialStyle::QQuickMaterialStyle(QObject *parent) : QQuickAttachedObject(parent), - m_customPrimary(globalPrimaryCustom), - m_customAccent(globalAccentCustom), - m_customForeground(globalForegroundCustom), - m_customBackground(globalBackgroundCustom), - m_hasForeground(hasGlobalForeground), - m_hasBackground(hasGlobalBackground), - m_theme(globalTheme), - m_primary(globalPrimary), - m_accent(globalAccent), - m_foreground(globalForeground), - m_background(globalBackground) -{ - QQuickAttachedObject::init(); -} - -QQuickMaterialStyle *QQuickMaterialStyle::qmlAttachedProperties(QObject *object) -{ - return new QQuickMaterialStyle(object); -} - -QQuickMaterialStyle::Theme QQuickMaterialStyle::theme() const -{ - return m_theme; -} - -void QQuickMaterialStyle::setTheme(Theme theme) -{ - if (theme == System) - theme = QQuickStylePrivate::isDarkSystemTheme() ? Dark : Light; - - m_explicitTheme = true; - if (m_theme == theme) - return; - - m_theme = theme; - propagateTheme(); - themeChange(); - if (!m_customAccent) - accentChange(); - if (!m_hasBackground) - backgroundChange(); - if (!m_hasForeground) - foregroundChange(); -} - -void QQuickMaterialStyle::inheritTheme(Theme theme) -{ - if (m_explicitTheme || m_theme == theme) - return; - - m_theme = theme; - propagateTheme(); - themeChange(); - if (!m_customAccent) - accentChange(); - if (!m_hasBackground) - backgroundChange(); - if (!m_hasForeground) - foregroundChange(); -} - -void QQuickMaterialStyle::propagateTheme() -{ - const auto styles = attachedChildren(); - for (QQuickAttachedObject *child : styles) { - QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child); - if (material) - material->inheritTheme(m_theme); - } -} - -void QQuickMaterialStyle::resetTheme() -{ - if (!m_explicitTheme) - return; - - m_explicitTheme = false; - QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(attachedParent()); - inheritTheme(material ? material->theme() : globalTheme); -} - -void QQuickMaterialStyle::themeChange() -{ - emit themeChanged(); - emit themeOrAccentChanged(); - emit primaryHighlightedTextColor(); - emit buttonColorChanged(); - emit buttonDisabledColorChanged(); - emit dialogColorChanged(); - emit tooltipColorChanged(); - emit toolBarColorChanged(); - emit toolTextColorChanged(); -} - -QVariant QQuickMaterialStyle::primary() const -{ - return primaryColor(); -} - -void QQuickMaterialStyle::setPrimary(const QVariant &var) -{ - QRgb primary = 0; - bool custom = false; - if (!variantToRgba(var, "primary", &primary, &custom)) - return; - - m_explicitPrimary = true; - if (m_primary == primary) - return; - - m_customPrimary = custom; - m_primary = primary; - propagatePrimary(); - primaryChange(); -} - -void QQuickMaterialStyle::inheritPrimary(uint primary, bool custom) -{ - if (m_explicitPrimary || m_primary == primary) - return; - - m_customPrimary = custom; - m_primary = primary; - propagatePrimary(); - primaryChange(); -} - -void QQuickMaterialStyle::propagatePrimary() -{ - const auto styles = attachedChildren(); - for (QQuickAttachedObject *child : styles) { - QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child); - if (material) - material->inheritPrimary(m_primary, m_customPrimary); - } -} - -void QQuickMaterialStyle::resetPrimary() -{ - if (!m_explicitPrimary) - return; - - m_customPrimary = false; - m_explicitPrimary = false; - QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(attachedParent()); - if (material) - inheritPrimary(material->m_primary, material->m_customPrimary); - else - inheritPrimary(globalPrimary, false); -} - -void QQuickMaterialStyle::primaryChange() -{ - emit primaryChanged(); - emit toolBarColorChanged(); - emit toolTextColorChanged(); -} - -QVariant QQuickMaterialStyle::accent() const -{ - return accentColor(); -} - -void QQuickMaterialStyle::setAccent(const QVariant &var) -{ - QRgb accent = 0; - bool custom = false; - if (!variantToRgba(var, "accent", &accent, &custom)) - return; - - m_explicitAccent = true; - if (m_accent == accent) - return; - - m_customAccent = custom; - m_accent = accent; - propagateAccent(); - accentChange(); -} - -void QQuickMaterialStyle::inheritAccent(uint accent, bool custom) -{ - if (m_explicitAccent || m_accent == accent) - return; - - m_customAccent = custom; - m_accent = accent; - propagateAccent(); - accentChange(); -} - -void QQuickMaterialStyle::propagateAccent() -{ - const auto styles = attachedChildren(); - for (QQuickAttachedObject *child : styles) { - QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child); - if (material) - material->inheritAccent(m_accent, m_customAccent); - } -} - -void QQuickMaterialStyle::resetAccent() -{ - if (!m_explicitAccent) - return; - - m_customAccent = false; - m_explicitAccent = false; - QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(attachedParent()); - if (material) - inheritAccent(material->m_accent, material->m_customAccent); - else - inheritAccent(globalAccent, false); -} - -void QQuickMaterialStyle::accentChange() -{ - emit accentChanged(); - emit themeOrAccentChanged(); - emit buttonColorChanged(); -} - -QVariant QQuickMaterialStyle::foreground() const -{ - if (!m_hasForeground) - return QColor::fromRgba(m_theme == Light ? primaryTextColorLight : primaryTextColorDark); - if (m_customForeground) - return QColor::fromRgba(m_foreground); - if (m_foreground > BlueGrey) - return QColor(); - return QColor::fromRgba(colors[m_foreground][Shade500]); -} - -void QQuickMaterialStyle::setForeground(const QVariant &var) -{ - QRgb foreground = 0; - bool custom = false; - if (!variantToRgba(var, "foreground", &foreground, &custom)) - return; - - m_hasForeground = true; - m_explicitForeground = true; - if (m_foreground == foreground) - return; - - m_customForeground = custom; - m_foreground = foreground; - propagateForeground(); - foregroundChange(); -} - -void QQuickMaterialStyle::inheritForeground(uint foreground, bool custom, bool has) -{ - if (m_explicitForeground || m_foreground == foreground) - return; - - m_hasForeground = has; - m_customForeground = custom; - m_foreground = foreground; - propagateForeground(); - foregroundChange(); -} - -void QQuickMaterialStyle::propagateForeground() -{ - const auto styles = attachedChildren(); - for (QQuickAttachedObject *child : styles) { - QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child); - if (material) - material->inheritForeground(m_foreground, m_customForeground, m_hasForeground); - } -} - -void QQuickMaterialStyle::resetForeground() -{ - if (!m_explicitForeground) - return; - - m_hasForeground = false; - m_customForeground = false; - m_explicitForeground = false; - QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(attachedParent()); - inheritForeground(material ? material->m_foreground : globalForeground, true, material ? material->m_hasForeground : false); -} - -void QQuickMaterialStyle::foregroundChange() -{ - emit foregroundChanged(); - emit primaryHighlightedTextColorChanged(); - // TODO: This causes a binding loop: see QTBUG-85699 and the comments on its fix -// emit toolTextColorChanged(); -} - -QVariant QQuickMaterialStyle::background() const -{ - return backgroundColor(); -} - -void QQuickMaterialStyle::setBackground(const QVariant &var) -{ - QRgb background = 0; - bool custom = false; - if (!variantToRgba(var, "background", &background, &custom)) - return; - - m_hasBackground = true; - m_explicitBackground = true; - if (m_background == background) - return; - - m_customBackground = custom; - m_background = background; - propagateBackground(); - backgroundChange(); -} - -void QQuickMaterialStyle::inheritBackground(uint background, bool custom, bool has) -{ - if (m_explicitBackground || m_background == background) - return; - - m_hasBackground = has; - m_customBackground = custom; - m_background = background; - propagateBackground(); - backgroundChange(); -} - -void QQuickMaterialStyle::propagateBackground() -{ - const auto styles = attachedChildren(); - for (QQuickAttachedObject *child : styles) { - QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child); - if (material) - material->inheritBackground(m_background, m_customBackground, m_hasBackground); - } -} - -void QQuickMaterialStyle::resetBackground() -{ - if (!m_explicitBackground) - return; - - m_hasBackground = false; - m_customBackground = false; - m_explicitBackground = false; - QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(attachedParent()); - inheritBackground(material ? material->m_background : globalBackground, true, material ? material->m_hasBackground : false); -} - -void QQuickMaterialStyle::backgroundChange() -{ - emit backgroundChanged(); - emit buttonColorChanged(); - emit dialogColorChanged(); - emit tooltipColorChanged(); - emit toolBarColorChanged(); -} - -int QQuickMaterialStyle::elevation() const -{ - return m_elevation; -} - -void QQuickMaterialStyle::setElevation(int elevation) -{ - if (m_elevation == elevation) - return; - - m_elevation = elevation; - elevationChange(); -} - -void QQuickMaterialStyle::resetElevation() -{ - setElevation(0); -} - -void QQuickMaterialStyle::elevationChange() -{ - emit elevationChanged(); - emit buttonDisabledColorChanged(); -} - -QColor QQuickMaterialStyle::primaryColor() const -{ - if (m_customPrimary) - return QColor::fromRgba(m_primary); - if (m_primary > BlueGrey) - return QColor(); - return colors[m_primary][Shade500]; -} - -QColor QQuickMaterialStyle::accentColor(Shade shade) const -{ - if (m_customAccent) - return shade == themeShade() ? QColor::fromRgba(m_accent) - : this->shade(QColor::fromRgba(m_accent), shade); - if (m_accent > BlueGrey) - return QColor(); - return colors[m_accent][shade]; -} - -QColor QQuickMaterialStyle::accentColor() const -{ - return accentColor(themeShade()); -} - -QColor QQuickMaterialStyle::backgroundColor(Shade shade) const -{ - if (!m_hasBackground) - return QColor::fromRgba(m_theme == Light ? backgroundColorLight : backgroundColorDark); - if (m_customBackground) - return shade == themeShade() ? QColor::fromRgba(m_background) - : this->shade(QColor::fromRgba(m_background), shade); - if (m_background > BlueGrey) - return QColor(); - return colors[m_background][shade]; -} - -QColor QQuickMaterialStyle::backgroundColor() const -{ - return backgroundColor(themeShade()); -} - -QColor QQuickMaterialStyle::primaryTextColor() const -{ - return QColor::fromRgba(m_theme == Light ? primaryTextColorLight : primaryTextColorDark); -} - -QColor QQuickMaterialStyle::primaryHighlightedTextColor() const -{ - if (m_explicitForeground) - return primaryTextColor(); - return QColor::fromRgba(primaryTextColorDark); -} - -QColor QQuickMaterialStyle::secondaryTextColor() const -{ - return QColor::fromRgba(m_theme == Light ? secondaryTextColorLight : secondaryTextColorDark); -} - -QColor QQuickMaterialStyle::hintTextColor() const -{ - return QColor::fromRgba(m_theme == Light ? hintTextColorLight : hintTextColorDark); -} - -QColor QQuickMaterialStyle::textSelectionColor() const -{ - QColor color = accentColor(); - color.setAlphaF(0.4f); - return color; -} - -QColor QQuickMaterialStyle::dropShadowColor() const -{ - return QColor::fromRgba(0x40000000); -} - -QColor QQuickMaterialStyle::dividerColor() const -{ - return QColor::fromRgba(m_theme == Light ? dividerColorLight : dividerColorDark); -} - -QColor QQuickMaterialStyle::iconColor() const -{ - return QColor::fromRgba(m_theme == Light ? iconColorLight : iconColorDark); -} - -QColor QQuickMaterialStyle::iconDisabledColor() const -{ - return QColor::fromRgba(m_theme == Light ? iconDisabledColorLight : iconDisabledColorDark); -} - -QColor QQuickMaterialStyle::buttonColor(bool highlighted) const -{ - Shade shade = themeShade(); - - QColor color = Qt::transparent; - - if (m_explicitBackground) { - color = backgroundColor(shade); - } else if (highlighted) { - color = accentColor(shade); - } else if (elevation() > 0) { - color = QColor::fromRgba(m_theme == Light ? raisedButtonColorLight - : raisedButtonColorDark); - } - - return color; -} - -QColor QQuickMaterialStyle::buttonColor() const -{ - return buttonColor(false); -} - -QColor QQuickMaterialStyle::buttonDisabledColor() const -{ - if (elevation() > 0) { - return QColor::fromRgba(m_theme == Light ? raisedButtonDisabledColorLight - : raisedButtonDisabledColorDark); - } else { - return Qt::transparent; - } -} - -QColor QQuickMaterialStyle::highlightedButtonColor() const -{ - return buttonColor(true); -} - -QColor QQuickMaterialStyle::frameColor() const -{ - return QColor::fromRgba(m_theme == Light ? frameColorLight : frameColorDark); -} - -QColor QQuickMaterialStyle::rippleColor() const -{ - return QColor::fromRgba(m_theme == Light ? rippleColorLight : rippleColorDark); -} - -QColor QQuickMaterialStyle::highlightedRippleColor() const -{ - QColor pressColor = accentColor(); - pressColor.setAlpha(m_theme == Light ? 30 : 50); - return pressColor; -} - -QColor QQuickMaterialStyle::switchUncheckedTrackColor() const -{ - return QColor::fromRgba(m_theme == Light ? switchUncheckedTrackColorLight : switchUncheckedTrackColorDark); -} - -QColor QQuickMaterialStyle::switchCheckedTrackColor() const -{ - QColor trackColor(accentColor()); - trackColor.setAlphaF(0.5); - return trackColor; -} - -QColor QQuickMaterialStyle::switchUncheckedHandleColor() const -{ - return m_theme == Light ? color(Grey, Shade50) : color(Grey, Shade400); -} - -QColor QQuickMaterialStyle::switchCheckedHandleColor() const -{ - return m_theme == Light ? accentColor() : shade(accentColor(), Shade200); -} - -QColor QQuickMaterialStyle::switchDisabledTrackColor() const -{ - return QColor::fromRgba(m_theme == Light ? switchDisabledTrackColorLight : switchDisabledTrackColorDark); -} - -QColor QQuickMaterialStyle::switchDisabledHandleColor() const -{ - return m_theme == Light ? color(Grey, Shade400) : color(Grey, Shade800); -} - -QColor QQuickMaterialStyle::scrollBarColor() const -{ - return QColor::fromRgba(m_theme == Light ? 0x40000000 : 0x40FFFFFF); -} - -QColor QQuickMaterialStyle::scrollBarHoveredColor() const -{ - return QColor::fromRgba(m_theme == Light ? 0x60000000 : 0x60FFFFFF); -} - -QColor QQuickMaterialStyle::scrollBarPressedColor() const -{ - return QColor::fromRgba(m_theme == Light ? 0x80000000 : 0x80FFFFFF); -} - -QColor QQuickMaterialStyle::dialogColor() const -{ - if (m_hasBackground) - return backgroundColor(); - return QColor::fromRgba(m_theme == Light ? dialogColorLight : dialogColorDark); -} - -QColor QQuickMaterialStyle::backgroundDimColor() const -{ - return QColor::fromRgba(m_theme == Light ? 0x99303030 : 0x99fafafa); -} - -QColor QQuickMaterialStyle::listHighlightColor() const -{ - return QColor::fromRgba(m_theme == Light ? 0x1e000000 : 0x1effffff); -} - -QColor QQuickMaterialStyle::tooltipColor() const -{ - if (m_explicitBackground) - return backgroundColor(); - return color(Grey, Shade700); -} - -QColor QQuickMaterialStyle::toolBarColor() const -{ - if (m_explicitBackground) - return backgroundColor(); - return primaryColor(); -} - -QColor QQuickMaterialStyle::toolTextColor() const -{ - if (m_hasForeground || m_customPrimary) - return primaryTextColor(); - - switch (m_primary) { - case Red: - case Pink: - case Purple: - case DeepPurple: - case Indigo: - case Blue: - case Teal: - case DeepOrange: - case Brown: - case BlueGrey: - return QColor::fromRgba(primaryTextColorDark); - - case LightBlue: - case Cyan: - case Green: - case LightGreen: - case Lime: - case Yellow: - case Amber: - case Orange: - case Grey: - return QColor::fromRgba(primaryTextColorLight); - - default: - break; - } - - return primaryTextColor(); -} - -QColor QQuickMaterialStyle::spinBoxDisabledIconColor() const -{ - return QColor::fromRgba(m_theme == Light ? spinBoxDisabledIconColorLight : spinBoxDisabledIconColorDark); -} - -QColor QQuickMaterialStyle::sliderDisabledColor() const -{ - return QColor::fromRgba(m_theme == Light ? sliderDisabledColorLight : sliderDisabledColorDark); -} - -QColor QQuickMaterialStyle::color(QQuickMaterialStyle::Color color, QQuickMaterialStyle::Shade shade) const -{ - int count = sizeof(colors) / sizeof(colors[0]); - if (color < 0 || color >= count) - return QColor(); - - count = sizeof(colors[0]) / sizeof(colors[0][0]); - if (shade < 0 || shade >= count) - return QColor(); - - return colors[color][shade]; -} - -static QColor lighterShade(const QColor &color, qreal amount) -{ - QColor hsl = color.toHsl(); - hsl.setHslF(hsl.hueF(), hsl.saturationF(), qBound<qreal>(0.0, hsl.lightnessF() + amount, 1.0), color.alphaF()); - return hsl.convertTo(color.spec()); -} - -static QColor darkerShade(const QColor &color, qreal amount) -{ - QColor hsl = color.toHsl(); - hsl.setHslF(hsl.hueF(), hsl.saturationF(), qBound<qreal>(0.0, hsl.lightnessF() - amount, 1.0), color.alphaF()); - return hsl.convertTo(color.spec()); -} - -QQuickMaterialStyle::Shade QQuickMaterialStyle::themeShade() const -{ - return m_theme == Light ? Shade500 : Shade200; -} - -/* - * The following lightness values originate from the Material Design Color Generator project. - * - * The MIT License (MIT) - * - * Copyright (c) 2015 mbitson - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -// Returns the same color, if shade == themeShade() -QColor QQuickMaterialStyle::shade(const QColor &color, Shade shade) const -{ - switch (shade) { - case Shade50: - return lighterShade(color, m_theme == Light ? 0.52 : 0.26); - case Shade100: - return lighterShade(color, m_theme == Light ? 0.37 : 0.11); - case Shade200: - return m_theme == Light ? lighterShade(color, 0.26) : color; - case Shade300: - return m_theme == Light ? lighterShade(color, 0.12) : darkerShade(color, 0.14); - case Shade400: - return m_theme == Light ? lighterShade(color, 0.06) : darkerShade(color, 0.20); - case Shade500: - return m_theme == Light ? color : darkerShade(color, 0.26); - case Shade600: - return darkerShade(color, m_theme == Light ? 0.06 : 0.32); - case Shade700: - return darkerShade(color, m_theme == Light ? 0.12 : 0.38); - case Shade800: - return darkerShade(color, m_theme == Light ? 0.18 : 0.44); - case Shade900: - return darkerShade(color, m_theme == Light ? 0.24 : 0.50); - case ShadeA100: - return lighterShade(color, m_theme == Light ? 0.54 : 0.28); - case ShadeA200: - return lighterShade(color, m_theme == Light ? 0.37 : 0.11); - case ShadeA400: - return m_theme == Light ? lighterShade(color, 0.06) : darkerShade(color, 0.20); - case ShadeA700: - return darkerShade(color, m_theme == Light ? 0.12 : 0.38); - default: - Q_UNREACHABLE(); - return QColor(); - } -} - -int QQuickMaterialStyle::touchTarget() const -{ - // https://material.io/guidelines/components/buttons.html#buttons-style - return globalVariant == Dense ? 44 : 48; -} - -int QQuickMaterialStyle::buttonHeight() const -{ - // https://material.io/guidelines/components/buttons.html#buttons-style - return globalVariant == Dense ? 32 : 36; -} - -int QQuickMaterialStyle::delegateHeight() const -{ - // https://material.io/guidelines/components/lists.html#lists-specs - return globalVariant == Dense ? 40 : 48; -} - -int QQuickMaterialStyle::dialogButtonBoxHeight() const -{ - return globalVariant == Dense ? 48 : 52; -} - -int QQuickMaterialStyle::frameVerticalPadding() const -{ - return globalVariant == Dense ? 8 : 12; -} - -int QQuickMaterialStyle::menuItemHeight() const -{ - // https://material.io/guidelines/components/menus.html#menus-simple-menus - return globalVariant == Dense ? 32 : 48; -} - -int QQuickMaterialStyle::menuItemVerticalPadding() const -{ - return globalVariant == Dense ? 8 : 12; -} - -int QQuickMaterialStyle::switchDelegateVerticalPadding() const -{ - // SwitchDelegate's indicator is much larger than the others due to the shadow, - // so we must reduce its padding to ensure its implicitHeight is 40 when dense. - return globalVariant == Dense ? 4 : 8; -} - -int QQuickMaterialStyle::tooltipHeight() const -{ - // https://material.io/guidelines/components/tooltips.html - return globalVariant == Dense ? 22 : 32; -} - -QQuickMaterialStyle::Variant QQuickMaterialStyle::variant() -{ - return globalVariant; -} - -template <typename Enum> -static Enum toEnumValue(const QByteArray &value, bool *ok) -{ - QMetaEnum enumeration = QMetaEnum::fromType<Enum>(); - return static_cast<Enum>(enumeration.keyToValue(value, ok)); -} - -static QByteArray resolveSetting(const QByteArray &env, const QSharedPointer<QSettings> &settings, const QString &name) -{ - QByteArray value = qgetenv(env); -#if QT_CONFIG(settings) - if (value.isNull() && !settings.isNull()) - value = settings->value(name).toByteArray(); -#endif - return value; -} - -void QQuickMaterialStyle::initGlobals() -{ - QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(QStringLiteral("Material")); - - bool ok = false; - QByteArray themeValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_THEME", settings, QStringLiteral("Theme")); - Theme themeEnum = toEnumValue<Theme>(themeValue, &ok); - if (ok) - globalTheme = effectiveTheme(themeEnum); - else if (!themeValue.isEmpty()) - qWarning().nospace().noquote() << "Material: unknown theme value: " << themeValue; - - QByteArray variantValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_VARIANT", settings, QStringLiteral("Variant")); - Variant variantEnum = toEnumValue<Variant>(variantValue, &ok); - if (ok) - globalVariant = variantEnum; - else if (!variantValue.isEmpty()) - qWarning().nospace().noquote() << "Material: unknown variant value: " << variantValue; - - QByteArray primaryValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_PRIMARY", settings, QStringLiteral("Primary")); - Color primaryEnum = toEnumValue<Color>(primaryValue, &ok); - if (ok) { - globalPrimaryCustom = false; - globalPrimary = primaryEnum; - } else { - QColor color(primaryValue.constData()); - if (color.isValid()) { - globalPrimaryCustom = true; - globalPrimary = color.rgba(); - } else if (!primaryValue.isEmpty()) { - qWarning().nospace().noquote() << "Material: unknown primary value: " << primaryValue; - } - } - - QByteArray accentValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_ACCENT", settings, QStringLiteral("Accent")); - Color accentEnum = toEnumValue<Color>(accentValue, &ok); - if (ok) { - globalAccentCustom = false; - globalAccent = accentEnum; - } else if (!accentValue.isEmpty()) { - QColor color(accentValue.constData()); - if (color.isValid()) { - globalAccentCustom = true; - globalAccent = color.rgba(); - } else { - qWarning().nospace().noquote() << "Material: unknown accent value: " << accentValue; - } - } - - QByteArray foregroundValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_FOREGROUND", settings, QStringLiteral("Foreground")); - Color foregroundEnum = toEnumValue<Color>(foregroundValue, &ok); - if (ok) { - globalForegroundCustom = false; - globalForeground = foregroundEnum; - hasGlobalForeground = true; - } else if (!foregroundValue.isEmpty()) { - QColor color(foregroundValue.constData()); - if (color.isValid()) { - globalForegroundCustom = true; - globalForeground = color.rgba(); - hasGlobalForeground = true; - } else { - qWarning().nospace().noquote() << "Material: unknown foreground value: " << foregroundValue; - } - } - - QByteArray backgroundValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_BACKGROUND", settings, QStringLiteral("Background")); - Color backgroundEnum = toEnumValue<Color>(backgroundValue, &ok); - if (ok) { - globalBackgroundCustom = false; - globalBackground = backgroundEnum; - hasGlobalBackground = true; - } else if (!backgroundValue.isEmpty()) { - QColor color(backgroundValue.constData()); - if (color.isValid()) { - globalBackgroundCustom = true; - globalBackground = color.rgba(); - hasGlobalBackground = true; - } else { - qWarning().nospace().noquote() << "Material: unknown background value: " << backgroundValue; - } - } -} - -void QQuickMaterialStyle::attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent) -{ - Q_UNUSED(oldParent); - QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(newParent); - if (material) { - inheritPrimary(material->m_primary, material->m_customPrimary); - inheritAccent(material->m_accent, material->m_customAccent); - inheritForeground(material->m_foreground, material->m_customForeground, material->m_hasForeground); - inheritBackground(material->m_background, material->m_customBackground, material->m_hasBackground); - inheritTheme(material->theme()); - } -} - -bool QQuickMaterialStyle::variantToRgba(const QVariant &var, const char *name, QRgb *rgba, bool *custom) const -{ - *custom = false; - if (var.metaType().id() == QMetaType::Int) { - int val = var.toInt(); - if (val > BlueGrey) { - qmlWarning(parent()) << "unknown Material." << name << " value: " << val; - return false; - } - *rgba = val; - } else { - int val = QMetaEnum::fromType<Color>().keyToValue(var.toByteArray()); - if (val != -1) { - *rgba = val; - } else { - QColor color(var.toString()); - if (!color.isValid()) { - qmlWarning(parent()) << "unknown Material." << name << " value: " << var.toString(); - return false; - } - *custom = true; - *rgba = color.rgba(); - } - } - return true; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/material/qquickmaterialstyle_p.h b/src/quickcontrols2/material/qquickmaterialstyle_p.h deleted file mode 100644 index 56cf141c..00000000 --- a/src/quickcontrols2/material/qquickmaterialstyle_p.h +++ /dev/null @@ -1,334 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMATERIALSTYLE_P_H -#define QQUICKMATERIALSTYLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qcolor.h> -#include <QtQuickControls2Impl/private/qquickattachedobject_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickMaterialStyle : public QQuickAttachedObject -{ - Q_OBJECT - Q_PROPERTY(Theme theme READ theme WRITE setTheme RESET resetTheme NOTIFY themeChanged FINAL) - Q_PROPERTY(QVariant primary READ primary WRITE setPrimary RESET resetPrimary NOTIFY primaryChanged FINAL) - Q_PROPERTY(QVariant accent READ accent WRITE setAccent RESET resetAccent NOTIFY accentChanged FINAL) - Q_PROPERTY(QVariant foreground READ foreground WRITE setForeground RESET resetForeground NOTIFY foregroundChanged FINAL) - Q_PROPERTY(QVariant background READ background WRITE setBackground RESET resetBackground NOTIFY backgroundChanged FINAL) - Q_PROPERTY(int elevation READ elevation WRITE setElevation RESET resetElevation NOTIFY elevationChanged FINAL) - - Q_PROPERTY(QColor primaryColor READ primaryColor NOTIFY primaryChanged FINAL) // TODO: remove? - Q_PROPERTY(QColor accentColor READ accentColor NOTIFY accentChanged FINAL) // TODO: remove? - Q_PROPERTY(QColor backgroundColor READ backgroundColor NOTIFY backgroundChanged FINAL) - Q_PROPERTY(QColor primaryTextColor READ primaryTextColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor primaryHighlightedTextColor READ primaryHighlightedTextColor NOTIFY primaryHighlightedTextColorChanged FINAL) - Q_PROPERTY(QColor secondaryTextColor READ secondaryTextColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor hintTextColor READ hintTextColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor textSelectionColor READ textSelectionColor NOTIFY themeOrAccentChanged FINAL) - Q_PROPERTY(QColor dropShadowColor READ dropShadowColor CONSTANT FINAL) - Q_PROPERTY(QColor dividerColor READ dividerColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor iconColor READ iconColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor iconDisabledColor READ iconDisabledColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor buttonColor READ buttonColor NOTIFY buttonColorChanged FINAL) - Q_PROPERTY(QColor buttonDisabledColor READ buttonDisabledColor NOTIFY buttonDisabledColorChanged FINAL) - Q_PROPERTY(QColor highlightedButtonColor READ highlightedButtonColor NOTIFY buttonColorChanged FINAL) - Q_PROPERTY(QColor frameColor READ frameColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor rippleColor READ rippleColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor highlightedRippleColor READ highlightedRippleColor NOTIFY themeOrAccentChanged FINAL) - Q_PROPERTY(QColor switchUncheckedTrackColor READ switchUncheckedTrackColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor switchCheckedTrackColor READ switchCheckedTrackColor NOTIFY themeOrAccentChanged FINAL) - Q_PROPERTY(QColor switchUncheckedHandleColor READ switchUncheckedHandleColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor switchCheckedHandleColor READ switchCheckedHandleColor NOTIFY themeOrAccentChanged FINAL) - Q_PROPERTY(QColor switchDisabledTrackColor READ switchDisabledTrackColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor switchDisabledHandleColor READ switchDisabledHandleColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor scrollBarColor READ scrollBarColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor scrollBarHoveredColor READ scrollBarHoveredColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor scrollBarPressedColor READ scrollBarPressedColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor dialogColor READ dialogColor NOTIFY dialogColorChanged FINAL) - Q_PROPERTY(QColor backgroundDimColor READ backgroundDimColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor listHighlightColor READ listHighlightColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor tooltipColor READ tooltipColor NOTIFY tooltipColorChanged FINAL) - Q_PROPERTY(QColor toolBarColor READ toolBarColor NOTIFY toolBarColorChanged FINAL) - Q_PROPERTY(QColor toolTextColor READ toolTextColor NOTIFY toolTextColorChanged FINAL) - Q_PROPERTY(QColor spinBoxDisabledIconColor READ spinBoxDisabledIconColor NOTIFY themeChanged FINAL) - Q_PROPERTY(QColor sliderDisabledColor READ sliderDisabledColor NOTIFY themeChanged FINAL REVISION 15) - - Q_PROPERTY(int touchTarget READ touchTarget CONSTANT FINAL) - Q_PROPERTY(int buttonHeight READ buttonHeight CONSTANT FINAL) - Q_PROPERTY(int delegateHeight READ delegateHeight CONSTANT FINAL) - Q_PROPERTY(int dialogButtonBoxHeight READ dialogButtonBoxHeight CONSTANT FINAL) - Q_PROPERTY(int frameVerticalPadding READ frameVerticalPadding CONSTANT FINAL) - Q_PROPERTY(int menuItemHeight READ menuItemHeight CONSTANT FINAL) - Q_PROPERTY(int menuItemVerticalPadding READ menuItemVerticalPadding CONSTANT FINAL) - Q_PROPERTY(int switchDelegateVerticalPadding READ switchDelegateVerticalPadding CONSTANT FINAL) - Q_PROPERTY(int tooltipHeight READ tooltipHeight CONSTANT FINAL) - - QML_NAMED_ELEMENT(Material) - QML_ATTACHED(QQuickMaterialStyle) - QML_UNCREATABLE("") - QML_ADDED_IN_VERSION(2, 0) - -public: - enum Theme { - Light, - Dark, - System - }; - - enum Variant { - Normal, - Dense - }; - - enum Color { - Red, - Pink, - Purple, - DeepPurple, - Indigo, - Blue, - LightBlue, - Cyan, - Teal, - Green, - LightGreen, - Lime, - Yellow, - Amber, - Orange, - DeepOrange, - Brown, - Grey, - BlueGrey - }; - - enum Shade { - Shade50, - Shade100, - Shade200, - Shade300, - Shade400, - Shade500, - Shade600, - Shade700, - Shade800, - Shade900, - ShadeA100, - ShadeA200, - ShadeA400, - ShadeA700, - }; - - Q_ENUM(Theme) - Q_ENUM(Variant) - Q_ENUM(Color) - Q_ENUM(Shade) - - explicit QQuickMaterialStyle(QObject *parent = nullptr); - - static QQuickMaterialStyle *qmlAttachedProperties(QObject *object); - - Theme theme() const; - void setTheme(Theme theme); - void inheritTheme(Theme theme); - void propagateTheme(); - void resetTheme(); - void themeChange(); - - QVariant primary() const; - void setPrimary(const QVariant &accent); - void inheritPrimary(uint primary, bool custom); - void propagatePrimary(); - void resetPrimary(); - void primaryChange(); - - QVariant accent() const; - void setAccent(const QVariant &accent); - void inheritAccent(uint accent, bool custom); - void propagateAccent(); - void resetAccent(); - void accentChange(); - - QVariant foreground() const; - void setForeground(const QVariant &foreground); - void inheritForeground(uint foreground, bool custom, bool has); - void propagateForeground(); - void resetForeground(); - void foregroundChange(); - - QVariant background() const; - void setBackground(const QVariant &background); - void inheritBackground(uint background, bool custom, bool has); - void propagateBackground(); - void resetBackground(); - void backgroundChange(); - - int elevation() const; - void setElevation(int elevation); - void resetElevation(); - void elevationChange(); - - QColor primaryColor() const; - QColor accentColor() const; - QColor backgroundColor() const; - QColor primaryTextColor() const; - QColor primaryHighlightedTextColor() const; - QColor secondaryTextColor() const; - QColor hintTextColor() const; - QColor textSelectionColor() const; - QColor dropShadowColor() const; - QColor dividerColor() const; - QColor iconColor() const; - QColor iconDisabledColor() const; - QColor buttonColor() const; - QColor buttonDisabledColor() const; - QColor highlightedButtonColor() const; - QColor highlightedButtonDisabledColor() const; - QColor frameColor() const; - QColor rippleColor() const; - QColor highlightedRippleColor() const; - QColor switchUncheckedTrackColor() const; - QColor switchCheckedTrackColor() const; - QColor switchUncheckedHandleColor() const; - QColor switchCheckedHandleColor() const; - QColor switchDisabledTrackColor() const; - QColor switchDisabledHandleColor() const; - QColor scrollBarColor() const; - QColor scrollBarHoveredColor() const; - QColor scrollBarPressedColor() const; - QColor dialogColor() const; - QColor backgroundDimColor() const; - QColor listHighlightColor() const; - QColor tooltipColor() const; - QColor toolBarColor() const; - QColor toolTextColor() const; - QColor spinBoxDisabledIconColor() const; - QColor sliderDisabledColor() const; - - Q_INVOKABLE QColor color(Color color, Shade shade = Shade500) const; - Q_INVOKABLE QColor shade(const QColor &color, Shade shade) const; - - int touchTarget() const; - int buttonHeight() const; - int delegateHeight() const; - int dialogButtonBoxHeight() const; - int frameVerticalPadding() const; - int menuItemHeight() const; - int menuItemVerticalPadding() const; - int switchDelegateVerticalPadding() const; - int tooltipHeight() const; - - static void initGlobals(); - - static Variant variant(); - -Q_SIGNALS: - void themeChanged(); - void primaryChanged(); - void accentChanged(); - void foregroundChanged(); - void backgroundChanged(); - void elevationChanged(); - - void themeOrAccentChanged(); - - void primaryHighlightedTextColorChanged(); - void buttonColorChanged(); - void buttonDisabledColorChanged(); - void dialogColorChanged(); - void tooltipColorChanged(); - void toolBarColorChanged(); - void toolTextColorChanged(); - -protected: - void attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent) override; - -private: - void init(); - bool variantToRgba(const QVariant &var, const char *name, QRgb *rgba, bool *custom) const; - - QColor backgroundColor(Shade shade) const; - QColor accentColor(Shade shade) const; - QColor buttonColor(bool highlighted) const; - Shade themeShade() const; - - // These reflect whether a color value was explicitly set on the specific - // item that this attached style object represents. - bool m_explicitTheme = false; - bool m_explicitPrimary = false; - bool m_explicitAccent = false; - bool m_explicitForeground = false; - bool m_explicitBackground = false; - // These reflect whether the color value that was either inherited or - // explicitly set is in the form that QColor expects, rather than one of - // our pre-defined color enum values. - bool m_customPrimary = false; - bool m_customAccent = false; - bool m_customForeground = false; - bool m_customBackground = false; - // These will be true when this item has an explicit or inherited foreground/background - // color, or these colors were declared globally via settings (e.g. conf or env vars). - // Some color properties of the style will return different values depending on whether - // or not these are set. - bool m_hasForeground = false; - bool m_hasBackground = false; - // The actual values for this item, whether explicit, inherited or globally set. - Theme m_theme = Light; - uint m_primary = 0; - uint m_accent = 0; - uint m_foreground = 0; - uint m_background = 0; - int m_elevation = 0; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPEINFO(QQuickMaterialStyle, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKMATERIALSTYLE_P_H diff --git a/src/quickcontrols2/material/qquickmaterialtheme.cpp b/src/quickcontrols2/material/qquickmaterialtheme.cpp deleted file mode 100644 index aec9e232..00000000 --- a/src/quickcontrols2/material/qquickmaterialtheme.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmaterialtheme_p.h" -#include "qquickmaterialstyle_p.h" - -#include <QtGui/qpa/qplatformdialoghelper.h> -#include <QtGui/qfont.h> -#include <QtGui/qfontinfo.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -QT_BEGIN_NAMESPACE - -void QQuickMaterialTheme::initialize(QQuickTheme *theme) -{ - QFont systemFont; - QFont buttonFont; - QFont toolTipFont; - QFont itemViewFont; - QFont listViewFont; - QFont menuItemFont; - QFont editorFont; - - QFont font; - font.setFamilies(QStringList{QLatin1String("Roboto")}); - QString family = QFontInfo(font).family(); - - if (family != QLatin1String("Roboto")) { - font.setFamilies(QStringList{QLatin1String("Noto")}); - family = QFontInfo(font).family(); - } - - if (family == QLatin1String("Roboto") || family == QLatin1String("Noto")) { - const QStringList families{family}; - systemFont.setFamilies(families); - buttonFont.setFamilies(families); - toolTipFont.setFamilies(families); - itemViewFont.setFamilies(families); - listViewFont.setFamilies(families); - menuItemFont.setFamilies(families); - editorFont.setFamilies(families); - } - - const bool dense = QQuickMaterialStyle::variant() == QQuickMaterialStyle::Dense; - systemFont.setPixelSize(dense ? 13 : 14); - theme->setFont(QQuickTheme::System, systemFont); - - // https://material.io/guidelines/components/buttons.html#buttons-style - buttonFont.setPixelSize(dense ? 13 : 14); - buttonFont.setCapitalization(QFont::AllUppercase); - buttonFont.setWeight(QFont::Medium); - theme->setFont(QQuickTheme::Button, buttonFont); - theme->setFont(QQuickTheme::TabBar, buttonFont); - theme->setFont(QQuickTheme::ToolBar, buttonFont); - - // https://material.io/guidelines/components/tooltips.html - toolTipFont.setPixelSize(dense ? 10 : 14); - toolTipFont.setWeight(QFont::Medium); - theme->setFont(QQuickTheme::ToolTip, toolTipFont); - - itemViewFont.setPixelSize(dense ? 13 : 14); - itemViewFont.setWeight(QFont::Medium); - theme->setFont(QQuickTheme::ItemView, itemViewFont); - - // https://material.io/guidelines/components/lists.html#lists-specs - listViewFont.setPixelSize(dense ? 13 : 16); - theme->setFont(QQuickTheme::ListView, listViewFont); - - menuItemFont.setPixelSize(dense ? 13 : 16); - theme->setFont(QQuickTheme::Menu, menuItemFont); - theme->setFont(QQuickTheme::MenuBar, menuItemFont); - theme->setFont(QQuickTheme::ComboBox, menuItemFont); - - editorFont.setPixelSize(dense ? 13 : 16); - theme->setFont(QQuickTheme::TextArea, editorFont); - theme->setFont(QQuickTheme::TextField, editorFont); - theme->setFont(QQuickTheme::SpinBox, editorFont); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/material/qquickmaterialtheme_p.h b/src/quickcontrols2/material/qquickmaterialtheme_p.h deleted file mode 100644 index 9a1362b8..00000000 --- a/src/quickcontrols2/material/qquickmaterialtheme_p.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMATERIALTHEME_P_H -#define QQUICKMATERIALTHEME_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qglobal.h> - -QT_BEGIN_NAMESPACE - -class QQuickTheme; - -class QQuickMaterialTheme -{ -public: - static void initialize(QQuickTheme *theme); -}; - -QT_END_NAMESPACE - -#endif // QQUICKMATERIALTHEME_P_H diff --git a/src/quickcontrols2/material/qt_attribution.json b/src/quickcontrols2/material/qt_attribution.json deleted file mode 100644 index 85fdadf9..00000000 --- a/src/quickcontrols2/material/qt_attribution.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Id": "shadow_angular_material", - "Name": "Shadow values from Angular Material", - "QDocModule": "qtquickcontrols", - "QtUsage": "Used in the Material Style of Qt Quick Controls 2.", - "Files": "ElevationEffect.qml", - "Description": "Shadow values for the elevation effect.", - "Homepage": "https://angularjs.org/", - "License": "MIT License", - "LicenseId": "MIT", - "LicenseFile": "LICENSE_ANGULARJS.txt", - "Copyright": "Copyright (c) 2014-2016 Google, Inc" -} diff --git a/src/quickcontrols2/material/qtquickcontrols2materialstyleplugin.cpp b/src/quickcontrols2/material/qtquickcontrols2materialstyleplugin.cpp deleted file mode 100644 index c8e7ebbc..00000000 --- a/src/quickcontrols2/material/qtquickcontrols2materialstyleplugin.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmaterialstyle_p.h" -#include "qquickmaterialtheme_p.h" - -#include <QtQuickControls2/private/qquickstyleplugin_p.h> -#include <QtQuickControls2Impl/private/qquickpaddedrectangle_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -extern void qml_register_types_QtQuick_Controls_Material(); - -QT_BEGIN_NAMESPACE - -class QtQuickControls2MaterialStylePlugin : public QQuickStylePlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) - -public: - QtQuickControls2MaterialStylePlugin(QObject *parent = nullptr); - - QString name() const override; - void initializeTheme(QQuickTheme *theme) override; - - QQuickMaterialTheme theme; -}; - -QtQuickControls2MaterialStylePlugin::QtQuickControls2MaterialStylePlugin(QObject *parent) : QQuickStylePlugin(parent) -{ - volatile auto registration = &qml_register_types_QtQuick_Controls_Material; - Q_UNUSED(registration); -} - -QString QtQuickControls2MaterialStylePlugin::name() const -{ - return QStringLiteral("Material"); -} - -void QtQuickControls2MaterialStylePlugin::initializeTheme(QQuickTheme *theme) -{ - QQuickMaterialStyle::initGlobals(); - this->theme.initialize(theme); -} - -QT_END_NAMESPACE - -#include "qtquickcontrols2materialstyleplugin.moc" diff --git a/src/quickcontrols2/material/qtquickcontrols2materialstyleplugin.qrc b/src/quickcontrols2/material/qtquickcontrols2materialstyleplugin.qrc deleted file mode 100644 index 981960c4..00000000 --- a/src/quickcontrols2/material/qtquickcontrols2materialstyleplugin.qrc +++ /dev/null @@ -1,20 +0,0 @@ -<RCC> - <qresource prefix="/qt-project.org/imports/QtQuick/Controls/Material"> - <file>images/arrow-indicator.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/check.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/drop-indicator.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>shaders/RectangularGlow.frag</file> - <file>shaders/+glslcore/RectangularGlow.frag</file> - <file>shaders/+hlsl/RectangularGlow.frag</file> - <file>shaders/+qsb/RectangularGlow.frag</file> - </qresource> -</RCC> diff --git a/src/quickcontrols2/material/shaders/+glslcore/RectangularGlow.frag b/src/quickcontrols2/material/shaders/+glslcore/RectangularGlow.frag deleted file mode 100644 index 432d86b5..00000000 --- a/src/quickcontrols2/material/shaders/+glslcore/RectangularGlow.frag +++ /dev/null @@ -1,25 +0,0 @@ -#version 150 - -uniform float qt_Opacity; -uniform float relativeSizeX; -uniform float relativeSizeY; -uniform float spread; -uniform vec4 color; - -in vec2 qt_TexCoord0; -out vec4 fragColor; - -float linearstep(float e0, float e1, float x) -{ - return clamp((x - e0) / (e1 - e0), 0.0, 1.0); -} - -void main() -{ - float alpha = - smoothstep(0.0, relativeSizeX, 0.5 - abs(0.5 - qt_TexCoord0.x)) * - smoothstep(0.0, relativeSizeY, 0.5 - abs(0.5 - qt_TexCoord0.y)); - - float spreadMultiplier = linearstep(spread, 1.0 - spread, alpha); - fragColor = color * qt_Opacity * spreadMultiplier * spreadMultiplier; -} diff --git a/src/quickcontrols2/material/shaders/+hlsl/RectangularGlow.frag b/src/quickcontrols2/material/shaders/+hlsl/RectangularGlow.frag deleted file mode 100644 index 69d9f852..00000000 --- a/src/quickcontrols2/material/shaders/+hlsl/RectangularGlow.frag +++ /dev/null @@ -1,21 +0,0 @@ -cbuffer ConstantBuffer : register(b0) -{ - float4x4 qt_Matrix; - float qt_Opacity; - float relativeSizeX; - float relativeSizeY; - float spread; - float4 color; -} - -float linearstep(float e0, float e1, float x) { return clamp((x - e0) / (e1 - e0), 0.0, 1.0); } - -float4 main(float4 position : SV_POSITION, float2 coord : TEXCOORD0) : SV_TARGET -{ - float alpha = - smoothstep(0.0, relativeSizeX, 0.5 - abs(0.5 - coord.x)) * - smoothstep(0.0, relativeSizeY, 0.5 - abs(0.5 - coord.y)); - - float spreadMultiplier = linearstep(spread, 1.0 - spread, alpha); - return color * qt_Opacity * spreadMultiplier * spreadMultiplier; -} diff --git a/src/quickcontrols2/material/shaders/+qsb/RectangularGlow.frag b/src/quickcontrols2/material/shaders/+qsb/RectangularGlow.frag Binary files differdeleted file mode 100644 index 5cfa2db6..00000000 --- a/src/quickcontrols2/material/shaders/+qsb/RectangularGlow.frag +++ /dev/null diff --git a/src/quickcontrols2/material/shaders/RectangularGlow.frag b/src/quickcontrols2/material/shaders/RectangularGlow.frag deleted file mode 100644 index 40bab580..00000000 --- a/src/quickcontrols2/material/shaders/RectangularGlow.frag +++ /dev/null @@ -1,19 +0,0 @@ -uniform highp float qt_Opacity; -uniform mediump float relativeSizeX; -uniform mediump float relativeSizeY; -uniform mediump float spread; -uniform lowp vec4 color; -varying highp vec2 qt_TexCoord0; - -highp float linearstep(highp float e0, highp float e1, highp float x) { - return clamp((x - e0) / (e1 - e0), 0.0, 1.0); -} - -void main() { - lowp float alpha = - smoothstep(0.0, relativeSizeX, 0.5 - abs(0.5 - qt_TexCoord0.x)) * - smoothstep(0.0, relativeSizeY, 0.5 - abs(0.5 - qt_TexCoord0.y)); - - highp float spreadMultiplier = linearstep(spread, 1.0 - spread, alpha); - gl_FragColor = color * qt_Opacity * spreadMultiplier * spreadMultiplier; -} diff --git a/src/quickcontrols2/material/shaders/RectangularGlow_rhi.frag b/src/quickcontrols2/material/shaders/RectangularGlow_rhi.frag deleted file mode 100644 index 3e7d2dfe..00000000 --- a/src/quickcontrols2/material/shaders/RectangularGlow_rhi.frag +++ /dev/null @@ -1,28 +0,0 @@ -#version 440 - -layout(location = 0) in vec2 qt_TexCoord0; -layout(location = 0) out vec4 fragColor; - -layout(std140, binding = 0) uniform buf { - mat4 qt_Matrix; - float qt_Opacity; - float relativeSizeX; - float relativeSizeY; - float spread; - vec4 color; -} ubuf; - -float linearstep(float e0, float e1, float x) -{ - return clamp((x - e0) / (e1 - e0), 0.0, 1.0); -} - -void main() -{ - float alpha = - smoothstep(0.0, ubuf.relativeSizeX, 0.5 - abs(0.5 - qt_TexCoord0.x)) * - smoothstep(0.0, ubuf.relativeSizeY, 0.5 - abs(0.5 - qt_TexCoord0.y)); - - float spreadMultiplier = linearstep(ubuf.spread, 1.0 - ubuf.spread, alpha); - fragColor = ubuf.color * ubuf.qt_Opacity * spreadMultiplier * spreadMultiplier; -} diff --git a/src/quickcontrols2/material/shaders/compile.bat b/src/quickcontrols2/material/shaders/compile.bat deleted file mode 100644 index e87efa7a..00000000 --- a/src/quickcontrols2/material/shaders/compile.bat +++ /dev/null @@ -1,40 +0,0 @@ -::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -:: -:: Copyright (C) 2019 The Qt Company Ltd. -:: Contact: https://www.qt.io/licensing/ -:: -:: This file is part of the QtQuick module of the Qt Toolkit. -:: -:: $QT_BEGIN_LICENSE:LGPL$ -:: Commercial License Usage -:: Licensees holding valid commercial Qt licenses may use this file in -:: accordance with the commercial license agreement provided with the -:: Software or, alternatively, in accordance with the terms contained in -:: a written agreement between you and The Qt Company. For licensing terms -:: and conditions see https://www.qt.io/terms-conditions. For further -:: information use the contact form at https://www.qt.io/contact-us. -:: -:: GNU Lesser General Public License Usage -:: Alternatively, this file may be used under the terms of the GNU Lesser -:: General Public License version 3 as published by the Free Software -:: Foundation and appearing in the file LICENSE.LGPL3 included in the -:: packaging of this file. Please review the following information to -:: ensure the GNU Lesser General Public License version 3 requirements -:: will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -:: -:: GNU General Public License Usage -:: Alternatively, this file may be used under the terms of the GNU -:: General Public License version 2.0 or (at your option) the GNU General -:: Public license version 3 or any later version approved by the KDE Free -:: Qt Foundation. The licenses are as published by the Free Software -:: Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -:: included in the packaging of this file. Please review the following -:: information to ensure the GNU General Public License requirements will -:: be met: https://www.gnu.org/licenses/gpl-2.0.html and -:: https://www.gnu.org/licenses/gpl-3.0.html. -:: -:: $QT_END_LICENSE$ -:: -::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - -qsb --glsl "150,120,100 es" --hlsl 50 --msl 12 -o +qsb/RectangularGlow.frag RectangularGlow_rhi.frag diff --git a/src/quickcontrols2/qquickdummyregistration_p.h b/src/quickcontrols2/qquickdummyregistration_p.h deleted file mode 100644 index 0d3b34a8..00000000 --- a/src/quickcontrols2/qquickdummyregistration_p.h +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDUMMYREGISTRATION_H -#define QQUICKDUMMYREGISTRATION_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQml/qqml.h> -// Ensure that the generated qmltyperegistrations .cpp file includes this header -// by including it here. Otherwise, the qtquickcontrols2plugin will fail to load -// due to the type registration function's symbol being undefined. -#include <QtQuickControls2/qtquickcontrols2global.h> - -QT_BEGIN_NAMESPACE - -// QtQuick.Controls has no types, so if we didn't have this dummy type, -// we'd have no way of specifying the version when the module was added, -// and 6.0 would be the only version that gets registered: QTBUG-85151 -struct QQuickDummyType -{ - Q_GADGET - QML_ANONYMOUS - QML_ADDED_IN_VERSION(2, 0) -}; - -QT_END_NAMESPACE - -#endif // QQUICKDUMMYREGISTRATION_H diff --git a/src/quickcontrols2/qquickstyle.cpp b/src/quickcontrols2/qquickstyle.cpp deleted file mode 100644 index 7c403529..00000000 --- a/src/quickcontrols2/qquickstyle.cpp +++ /dev/null @@ -1,505 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyle.h" -#include "qquickstyle_p.h" - -#include <QtCore/qdir.h> -#include <QtCore/qfile.h> -#include <QtCore/qdebug.h> -#include <QtCore/qsettings.h> -#include <QtCore/qfileselector.h> -#include <QtCore/qlibraryinfo.h> -#include <QtCore/qloggingcategory.h> -#include <QtCore/qmetaobject.h> -#include <QtGui/qcolor.h> -#include <QtGui/qfont.h> -#include <QtGui/qpalette.h> -#include <QtGui/private/qguiapplication_p.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtQml/private/qqmlmetatype_p.h> -#include <QtQml/qqmlengine.h> -#include <QtQml/qqmlfile.h> - -#include <functional> - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcQtQuickControlsStyle, "qt.quick.controls.style") - -/*! - \class QQuickStyle - \brief The QQuickStyle class allows configuring the application style. - \inmodule QtQuickControls2 - \since 5.7 - - QQuickStyle provides API for querying and configuring the application - \l {Styling Qt Quick Controls}{styles} of Qt Quick Controls. - - \code - #include <QGuiApplication> - #include <QQmlApplicationEngine> - #include <QQuickStyle> - - int main(int argc, char *argv[]) - { - QGuiApplication app(argc, argv); - - QQuickStyle::setStyle("Material"); - - QQmlApplicationEngine engine; - engine.load(QUrl("qrc:/main.qml")); - - return app.exec(); - } - \endcode - - \note The style must be configured \b before loading QML that imports - Qt Quick Controls. It is not possible to change the style after the QML - types have been registered. - - \note QQuickStyle is not supported when using - \l {Compile-Time Style Selection}{compile-time style selection}. - - To create your own custom style, see \l {Creating a Custom Style}. Custom - styles do not need to implement all controls. By default, the styling - system uses the \l {Basic style} as a fallback for controls that a custom - style does not provide. It is possible to specify a different fallback - style to customize or extend one of the built-in styles. - - \code - QQuickStyle::setStyle("MyStyle"); - QQuickStyle::setFallbackStyle("Material"); - \endcode - - \sa {Styling Qt Quick Controls} -*/ - -struct QQuickStyleSpec -{ - QQuickStyleSpec() { } - - QString name() - { - if (!resolved) - resolve(); - return style.mid(style.lastIndexOf(QLatin1Char('/')) + 1); - } - - QString path() - { - if (!resolved) - resolve(); - QString s = style; - if (QQmlFile::isLocalFile(s)) - s = QQmlFile::urlToLocalFileOrQrc(s); - return s.left(s.lastIndexOf(QLatin1Char('/')) + 1); - } - - void setStyle(const QString &s) - { - qCDebug(lcQtQuickControlsStyle) << "style" << s << "set on QQuickStyleSpec"; - if (s.contains(QLatin1Char('/'))) { - qWarning() << "Style names must not contain paths; see the \"Definition of a Style\" documentation for more information"; - return; - } - - qCDebug(lcQtQuickControlsStyle) << "clearing resolved flag and resolving"; - style = s; - resolved = false; - resolve(); - } - - void setFallbackStyle(const QString &fallback, const QByteArray &method) - { - if (!fallback.isEmpty()) - qCDebug(lcQtQuickControlsStyle) << "fallback style" << fallback << "set on QQuickStyleSpec via" << method; - - fallbackStyle = fallback; - fallbackMethod = method; - } - - void resolve() - { - qCDebug(lcQtQuickControlsStyle) << "resolving style"; - - if (style.isEmpty()) - style = QGuiApplicationPrivate::styleOverride; - if (style.isEmpty()) - style = QString::fromLocal8Bit(qgetenv("QT_QUICK_CONTROLS_STYLE")); - if (fallbackStyle.isEmpty()) - setFallbackStyle(QString::fromLocal8Bit(qgetenv("QT_QUICK_CONTROLS_FALLBACK_STYLE")), "QT_QUICK_CONTROLS_FALLBACK_STYLE"); -#if QT_CONFIG(settings) - if (style.isEmpty() || fallbackStyle.isEmpty()) { - QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(QStringLiteral("Controls")); - if (settings) { - if (style.isEmpty()) - style = settings->value(QStringLiteral("Style")).toString(); - if (fallbackStyle.isEmpty()) - setFallbackStyle(settings->value(QStringLiteral("FallbackStyle")).toString(), ":/qtquickcontrols2.conf"); - } - } -#endif - - auto builtInStyleList = QQuickStylePrivate::builtInStyles(); - if (!fallbackStyle.isEmpty() && !builtInStyleList.contains(fallbackStyle)) { - qWarning().nospace().noquote() << fallbackMethod << ": the specified fallback style \"" << - fallbackStyle << "\" is not one of the built-in Qt Quick Controls 2 styles"; - fallbackStyle.clear(); - } - - // Find the config file. - resolveConfigFilePath(); - - usingDefaultStyle = false; - - if (style.isEmpty() || style.toLower() == QStringLiteral("default")) { - usingDefaultStyle = true; - style.clear(); - - qCDebug(lcQtQuickControlsStyle) << "no style (or Default) was specified;" - << "checking if we have an appropriate style for this platform"; -#if defined(Q_OS_MACOS) - style = QLatin1String("macOS"); -#elif defined(Q_OS_WINDOWS) - style = QLatin1String("Windows"); -#elif defined(Q_OS_ANDROID) - style = QLatin1String("Material"); -#elif defined(Q_OS_LINUX) - style = QLatin1String("Fusion"); -#endif - if (!style.isEmpty()) - qCDebug(lcQtQuickControlsStyle) << "using" << style << "as a default"; - else - qCDebug(lcQtQuickControlsStyle) << "no appropriate style found; using Basic as a default"; - } - - // If it's still empty by this point, then it means we have no native style available for this platform, - // as is the case on e.g. embedded. In that case, we want to default to the Basic style, - // which is what effectiveStyleName() returns when "style" is empty. - custom = !builtInStyleList.contains(QQuickStylePrivate::effectiveStyleName(style)); - - resolved = true; - - qCDebug(lcQtQuickControlsStyle).nospace() << "done resolving:" - << "\n style=" << style - << "\n custom=" << custom - << "\n resolved=" << resolved - << "\n fallbackStyle=" << fallbackStyle - << "\n fallbackMethod=" << fallbackMethod - << "\n configFilePath=" << configFilePath; - } - - void reset() - { - qCDebug(lcQtQuickControlsStyle) << "resetting values to their defaults"; - - custom = false; - resolved = false; - usingDefaultStyle = false; - style.clear(); - fallbackStyle.clear(); - fallbackMethod.clear(); - configFilePath.clear(); - } - - QString resolveConfigFilePath() - { - if (configFilePath.isEmpty()) { - configFilePath = QFile::decodeName(qgetenv("QT_QUICK_CONTROLS_CONF")); - if (configFilePath.isEmpty() || !QFile::exists(configFilePath)) { - if (!configFilePath.isEmpty()) - qWarning("QT_QUICK_CONTROLS_CONF=%s: No such file", qPrintable(configFilePath)); - - configFilePath = QStringLiteral(":/qtquickcontrols2.conf"); - } - } - return configFilePath; - } - - // Is this a custom style defined by the user and not "built-in" style? - bool custom = false; - // Have we resolved the style yet? - bool resolved = false; - // Are we using the default style for this platform (because no style was specified)? - bool usingDefaultStyle = false; - // The name of the style. - QString style; - // The built-in style to use if the requested style cannot be found. - QString fallbackStyle; - // A description of the way in which fallbackStyle was set, used in e.g. warning messages shown to the user. - QByteArray fallbackMethod; - // The path to the qtquickcontrols2.conf file. - QString configFilePath; -}; - -Q_GLOBAL_STATIC(QQuickStyleSpec, styleSpec) - -/* - Note that most of these functions (with the exception of e.g. isResolved()) - should not be called before the style has been resolved, as it's only after - that happens that they will have been set. -*/ -QString QQuickStylePrivate::style() -{ - return styleSpec()->style; -} - -QString QQuickStylePrivate::effectiveStyleName(const QString &styleName) -{ - return !styleName.isEmpty() ? styleName : QLatin1String("Basic"); -} - -QString QQuickStylePrivate::fallbackStyle() -{ - return styleSpec()->fallbackStyle; -} - -bool QQuickStylePrivate::isCustomStyle() -{ - return styleSpec()->custom; -} - -bool QQuickStylePrivate::isResolved() -{ - return styleSpec()->resolved; -} - -bool QQuickStylePrivate::isUsingDefaultStyle() -{ - return styleSpec()->usingDefaultStyle; -} - -void QQuickStylePrivate::init() -{ - QQuickStyleSpec *spec = styleSpec(); - spec->resolve(); -} - -void QQuickStylePrivate::reset() -{ - if (styleSpec()) - styleSpec()->reset(); -} - -QString QQuickStylePrivate::configFilePath() -{ - return styleSpec()->resolveConfigFilePath(); -} - -QSharedPointer<QSettings> QQuickStylePrivate::settings(const QString &group) -{ -#ifndef QT_NO_SETTINGS - const QString filePath = QQuickStylePrivate::configFilePath(); - if (QFile::exists(filePath)) { - QFileSelector selector; - QSettings *settings = new QSettings(selector.select(filePath), QSettings::IniFormat); - if (!group.isEmpty()) - settings->beginGroup(group); - return QSharedPointer<QSettings>(settings); - } -#endif // QT_NO_SETTINGS - return QSharedPointer<QSettings>(); -} - -#if QT_CONFIG(settings) -static void readValue(const QSharedPointer<QSettings> &settings, const QString &name, std::function<void(const QVariant &)> setValue) -{ - const QVariant var = settings->value(name); - if (var.isValid()) - setValue(var); -} - -template <typename Enum> -static Enum toEnumValue(const QVariant &var) -{ - // ### TODO: expose QFont enums to the meta object system using Q_ENUM - //QMetaEnum enumeration = QMetaEnum::fromType<Enum>(); - //bool ok = false; - //int value = enumeration.keyToValue(var.toByteArray(), &ok); - //if (!ok) - // value = var.toInt(); - //return static_cast<Enum>(value); - - return static_cast<Enum>(var.toInt()); -} - -const QFont *QQuickStylePrivate::readFont(const QSharedPointer<QSettings> &settings) -{ - const QVariant var = settings->value(QStringLiteral("Font")); - if (var.isValid()) - return new QFont(var.value<QFont>()); - - QFont f; - settings->beginGroup(QStringLiteral("Font")); - readValue(settings, QStringLiteral("Family"), [&f](const QVariant &var) { f.setFamilies(QStringList{var.toString()}); }); - readValue(settings, QStringLiteral("PointSize"), [&f](const QVariant &var) { f.setPointSizeF(var.toReal()); }); - readValue(settings, QStringLiteral("PixelSize"), [&f](const QVariant &var) { f.setPixelSize(var.toInt()); }); - readValue(settings, QStringLiteral("StyleHint"), [&f](const QVariant &var) { f.setStyleHint(toEnumValue<QFont::StyleHint>(var.toInt())); }); - readValue(settings, QStringLiteral("Weight"), [&f](const QVariant &var) { f.setWeight(toEnumValue<QFont::Weight>(var)); }); - readValue(settings, QStringLiteral("Style"), [&f](const QVariant &var) { f.setStyle(toEnumValue<QFont::Style>(var.toInt())); }); - settings->endGroup(); - return new QFont(f); -} - -static void readColorGroup(const QSharedPointer<QSettings> &settings, QPalette::ColorGroup group, QPalette *palette) -{ - const QStringList keys = settings->childKeys(); - if (keys.isEmpty()) - return; - - static const int index = QPalette::staticMetaObject.indexOfEnumerator("ColorRole"); - Q_ASSERT(index != -1); - QMetaEnum metaEnum = QPalette::staticMetaObject.enumerator(index); - - for (const QString &key : keys) { - bool ok = false; - int role = metaEnum.keyToValue(key.toUtf8(), &ok); - if (ok) - palette->setColor(group, static_cast<QPalette::ColorRole>(role), settings->value(key).value<QColor>()); - } -} - -const QPalette *QQuickStylePrivate::readPalette(const QSharedPointer<QSettings> &settings) -{ - QPalette p; - settings->beginGroup(QStringLiteral("Palette")); - readColorGroup(settings, QPalette::All, &p); - - settings->beginGroup(QStringLiteral("Normal")); - readColorGroup(settings, QPalette::Normal, &p); - settings->endGroup(); - - settings->beginGroup(QStringLiteral("Disabled")); - readColorGroup(settings, QPalette::Disabled, &p); - settings->endGroup(); - return new QPalette(p); -} -#endif // QT_CONFIG(settings) - -static bool qt_is_dark_system_theme() -{ - if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { - if (const QPalette *systemPalette = theme->palette(QPlatformTheme::SystemPalette)) { - const QColor &textColor = systemPalette->color(QPalette::WindowText); - return textColor.red() > 128 && textColor.blue() > 128 && textColor.green() > 128; - } - } - return false; -} - -bool QQuickStylePrivate::isDarkSystemTheme() -{ - static bool dark = qt_is_dark_system_theme(); - return dark; -} - -QStringList QQuickStylePrivate::builtInStyles() -{ - return { - QLatin1String("Basic"), - QLatin1String("Fusion"), - QLatin1String("Imagine"), -#ifdef Q_OS_MACOS - QLatin1String("macOS"), -#endif - QLatin1String("Material"), - QLatin1String("Universal"), -#ifdef Q_OS_WINDOWS - QLatin1String("Windows") -#endif - }; -} - -/*! - Returns the name of the application style. - - \note The application style can be specified by passing a \c -style command - line argument. Therefore \c name() may not return a fully resolved - value if called before constructing a QGuiApplication. -*/ -QString QQuickStyle::name() -{ - return styleSpec()->name(); -} - -/*! - Sets the application style to \a style. - - \note The style must be configured \b before loading QML that imports Qt Quick Controls. - It is not possible to change the style after the QML types have been registered. - - \sa setFallbackStyle(), {Using Styles in Qt Quick Controls} -*/ -void QQuickStyle::setStyle(const QString &style) -{ - qCDebug(lcQtQuickControlsStyle) << "setStyle called with" << style; - - if (QQmlMetaType::matchingModuleVersion( - QStringLiteral("QtQuick.Controls"), QTypeRevision::fromVersion(2, 0)).isValid()) { - qWarning() << "ERROR: QQuickStyle::setStyle() must be called before loading QML that imports Qt Quick Controls 2."; - return; - } - - styleSpec()->setStyle(style); -} - -/*! - \since 5.8 - Sets the application fallback style to \a style. - - \note The fallback style must be the name of one of the built-in Qt Quick Controls styles, e.g. "Material". - - \note The style must be configured \b before loading QML that imports Qt Quick Controls. - It is not possible to change the style after the QML types have been registered. - - The fallback style can be also specified by setting the \c QT_QUICK_CONTROLS_FALLBACK_STYLE - \l {Supported Environment Variables in Qt Quick Controls}{environment variable}. - - \sa setStyle(), {Using Styles in Qt Quick Controls} -*/ -void QQuickStyle::setFallbackStyle(const QString &style) -{ - if (QQmlMetaType::matchingModuleVersion( - QStringLiteral("QtQuick.Controls"), QTypeRevision::fromVersion(2, 0)).isValid()) { - qWarning() << "ERROR: QQuickStyle::setFallbackStyle() must be called before loading QML that imports Qt Quick Controls 2."; - return; - } - - styleSpec()->setFallbackStyle(style, "QQuickStyle::setFallbackStyle()"); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/qquickstyle.h b/src/quickcontrols2/qquickstyle.h deleted file mode 100644 index e26ec90b..00000000 --- a/src/quickcontrols2/qquickstyle.h +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLE_H -#define QQUICKSTYLE_H - -#include <QtCore/qurl.h> -#include <QtCore/qstring.h> -#include <QtQuickControls2/qtquickcontrols2global.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKCONTROLS2_EXPORT QQuickStyle -{ -public: - static QString name(); - static void setStyle(const QString &style); - static void setFallbackStyle(const QString &style); -}; - -QT_END_NAMESPACE - -#endif // QQUICKSTYLE_H diff --git a/src/quickcontrols2/qquickstyle_p.h b/src/quickcontrols2/qquickstyle_p.h deleted file mode 100644 index 31c70893..00000000 --- a/src/quickcontrols2/qquickstyle_p.h +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLE_P_H -#define QQUICKSTYLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qsharedpointer.h> -#include <QtQuickControls2/qtquickcontrols2global.h> - -QT_BEGIN_NAMESPACE - -class QSettings; - -class Q_QUICKCONTROLS2_EXPORT QQuickStylePrivate -{ -public: - static QString style(); - static QString effectiveStyleName(const QString &styleName); - static QString fallbackStyle(); - static bool isCustomStyle(); - static bool isResolved(); - static bool isUsingDefaultStyle(); - static bool exists(); - static void init(); - static void reset(); - static QString configFilePath(); - static QSharedPointer<QSettings> settings(const QString &group = QString()); - static const QFont *readFont(const QSharedPointer<QSettings> &settings); - static const QPalette *readPalette(const QSharedPointer<QSettings> &settings); - static bool isDarkSystemTheme(); - static QStringList builtInStyles(); -}; - -QT_END_NAMESPACE - -#endif // QQUICKSTYLE_P_H diff --git a/src/quickcontrols2/qquickstyleplugin.cpp b/src/quickcontrols2/qquickstyleplugin.cpp deleted file mode 100644 index 27299b21..00000000 --- a/src/quickcontrols2/qquickstyleplugin.cpp +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyle.h" -#include "qquickstyle_p.h" -#include "qquickstyleplugin_p.h" - -#include <QtCore/private/qfileselector_p.h> -#include <QtCore/qloggingcategory.h> -#include <QtQml/qqmlengine.h> -#include <QtQml/qqmlfile.h> -#include <QtQml/private/qqmlmetatype_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p_p.h> - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcStylePlugin, "qt.quick.controls.styleplugin") - -QQuickStylePlugin::QQuickStylePlugin(QObject *parent) - : QQmlExtensionPlugin(parent) -{ -} - -QQuickStylePlugin::~QQuickStylePlugin() -{ -} - -void QQuickStylePlugin::registerTypes(const char *uri) -{ - qCDebug(lcStylePlugin).nospace() << "registerTypes called with uri " << uri << "; plugin name is " << name(); - - const QTypeRevision latestControlsRevision = QQmlMetaType::latestModuleVersion(QLatin1String("QtQuick.Controls")); - // Use the private function because we don't want to cause resolve() to be called, - // as the logic that assigns a default style if one wasn't set would interfere with compile-time style selection. - QString styleName = QQuickStylePrivate::style(); - if (!latestControlsRevision.isValid() && styleName.isEmpty()) { - // The user hasn't imported QtQuick.Controls, nor set a style via the runtime methods. - qCDebug(lcStylePlugin).nospace() << uri << " imported before QtQuick.Controls; using compile-time style selection"; - QQuickStyle::setStyle(name()); - styleName = name(); - } - - // Even if this style plugin isn't for the style set by the user, - // we still want to create the theme object, because that function - // is also responsible for reading values from qtquickcontrols2.conf. - // So, even if a style doesn't have a QQuickTheme, it can still have - // values set for (e.g. fonts and palettes) in qtquickcontrols2.conf. - const QString effectiveCurrentStyleName = QQuickStylePrivate::effectiveStyleName(styleName); - auto theme = QQuickTheme::instance(); - if (!theme) { - qCDebug(lcStylePlugin) << "creating theme"; - theme = createTheme(effectiveCurrentStyleName); - } - - if (name() != effectiveCurrentStyleName) { - qCDebug(lcStylePlugin).nospace() << "theme does not belong to current style (" - << effectiveCurrentStyleName << "); not calling initializeTheme()"; - return; - } - - qCDebug(lcStylePlugin) << "theme has not yet been initialized; calling initializeTheme()"; - initializeTheme(theme); - - if (!styleName.isEmpty()) - QFileSelectorPrivate::addStatics(QStringList() << styleName); -} - -void QQuickStylePlugin::unregisterTypes() -{ - qCDebug(lcStylePlugin) << "unregisterTypes called; plugin name is" << name(); - if (!QQuickThemePrivate::instance) - return; - - // Not every style has a plugin - some styles are QML-only. So, we clean this - // stuff up when the first style plugin is unregistered rather than when the - // plugin for the current style is unregistered. - QQuickThemePrivate::instance.reset(); - QQuickStylePrivate::reset(); -} - -/*! - \internal - - Responsible for setting the font and palette settings that were specified in the - qtquickcontrols2.conf file. - - Style-specific settings (e.g. Variant=Dense) are read in the constructor of the - appropriate style plugin (e.g. QtQuickControls2MaterialStylePlugin). - - Implicit style-specific font and palette values are assigned in the relevant theme - (e.g. QQuickMaterialTheme). -*/ -QQuickTheme *QQuickStylePlugin::createTheme(const QString &name) -{ - qCDebug(lcStylePlugin) << "creating QQuickTheme instance to be initialized by style-specific theme of" << name; - - QQuickTheme *theme = new QQuickTheme; -#if QT_CONFIG(settings) - QQuickThemePrivate *p = QQuickThemePrivate::get(theme); - QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(name); - if (settings) { - p->defaultFont.reset(QQuickStylePrivate::readFont(settings)); - // Set the default font as the System scope, because that's what - // QQuickControlPrivate::parentFont() uses as its fallback if no - // parent item has a font explicitly set. QQuickControlPrivate::parentFont() - // is used as the starting point for font inheritance/resolution. - // The same goes for palettes below. - theme->setFont(QQuickTheme::System, *p->defaultFont); - - p->defaultPalette.reset(QQuickStylePrivate::readPalette(settings)); - theme->setPalette(QQuickTheme::System, *p->defaultPalette); - } -#endif - QQuickThemePrivate::instance.reset(theme); - return theme; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/qquickstyleplugin_p.h b/src/quickcontrols2/qquickstyleplugin_p.h deleted file mode 100644 index 0cc793a2..00000000 --- a/src/quickcontrols2/qquickstyleplugin_p.h +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEPLUGIN_P_H -#define QQUICKSTYLEPLUGIN_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQml/qqmlextensionplugin.h> -#include <QtQuickControls2/qtquickcontrols2global.h> - -QT_BEGIN_NAMESPACE - -class QQuickTheme; - -class Q_QUICKCONTROLS2_EXPORT QQuickStylePlugin : public QQmlExtensionPlugin -{ - Q_OBJECT - -public: - explicit QQuickStylePlugin(QObject *parent = nullptr); - ~QQuickStylePlugin(); - - virtual QString name() const = 0; - virtual void initializeTheme(QQuickTheme *theme) = 0; - - void registerTypes(const char *uri) override; - void unregisterTypes() override; - -private: - QQuickTheme *createTheme(const QString &name); - - Q_DISABLE_COPY(QQuickStylePlugin) -}; - -QT_END_NAMESPACE - -#endif // QQUICKSTYLEPLUGIN_P_H diff --git a/src/quickcontrols2/qt_cmdline.cmake b/src/quickcontrols2/qt_cmdline.cmake deleted file mode 100644 index b1e98c9a..00000000 --- a/src/quickcontrols2/qt_cmdline.cmake +++ /dev/null @@ -1,6 +0,0 @@ -qt_commandline_option(style-fusion TYPE boolean NAME quickcontrols2-fusion) -qt_commandline_option(style-imagine TYPE boolean NAME quickcontrols2-imagine) -qt_commandline_option(style-material TYPE boolean NAME quickcontrols2-material) -qt_commandline_option(style-universal TYPE boolean NAME quickcontrols2-universal) -qt_commandline_option(style-macos TYPE boolean NAME quickcontrols2-macos) -qt_commandline_option(style-windows TYPE boolean NAME quickcontrols2-windows) diff --git a/src/quickcontrols2/qtquickcontrols2global.h b/src/quickcontrols2/qtquickcontrols2global.h deleted file mode 100644 index e5f050ce..00000000 --- a/src/quickcontrols2/qtquickcontrols2global.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTQUICKCONTROLS2GLOBAL_H -#define QTQUICKCONTROLS2GLOBAL_H - -#include <QtCore/qglobal.h> - -QT_BEGIN_NAMESPACE - -#ifndef QT_STATIC -# if defined(QT_BUILD_QUICKCONTROLS2_LIB) -# define Q_QUICKCONTROLS2_EXPORT Q_DECL_EXPORT -# else -# define Q_QUICKCONTROLS2_EXPORT Q_DECL_IMPORT -# endif -#else -# define Q_QUICKCONTROLS2_EXPORT -#endif - -QT_END_NAMESPACE - -Q_QUICKCONTROLS2_EXPORT void qml_register_types_QtQuick_Controls(); - -#endif // QTQUICKCONTROLS2GLOBAL_H diff --git a/src/quickcontrols2/qtquickcontrols2plugin.cpp b/src/quickcontrols2/qtquickcontrols2plugin.cpp deleted file mode 100644 index fcd025e0..00000000 --- a/src/quickcontrols2/qtquickcontrols2plugin.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtCore/qloggingcategory.h> -#include <QtQml/qqmlengine.h> -#include <QtQml/qqmlextensionplugin.h> -#include <QtQuickTemplates2/private/qquicktheme_p_p.h> -#include <QtQuickControls2/private/qquickstyle_p.h> -#include <QtQuickControls2/private/qquickstyleplugin_p.h> -#include <QtQuickControls2/qquickstyle.h> -#include <QtQuickControls2/qtquickcontrols2global.h> - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcQtQuickControls2Plugin, "qt.quick.controls.qtquickcontrols2plugin") - -class QtQuickControls2Plugin : public QQmlExtensionPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) - -public: - QtQuickControls2Plugin(QObject *parent = nullptr); - ~QtQuickControls2Plugin(); - - void registerTypes(const char *uri) override; - void unregisterTypes() override; - -private: - // We store these because the style plugins can be unregistered before - // QtQuickControls2Plugin, and since QQuickStylePlugin calls QQuickStylePrivate::reset(), - // the style information can be lost when it comes time to call qmlUnregisterModuleImport(). - // It also avoids unnecessarily resolving the style after resetting it just to get the style - // name in unregisterTypes(). - bool customStyle = false; - QString registeredStyleUri; - QString registeredFallbackStyleUri; -}; - -static const char *qtQuickControlsUri = "QtQuick.Controls"; - -QString styleUri() -{ - const QString style = QQuickStyle::name(); - if (!QQuickStylePrivate::isCustomStyle()) { - // The style set is a built-in style. - const QString styleName = QQuickStylePrivate::effectiveStyleName(style); - return QString::fromLatin1("QtQuick.Controls.%1").arg(styleName); - } - - // This is a custom style, so just use the name as the import uri. - QString styleName = style; - if (styleName.startsWith(QLatin1String(":/"))) - styleName.remove(0, 2); - return styleName; -} - -QString fallbackStyleUri() -{ - // The fallback style must be a built-in style, so we don't need to check for custom styles here. - const QString fallbackStyle = QQuickStylePrivate::fallbackStyle(); - const QString fallbackStyleName = QQuickStylePrivate::effectiveStyleName(fallbackStyle); - return QString::fromLatin1("QtQuick.Controls.%1").arg(fallbackStyleName); -} - -QtQuickControls2Plugin::QtQuickControls2Plugin(QObject *parent) : QQmlExtensionPlugin(parent) -{ - volatile auto registration = &qml_register_types_QtQuick_Controls; - Q_UNUSED(registration); -} - -QtQuickControls2Plugin::~QtQuickControls2Plugin() -{ - // Intentionally empty: we use register/unregisterTypes() to do - // initialization and cleanup, as plugins are not unloaded on macOS. -} - -void QtQuickControls2Plugin::registerTypes(const char *uri) -{ - qCDebug(lcQtQuickControls2Plugin) << "registerTypes() called with uri" << uri; - - // It's OK that the style is resolved more than once; some accessors like name() cause it to be called, for example. - QQuickStylePrivate::init(); - - const QString styleName = QQuickStylePrivate::effectiveStyleName(QQuickStyle::name()); - const QString fallbackStyleName = QQuickStylePrivate::effectiveStyleName(QQuickStylePrivate::fallbackStyle()); - qCDebug(lcQtQuickControls2Plugin) << "style:" << QQuickStyle::name() << "effective style:" << styleName - << "fallback style:" << QQuickStylePrivate::fallbackStyle() << "effective fallback style:" << fallbackStyleName; - - // If the style is Basic, we don't need to register the fallback because the Basic style - // provides all controls. Also, if we didn't return early here, we can get an infinite import loop - // when the style is set to Basic. - if (styleName != fallbackStyleName && styleName != QLatin1String("Basic")) { - registeredFallbackStyleUri = ::fallbackStyleUri(); - qCDebug(lcQtQuickControls2Plugin) << "calling qmlRegisterModuleImport() to register fallback style with" - << " uri \"" << qtQuickControlsUri << "\" moduleMajor" << QQmlModuleImportModuleAny - << "import" << registeredFallbackStyleUri << "importMajor" << QQmlModuleImportAuto; - // The fallback style must be a built-in style, so we match the version number. - qmlRegisterModuleImport(qtQuickControlsUri, QQmlModuleImportModuleAny, registeredFallbackStyleUri.toUtf8().constData(), - QQmlModuleImportAuto, QQmlModuleImportAuto); - } - - // If the user imports QtQuick.Controls 2.15, and they're using the Material style, we should import version 2.15. - // However, if they import QtQuick.Controls 2.15, but are using a custom style, we want to use the latest version - // number of their style. - customStyle = QQuickStylePrivate::isCustomStyle(); - registeredStyleUri = ::styleUri(); - const int importMajor = !customStyle ? QQmlModuleImportAuto : QQmlModuleImportLatest; - qCDebug(lcQtQuickControls2Plugin).nospace() << "calling qmlRegisterModuleImport() to register primary style with" - << " uri \"" << qtQuickControlsUri << "\" moduleMajor " << importMajor - << " import " << registeredStyleUri << " importMajor " << importMajor; - qmlRegisterModuleImport(qtQuickControlsUri, QQmlModuleImportModuleAny, registeredStyleUri.toUtf8().constData(), importMajor); -} - -void QtQuickControls2Plugin::unregisterTypes() -{ - qCDebug(lcQtQuickControls2Plugin) << "unregisterTypes() called"; - - if (!registeredFallbackStyleUri.isEmpty()) { - // We registered a fallback style, so now we need to unregister it. - qmlUnregisterModuleImport(qtQuickControlsUri, QQmlModuleImportModuleAny, registeredFallbackStyleUri.toUtf8().constData(), - QQmlModuleImportAuto, QQmlModuleImportAuto); - registeredFallbackStyleUri.clear(); - } - - const int importMajor = !customStyle ? QQmlModuleImportAuto : QQmlModuleImportLatest; - qmlUnregisterModuleImport(qtQuickControlsUri, QQmlModuleImportModuleAny, registeredStyleUri.toUtf8().constData(), importMajor); - customStyle = false; - registeredStyleUri.clear(); -} - -QT_END_NAMESPACE - -#include "qtquickcontrols2plugin.moc" diff --git a/src/quickcontrols2/universal/ApplicationWindow.qml b/src/quickcontrols2/universal/ApplicationWindow.qml deleted file mode 100644 index 2ec9c565..00000000 --- a/src/quickcontrols2/universal/ApplicationWindow.qml +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Window -import QtQuick.Templates as T -import QtQuick.Controls.Universal -import QtQuick.Controls.Universal.impl - -T.ApplicationWindow { - id: window - - color: Universal.background - - FocusRectangle { - parent: window.activeFocusControl - width: parent ? parent.width : 0 - height: parent ? parent.height : 0 - visible: parent && !!parent.useSystemFocusVisuals && !!parent.visualFocus - } -} diff --git a/src/quickcontrols2/universal/BusyIndicator.qml b/src/quickcontrols2/universal/BusyIndicator.qml deleted file mode 100644 index 0bd3ca03..00000000 --- a/src/quickcontrols2/universal/BusyIndicator.qml +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal -import QtQuick.Controls.Universal.impl - -T.BusyIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - contentItem: BusyIndicatorImpl { - implicitWidth: 20 - implicitHeight: 20 - - readonly property real size: Math.min(control.availableWidth, control.availableHeight) - - count: size < 60 ? 5 : 6 // "Small" vs. "Large" - color: control.Universal.accent - visible: control.running - } -} diff --git a/src/quickcontrols2/universal/Button.qml b/src/quickcontrols2/universal/Button.qml deleted file mode 100644 index 18a82e17..00000000 --- a/src/quickcontrols2/universal/Button.qml +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.Button { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 8 - verticalPadding: padding - 4 - spacing: 8 - - icon.width: 20 - icon.height: 20 - icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) - - property bool useSystemFocusVisuals: true - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) - } - - background: Rectangle { - implicitWidth: 32 - implicitHeight: 32 - - visible: !control.flat || control.down || control.checked || control.highlighted - color: control.down ? control.Universal.baseMediumLowColor : - control.enabled && (control.highlighted || control.checked) ? control.Universal.accent : - control.Universal.baseLowColor - - Rectangle { - width: parent.width - height: parent.height - color: "transparent" - visible: control.hovered - border.width: 2 // ButtonBorderThemeThickness - border.color: control.Universal.baseMediumLowColor - } - } -} diff --git a/src/quickcontrols2/universal/CMakeLists.txt b/src/quickcontrols2/universal/CMakeLists.txt deleted file mode 100644 index 6ddacfa4..00000000 --- a/src/quickcontrols2/universal/CMakeLists.txt +++ /dev/null @@ -1,258 +0,0 @@ -##################################################################### -## qtquickcontrols2universalstyleplugin Plugin: -##################################################################### - -set(qml_files - "ApplicationWindow.qml" - "BusyIndicator.qml" - "Button.qml" - "CheckBox.qml" - "CheckDelegate.qml" - "ComboBox.qml" - "DelayButton.qml" - "Dial.qml" - "Dialog.qml" - "DialogButtonBox.qml" - "Drawer.qml" - "Frame.qml" - "GroupBox.qml" - "HorizontalHeaderView.qml" - "ItemDelegate.qml" - "Label.qml" - "Menu.qml" - "MenuBar.qml" - "MenuBarItem.qml" - "MenuItem.qml" - "MenuSeparator.qml" - "Page.qml" - "PageIndicator.qml" - "Pane.qml" - "Popup.qml" - "ProgressBar.qml" - "RadioButton.qml" - "RadioDelegate.qml" - "RangeSlider.qml" - "RoundButton.qml" - "ScrollView.qml" - "ScrollBar.qml" - "ScrollIndicator.qml" - "Slider.qml" - "SpinBox.qml" - "SplitView.qml" - "StackView.qml" - "SwipeDelegate.qml" - "SwitchDelegate.qml" - "Switch.qml" - "TabBar.qml" - "TabButton.qml" - "TextArea.qml" - "TextField.qml" - "ToolBar.qml" - "ToolButton.qml" - "ToolSeparator.qml" - "ToolTip.qml" - "Tumbler.qml" - "VerticalHeaderView.qml" -) -set_source_files_properties(ApplicationWindow.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(BusyIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Button.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(CheckBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(CheckDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ComboBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(DelayButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.2;6.0" -) -set_source_files_properties(Dial.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Dialog.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(DialogButtonBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(Drawer.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Frame.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(GroupBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(HorizontalHeaderView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.15;6.0" -) -set_source_files_properties(ItemDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Label.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Menu.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(MenuBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.3;6.0" -) -set_source_files_properties(MenuBarItem.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.3;6.0" -) -set_source_files_properties(MenuItem.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(MenuSeparator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(Page.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(PageIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Pane.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Popup.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ProgressBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RadioButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RadioDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RangeSlider.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(RoundButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(ScrollView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ScrollBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ScrollIndicator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Slider.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SpinBox.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SplitView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.13;6.0" -) -set_source_files_properties(StackView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SwipeDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(SwitchDelegate.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Switch.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TabBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TabButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TextArea.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(TextField.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolBar.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolButton.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(ToolSeparator.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.1;6.0" -) -set_source_files_properties(ToolTip.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(Tumbler.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) -set_source_files_properties(VerticalHeaderView.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.15;6.0" -) - -qt_internal_add_qml_module(qtquickcontrols2universalstyleplugin - URI "QtQuick.Controls.Universal" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2UniversalStylePlugin - IMPORTS - QtQuick.Controls.Basic/auto - PLUGIN_TARGET qtquickcontrols2universalstyleplugin - NO_PLUGIN_OPTIONAL - NO_GENERATE_PLUGIN_SOURCE - SOURCES - qquickuniversalstyle.cpp qquickuniversalstyle_p.h - qquickuniversaltheme.cpp qquickuniversaltheme_p.h - qtquickcontrols2universalstyleplugin.cpp - QML_FILES - ${qml_files} - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickControls2ImplPrivate - Qt::QuickControls2Private - Qt::QuickPrivate - Qt::QuickTemplates2Private -) - -qt_internal_add_resource(qtquickcontrols2universalstyleplugin "qtquickcontrols2universalstyleplugin" - PREFIX - "/qt-project.org/imports/QtQuick/Controls/Universal" - FILES - "images/checkmark.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/downarrow.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/leftarrow.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/rightarrow.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" -) - -add_subdirectory(impl) diff --git a/src/quickcontrols2/universal/CheckBox.qml b/src/quickcontrols2/universal/CheckBox.qml deleted file mode 100644 index ff35d372..00000000 --- a/src/quickcontrols2/universal/CheckBox.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal -import QtQuick.Controls.Universal.impl - -T.CheckBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 8 - - property bool useSystemFocusVisuals: true - - indicator: CheckIndicator { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - - opacity: enabled ? 1.0 : 0.2 - color: control.Universal.foreground - } -} diff --git a/src/quickcontrols2/universal/CheckDelegate.qml b/src/quickcontrols2/universal/CheckDelegate.qml deleted file mode 100644 index 8e455a56..00000000 --- a/src/quickcontrols2/universal/CheckDelegate.qml +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal -import QtQuick.Controls.Universal.impl - -T.CheckDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 12 - - padding: 12 - topPadding: padding - 1 - bottomPadding: padding + 1 - - icon.width: 20 - icon.height: 20 - icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) - - indicator: CheckIndicator { - x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: IconLabel { - leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing - rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) - } - - background: Rectangle { - visible: control.down || control.highlighted || control.visualFocus || control.hovered - color: control.down ? control.Universal.listMediumColor : - control.hovered ? control.Universal.listLowColor : control.Universal.altMediumLowColor - Rectangle { - width: parent.width - height: parent.height - visible: control.visualFocus || control.highlighted - color: control.Universal.accent - opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 - } - - } -} diff --git a/src/quickcontrols2/universal/ComboBox.qml b/src/quickcontrols2/universal/ComboBox.qml deleted file mode 100644 index b3179849..00000000 --- a/src/quickcontrols2/universal/ComboBox.qml +++ /dev/null @@ -1,158 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Window -import QtQuick.Controls.impl -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.ComboBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) - rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) - - Universal.theme: editable && activeFocus ? Universal.Light : undefined - - delegate: ItemDelegate { - width: ListView.view.width - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData - font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal - highlighted: control.highlightedIndex === index - hoverEnabled: control.hoverEnabled - } - - indicator: ColorImage { - x: control.mirrored ? control.padding : control.width - width - control.padding - y: control.topPadding + (control.availableHeight - height) / 2 - color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseMediumHighColor - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Universal/images/downarrow.png" - - Rectangle { - z: -1 - width: parent.width - height: parent.height - color: control.activeFocus ? control.Universal.accent : - control.pressed ? control.Universal.baseMediumLowColor : - control.hovered ? control.Universal.baseLowColor : "transparent" - visible: control.editable && !contentItem.hovered && (control.pressed || control.hovered) - opacity: control.activeFocus && !control.pressed ? 0.4 : 1.0 - } - } - - contentItem: T.TextField { - leftPadding: control.mirrored ? 1 : 12 - rightPadding: control.mirrored ? 10 : 1 - topPadding: 5 - control.topPadding - bottomPadding: 7 - control.bottomPadding - - text: control.editable ? control.editText : control.displayText - - enabled: control.editable - autoScroll: control.editable - readOnly: control.down - inputMethodHints: control.inputMethodHints - validator: control.validator - selectByMouse: control.selectTextByMouse - - font: control.font - color: !control.enabled ? control.Universal.chromeDisabledLowColor : - control.editable && control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.foreground - selectionColor: control.Universal.accent - selectedTextColor: control.Universal.chromeWhiteColor - verticalAlignment: Text.AlignVCenter - } - - background: Rectangle { - implicitWidth: 120 - implicitHeight: 32 - - border.width: control.flat ? 0 : 2 // ComboBoxBorderThemeThickness - border.color: !control.enabled ? control.Universal.baseLowColor : - control.editable && control.activeFocus ? control.Universal.accent : - control.down ? control.Universal.baseMediumLowColor : - control.hovered ? control.Universal.baseMediumColor : control.Universal.baseMediumLowColor - color: !control.enabled ? control.Universal.baseLowColor : - control.down ? control.Universal.listMediumColor : - control.flat && control.hovered ? control.Universal.listLowColor : - control.editable && control.activeFocus ? control.Universal.background : control.Universal.altMediumLowColor - visible: !control.flat || control.pressed || control.hovered || control.visualFocus - - Rectangle { - x: 2 - y: 2 - width: parent.width - 4 - height: parent.height - 4 - - visible: control.visualFocus && !control.editable - color: control.Universal.accent - opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 - } - } - - popup: T.Popup { - width: control.width - height: Math.min(contentItem.implicitHeight, control.Window.height - topMargin - bottomMargin) - topMargin: 8 - bottomMargin: 8 - - Universal.theme: control.Universal.theme - Universal.accent: control.Universal.accent - - contentItem: ListView { - clip: true - implicitHeight: contentHeight - model: control.delegateModel - currentIndex: control.highlightedIndex - highlightMoveDuration: 0 - - T.ScrollIndicator.vertical: ScrollIndicator { } - } - - background: Rectangle { - color: control.Universal.chromeMediumLowColor - border.color: control.Universal.chromeHighColor - border.width: 1 // FlyoutBorderThemeThickness - } - } -} diff --git a/src/quickcontrols2/universal/DelayButton.qml b/src/quickcontrols2/universal/DelayButton.qml deleted file mode 100644 index 5840fa86..00000000 --- a/src/quickcontrols2/universal/DelayButton.qml +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.DelayButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 8 - verticalPadding: padding - 4 - - property bool useSystemFocusVisuals: true - - transition: Transition { - NumberAnimation { - duration: control.delay * (control.pressed ? 1.0 - control.progress : 0.3 * control.progress) - } - } - - contentItem: Text { - text: control.text - font: control.font - elide: Text.ElideRight - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - - opacity: enabled ? 1.0 : 0.2 - color: control.Universal.foreground - } - - background: Rectangle { - implicitWidth: 32 - implicitHeight: 32 - - color: control.down ? control.Universal.baseMediumLowColor : - control.enabled && control.checked ? control.Universal.accent : control.Universal.baseLowColor - - Rectangle { - visible: !control.checked - width: parent.width * control.progress - height: parent.height - color: control.Universal.accent - } - - Rectangle { - width: parent.width - height: parent.height - color: "transparent" - visible: control.hovered - border.width: 2 // ButtonBorderThemeThickness - border.color: control.Universal.baseMediumLowColor - } - } -} diff --git a/src/quickcontrols2/universal/Dial.qml b/src/quickcontrols2/universal/Dial.qml deleted file mode 100644 index cd9e615e..00000000 --- a/src/quickcontrols2/universal/Dial.qml +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.Dial { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 100 - - x: control.width / 2 - width / 2 - y: control.height / 2 - height / 2 - width: Math.max(64, Math.min(control.width, control.height)) - height: width - radius: width / 2 - color: "transparent" - border.color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseMediumColor - border.width: 2 - } - - handle: Rectangle { - implicitWidth: 14 - implicitHeight: 14 - - x: control.background.x + control.background.width / 2 - width / 2 - y: control.background.y + control.background.height / 2 - height / 2 - - radius: width / 2 - color: !control.enabled ? control.Universal.baseLowColor : - control.pressed ? control.Universal.baseMediumColor : - control.hovered ? control.Universal.baseHighColor : control.Universal.baseMediumHighColor - - transform: [ - Translate { - y: -control.background.height * 0.4 + control.handle.height / 2 - }, - Rotation { - angle: control.angle - origin.x: control.handle.width / 2 - origin.y: control.handle.height / 2 - } - ] - } -} diff --git a/src/quickcontrols2/universal/Dialog.qml b/src/quickcontrols2/universal/Dialog.qml deleted file mode 100644 index 3cebf7f0..00000000 --- a/src/quickcontrols2/universal/Dialog.qml +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.Dialog { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - padding: 24 - verticalPadding: 18 - - background: Rectangle { - color: control.Universal.chromeMediumLowColor - border.color: control.Universal.chromeHighColor - border.width: 1 // FlyoutBorderThemeThickness - } - - header: Label { - text: control.title - visible: control.title - elide: Label.ElideRight - topPadding: 18 - leftPadding: 24 - rightPadding: 24 - // TODO: QPlatformTheme::TitleBarFont - font.pixelSize: 20 - background: Rectangle { - x: 1; y: 1 // // FlyoutBorderThemeThickness - color: control.Universal.chromeMediumLowColor - width: parent.width - 2 - height: parent.height - 1 - } - } - - footer: DialogButtonBox { - visible: count > 0 - } - - T.Overlay.modal: Rectangle { - color: control.Universal.baseLowColor - } - - T.Overlay.modeless: Rectangle { - color: control.Universal.baseLowColor - } -} diff --git a/src/quickcontrols2/universal/DialogButtonBox.qml b/src/quickcontrols2/universal/DialogButtonBox.qml deleted file mode 100644 index 811c12f7..00000000 --- a/src/quickcontrols2/universal/DialogButtonBox.qml +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.DialogButtonBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - (control.count === 1 ? implicitContentWidth * 2 : implicitContentWidth) + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - contentWidth: contentItem.contentWidth - - spacing: 4 - padding: 24 - topPadding: position === T.DialogButtonBox.Footer ? 6 : 24 - bottomPadding: position === T.DialogButtonBox.Header ? 6 : 24 - alignment: count === 1 ? Qt.AlignRight : undefined - - delegate: Button { - width: control.count === 1 ? control.availableWidth / 2 : undefined - } - - contentItem: ListView { - model: control.contentModel - spacing: control.spacing - orientation: ListView.Horizontal - boundsBehavior: Flickable.StopAtBounds - snapMode: ListView.SnapToItem - } - - background: Rectangle { - implicitHeight: 32 - color: control.Universal.chromeMediumLowColor - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 2 - } -} diff --git a/src/quickcontrols2/universal/Drawer.qml b/src/quickcontrols2/universal/Drawer.qml deleted file mode 100644 index 19f78f1e..00000000 --- a/src/quickcontrols2/universal/Drawer.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.Drawer { - id: control - - parent: T.Overlay.overlay - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - topPadding: control.edge === Qt.BottomEdge - leftPadding: control.edge === Qt.RightEdge - rightPadding: control.edge === Qt.LeftEdge - bottomPadding: control.edge === Qt.TopEdge - - enter: Transition { SmoothedAnimation { velocity: 5 } } - exit: Transition { SmoothedAnimation { velocity: 5 } } - - background: Rectangle { - color: control.Universal.chromeMediumLowColor - Rectangle { - readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge - width: horizontal ? 1 : parent.width - height: horizontal ? parent.height : 1 - color: control.Universal.chromeHighColor - x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 - y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 - } - } - - T.Overlay.modal: Rectangle { - color: control.Universal.baseLowColor - } - - T.Overlay.modeless: Rectangle { - color: control.Universal.baseLowColor - } -} diff --git a/src/quickcontrols2/universal/Frame.qml b/src/quickcontrols2/universal/Frame.qml deleted file mode 100644 index 780ba734..00000000 --- a/src/quickcontrols2/universal/Frame.qml +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.Frame { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - padding: 12 - - background: Rectangle { - color: "transparent" - border.color: control.Universal.chromeDisabledLowColor - } -} diff --git a/src/quickcontrols2/universal/GroupBox.qml b/src/quickcontrols2/universal/GroupBox.qml deleted file mode 100644 index 5104b710..00000000 --- a/src/quickcontrols2/universal/GroupBox.qml +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.GroupBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitLabelWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - spacing: 12 - padding: 12 - topPadding: padding + (implicitLabelWidth > 0 ? implicitLabelHeight + spacing : 0) - - label: Text { - x: control.leftPadding - width: control.availableWidth - - text: control.title - font: control.font - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - - opacity: enabled ? 1.0 : 0.2 - color: control.Universal.foreground - } - - background: Rectangle { - y: control.topPadding - control.bottomPadding - width: parent.width - height: parent.height - control.topPadding + control.bottomPadding - - color: "transparent" - border.color: control.Universal.chromeDisabledLowColor - } -} diff --git a/src/quickcontrols2/universal/HorizontalHeaderView.qml b/src/quickcontrols2/universal/HorizontalHeaderView.qml deleted file mode 100644 index 0bf88ebc..00000000 --- a/src/quickcontrols2/universal/HorizontalHeaderView.qml +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T -import QtQuick.Controls.Universal -import QtQuick.Controls.Universal.impl - -T.HorizontalHeaderView { - id: control - - implicitWidth: syncView ? syncView.width : 0 - implicitHeight: contentHeight - - delegate: Rectangle { - // Qt6: add cellPadding (and font etc) as public API in headerview - readonly property real cellPadding: 8 - - implicitWidth: text.implicitWidth + (cellPadding * 2) - implicitHeight: Math.max(control.height, text.implicitHeight + (cellPadding * 2)) - color: control.Universal.background - - Text { - id: text - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] - : model[control.textRole]) - : modelData - width: parent.width - height: parent.height - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) - } - } -} diff --git a/src/quickcontrols2/universal/ItemDelegate.qml b/src/quickcontrols2/universal/ItemDelegate.qml deleted file mode 100644 index 50fa0af9..00000000 --- a/src/quickcontrols2/universal/ItemDelegate.qml +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.ItemDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 12 - - padding: 12 - topPadding: padding - 1 - bottomPadding: padding + 1 - - icon.width: 20 - icon.height: 20 - icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) - } - - background: Rectangle { - visible: control.down || control.highlighted || control.visualFocus || control.hovered - color: control.down ? control.Universal.listMediumColor : - control.hovered ? control.Universal.listLowColor : control.Universal.altMediumLowColor - Rectangle { - width: parent.width - height: parent.height - visible: control.visualFocus || control.highlighted - color: control.Universal.accent - opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 - } - - } -} diff --git a/src/quickcontrols2/universal/Label.qml b/src/quickcontrols2/universal/Label.qml deleted file mode 100644 index 9460c997..00000000 --- a/src/quickcontrols2/universal/Label.qml +++ /dev/null @@ -1,47 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.Label { - id: control - - opacity: enabled ? 1.0 : 0.2 - color: control.Universal.foreground - linkColor: Universal.accent -} diff --git a/src/quickcontrols2/universal/Menu.qml b/src/quickcontrols2/universal/Menu.qml deleted file mode 100644 index c4723f32..00000000 --- a/src/quickcontrols2/universal/Menu.qml +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal -import QtQuick.Window - -T.Menu { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - margins: 0 - overlap: 1 - - delegate: MenuItem { } - - contentItem: ListView { - implicitHeight: contentHeight - model: control.contentModel - interactive: Window.window - ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height - : false - clip: true - currentIndex: control.currentIndex - - ScrollIndicator.vertical: ScrollIndicator {} - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 40 - color: control.Universal.chromeMediumLowColor - border.color: control.Universal.chromeHighColor - border.width: 1 // FlyoutBorderThemeThickness - } - - T.Overlay.modal: Rectangle { - color: control.Universal.baseLowColor - } - - T.Overlay.modeless: Rectangle { - color: control.Universal.baseLowColor - } -} diff --git a/src/quickcontrols2/universal/MenuBar.qml b/src/quickcontrols2/universal/MenuBar.qml deleted file mode 100644 index 2ab58919..00000000 --- a/src/quickcontrols2/universal/MenuBar.qml +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.MenuBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - delegate: MenuBarItem { } - - contentItem: Row { - spacing: control.spacing - Repeater { - model: control.contentModel - } - } - - background: Rectangle { - implicitHeight: 40 - color: control.Universal.chromeMediumColor - } -} diff --git a/src/quickcontrols2/universal/MenuBarItem.qml b/src/quickcontrols2/universal/MenuBarItem.qml deleted file mode 100644 index 786be132..00000000 --- a/src/quickcontrols2/universal/MenuBarItem.qml +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.MenuBarItem { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 12 - topPadding: padding - 1 - bottomPadding: padding + 1 - spacing: 12 - - icon.width: 20 - icon.height: 20 - icon.color: !enabled ? Universal.baseLowColor : Universal.baseHighColor - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor - } - - background: Rectangle { - implicitWidth: 40 - implicitHeight: 40 - - color: !control.enabled ? control.Universal.baseLowColor : - control.down ? control.Universal.listMediumColor : - control.highlighted ? control.Universal.listLowColor : "transparent" - - Rectangle { - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 2 - - visible: control.visualFocus - color: control.Universal.accent - opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 - } - } -} diff --git a/src/quickcontrols2/universal/MenuItem.qml b/src/quickcontrols2/universal/MenuItem.qml deleted file mode 100644 index 8287b0a8..00000000 --- a/src/quickcontrols2/universal/MenuItem.qml +++ /dev/null @@ -1,114 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.MenuItem { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 12 - topPadding: padding - 1 - bottomPadding: padding + 1 - spacing: 12 - - icon.width: 20 - icon.height: 20 - icon.color: !enabled ? Universal.baseLowColor : Universal.baseHighColor - - contentItem: IconLabel { - readonly property real arrowPadding: control.subMenu && control.arrow ? control.arrow.width + control.spacing : 0 - readonly property real indicatorPadding: control.checkable && control.indicator ? control.indicator.width + control.spacing : 0 - leftPadding: !control.mirrored ? indicatorPadding : arrowPadding - rightPadding: control.mirrored ? indicatorPadding : arrowPadding - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor - } - - arrow: ColorImage { - x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 - - visible: control.subMenu - mirror: control.mirrored - color: !enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Universal/images/rightarrow.png" - } - - indicator: ColorImage { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - - visible: control.checked - color: !control.enabled ? control.Universal.baseLowColor : control.down ? control.Universal.baseHighColor : control.Universal.baseMediumHighColor - source: !control.checkable ? "" : "qrc:/qt-project.org/imports/QtQuick/Controls/Universal/images/checkmark.png" - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 40 - - color: !control.enabled ? control.Universal.baseLowColor : - control.down ? control.Universal.listMediumColor : - control.highlighted ? control.Universal.listLowColor : control.Universal.altMediumLowColor - - Rectangle { - x: 1; y: 1 - width: parent.width - 2 - height: parent.height - 2 - - visible: control.visualFocus - color: control.Universal.accent - opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 - } - } -} diff --git a/src/quickcontrols2/universal/MenuSeparator.qml b/src/quickcontrols2/universal/MenuSeparator.qml deleted file mode 100644 index be6fad45..00000000 --- a/src/quickcontrols2/universal/MenuSeparator.qml +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.MenuSeparator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 12 - topPadding: 9 - bottomPadding: 10 - - contentItem: Rectangle { - implicitWidth: 188 - implicitHeight: 1 - color: control.Universal.baseMediumLowColor - } - - background: Rectangle { - color: control.Universal.altMediumLowColor - } -} diff --git a/src/quickcontrols2/universal/Page.qml b/src/quickcontrols2/universal/Page.qml deleted file mode 100644 index 8946e7ad..00000000 --- a/src/quickcontrols2/universal/Page.qml +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.Page { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - background: Rectangle { - color: control.Universal.background - } -} diff --git a/src/quickcontrols2/universal/PageIndicator.qml b/src/quickcontrols2/universal/PageIndicator.qml deleted file mode 100644 index 2adb85c6..00000000 --- a/src/quickcontrols2/universal/PageIndicator.qml +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.PageIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 7 - - delegate: Rectangle { - implicitWidth: 5 - implicitHeight: 5 - - radius: width / 2 - color: index === control.currentIndex ? control.Universal.baseMediumHighColor : - pressed ? control.Universal.baseMediumLowColor : control.Universal.baseLowColor - } - - contentItem: Row { - spacing: control.spacing - - Repeater { - model: control.count - delegate: control.delegate - } - } -} diff --git a/src/quickcontrols2/universal/Pane.qml b/src/quickcontrols2/universal/Pane.qml deleted file mode 100644 index 257f9caf..00000000 --- a/src/quickcontrols2/universal/Pane.qml +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.Pane { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - padding: 12 - - background: Rectangle { - color: control.Universal.background - } -} diff --git a/src/quickcontrols2/universal/Popup.qml b/src/quickcontrols2/universal/Popup.qml deleted file mode 100644 index 5e972ea9..00000000 --- a/src/quickcontrols2/universal/Popup.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.Popup { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - padding: 12 - - background: Rectangle { - color: control.Universal.chromeMediumLowColor - border.color: control.Universal.chromeHighColor - border.width: 1 // FlyoutBorderThemeThickness - } - - T.Overlay.modal: Rectangle { - color: control.Universal.baseLowColor - } - - T.Overlay.modeless: Rectangle { - color: control.Universal.baseLowColor - } -} diff --git a/src/quickcontrols2/universal/ProgressBar.qml b/src/quickcontrols2/universal/ProgressBar.qml deleted file mode 100644 index 4f8cc874..00000000 --- a/src/quickcontrols2/universal/ProgressBar.qml +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal -import QtQuick.Controls.Universal.impl - -T.ProgressBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - contentItem: ProgressBarImpl { - implicitHeight: 10 - - scale: control.mirrored ? -1 : 1 - color: control.Universal.accent - progress: control.position - indeterminate: control.visible && control.indeterminate - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 10 - y: (control.height - height) / 2 - height: 10 - - visible: !control.indeterminate - color: control.Universal.baseLowColor - } -} diff --git a/src/quickcontrols2/universal/README.md b/src/quickcontrols2/universal/README.md deleted file mode 100644 index 8d02d18b..00000000 --- a/src/quickcontrols2/universal/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Universal Style - -This style is based on the [Microsoft Universal Design Guidelines](https://dev.windows.com/design). - -The colors and metrics used all around the QML and C++ files originate from the Windows 10 SDK. The files are called **generic.xaml** and **themeresources.xml**, and they are located in the following folder: - - \(Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\<SDK version>\Generic - -See also [XAML theme resources](https://msdn.microsoft.com/en-us/library/windows/apps/mt187274.aspx). diff --git a/src/quickcontrols2/universal/RadioButton.qml b/src/quickcontrols2/universal/RadioButton.qml deleted file mode 100644 index abd386ce..00000000 --- a/src/quickcontrols2/universal/RadioButton.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal -import QtQuick.Controls.Universal.impl - -T.RadioButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 8 - - property bool useSystemFocusVisuals: true - - indicator: RadioIndicator { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - - opacity: enabled ? 1.0 : 0.2 - color: control.Universal.foreground - } -} diff --git a/src/quickcontrols2/universal/RadioDelegate.qml b/src/quickcontrols2/universal/RadioDelegate.qml deleted file mode 100644 index fda2560d..00000000 --- a/src/quickcontrols2/universal/RadioDelegate.qml +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal -import QtQuick.Controls.Universal.impl - -T.RadioDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 12 - - padding: 12 - topPadding: padding - 1 - bottomPadding: padding + 1 - - icon.width: 20 - icon.height: 20 - icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) - - indicator: RadioIndicator { - x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: IconLabel { - leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing - rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) - } - - background: Rectangle { - visible: control.down || control.highlighted || control.visualFocus || control.hovered - color: control.down ? control.Universal.listMediumColor : - control.hovered ? control.Universal.listLowColor : control.Universal.altMediumLowColor - Rectangle { - width: parent.width - height: parent.height - visible: control.visualFocus || control.highlighted - color: control.Universal.accent - opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 - } - - } -} diff --git a/src/quickcontrols2/universal/RangeSlider.qml b/src/quickcontrols2/universal/RangeSlider.qml deleted file mode 100644 index 5bdc4d8f..00000000 --- a/src/quickcontrols2/universal/RangeSlider.qml +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.RangeSlider { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - first.implicitHandleWidth + leftPadding + rightPadding, - second.implicitHandleWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - first.implicitHandleHeight + topPadding + bottomPadding, - second.implicitHandleHeight + topPadding + bottomPadding) - - padding: 6 - - first.handle: Rectangle { - implicitWidth: control.horizontal ? 8 : 24 - implicitHeight: control.horizontal ? 24 : 8 - - x: control.leftPadding + (control.horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) - - radius: 4 - color: control.first.pressed ? control.Universal.chromeHighColor : - control.first.hovered ? control.Universal.chromeAltLowColor : - control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor - } - - second.handle: Rectangle { - implicitWidth: control.horizontal ? 8 : 24 - implicitHeight: control.horizontal ? 24 : 8 - - x: control.leftPadding + (control.horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) - - radius: 4 - color: control.second.pressed ? control.Universal.chromeHighColor : - control.second.hovered ? control.Universal.chromeAltLowColor : - control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor - } - - background: Item { - implicitWidth: control.horizontal ? 200 : 18 - implicitHeight: control.horizontal ? 18 : 200 - - x: control.leftPadding + (control.horizontal ? 0 : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : 0) - width: control.horizontal ? control.availableWidth : implicitWidth - height: control.horizontal ? implicitHeight : control.availableHeight - - scale: control.horizontal && control.mirrored ? -1 : 1 - - Rectangle { - x: control.horizontal ? 0 : (parent.width - width) / 2 - y: control.horizontal ? (parent.height - height) / 2 : 0 - width: control.horizontal ? parent.width : 2 // SliderBackgroundThemeHeight - height: control.vertical ? parent.height : 2 // SliderBackgroundThemeHeight - - color: control.hovered && !control.pressed ? control.Universal.baseMediumColor : - control.enabled ? control.Universal.baseMediumLowColor : control.Universal.chromeDisabledHighColor - } - - Rectangle { - x: control.horizontal ? control.first.position * parent.width : (parent.width - width) / 2 - y: control.horizontal ? (parent.height - height) / 2 : control.second.visualPosition * parent.height - width: control.horizontal ? control.second.position * parent.width - control.first.position * parent.width : 2 // SliderBackgroundThemeHeight - height: control.vertical ? control.second.position * parent.height - control.first.position * parent.height : 2 // SliderBackgroundThemeHeight - - color: control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor - } - } -} diff --git a/src/quickcontrols2/universal/RoundButton.qml b/src/quickcontrols2/universal/RoundButton.qml deleted file mode 100644 index 156a472c..00000000 --- a/src/quickcontrols2/universal/RoundButton.qml +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.RoundButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 8 - spacing: 8 - - icon.width: 20 - icon.height: 20 - icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) - - property bool useSystemFocusVisuals: true - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) - } - - background: Rectangle { - implicitWidth: 32 - implicitHeight: 32 - - radius: control.radius - visible: !control.flat || control.down || control.checked || control.highlighted - color: control.down ? control.Universal.baseMediumLowColor : - control.enabled && (control.highlighted || control.checked) ? control.Universal.accent : - control.Universal.baseLowColor - - Rectangle { - width: parent.width - height: parent.height - radius: control.radius - color: "transparent" - visible: control.hovered - border.width: 2 // ButtonBorderThemeThickness - border.color: control.Universal.baseMediumLowColor - } - } -} diff --git a/src/quickcontrols2/universal/ScrollBar.qml b/src/quickcontrols2/universal/ScrollBar.qml deleted file mode 100644 index d101658c..00000000 --- a/src/quickcontrols2/universal/ScrollBar.qml +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.ScrollBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - visible: control.policy !== T.ScrollBar.AlwaysOff - minimumSize: orientation == Qt.Horizontal ? height / width : width / height - - // TODO: arrows - - contentItem: Rectangle { - implicitWidth: control.interactive ? 12 : 6 - implicitHeight: control.interactive ? 12: 6 - - color: control.pressed ? control.Universal.baseMediumColor : - control.interactive && control.hovered ? control.Universal.baseMediumLowColor : control.Universal.chromeHighColor - opacity: 0.0 - } - - background: Rectangle { - implicitWidth: control.interactive ? 12 : 6 - implicitHeight: control.interactive ? 12: 6 - - color: control.Universal.chromeLowColor - visible: control.size < 1.0 - opacity: 0.0 - } - - states: [ - State { - name: "active" - when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0) - } - ] - - transitions: [ - Transition { - to: "active" - NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 1.0 } - }, - Transition { - from: "active" - SequentialAnimation { - PropertyAction{ targets: [control.contentItem, control.background]; property: "opacity"; value: 1.0 } - PauseAnimation { duration: 3000 } - NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 0.0 } - } - } - ] -} diff --git a/src/quickcontrols2/universal/ScrollIndicator.qml b/src/quickcontrols2/universal/ScrollIndicator.qml deleted file mode 100644 index f66a9658..00000000 --- a/src/quickcontrols2/universal/ScrollIndicator.qml +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.ScrollIndicator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - contentItem: Rectangle { - implicitWidth: 6 - implicitHeight: 6 - - color: control.Universal.baseMediumLowColor - visible: control.size < 1.0 - opacity: 0.0 - - states: [ - State { - name: "active" - when: control.active - } - ] - - transitions: [ - Transition { - to: "active" - NumberAnimation { target: control.contentItem; property: "opacity"; to: 1.0 } - }, - Transition { - from: "active" - SequentialAnimation { - PauseAnimation { duration: 5000 } - NumberAnimation { target: control.contentItem; property: "opacity"; to: 0.0 } - } - } - ] - } -} diff --git a/src/quickcontrols2/universal/ScrollView.qml b/src/quickcontrols2/universal/ScrollView.qml deleted file mode 100644 index a6bba9de..00000000 --- a/src/quickcontrols2/universal/ScrollView.qml +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ScrollView { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - ScrollBar.vertical: ScrollBar { - parent: control - x: control.mirrored ? 0 : control.width - width - y: control.topPadding - height: control.availableHeight - active: control.ScrollBar.horizontal.active - } - - ScrollBar.horizontal: ScrollBar { - parent: control - x: control.leftPadding - y: control.height - height - width: control.availableWidth - active: control.ScrollBar.vertical.active - } -} diff --git a/src/quickcontrols2/universal/Slider.qml b/src/quickcontrols2/universal/Slider.qml deleted file mode 100644 index 37c77a35..00000000 --- a/src/quickcontrols2/universal/Slider.qml +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.Slider { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitHandleWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitHandleHeight + topPadding + bottomPadding) - - padding: 6 - - property bool useSystemFocusVisuals: true - - handle: Rectangle { - implicitWidth: control.horizontal ? 8 : 24 - implicitHeight: control.horizontal ? 24 : 8 - - x: control.leftPadding + (control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) - - radius: 4 - color: control.pressed ? control.Universal.chromeHighColor : - control.hovered ? control.Universal.chromeAltLowColor : - control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor - } - - background: Item { - implicitWidth: control.horizontal ? 200 : 18 - implicitHeight: control.horizontal ? 18 : 200 - - x: control.leftPadding + (control.horizontal ? 0 : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : 0) - width: control.horizontal ? control.availableWidth : implicitWidth - height: control.horizontal ? implicitHeight : control.availableHeight - - scale: control.horizontal && control.mirrored ? -1 : 1 - - Rectangle { - x: control.horizontal ? 0 : (parent.width - width) / 2 - y: control.horizontal ? (parent.height - height) / 2 : 0 - width: control.horizontal ? parent.width : 2 // SliderTrackThemeHeight - height: !control.horizontal ? parent.height : 2 // SliderTrackThemeHeight - - color: control.hovered && !control.pressed ? control.Universal.baseMediumColor : - control.enabled ? control.Universal.baseMediumLowColor : control.Universal.chromeDisabledHighColor - } - - Rectangle { - x: control.horizontal ? 0 : (parent.width - width) / 2 - y: control.horizontal ? (parent.height - height) / 2 : control.visualPosition * parent.height - width: control.horizontal ? control.position * parent.width : 2 // SliderTrackThemeHeight - height: !control.horizontal ? control.position * parent.height : 2 // SliderTrackThemeHeight - - color: control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor - } - } -} diff --git a/src/quickcontrols2/universal/SpinBox.qml b/src/quickcontrols2/universal/SpinBox.qml deleted file mode 100644 index 10c12589..00000000 --- a/src/quickcontrols2/universal/SpinBox.qml +++ /dev/null @@ -1,147 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.SpinBox { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentItem.implicitWidth + 16 + - up.implicitIndicatorWidth + - down.implicitIndicatorWidth) - implicitHeight: Math.max(implicitContentHeight + topPadding + bottomPadding, - implicitBackgroundHeight, - up.implicitIndicatorHeight, - down.implicitIndicatorHeight) - - // TextControlThemePadding + 2 (border) - padding: 12 - topPadding: padding - 7 - leftPadding: padding + (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) - rightPadding: padding - 4 + (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) - bottomPadding: padding - 5 - - Universal.theme: activeFocus ? Universal.Light : undefined - - validator: IntValidator { - locale: control.locale.name - bottom: Math.min(control.from, control.to) - top: Math.max(control.from, control.to) - } - - contentItem: TextInput { - text: control.displayText - - font: control.font - color: !enabled ? control.Universal.chromeDisabledLowColor : - activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.foreground - selectionColor: control.Universal.accent - selectedTextColor: control.Universal.chromeWhiteColor - horizontalAlignment: Qt.AlignHCenter - verticalAlignment: TextInput.AlignVCenter - - readOnly: !control.editable - validator: control.validator - inputMethodHints: control.inputMethodHints - } - - up.indicator: Item { - implicitWidth: 28 - height: parent.height + 4 - y: -2 - x: control.mirrored ? 0 : parent.width - width - - Rectangle { - x: 2; y: 4 - width: parent.width - 4 - height: parent.height - 8 - color: control.activeFocus ? control.Universal.accent : - control.up.pressed ? control.Universal.baseMediumLowColor : - control.up.hovered ? control.Universal.baseLowColor : "transparent" - visible: control.up.pressed || control.up.hovered - opacity: control.activeFocus && !control.up.pressed ? 0.4 : 1.0 - } - - ColorImage { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - color: !enabled ? control.Universal.chromeDisabledLowColor : - control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Universal/images/" + (control.mirrored ? "left" : "right") + "arrow.png" - } - } - - down.indicator: Item { - implicitWidth: 28 - height: parent.height + 4 - y: -2 - x: control.mirrored ? parent.width - width : 0 - - Rectangle { - x: 2; y: 4 - width: parent.width - 4 - height: parent.height - 8 - color: control.activeFocus ? control.Universal.accent : - control.down.pressed ? control.Universal.baseMediumLowColor : - control.down.hovered ? control.Universal.baseLowColor : "transparent" - visible: control.down.pressed || control.down.hovered - opacity: control.activeFocus && !control.down.pressed ? 0.4 : 1.0 - } - - ColorImage { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - color: !enabled ? control.Universal.chromeDisabledLowColor : - control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Universal/images/" + (control.mirrored ? "right" : "left") + "arrow.png" - } - } - - background: Rectangle { - implicitWidth: 60 + 28 // TextControlThemeMinWidth - 4 (border) - implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) - - border.width: 2 // TextControlBorderThemeThickness - border.color: !control.enabled ? control.Universal.baseLowColor : - control.activeFocus ? control.Universal.accent : - control.hovered ? control.Universal.baseMediumColor : control.Universal.chromeDisabledLowColor - color: control.enabled ? control.Universal.background : control.Universal.baseLowColor - } -} diff --git a/src/quickcontrols2/universal/SplitView.qml b/src/quickcontrols2/universal/SplitView.qml deleted file mode 100644 index 78362cea..00000000 --- a/src/quickcontrols2/universal/SplitView.qml +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.SplitView { - id: control - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - handle: Rectangle { - implicitWidth: control.orientation === Qt.Horizontal ? 6 : control.width - implicitHeight: control.orientation === Qt.Horizontal ? control.height : 6 - color: T.SplitHandle.pressed ? control.Universal.baseMediumColor - : (T.SplitHandle.hovered ? control.Universal.baseMediumLowColor : control.Universal.chromeHighColor) - } -} diff --git a/src/quickcontrols2/universal/StackView.qml b/src/quickcontrols2/universal/StackView.qml deleted file mode 100644 index 41611dd3..00000000 --- a/src/quickcontrols2/universal/StackView.qml +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.StackView { - id: control - - popEnter: Transition { - ParallelAnimation { - NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint } - NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * -control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } - } - } - - popExit: Transition { - NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint } - } - - pushEnter: Transition { - ParallelAnimation { - NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint } - NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } - } - } - - pushExit: Transition { - NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint } - } - - replaceEnter: Transition { - ParallelAnimation { - NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint } - NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } - } - } - - replaceExit: Transition { - NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint } - } -} diff --git a/src/quickcontrols2/universal/SwipeDelegate.qml b/src/quickcontrols2/universal/SwipeDelegate.qml deleted file mode 100644 index e36f8ee0..00000000 --- a/src/quickcontrols2/universal/SwipeDelegate.qml +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.SwipeDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 12 - - padding: 12 - topPadding: padding - 1 - bottomPadding: padding + 1 - - icon.width: 20 - icon.height: 20 - icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) - - swipe.transition: Transition { SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } } - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) - } - - background: Rectangle { - color: control.Universal.background - - Rectangle { - width: parent.width - height: parent.height - color: control.down ? control.Universal.listMediumColor : - control.hovered ? control.Universal.listLowColor : control.Universal.altMediumLowColor - Rectangle { - width: parent.width - height: parent.height - visible: control.visualFocus || control.highlighted - color: control.Universal.accent - opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 - } - } - } -} diff --git a/src/quickcontrols2/universal/Switch.qml b/src/quickcontrols2/universal/Switch.qml deleted file mode 100644 index 33ee4abb..00000000 --- a/src/quickcontrols2/universal/Switch.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal -import QtQuick.Controls.Universal.impl - -T.Switch { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 5 - spacing: 8 - - property bool useSystemFocusVisuals: true - - indicator: SwitchIndicator { - x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: Text { - leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 - rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 - - text: control.text - font: control.font - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - - opacity: enabled ? 1.0 : 0.2 - color: control.Universal.foreground - } -} diff --git a/src/quickcontrols2/universal/SwitchDelegate.qml b/src/quickcontrols2/universal/SwitchDelegate.qml deleted file mode 100644 index 41ea2ce0..00000000 --- a/src/quickcontrols2/universal/SwitchDelegate.qml +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal -import QtQuick.Controls.Universal.impl - -T.SwitchDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 12 - - padding: 12 - topPadding: padding - 1 - bottomPadding: padding + 1 - - icon.width: 20 - icon.height: 20 - icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) - - indicator: SwitchIndicator { - x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 - y: control.topPadding + (control.availableHeight - height) / 2 - control: control - } - - contentItem: IconLabel { - leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing - rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing - - spacing: control.spacing - mirrored: control.mirrored - display: control.display - alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft - - icon: control.icon - text: control.text - font: control.font - color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) - } - - background: Rectangle { - visible: control.down || control.highlighted || control.visualFocus || control.hovered - color: control.down ? control.Universal.listMediumColor : - control.hovered ? control.Universal.listLowColor : control.Universal.altMediumLowColor - Rectangle { - width: parent.width - height: parent.height - visible: control.visualFocus || control.highlighted - color: control.Universal.accent - opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 - } - - } -} diff --git a/src/quickcontrols2/universal/TabBar.qml b/src/quickcontrols2/universal/TabBar.qml deleted file mode 100644 index 9b98c10e..00000000 --- a/src/quickcontrols2/universal/TabBar.qml +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.TabBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - contentItem: ListView { - model: control.contentModel - currentIndex: control.currentIndex - - spacing: control.spacing - orientation: ListView.Horizontal - boundsBehavior: Flickable.StopAtBounds - flickableDirection: Flickable.AutoFlickIfNeeded - snapMode: ListView.SnapToItem - - highlightMoveDuration: 100 - highlightRangeMode: ListView.ApplyRange - preferredHighlightBegin: 48 - preferredHighlightEnd: width - 48 - } - - background: Rectangle { - implicitWidth: 200 - implicitHeight: 48 - color: control.Universal.background - } -} diff --git a/src/quickcontrols2/universal/TabButton.qml b/src/quickcontrols2/universal/TabButton.qml deleted file mode 100644 index 3709bdda..00000000 --- a/src/quickcontrols2/universal/TabButton.qml +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.TabButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 12 // PivotItemMargin - spacing: 8 - - icon.width: 20 - icon.height: 20 - icon.color: Color.transparent(control.hovered ? control.Universal.baseMediumHighColor : control.Universal.foreground, - control.checked || control.down || control.hovered ? 1.0 : 0.2) - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: Color.transparent(control.hovered ? control.Universal.baseMediumHighColor : control.Universal.foreground, - control.checked || control.down || control.hovered ? 1.0 : 0.2) - } -} diff --git a/src/quickcontrols2/universal/TextArea.qml b/src/quickcontrols2/universal/TextArea.qml deleted file mode 100644 index 6fa0066b..00000000 --- a/src/quickcontrols2/universal/TextArea.qml +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.TextArea { - id: control - - implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, - implicitBackgroundWidth + leftInset + rightInset, - placeholder.implicitWidth + leftPadding + rightPadding) - implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, - implicitBackgroundHeight + topInset + bottomInset, - placeholder.implicitHeight + topPadding + bottomPadding) - - // TextControlThemePadding + 2 (border) - padding: 12 - topPadding: padding - 7 - rightPadding: padding - 4 - bottomPadding: padding - 5 - - Universal.theme: activeFocus ? Universal.Light : undefined - - color: !enabled ? Universal.chromeDisabledLowColor : Universal.foreground - selectionColor: Universal.accent - selectedTextColor: Universal.chromeWhiteColor - placeholderTextColor: !enabled ? Universal.chromeDisabledLowColor : - activeFocus ? Universal.chromeBlackMediumLowColor : - Universal.baseMediumColor - - PlaceholderText { - id: placeholder - x: control.leftPadding - y: control.topPadding - width: control.width - (control.leftPadding + control.rightPadding) - height: control.height - (control.topPadding + control.bottomPadding) - - text: control.placeholderText - font: control.font - color: control.placeholderTextColor - visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) - verticalAlignment: control.verticalAlignment - elide: Text.ElideRight - renderType: control.renderType - } - - background: Rectangle { - implicitWidth: 60 // TextControlThemeMinWidth - 4 (border) - implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) - - border.width: 2 // TextControlBorderThemeThickness - border.color: !control.enabled ? control.Universal.baseLowColor : - control.activeFocus ? control.Universal.accent : - control.hovered ? control.Universal.baseMediumColor : control.Universal.chromeDisabledLowColor - color: control.enabled ? control.Universal.background : control.Universal.baseLowColor - } -} diff --git a/src/quickcontrols2/universal/TextField.qml b/src/quickcontrols2/universal/TextField.qml deleted file mode 100644 index 903f6728..00000000 --- a/src/quickcontrols2/universal/TextField.qml +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.TextField { - id: control - - implicitWidth: implicitBackgroundWidth + leftInset + rightInset - || Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding, - placeholder.implicitHeight + topPadding + bottomPadding) - - // TextControlThemePadding + 2 (border) - padding: 12 - topPadding: padding - 7 - rightPadding: padding - 4 - bottomPadding: padding - 5 - - Universal.theme: activeFocus ? Universal.Light : undefined - - color: !enabled ? Universal.chromeDisabledLowColor : Universal.foreground - selectionColor: Universal.accent - selectedTextColor: Universal.chromeWhiteColor - placeholderTextColor: !enabled ? Universal.chromeDisabledLowColor : - activeFocus ? Universal.chromeBlackMediumLowColor : - Universal.baseMediumColor - verticalAlignment: TextInput.AlignVCenter - - PlaceholderText { - id: placeholder - x: control.leftPadding - y: control.topPadding - width: control.width - (control.leftPadding + control.rightPadding) - height: control.height - (control.topPadding + control.bottomPadding) - - text: control.placeholderText - font: control.font - color: control.placeholderTextColor - visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) - verticalAlignment: control.verticalAlignment - elide: Text.ElideRight - renderType: control.renderType - } - - background: Rectangle { - implicitWidth: 60 // TextControlThemeMinWidth - 4 (border) - implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) - - border.width: 2 // TextControlBorderThemeThickness - border.color: !control.enabled ? control.Universal.baseLowColor : - control.activeFocus ? control.Universal.accent : - control.hovered ? control.Universal.baseMediumColor : control.Universal.chromeDisabledLowColor - color: control.enabled ? control.Universal.background : control.Universal.baseLowColor - } -} diff --git a/src/quickcontrols2/universal/ToolBar.qml b/src/quickcontrols2/universal/ToolBar.qml deleted file mode 100644 index 0266056f..00000000 --- a/src/quickcontrols2/universal/ToolBar.qml +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.ToolBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - background: Rectangle { - implicitHeight: 48 // AppBarThemeCompactHeight - color: control.Universal.chromeMediumColor - } -} diff --git a/src/quickcontrols2/universal/ToolButton.qml b/src/quickcontrols2/universal/ToolButton.qml deleted file mode 100644 index c305342d..00000000 --- a/src/quickcontrols2/universal/ToolButton.qml +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -T.ToolButton { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 8 - - icon.width: 20 - icon.height: 20 - icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) - - property bool useSystemFocusVisuals: true - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) - } - - background: Rectangle { - implicitWidth: 68 - implicitHeight: 48 // AppBarThemeCompactHeight - - color: control.enabled && (control.highlighted || control.checked) ? control.Universal.accent : "transparent" - - Rectangle { - width: parent.width - height: parent.height - visible: control.down || control.hovered - color: control.down ? control.Universal.listMediumColor : control.Universal.listLowColor - } - } -} diff --git a/src/quickcontrols2/universal/ToolSeparator.qml b/src/quickcontrols2/universal/ToolSeparator.qml deleted file mode 100644 index cd9be32d..00000000 --- a/src/quickcontrols2/universal/ToolSeparator.qml +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.ToolSeparator { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - leftPadding: vertical ? 16 : 12 - rightPadding: vertical ? 15 : 12 - topPadding: vertical ? 12 : 16 - bottomPadding: vertical ? 12 : 15 - - contentItem: Rectangle { - implicitWidth: vertical ? 1 : 20 - implicitHeight: vertical ? 20 : 1 - color: control.Universal.baseMediumLowColor - } -} diff --git a/src/quickcontrols2/universal/ToolTip.qml b/src/quickcontrols2/universal/ToolTip.qml deleted file mode 100644 index bf931a4c..00000000 --- a/src/quickcontrols2/universal/ToolTip.qml +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -T.ToolTip { - id: control - - x: parent ? (parent.width - implicitWidth) / 2 : 0 - y: -implicitHeight - 16 - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - margins: 8 - padding: 8 - topPadding: padding - 3 - bottomPadding: padding - 1 - - closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent - - contentItem: Text { - text: control.text - font: control.font - wrapMode: Text.Wrap - opacity: enabled ? 1.0 : 0.2 - color: control.Universal.foreground - } - - background: Rectangle { - color: control.Universal.chromeMediumLowColor - border.color: control.Universal.chromeHighColor - border.width: 1 // ToolTipBorderThemeThickness - } -} diff --git a/src/quickcontrols2/universal/Tumbler.qml b/src/quickcontrols2/universal/Tumbler.qml deleted file mode 100644 index 5b9f5725..00000000 --- a/src/quickcontrols2/universal/Tumbler.qml +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal -import QtQuick.Controls.impl - -T.Tumbler { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - delegate: Text { - text: modelData - font: control.font - color: control.Universal.foreground - opacity: (1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - - contentItem: TumblerView { - implicitWidth: 60 - implicitHeight: 200 - model: control.model - delegate: control.delegate - path: Path { - startX: control.contentItem.width / 2 - startY: -control.contentItem.delegateHeight / 2 - PathLine { - x: control.contentItem.width / 2 - y: (control.visibleItemCount + 1) * control.contentItem.delegateHeight - control.contentItem.delegateHeight / 2 - } - } - - property real delegateHeight: control.availableHeight / control.visibleItemCount - } -} diff --git a/src/quickcontrols2/universal/VerticalHeaderView.qml b/src/quickcontrols2/universal/VerticalHeaderView.qml deleted file mode 100644 index 7dc1efd3..00000000 --- a/src/quickcontrols2/universal/VerticalHeaderView.qml +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T -import QtQuick.Controls.Universal -import QtQuick.Controls.Universal.impl - -T.VerticalHeaderView { - id: control - - implicitWidth: contentWidth - implicitHeight: syncView ? syncView.height : 0 - - delegate: Rectangle { - // Qt6: add cellPadding (and font etc) as public API in headerview - readonly property real cellPadding: 8 - - implicitWidth: Math.max(control.width, text.implicitWidth + (cellPadding * 2)) - implicitHeight: text.implicitHeight + (cellPadding * 2) - color: control.Universal.background - - Text { - id: text - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] - : model[control.textRole]) - : modelData - width: parent.width - height: parent.height - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) - } - } -} diff --git a/src/quickcontrols2/universal/images/checkmark.png b/src/quickcontrols2/universal/images/checkmark.png Binary files differdeleted file mode 100644 index e2aae6fe..00000000 --- a/src/quickcontrols2/universal/images/checkmark.png +++ /dev/null diff --git a/src/quickcontrols2/universal/images/[email protected] b/src/quickcontrols2/universal/images/[email protected] Binary files differdeleted file mode 100644 index 0df4159a..00000000 --- a/src/quickcontrols2/universal/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/universal/images/[email protected] b/src/quickcontrols2/universal/images/[email protected] Binary files differdeleted file mode 100644 index 43466cbc..00000000 --- a/src/quickcontrols2/universal/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/universal/images/[email protected] b/src/quickcontrols2/universal/images/[email protected] Binary files differdeleted file mode 100644 index 7a47bd21..00000000 --- a/src/quickcontrols2/universal/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/universal/images/downarrow.png b/src/quickcontrols2/universal/images/downarrow.png Binary files differdeleted file mode 100644 index b66e2efc..00000000 --- a/src/quickcontrols2/universal/images/downarrow.png +++ /dev/null diff --git a/src/quickcontrols2/universal/images/[email protected] b/src/quickcontrols2/universal/images/[email protected] Binary files differdeleted file mode 100644 index a704376c..00000000 --- a/src/quickcontrols2/universal/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/universal/images/[email protected] b/src/quickcontrols2/universal/images/[email protected] Binary files differdeleted file mode 100644 index 3b6d55ab..00000000 --- a/src/quickcontrols2/universal/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/universal/images/[email protected] b/src/quickcontrols2/universal/images/[email protected] Binary files differdeleted file mode 100644 index 818c6b24..00000000 --- a/src/quickcontrols2/universal/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/universal/images/leftarrow.png b/src/quickcontrols2/universal/images/leftarrow.png Binary files differdeleted file mode 100644 index 0153ccd4..00000000 --- a/src/quickcontrols2/universal/images/leftarrow.png +++ /dev/null diff --git a/src/quickcontrols2/universal/images/[email protected] b/src/quickcontrols2/universal/images/[email protected] Binary files differdeleted file mode 100644 index fa692d5b..00000000 --- a/src/quickcontrols2/universal/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/universal/images/[email protected] b/src/quickcontrols2/universal/images/[email protected] Binary files differdeleted file mode 100644 index 06b0207a..00000000 --- a/src/quickcontrols2/universal/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/universal/images/[email protected] b/src/quickcontrols2/universal/images/[email protected] Binary files differdeleted file mode 100644 index 1049f616..00000000 --- a/src/quickcontrols2/universal/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/universal/images/rightarrow.png b/src/quickcontrols2/universal/images/rightarrow.png Binary files differdeleted file mode 100644 index b24d117d..00000000 --- a/src/quickcontrols2/universal/images/rightarrow.png +++ /dev/null diff --git a/src/quickcontrols2/universal/images/[email protected] b/src/quickcontrols2/universal/images/[email protected] Binary files differdeleted file mode 100644 index 80aca7c1..00000000 --- a/src/quickcontrols2/universal/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/universal/images/[email protected] b/src/quickcontrols2/universal/images/[email protected] Binary files differdeleted file mode 100644 index ba017240..00000000 --- a/src/quickcontrols2/universal/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/universal/images/[email protected] b/src/quickcontrols2/universal/images/[email protected] Binary files differdeleted file mode 100644 index 21f7ed4d..00000000 --- a/src/quickcontrols2/universal/images/[email protected] +++ /dev/null diff --git a/src/quickcontrols2/universal/impl/CMakeLists.txt b/src/quickcontrols2/universal/impl/CMakeLists.txt deleted file mode 100644 index 796806a5..00000000 --- a/src/quickcontrols2/universal/impl/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -##################################################################### -## qtquickcontrols2universalstyleimplplugin Plugin: -##################################################################### - -set(qml_files - "CheckIndicator.qml" - "RadioIndicator.qml" - "SwitchIndicator.qml" -) -set_source_files_properties(${qml_files} PROPERTIES - QT_QML_SOURCE_VERSION "2.0" -) - -qt_internal_add_qml_module(qtquickcontrols2universalstyleimplplugin - URI "QtQuick.Controls.Universal.impl" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2UniversalStyleImplPlugin - PLUGIN_TARGET qtquickcontrols2universalstyleimplplugin - NO_PLUGIN_OPTIONAL - SOURCES - qquickuniversalbusyindicator.cpp qquickuniversalbusyindicator_p.h - qquickuniversalfocusrectangle.cpp qquickuniversalfocusrectangle_p.h - qquickuniversalprogressbar.cpp qquickuniversalprogressbar_p.h - QML_FILES - ${qml_files} - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::Gui - Qt::QmlPrivate - Qt::QuickControls2ImplPrivate - Qt::QuickPrivate - Qt::QuickTemplates2Private -) diff --git a/src/quickcontrols2/universal/impl/CheckIndicator.qml b/src/quickcontrols2/universal/impl/CheckIndicator.qml deleted file mode 100644 index e4cd5409..00000000 --- a/src/quickcontrols2/universal/impl/CheckIndicator.qml +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.impl -import QtQuick.Controls.Universal - -Rectangle { - id: indicator - implicitWidth: 20 - implicitHeight: 20 - - color: !control.enabled ? "transparent" : - control.down && !partiallyChecked ? control.Universal.baseMediumColor : - control.checkState === Qt.Checked ? control.Universal.accent : "transparent" - border.color: !control.enabled ? control.Universal.baseLowColor : - control.down ? control.Universal.baseMediumColor : - control.checked ? control.Universal.accent : control.Universal.baseMediumHighColor - border.width: 2 // CheckBoxBorderThemeThickness - - property Item control - readonly property bool partiallyChecked: control.checkState === Qt.PartiallyChecked - - ColorImage { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - - visible: indicator.control.checkState === Qt.Checked - color: !indicator.control.enabled ? indicator.control.Universal.baseLowColor : indicator.control.Universal.chromeWhiteColor - source: "qrc:/qt-project.org/imports/QtQuick/Controls/Universal/images/checkmark.png" - } - - Rectangle { - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: indicator.partiallyChecked ? parent.width / 2 : parent.width - height: indicator.partiallyChecked ? parent.height / 2 : parent.height - - visible: !indicator.control.pressed && indicator.control.hovered || indicator.partiallyChecked - color: !indicator.partiallyChecked ? "transparent" : - !indicator.control.enabled ? indicator.control.Universal.baseLowColor : - indicator.control.down ? indicator.control.Universal.baseMediumColor : - indicator.control.hovered ? indicator.control.Universal.baseHighColor : indicator.control.Universal.baseMediumHighColor - border.width: indicator.partiallyChecked ? 0 : 2 // CheckBoxBorderThemeThickness - border.color: indicator.control.Universal.baseMediumLowColor - } -} diff --git a/src/quickcontrols2/universal/impl/RadioIndicator.qml b/src/quickcontrols2/universal/impl/RadioIndicator.qml deleted file mode 100644 index 3cf1bf37..00000000 --- a/src/quickcontrols2/universal/impl/RadioIndicator.qml +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.Universal - -Rectangle { - id: indicator - implicitWidth: 20 - implicitHeight: 20 - radius: width / 2 - color: "transparent" - border.width: 2 // RadioButtonBorderThemeThickness - border.color: control.checked ? "transparent" : - !control.enabled ? control.Universal.baseLowColor : - control.down ? control.Universal.baseMediumColor : - control.hovered ? control.Universal.baseHighColor : control.Universal.baseMediumHighColor - - property var control - - Rectangle { - id: checkOuterEllipse - width: parent.width - height: parent.height - - radius: width / 2 - opacity: indicator.control.checked ? 1 : 0 - color: "transparent" - border.width: 2 // RadioButtonBorderThemeThickness - border.color: !indicator.control.enabled ? indicator.control.Universal.baseLowColor : - indicator.control.down ? indicator.control.Universal.baseMediumColor : indicator.control.Universal.accent - } - - Rectangle { - id: checkGlyph - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: parent.width / 2 - height: parent.height / 2 - - radius: width / 2 - opacity: indicator.control.checked ? 1 : 0 - color: !indicator.control.enabled ? indicator.control.Universal.baseLowColor : - indicator.control.down ? indicator.control.Universal.baseMediumColor : - indicator.control.hovered ? indicator.control.Universal.baseHighColor : indicator.control.Universal.baseMediumHighColor - } -} diff --git a/src/quickcontrols2/universal/impl/SwitchIndicator.qml b/src/quickcontrols2/universal/impl/SwitchIndicator.qml deleted file mode 100644 index aa455419..00000000 --- a/src/quickcontrols2/universal/impl/SwitchIndicator.qml +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Universal - -Item { - id: indicator - implicitWidth: 44 - implicitHeight: 20 - - Rectangle { - width: parent.width - height: parent.height - - radius: 10 - color: !indicator.control.enabled ? "transparent" : - indicator.control.pressed ? indicator.control.Universal.baseMediumColor : - indicator.control.checked ? indicator.control.Universal.accent : "transparent" - border.color: !indicator.control.enabled ? indicator.control.Universal.baseLowColor : - indicator.control.checked && !indicator.control.pressed ? indicator.control.Universal.accent : - indicator.control.hovered && !indicator.control.checked && !indicator.control.pressed ? indicator.control.Universal.baseHighColor : indicator.control.Universal.baseMediumColor - opacity: indicator.control.hovered && indicator.control.checked && !indicator.control.pressed ? (indicator.control.Universal.theme === Universal.Light ? 0.7 : 0.9) : 1.0 - border.width: 2 - } - - property Item control - - Rectangle { - width: 10 - height: 10 - radius: 5 - - color: !indicator.control.enabled ? indicator.control.Universal.baseLowColor : - indicator.control.pressed || indicator.control.checked ? indicator.control.Universal.chromeWhiteColor : - indicator.control.hovered && !indicator.control.checked ? indicator.control.Universal.baseHighColor : indicator.control.Universal.baseMediumHighColor - - x: Math.max(5, Math.min(parent.width - width - 5, - indicator.control.visualPosition * parent.width - (width / 2))) - y: (parent.height - height) / 2 - - Behavior on x { - enabled: !indicator.control.pressed - SmoothedAnimation { velocity: 200 } - } - } -} diff --git a/src/quickcontrols2/universal/impl/qquickuniversalbusyindicator.cpp b/src/quickcontrols2/universal/impl/qquickuniversalbusyindicator.cpp deleted file mode 100644 index 2f0ada49..00000000 --- a/src/quickcontrols2/universal/impl/qquickuniversalbusyindicator.cpp +++ /dev/null @@ -1,251 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickuniversalbusyindicator_p.h" - -#include <QtCore/qmath.h> -#include <QtCore/qeasingcurve.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qsgadaptationlayer_p.h> -#include <QtQuickControls2Impl/private/qquickanimatednode_p.h> - -QT_BEGIN_NAMESPACE - -static const int PhaseCount = 6; -static const int Interval = 167; -static const int TotalDuration = 4052; - -class QQuickUniversalBusyIndicatorNode : public QQuickAnimatedNode -{ -public: - QQuickUniversalBusyIndicatorNode(QQuickUniversalBusyIndicator *item); - - void updateCurrentTime(int time) override; - void sync(QQuickItem *item) override; - -private: - struct Phase { - Phase() = default; - Phase(int d, qreal f, qreal t, QEasingCurve::Type c) : duration(d), from(f), to(t), curve(c) { } - int duration = 0; - qreal from = 0; - qreal to = 0; - QEasingCurve curve = QEasingCurve::Linear; - }; - - Phase m_phases[PhaseCount]; -}; - -QQuickUniversalBusyIndicatorNode::QQuickUniversalBusyIndicatorNode(QQuickUniversalBusyIndicator *item) - : QQuickAnimatedNode(item) -{ - setLoopCount(Infinite); - setDuration(TotalDuration); - setCurrentTime(item->elapsed()); - - m_phases[0] = Phase(433, -110, 10, QEasingCurve::BezierSpline); - m_phases[1] = Phase(767, 10, 93, QEasingCurve::Linear ); - m_phases[2] = Phase(417, 93, 205, QEasingCurve::BezierSpline); - m_phases[3] = Phase(400, 205, 357, QEasingCurve::BezierSpline); - m_phases[4] = Phase(766, 357, 439, QEasingCurve::Linear ); - m_phases[5] = Phase(434, 439, 585, QEasingCurve::BezierSpline); - - m_phases[0].curve.addCubicBezierSegment(QPointF(0.02, 0.33), QPointF(0.38, 0.77), QPointF(1.00, 1.00)); - m_phases[2].curve.addCubicBezierSegment(QPointF(0.57, 0.17), QPointF(0.95, 0.75), QPointF(1.00, 1.00)); - m_phases[3].curve.addCubicBezierSegment(QPointF(0.00, 0.19), QPointF(0.07, 0.72), QPointF(1.00, 1.00)); - m_phases[5].curve.addCubicBezierSegment(QPointF(0.00, 0.00), QPointF(0.95, 0.37), QPointF(1.00, 1.00)); -} - -void QQuickUniversalBusyIndicatorNode::updateCurrentTime(int time) -{ - int nodeIndex = 0; - int count = childCount(); - QSGTransformNode *transformNode = static_cast<QSGTransformNode *>(firstChild()); - while (transformNode) { - Q_ASSERT(transformNode->type() == QSGNode::TransformNodeType); - - QSGOpacityNode *opacityNode = static_cast<QSGOpacityNode *>(transformNode->firstChild()); - Q_ASSERT(opacityNode->type() == QSGNode::OpacityNodeType); - - int begin = nodeIndex * Interval; - int end = TotalDuration - (PhaseCount - nodeIndex - 1) * Interval; - - bool visible = time >= begin && time <= end; - opacityNode->setOpacity(visible ? 1.0 : 0.0); - - if (visible) { - int phaseIndex, remain = time, elapsed = 0; - for (phaseIndex = 0; phaseIndex < PhaseCount - 1; ++phaseIndex) { - if (remain <= m_phases[phaseIndex].duration + begin) - break; - remain -= m_phases[phaseIndex].duration; - elapsed += m_phases[phaseIndex].duration; - } - - const Phase &phase = m_phases[phaseIndex]; - - qreal from = phase.from - nodeIndex * count; - qreal to = phase.to - nodeIndex * count; - qreal pos = time - elapsed - begin; - - qreal value = phase.curve.valueForProgress(pos / phase.duration); - qreal rotation = from + (to - from) * value; - - QMatrix4x4 matrix; - matrix.rotate(rotation, 0, 0, 1); - transformNode->setMatrix(matrix); - } - - transformNode = static_cast<QSGTransformNode *>(transformNode->nextSibling()); - ++nodeIndex; - } -} - -void QQuickUniversalBusyIndicatorNode::sync(QQuickItem *item) -{ - QQuickUniversalBusyIndicator *indicator = static_cast<QQuickUniversalBusyIndicator *>(item); - QQuickItemPrivate *d = QQuickItemPrivate::get(item); - - QMatrix4x4 matrix; - matrix.translate(item->width() / 2, item->height() / 2); - setMatrix(matrix); - - qreal size = qMin(item->width(), item->height()); - qreal diameter = size / 10.0; - qreal radius = diameter / 2; - qreal offset = (size - diameter * 2) / M_PI; - const QRectF rect(offset, offset, diameter, diameter); - - int count = indicator->count(); - QSGNode *transformNode = firstChild(); - for (int i = 0; i < count; ++i) { - if (!transformNode) { - transformNode = new QSGTransformNode; - appendChildNode(transformNode); - - QSGOpacityNode *opacityNode = new QSGOpacityNode; - transformNode->appendChildNode(opacityNode); - - QSGInternalRectangleNode *rectNode = d->sceneGraphContext()->createInternalRectangleNode(); - rectNode->setAntialiasing(true); - opacityNode->appendChildNode(rectNode); - } - - QSGNode *opacityNode = transformNode->firstChild(); - Q_ASSERT(opacityNode->type() == QSGNode::OpacityNodeType); - - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(opacityNode->firstChild()); - Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); - - rectNode->setRect(rect); - rectNode->setColor(indicator->color()); - rectNode->setRadius(radius); - rectNode->update(); - - transformNode = transformNode->nextSibling(); - } - - while (transformNode) { - QSGNode *nextSibling = transformNode->nextSibling(); - delete transformNode; - transformNode = nextSibling; - } -} - -QQuickUniversalBusyIndicator::QQuickUniversalBusyIndicator(QQuickItem *parent) - : QQuickItem(parent) -{ - setFlag(ItemHasContents); -} - -int QQuickUniversalBusyIndicator::count() const -{ - return m_count; -} - -void QQuickUniversalBusyIndicator::setCount(int count) -{ - if (m_count == count) - return; - - m_count = count; - update(); -} - -QColor QQuickUniversalBusyIndicator::color() const -{ - return m_color; -} - -void QQuickUniversalBusyIndicator::setColor(const QColor &color) -{ - if (m_color == color) - return; - - m_color = color; - update(); -} - -int QQuickUniversalBusyIndicator::elapsed() const -{ - return m_elapsed; -} - -void QQuickUniversalBusyIndicator::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - QQuickItem::itemChange(change, data); - if (change == ItemVisibleHasChanged) - update(); -} - -QSGNode *QQuickUniversalBusyIndicator::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) -{ - QQuickUniversalBusyIndicatorNode *node = static_cast<QQuickUniversalBusyIndicatorNode *>(oldNode); - if (isVisible() && width() > 0 && height() > 0) { - if (!node) { - node = new QQuickUniversalBusyIndicatorNode(this); - node->start(); - } - node->sync(this); - } else { - m_elapsed = node ? node->currentTime() : 0; - delete node; - node = nullptr; - } - return node; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/universal/impl/qquickuniversalbusyindicator_p.h b/src/quickcontrols2/universal/impl/qquickuniversalbusyindicator_p.h deleted file mode 100644 index 6d3ebb84..00000000 --- a/src/quickcontrols2/universal/impl/qquickuniversalbusyindicator_p.h +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKUNIVERSALBUSYINDICATOR_P_H -#define QQUICKUNIVERSALBUSYINDICATOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qcolor.h> -#include <QtQuick/qquickitem.h> - -QT_BEGIN_NAMESPACE - -class QQuickUniversalBusyIndicator : public QQuickItem -{ - Q_OBJECT - Q_PROPERTY(int count READ count WRITE setCount FINAL) - Q_PROPERTY(QColor color READ color WRITE setColor FINAL) - QML_NAMED_ELEMENT(BusyIndicatorImpl) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickUniversalBusyIndicator(QQuickItem *parent = nullptr); - - int count() const; - void setCount(int count); - - QColor color() const; - void setColor(const QColor &color); - - int elapsed() const; - -protected: - void itemChange(ItemChange change, const ItemChangeData &data) override; - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override; - -private: - int m_count = 5; - int m_elapsed = 0; - QColor m_color = Qt::black; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickUniversalBusyIndicator) - -#endif // QQUICKUNIVERSALBUSYINDICATOR_P_H diff --git a/src/quickcontrols2/universal/impl/qquickuniversalfocusrectangle.cpp b/src/quickcontrols2/universal/impl/qquickuniversalfocusrectangle.cpp deleted file mode 100644 index 51508c6f..00000000 --- a/src/quickcontrols2/universal/impl/qquickuniversalfocusrectangle.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickuniversalfocusrectangle_p.h" - -#include <QtGui/qpixmap.h> -#include <QtGui/qpainter.h> -#include <QtGui/qpixmapcache.h> -#include <QtQuick/private/qquickitem_p.h> - -QT_BEGIN_NAMESPACE - -QQuickUniversalFocusRectangle::QQuickUniversalFocusRectangle(QQuickItem *parent) - : QQuickPaintedItem(parent) -{ - QQuickItemPrivate::get(this)->setTransparentForPositioner(true); -} - -void QQuickUniversalFocusRectangle::paint(QPainter *painter) -{ - if (!isVisible() || width() <= 0 || height() <= 0) - return; - - QRect bounds = boundingRect().toAlignedRect(); - const int boundsWidth = bounds.width(); - const int boundsHeight = bounds.width(); - const QString key = QStringLiteral("qquickuniversalfocusrectangle_%1_%2").arg(QString::number(boundsWidth), QString::number(boundsHeight)); - - QPixmap pixmap(boundsWidth, boundsHeight); - if (!QPixmapCache::find(key, &pixmap)) { - bounds.adjust(0, 0, -1, -1); - pixmap.fill(Qt::transparent); - QPainter p(&pixmap); - - QPen pen; - pen.setWidth(1); - pen.setColor(Qt::white); - p.setPen(pen); - p.drawRect(bounds); - - pen.setColor(Qt::black); - pen.setDashPattern(QList<qreal>(2, 1)); - p.setPen(pen); - p.drawRect(bounds); - - QPixmapCache::insert(key, pixmap); - } - painter->drawPixmap(0, 0, pixmap); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/universal/impl/qquickuniversalfocusrectangle_p.h b/src/quickcontrols2/universal/impl/qquickuniversalfocusrectangle_p.h deleted file mode 100644 index f309b512..00000000 --- a/src/quickcontrols2/universal/impl/qquickuniversalfocusrectangle_p.h +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKUNIVERSALFOCUSRECTANGLE_P_H -#define QQUICKUNIVERSALFOCUSRECTANGLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/qquickpainteditem.h> - -QT_BEGIN_NAMESPACE - -class QQuickUniversalFocusRectangle : public QQuickPaintedItem -{ - Q_OBJECT - QML_NAMED_ELEMENT(FocusRectangle) - QML_ADDED_IN_VERSION(2, 0) - -public: - QQuickUniversalFocusRectangle(QQuickItem *parent = nullptr); - - void paint(QPainter *painter) override; -}; - -QT_END_NAMESPACE - -#endif // QQUICKUNIVERSALFOCUSRECTANGLE_P_H diff --git a/src/quickcontrols2/universal/impl/qquickuniversalprogressbar.cpp b/src/quickcontrols2/universal/impl/qquickuniversalprogressbar.cpp deleted file mode 100644 index 8f907b75..00000000 --- a/src/quickcontrols2/universal/impl/qquickuniversalprogressbar.cpp +++ /dev/null @@ -1,338 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickuniversalprogressbar_p.h" - -#include <QtCore/qmath.h> -#include <QtCore/qeasingcurve.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qsgadaptationlayer_p.h> -#include <QtQuick/qsgrectanglenode.h> -#include <QtQuickControls2Impl/private/qquickanimatednode_p.h> - -QT_BEGIN_NAMESPACE - -static const int PhaseCount = 4; -static const int EllipseCount = 5; -static const int Interval = 167; -static const int TotalDuration = 3917; -static const int VisibleDuration = 3000; -static const qreal EllipseDiameter = 4; -static const qreal EllipseOffset = 4; -static const qreal ContainerAnimationStartPosition = -34; // absolute -static const qreal ContainerAnimationEndPosition = 0.435222; // relative -static const qreal EllipseAnimationWellPosition = 0.333333333333333; // relative -static const qreal EllipseAnimationEndPosition = 0.666666666666667; // relative - -class QQuickUniversalProgressBarNode : public QQuickAnimatedNode -{ -public: - QQuickUniversalProgressBarNode(QQuickUniversalProgressBar *item); - - void updateCurrentTime(int time) override; - void sync(QQuickItem *item) override; - -private: - struct Phase { - Phase() = default; - Phase(int d, qreal f, qreal t) : duration(d), from(f), to(t) { } - int duration = 0; - qreal from = 0; - qreal to = 0; - }; - - bool m_indeterminate = false; - Phase m_borderPhases[PhaseCount]; - Phase m_ellipsePhases[PhaseCount]; -}; - -QQuickUniversalProgressBarNode::QQuickUniversalProgressBarNode(QQuickUniversalProgressBar *item) - : QQuickAnimatedNode(item) -{ - setLoopCount(Infinite); - setDuration(TotalDuration); - - m_borderPhases[0] = Phase( 500, -50, 0); - m_borderPhases[1] = Phase(1500, 0, 0); - m_borderPhases[2] = Phase(1000, 0, 100); - m_borderPhases[3] = Phase( 917, 100, 100); - - m_ellipsePhases[0] = Phase(1000, 0, EllipseAnimationWellPosition); - m_ellipsePhases[1] = Phase(1000, EllipseAnimationWellPosition, EllipseAnimationWellPosition); - m_ellipsePhases[2] = Phase(1000, EllipseAnimationWellPosition, EllipseAnimationEndPosition); - m_ellipsePhases[3] = Phase(1000, EllipseAnimationWellPosition, EllipseAnimationEndPosition); -} - -void QQuickUniversalProgressBarNode::updateCurrentTime(int time) -{ - QSGRectangleNode *geometryNode = static_cast<QSGRectangleNode *>(firstChild()); - Q_ASSERT(!geometryNode || geometryNode->type() == QSGNode::GeometryNodeType); - if (!geometryNode) - return; - - QSGTransformNode *gridNode = static_cast<QSGTransformNode *>(geometryNode->firstChild()); - Q_ASSERT(!gridNode || gridNode->type() == QSGNode::TransformNodeType); - if (!gridNode) - return; - - qreal width = geometryNode->rect().width(); - { - qreal from = ContainerAnimationStartPosition; - qreal to = from + ContainerAnimationEndPosition * width; - qreal progress = static_cast<qreal>(time) / TotalDuration; - qreal dx = from + (to - from) * progress; - - QMatrix4x4 matrix; - matrix.translate(dx, 0); - gridNode->setMatrix(matrix); - } - - int nodeIndex = 0; - QSGTransformNode *borderNode = static_cast<QSGTransformNode *>(gridNode->firstChild()); - while (borderNode) { - Q_ASSERT(borderNode->type() == QSGNode::TransformNodeType); - - QSGTransformNode *ellipseNode = static_cast<QSGTransformNode *>(borderNode->firstChild()); - Q_ASSERT(ellipseNode->type() == QSGNode::TransformNodeType); - - QSGOpacityNode *opacityNode = static_cast<QSGOpacityNode *>(ellipseNode->firstChild()); - Q_ASSERT(opacityNode->type() == QSGNode::OpacityNodeType); - - int begin = nodeIndex * Interval; - int end = VisibleDuration + nodeIndex * Interval; - - bool visible = time >= begin && time <= end; - opacityNode->setOpacity(visible ? 1.0 : 0.0); - - if (visible) { - { - int phaseIndex, remain = time, elapsed = 0; - for (phaseIndex = 0; phaseIndex < PhaseCount - 1; ++phaseIndex) { - if (remain <= m_borderPhases[phaseIndex].duration + begin) - break; - remain -= m_borderPhases[phaseIndex].duration; - elapsed += m_borderPhases[phaseIndex].duration; - } - - const Phase &phase = m_borderPhases[phaseIndex]; - - qreal pos = time - elapsed - begin; - qreal progress = pos / phase.duration; - qreal dx = phase.from + (phase.to - phase.from) * progress; - - QMatrix4x4 matrix; - matrix.translate(dx, 0); - borderNode->setMatrix(matrix); - } - - { - QEasingCurve curve(QEasingCurve::BezierSpline); - curve.addCubicBezierSegment(QPointF(0.4, 0.0), QPointF(0.6, 1.0), QPointF(1.0, 1.0)); - - int phaseIndex, remain = time, elapsed = 0; - for (phaseIndex = 0; phaseIndex < PhaseCount - 1; ++phaseIndex) { - if (remain <= m_ellipsePhases[phaseIndex].duration + begin) - break; - remain -= m_ellipsePhases[phaseIndex].duration; - elapsed += m_ellipsePhases[phaseIndex].duration; - } - - const Phase &phase = m_ellipsePhases[phaseIndex]; - - qreal from = phase.from * width; - qreal to = phase.to * width; - qreal pos = time - elapsed - begin; - qreal progress = curve.valueForProgress(pos / phase.duration); - qreal dx = from + (to - from) * progress; - - QMatrix4x4 matrix; - matrix.translate(dx, 0); - ellipseNode->setMatrix(matrix); - } - } - - borderNode = static_cast<QSGTransformNode *>(borderNode->nextSibling()); - ++nodeIndex; - } -} - -void QQuickUniversalProgressBarNode::sync(QQuickItem *item) -{ - QQuickUniversalProgressBar *bar = static_cast<QQuickUniversalProgressBar *>(item); - if (m_indeterminate != bar->isIndeterminate()) { - m_indeterminate = bar->isIndeterminate(); - if (m_indeterminate) - start(); - else - stop(); - } - - QQuickItemPrivate *d = QQuickItemPrivate::get(item); - - QRectF bounds = item->boundingRect(); - bounds.setHeight(item->implicitHeight()); - bounds.moveTop((item->height() - bounds.height()) / 2.0); - if (!m_indeterminate) - bounds.setWidth(bar->progress() * bounds.width()); - - QSGRectangleNode *geometryNode = static_cast<QSGRectangleNode *>(firstChild()); - if (!geometryNode) { - geometryNode = item->window()->createRectangleNode(); - appendChildNode(geometryNode); - } - geometryNode->setRect(bounds); - geometryNode->setColor(m_indeterminate ? Qt::transparent : bar->color()); - - if (!m_indeterminate) { - while (QSGNode *node = geometryNode->firstChild()) - delete node; - return; - } - - QSGTransformNode *gridNode = static_cast<QSGTransformNode *>(geometryNode->firstChild()); - if (!gridNode) { - gridNode = new QSGTransformNode; - geometryNode->appendChildNode(gridNode); - } - Q_ASSERT(gridNode->type() == QSGNode::TransformNodeType); - - QSGNode *borderNode = gridNode->firstChild(); - for (int i = 0; i < EllipseCount; ++i) { - if (!borderNode) { - borderNode = new QSGTransformNode; - gridNode->appendChildNode(borderNode); - - QSGTransformNode *ellipseNode = new QSGTransformNode; - borderNode->appendChildNode(ellipseNode); - - QSGOpacityNode *opacityNode = new QSGOpacityNode; - ellipseNode->appendChildNode(opacityNode); - - QSGInternalRectangleNode *rectNode = d->sceneGraphContext()->createInternalRectangleNode(); - rectNode->setAntialiasing(true); - rectNode->setRadius(EllipseDiameter / 2); - opacityNode->appendChildNode(rectNode); - } - Q_ASSERT(borderNode->type() == QSGNode::TransformNodeType); - - QSGNode *ellipseNode = borderNode->firstChild(); - Q_ASSERT(ellipseNode->type() == QSGNode::TransformNodeType); - - QSGNode *opacityNode = ellipseNode->firstChild(); - Q_ASSERT(opacityNode->type() == QSGNode::OpacityNodeType); - - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(opacityNode->firstChild()); - Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); - - rectNode->setRect(QRectF((EllipseCount - i - 1) * (EllipseDiameter + EllipseOffset), (item->height() - EllipseDiameter) / 2, EllipseDiameter, EllipseDiameter)); - rectNode->setColor(bar->color()); - rectNode->update(); - - borderNode = borderNode->nextSibling(); - } -} - -QQuickUniversalProgressBar::QQuickUniversalProgressBar(QQuickItem *parent) - : QQuickItem(parent) -{ - setFlag(ItemHasContents); -} - -QColor QQuickUniversalProgressBar::color() const -{ - return m_color; -} - -void QQuickUniversalProgressBar::setColor(const QColor &color) -{ - if (m_color == color) - return; - - m_color = color; - update(); -} - -qreal QQuickUniversalProgressBar::progress() const -{ - return m_progress; -} - -void QQuickUniversalProgressBar::setProgress(qreal progress) -{ - if (progress == m_progress) - return; - - m_progress = progress; - update(); -} - -bool QQuickUniversalProgressBar::isIndeterminate() const -{ - return m_indeterminate; -} - -void QQuickUniversalProgressBar::setIndeterminate(bool indeterminate) -{ - if (indeterminate == m_indeterminate) - return; - - m_indeterminate = indeterminate; - setClip(m_indeterminate); - update(); -} - -void QQuickUniversalProgressBar::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - QQuickItem::itemChange(change, data); - if (change == ItemVisibleHasChanged) - update(); -} - -QSGNode *QQuickUniversalProgressBar::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *) -{ - QQuickUniversalProgressBarNode *node = static_cast<QQuickUniversalProgressBarNode *>(oldNode); - if (isVisible() && width() > 0 && height() > 0) { - if (!node) - node = new QQuickUniversalProgressBarNode(this); - node->sync(this); - } else { - delete node; - node = nullptr; - } - return node; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/universal/impl/qquickuniversalprogressbar_p.h b/src/quickcontrols2/universal/impl/qquickuniversalprogressbar_p.h deleted file mode 100644 index 31cb4a32..00000000 --- a/src/quickcontrols2/universal/impl/qquickuniversalprogressbar_p.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKUNIVERSALPROGRESSBAR_P_H -#define QQUICKUNIVERSALPROGRESSBAR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qcolor.h> -#include <QtQuick/qquickitem.h> - -QT_BEGIN_NAMESPACE - -class QQuickUniversalProgressBar : public QQuickItem -{ - Q_OBJECT - Q_PROPERTY(QColor color READ color WRITE setColor FINAL) - Q_PROPERTY(qreal progress READ progress WRITE setProgress FINAL) - Q_PROPERTY(bool indeterminate READ isIndeterminate WRITE setIndeterminate FINAL) - QML_NAMED_ELEMENT(ProgressBarImpl) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickUniversalProgressBar(QQuickItem *parent = nullptr); - - QColor color() const; - void setColor(const QColor &color); - - qreal progress() const; - void setProgress(qreal progress); - - bool isIndeterminate() const; - void setIndeterminate(bool indeterminate); - -protected: - void itemChange(ItemChange change, const ItemChangeData &data) override; - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override; - -private: - QColor m_color = Qt::black; - qreal m_progress = 0.0; - bool m_indeterminate = false; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickUniversalProgressBar) - -#endif // QQUICKUNIVERSALPROGRESSBAR_P_H diff --git a/src/quickcontrols2/universal/qquickuniversalstyle.cpp b/src/quickcontrols2/universal/qquickuniversalstyle.cpp deleted file mode 100644 index 605cfce2..00000000 --- a/src/quickcontrols2/universal/qquickuniversalstyle.cpp +++ /dev/null @@ -1,618 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickuniversalstyle_p.h" - -#include <QtCore/qdebug.h> -#include <QtCore/qsettings.h> -#include <QtQml/qqmlinfo.h> -#include <QtQuickControls2/private/qquickstyle_p.h> - -QT_BEGIN_NAMESPACE - -static QRgb qquickuniversal_light_color(QQuickUniversalStyle::SystemColor role) -{ - static const QRgb colors[] = { - 0xFFFFFFFF, // SystemAltHighColor - 0x33FFFFFF, // SystemAltLowColor - 0x99FFFFFF, // SystemAltMediumColor - 0xCCFFFFFF, // SystemAltMediumHighColor - 0x66FFFFFF, // SystemAltMediumLowColor - 0xFF000000, // SystemBaseHighColor - 0x33000000, // SystemBaseLowColor - 0x99000000, // SystemBaseMediumColor - 0xCC000000, // SystemBaseMediumHighColor - 0x66000000, // SystemBaseMediumLowColor - 0xFF171717, // SystemChromeAltLowColor - 0xFF000000, // SystemChromeBlackHighColor - 0x33000000, // SystemChromeBlackLowColor - 0x66000000, // SystemChromeBlackMediumLowColor - 0xCC000000, // SystemChromeBlackMediumColor - 0xFFCCCCCC, // SystemChromeDisabledHighColor - 0xFF7A7A7A, // SystemChromeDisabledLowColor - 0xFFCCCCCC, // SystemChromeHighColor - 0xFFF2F2F2, // SystemChromeLowColor - 0xFFE6E6E6, // SystemChromeMediumColor - 0xFFF2F2F2, // SystemChromeMediumLowColor - 0xFFFFFFFF, // SystemChromeWhiteColor - 0x19000000, // SystemListLowColor - 0x33000000 // SystemListMediumColor - }; - return colors[role]; -} - -static QRgb qquickuniversal_dark_color(QQuickUniversalStyle::SystemColor role) -{ - static const QRgb colors[] = { - 0xFF000000, // SystemAltHighColor - 0x33000000, // SystemAltLowColor - 0x99000000, // SystemAltMediumColor - 0xCC000000, // SystemAltMediumHighColor - 0x66000000, // SystemAltMediumLowColor - 0xFFFFFFFF, // SystemBaseHighColor - 0x33FFFFFF, // SystemBaseLowColor - 0x99FFFFFF, // SystemBaseMediumColor - 0xCCFFFFFF, // SystemBaseMediumHighColor - 0x66FFFFFF, // SystemBaseMediumLowColor - 0xFFF2F2F2, // SystemChromeAltLowColor - 0xFF000000, // SystemChromeBlackHighColor - 0x33000000, // SystemChromeBlackLowColor - 0x66000000, // SystemChromeBlackMediumLowColor - 0xCC000000, // SystemChromeBlackMediumColor - 0xFF333333, // SystemChromeDisabledHighColor - 0xFF858585, // SystemChromeDisabledLowColor - 0xFF767676, // SystemChromeHighColor - 0xFF171717, // SystemChromeLowColor - 0xFF1F1F1F, // SystemChromeMediumColor - 0xFF2B2B2B, // SystemChromeMediumLowColor - 0xFFFFFFFF, // SystemChromeWhiteColor - 0x19FFFFFF, // SystemListLowColor - 0x33FFFFFF // SystemListMediumColor - }; - return colors[role]; -} - -static QRgb qquickuniversal_accent_color(QQuickUniversalStyle::Color accent) -{ - static const QRgb colors[] = { - 0xFFA4C400, // Lime - 0xFF60A917, // Green - 0xFF008A00, // Emerald - 0xFF00ABA9, // Teal - 0xFF1BA1E2, // Cyan - 0xFF3E65FF, // Cobalt - 0xFF6A00FF, // Indigo - 0xFFAA00FF, // Violet - 0xFFF472D0, // Pink - 0xFFD80073, // Magenta - 0xFFA20025, // Crimson - 0xFFE51400, // Red - 0xFFFA6800, // Orange - 0xFFF0A30A, // Amber - 0xFFE3C800, // Yellow - 0xFF825A2C, // Brown - 0xFF6D8764, // Olive - 0xFF647687, // Steel - 0xFF76608A, // Mauve - 0xFF87794E // Taupe - }; - return colors[accent]; -} - -static QQuickUniversalStyle::Theme qquickuniversal_effective_theme(QQuickUniversalStyle::Theme theme) -{ - if (theme == QQuickUniversalStyle::System) - theme = QQuickStylePrivate::isDarkSystemTheme() ? QQuickUniversalStyle::Dark : QQuickUniversalStyle::Light; - return theme; -} - -// If no value was inherited from a parent or explicitly set, the "global" values are used. -// The initial, default values of the globals are hard-coded here, but the environment -// variables and .conf file override them if specified. -static QQuickUniversalStyle::Theme GlobalTheme = QQuickUniversalStyle::Light; -static QRgb GlobalAccent = qquickuniversal_accent_color(QQuickUniversalStyle::Cobalt); -static QRgb GlobalForeground = qquickuniversal_light_color(QQuickUniversalStyle::BaseHigh); -static QRgb GlobalBackground = qquickuniversal_light_color(QQuickUniversalStyle::AltHigh); -// These represent whether a global foreground/background was set. -// Each style's m_hasForeground/m_hasBackground are initialized to these values. -static bool HasGlobalForeground = false; -static bool HasGlobalBackground = false; - -QQuickUniversalStyle::QQuickUniversalStyle(QObject *parent) : QQuickAttachedObject(parent), - m_hasForeground(HasGlobalForeground), m_hasBackground(HasGlobalBackground), m_theme(GlobalTheme), - m_accent(GlobalAccent), m_foreground(GlobalForeground), m_background(GlobalBackground) -{ - init(); -} - -QQuickUniversalStyle *QQuickUniversalStyle::qmlAttachedProperties(QObject *object) -{ - return new QQuickUniversalStyle(object); -} - -QQuickUniversalStyle::Theme QQuickUniversalStyle::theme() const -{ - return m_theme; -} - -void QQuickUniversalStyle::setTheme(Theme theme) -{ - theme = qquickuniversal_effective_theme(theme); - m_explicitTheme = true; - if (m_theme == theme) - return; - - m_theme = theme; - propagateTheme(); - emit themeChanged(); - emit paletteChanged(); - emit foregroundChanged(); - emit backgroundChanged(); -} - -void QQuickUniversalStyle::inheritTheme(Theme theme) -{ - if (m_explicitTheme || m_theme == theme) - return; - - m_theme = theme; - propagateTheme(); - emit themeChanged(); - emit paletteChanged(); - emit foregroundChanged(); - emit backgroundChanged(); -} - -void QQuickUniversalStyle::propagateTheme() -{ - const auto styles = attachedChildren(); - for (QQuickAttachedObject *child : styles) { - QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(child); - if (universal) - universal->inheritTheme(m_theme); - } -} - -void QQuickUniversalStyle::resetTheme() -{ - if (!m_explicitTheme) - return; - - m_explicitTheme = false; - QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(attachedParent()); - inheritTheme(universal ? universal->theme() : GlobalTheme); -} - -QVariant QQuickUniversalStyle::accent() const -{ - return QColor::fromRgba(m_accent); -} - -void QQuickUniversalStyle::setAccent(const QVariant &var) -{ - QRgb accent = 0; - if (!variantToRgba(var, "accent", &accent)) - return; - - m_explicitAccent = true; - if (m_accent == accent) - return; - - m_accent = accent; - propagateAccent(); - emit accentChanged(); -} - -void QQuickUniversalStyle::inheritAccent(QRgb accent) -{ - if (m_explicitAccent || m_accent == accent) - return; - - m_accent = accent; - propagateAccent(); - emit accentChanged(); -} - -void QQuickUniversalStyle::propagateAccent() -{ - const auto styles = attachedChildren(); - for (QQuickAttachedObject *child : styles) { - QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(child); - if (universal) - universal->inheritAccent(m_accent); - } -} - -void QQuickUniversalStyle::resetAccent() -{ - if (!m_explicitAccent) - return; - - m_explicitAccent = false; - QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(attachedParent()); - inheritAccent(universal ? universal->m_accent : GlobalAccent); -} - -QVariant QQuickUniversalStyle::foreground() const -{ - if (m_hasForeground) - return QColor::fromRgba(m_foreground); - return baseHighColor(); -} - -void QQuickUniversalStyle::setForeground(const QVariant &var) -{ - QRgb foreground = 0; - if (!variantToRgba(var, "foreground", &foreground)) - return; - - m_hasForeground = true; - m_explicitForeground = true; - if (m_foreground == foreground) - return; - - m_foreground = foreground; - propagateForeground(); - emit foregroundChanged(); -} - -void QQuickUniversalStyle::inheritForeground(QRgb foreground, bool has) -{ - if (m_explicitForeground || m_foreground == foreground) - return; - - m_hasForeground = has; - m_foreground = foreground; - propagateForeground(); - emit foregroundChanged(); -} - -void QQuickUniversalStyle::propagateForeground() -{ - const auto styles = attachedChildren(); - for (QQuickAttachedObject *child : styles) { - QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(child); - if (universal) - universal->inheritForeground(m_foreground, m_hasForeground); - } -} - -void QQuickUniversalStyle::resetForeground() -{ - if (!m_explicitForeground) - return; - - m_hasForeground = false; - m_explicitForeground = false; - QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(attachedParent()); - inheritForeground(universal ? universal->m_foreground : GlobalForeground, universal ? universal->m_hasForeground : false); -} - -QVariant QQuickUniversalStyle::background() const -{ - if (m_hasBackground) - return QColor::fromRgba(m_background); - return altHighColor(); -} - -void QQuickUniversalStyle::setBackground(const QVariant &var) -{ - QRgb background = 0; - if (!variantToRgba(var, "background", &background)) - return; - - m_hasBackground = true; - m_explicitBackground = true; - if (m_background == background) - return; - - m_background = background; - propagateBackground(); - emit backgroundChanged(); -} - -void QQuickUniversalStyle::inheritBackground(QRgb background, bool has) -{ - if (m_explicitBackground || m_background == background) - return; - - m_hasBackground = has; - m_background = background; - propagateBackground(); - emit backgroundChanged(); -} - -void QQuickUniversalStyle::propagateBackground() -{ - const auto styles = attachedChildren(); - for (QQuickAttachedObject *child : styles) { - QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(child); - if (universal) - universal->inheritBackground(m_background, m_hasBackground); - } -} - -void QQuickUniversalStyle::resetBackground() -{ - if (!m_explicitBackground) - return; - - m_hasBackground = false; - m_explicitBackground = false; - QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(attachedParent()); - inheritBackground(universal ? universal->m_background : GlobalBackground, universal ? universal->m_hasBackground : false); -} - -QColor QQuickUniversalStyle::color(Color color) const -{ - return qquickuniversal_accent_color(color); -} - -QColor QQuickUniversalStyle::altHighColor() const -{ - return systemColor(AltHigh); -} - -QColor QQuickUniversalStyle::altLowColor() const -{ - return systemColor(AltLow); -} - -QColor QQuickUniversalStyle::altMediumColor() const -{ - return systemColor(AltMedium); -} - -QColor QQuickUniversalStyle::altMediumHighColor() const -{ - return systemColor(AltMediumHigh); -} - -QColor QQuickUniversalStyle::altMediumLowColor() const -{ - return systemColor(AltMediumLow); -} - -QColor QQuickUniversalStyle::baseHighColor() const -{ - return systemColor(BaseHigh); -} - -QColor QQuickUniversalStyle::baseLowColor() const -{ - return systemColor(BaseLow); -} - -QColor QQuickUniversalStyle::baseMediumColor() const -{ - return systemColor(BaseMedium); -} - -QColor QQuickUniversalStyle::baseMediumHighColor() const -{ - return systemColor(BaseMediumHigh); -} - -QColor QQuickUniversalStyle::baseMediumLowColor() const -{ - return systemColor(BaseMediumLow); -} - -QColor QQuickUniversalStyle::chromeAltLowColor() const -{ - return systemColor(ChromeAltLow); -} - -QColor QQuickUniversalStyle::chromeBlackHighColor() const -{ - return systemColor(ChromeBlackHigh); -} - -QColor QQuickUniversalStyle::chromeBlackLowColor() const -{ - return systemColor(ChromeBlackLow); -} - -QColor QQuickUniversalStyle::chromeBlackMediumLowColor() const -{ - return systemColor(ChromeBlackMediumLow); -} - -QColor QQuickUniversalStyle::chromeBlackMediumColor() const -{ - return systemColor(ChromeBlackMedium); -} - -QColor QQuickUniversalStyle::chromeDisabledHighColor() const -{ - return systemColor(ChromeDisabledHigh); -} - -QColor QQuickUniversalStyle::chromeDisabledLowColor() const -{ - return systemColor(ChromeDisabledLow); -} - -QColor QQuickUniversalStyle::chromeHighColor() const -{ - return systemColor(ChromeHigh); -} - -QColor QQuickUniversalStyle::chromeLowColor() const -{ - return systemColor(ChromeLow); -} - -QColor QQuickUniversalStyle::chromeMediumColor() const -{ - return systemColor(ChromeMedium); -} - -QColor QQuickUniversalStyle::chromeMediumLowColor() const -{ - return systemColor(ChromeMediumLow); -} - -QColor QQuickUniversalStyle::chromeWhiteColor() const -{ - return systemColor(ChromeWhite); -} - -QColor QQuickUniversalStyle::listLowColor() const -{ - return systemColor(ListLow); -} - -QColor QQuickUniversalStyle::listMediumColor() const -{ - return systemColor(ListMedium); -} - -QColor QQuickUniversalStyle::systemColor(SystemColor role) const -{ - return QColor::fromRgba(m_theme == QQuickUniversalStyle::Dark ? qquickuniversal_dark_color(role) : qquickuniversal_light_color(role)); -} - -void QQuickUniversalStyle::attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent) -{ - Q_UNUSED(oldParent); - QQuickUniversalStyle *universal = qobject_cast<QQuickUniversalStyle *>(newParent); - if (universal) { - inheritTheme(universal->theme()); - inheritAccent(universal->m_accent); - inheritForeground(universal->m_foreground, universal->m_hasForeground); - inheritBackground(universal->m_background, universal->m_hasBackground); - } -} - -template <typename Enum> -static Enum toEnumValue(const QByteArray &value, bool *ok) -{ - QMetaEnum enumeration = QMetaEnum::fromType<Enum>(); - return static_cast<Enum>(enumeration.keyToValue(value, ok)); -} - -static QByteArray resolveSetting(const QByteArray &env, const QSharedPointer<QSettings> &settings, const QString &name) -{ - QByteArray value = qgetenv(env); -#if QT_CONFIG(settings) - if (value.isNull() && !settings.isNull()) - value = settings->value(name).toByteArray(); -#endif - return value; -} - -void QQuickUniversalStyle::initGlobals() -{ - QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(QStringLiteral("Universal")); - - bool ok = false; - QByteArray themeValue = resolveSetting("QT_QUICK_CONTROLS_UNIVERSAL_THEME", settings, QStringLiteral("Theme")); - Theme themeEnum = toEnumValue<Theme>(themeValue, &ok); - if (ok) - GlobalTheme = qquickuniversal_effective_theme(themeEnum); - else if (!themeValue.isEmpty()) - qWarning().nospace().noquote() << "Universal: unknown theme value: " << themeValue; - - QByteArray accentValue = resolveSetting("QT_QUICK_CONTROLS_UNIVERSAL_ACCENT", settings, QStringLiteral("Accent")); - Color accentEnum = toEnumValue<Color>(accentValue, &ok); - if (ok) { - GlobalAccent = qquickuniversal_accent_color(accentEnum); - } else if (!accentValue.isEmpty()) { - QColor color(accentValue.constData()); - if (color.isValid()) - GlobalAccent = color.rgba(); - else - qWarning().nospace().noquote() << "Universal: unknown accent value: " << accentValue; - } - - QByteArray foregroundValue = resolveSetting("QT_QUICK_CONTROLS_UNIVERSAL_FOREGROUND", settings, QStringLiteral("Foreground")); - Color foregroundEnum = toEnumValue<Color>(foregroundValue, &ok); - if (ok) { - GlobalForeground = qquickuniversal_accent_color(foregroundEnum); - HasGlobalForeground = true; - } else if (!foregroundValue.isEmpty()) { - QColor color(foregroundValue.constData()); - if (color.isValid()) { - GlobalForeground = color.rgba(); - HasGlobalForeground = true; - } else { - qWarning().nospace().noquote() << "Universal: unknown foreground value: " << foregroundValue; - } - } - - QByteArray backgroundValue = resolveSetting("QT_QUICK_CONTROLS_UNIVERSAL_BACKGROUND", settings, QStringLiteral("Background")); - Color backgroundEnum = toEnumValue<Color>(backgroundValue, &ok); - if (ok) { - GlobalBackground = qquickuniversal_accent_color(backgroundEnum); - HasGlobalBackground = true; - } else if (!backgroundValue.isEmpty()) { - QColor color(backgroundValue.constData()); - if (color.isValid()) { - GlobalBackground = color.rgba(); - HasGlobalBackground = true; - } else { - qWarning().nospace().noquote() << "Universal: unknown background value: " << backgroundValue; - } - } -} - -bool QQuickUniversalStyle::variantToRgba(const QVariant &var, const char *name, QRgb *rgba) const -{ - if (var.metaType().id() == QMetaType::Int) { - int val = var.toInt(); - if (val < Lime || val > Taupe) { - qmlWarning(parent()) << "unknown Universal." << name << " value: " << val; - return false; - } - *rgba = qquickuniversal_accent_color(static_cast<Color>(val)); - } else { - int val = QMetaEnum::fromType<Color>().keyToValue(var.toByteArray()); - if (val != -1) { - *rgba = qquickuniversal_accent_color(static_cast<Color>(val)); - } else { - QColor color(var.toString()); - if (!color.isValid()) { - qmlWarning(parent()) << "unknown Universal." << name << " value: " << var.toString(); - return false; - } - *rgba = color.rgba(); - } - } - return true; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/universal/qquickuniversalstyle_p.h b/src/quickcontrols2/universal/qquickuniversalstyle_p.h deleted file mode 100644 index 50b07071..00000000 --- a/src/quickcontrols2/universal/qquickuniversalstyle_p.h +++ /dev/null @@ -1,246 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKUNIVERSALSTYLE_P_H -#define QQUICKUNIVERSALSTYLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qcolor.h> -#include <QtQuickControls2Impl/private/qquickattachedobject_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickUniversalStylePrivate; - -class QQuickUniversalStyle : public QQuickAttachedObject -{ - Q_OBJECT - Q_PROPERTY(Theme theme READ theme WRITE setTheme RESET resetTheme NOTIFY themeChanged FINAL) - Q_PROPERTY(QVariant accent READ accent WRITE setAccent RESET resetAccent NOTIFY accentChanged FINAL) - Q_PROPERTY(QVariant foreground READ foreground WRITE setForeground RESET resetForeground NOTIFY foregroundChanged FINAL) - Q_PROPERTY(QVariant background READ background WRITE setBackground RESET resetBackground NOTIFY backgroundChanged FINAL) - - Q_PROPERTY(QColor altHighColor READ altHighColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor altLowColor READ altLowColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor altMediumColor READ altMediumColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor altMediumHighColor READ altMediumHighColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor altMediumLowColor READ altMediumLowColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor baseHighColor READ baseHighColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor baseLowColor READ baseLowColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor baseMediumColor READ baseMediumColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor baseMediumHighColor READ baseMediumHighColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor baseMediumLowColor READ baseMediumLowColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor chromeAltLowColor READ chromeAltLowColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor chromeBlackHighColor READ chromeBlackHighColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor chromeBlackLowColor READ chromeBlackLowColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor chromeBlackMediumLowColor READ chromeBlackMediumLowColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor chromeBlackMediumColor READ chromeBlackMediumColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor chromeDisabledHighColor READ chromeDisabledHighColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor chromeDisabledLowColor READ chromeDisabledLowColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor chromeHighColor READ chromeHighColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor chromeLowColor READ chromeLowColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor chromeMediumColor READ chromeMediumColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor chromeMediumLowColor READ chromeMediumLowColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor chromeWhiteColor READ chromeWhiteColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor listLowColor READ listLowColor NOTIFY paletteChanged FINAL) - Q_PROPERTY(QColor listMediumColor READ listMediumColor NOTIFY paletteChanged FINAL) - - QML_NAMED_ELEMENT(Universal) - QML_ATTACHED(QQuickUniversalStyle) - QML_UNCREATABLE("") - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickUniversalStyle(QObject *parent = nullptr); - - static QQuickUniversalStyle *qmlAttachedProperties(QObject *object); - - enum Theme { Light, Dark, System }; - Q_ENUM(Theme) - - Theme theme() const; - void setTheme(Theme theme); - void inheritTheme(Theme theme); - void propagateTheme(); - void resetTheme(); - - enum Color { - Lime, - Green, - Emerald, - Teal, - Cyan, - Cobalt, - Indigo, - Violet, - Pink, - Magenta, - Crimson, - Red, - Orange, - Amber, - Yellow, - Brown, - Olive, - Steel, - Mauve, - Taupe - }; - Q_ENUM(Color) - - QVariant accent() const; - void setAccent(const QVariant &accent); - void inheritAccent(QRgb accent); - void propagateAccent(); - void resetAccent(); - - QVariant foreground() const; - void setForeground(const QVariant &foreground); - void inheritForeground(QRgb foreground, bool has); - void propagateForeground(); - void resetForeground(); - - QVariant background() const; - void setBackground(const QVariant &background); - void inheritBackground(QRgb background, bool has); - void propagateBackground(); - void resetBackground(); - - Q_INVOKABLE QColor color(Color color) const; - - QColor altHighColor() const; - QColor altLowColor() const; - QColor altMediumColor() const; - QColor altMediumHighColor() const; - QColor altMediumLowColor() const; - QColor baseHighColor() const; - QColor baseLowColor() const; - QColor baseMediumColor() const; - QColor baseMediumHighColor() const; - QColor baseMediumLowColor() const; - QColor chromeAltLowColor() const; - QColor chromeBlackHighColor() const; - QColor chromeBlackLowColor() const; - QColor chromeBlackMediumLowColor() const; - QColor chromeBlackMediumColor() const; - QColor chromeDisabledHighColor() const; - QColor chromeDisabledLowColor() const; - QColor chromeHighColor() const; - QColor chromeLowColor() const; - QColor chromeMediumColor() const; - QColor chromeMediumLowColor() const; - QColor chromeWhiteColor() const; - QColor listLowColor() const; - QColor listMediumColor() const; - - enum SystemColor { - AltHigh, - AltLow, - AltMedium, - AltMediumHigh, - AltMediumLow, - BaseHigh, - BaseLow, - BaseMedium, - BaseMediumHigh, - BaseMediumLow, - ChromeAltLow, - ChromeBlackHigh, - ChromeBlackLow, - ChromeBlackMediumLow, - ChromeBlackMedium, - ChromeDisabledHigh, - ChromeDisabledLow, - ChromeHigh, - ChromeLow, - ChromeMedium, - ChromeMediumLow, - ChromeWhite, - ListLow, - ListMedium - }; - - QColor systemColor(SystemColor role) const; - - static void initGlobals(); - -Q_SIGNALS: - void themeChanged(); - void accentChanged(); - void foregroundChanged(); - void backgroundChanged(); - void paletteChanged(); - -protected: - void attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent) override; - -private: - bool variantToRgba(const QVariant &var, const char *name, QRgb *rgba) const; - - // These reflect whether a color value was explicitly set on the specific - // item that this attached style object represents. - bool m_explicitTheme = false; - bool m_explicitAccent = false; - bool m_explicitForeground = false; - bool m_explicitBackground = false; - // These will be true when this item has an explicit or inherited foreground/background - // color, or these colors were declared globally via settings (e.g. conf or env vars). - // Some color properties of the style will return different values depending on whether - // or not these are set. - bool m_hasForeground = false; - bool m_hasBackground = false; - // The actual values for this item, whether explicit, inherited or globally set. - Theme m_theme = Light; - QRgb m_accent = Qt::blue; - QRgb m_foreground = Qt::black; - QRgb m_background = Qt::white; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPEINFO(QQuickUniversalStyle, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKUNIVERSALSTYLE_P_H diff --git a/src/quickcontrols2/universal/qquickuniversaltheme.cpp b/src/quickcontrols2/universal/qquickuniversaltheme.cpp deleted file mode 100644 index 46f7c52e..00000000 --- a/src/quickcontrols2/universal/qquickuniversaltheme.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickuniversaltheme_p.h" - -#include <QtGui/qfontinfo.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -QT_BEGIN_NAMESPACE - -void QQuickUniversalTheme::initialize(QQuickTheme *theme) -{ - QFont systemFont; - QFont groupBoxTitleFont; - QFont tabButtonFont; - - const QFont font(QLatin1String("Segoe UI")); - if (QFontInfo(font).family() == QLatin1String("Segoe UI")) { - const QStringList families{font.family()}; - systemFont.setFamilies(families); - groupBoxTitleFont.setFamilies(families); - tabButtonFont.setFamilies(families); - } - - systemFont.setPixelSize(15); - theme->setFont(QQuickTheme::System, systemFont); - - groupBoxTitleFont.setPixelSize(15); - groupBoxTitleFont.setWeight(QFont::DemiBold); - theme->setFont(QQuickTheme::GroupBox, groupBoxTitleFont); - - tabButtonFont.setPixelSize(24); - tabButtonFont.setWeight(QFont::Light); - theme->setFont(QQuickTheme::TabBar, tabButtonFont); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2/universal/qquickuniversaltheme_p.h b/src/quickcontrols2/universal/qquickuniversaltheme_p.h deleted file mode 100644 index f762d0e3..00000000 --- a/src/quickcontrols2/universal/qquickuniversaltheme_p.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKUNIVERSALTHEME_P_H -#define QQUICKUNIVERSALTHEME_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qglobal.h> - -QT_BEGIN_NAMESPACE - -class QQuickTheme; - -class QQuickUniversalTheme -{ -public: - static void initialize(QQuickTheme *theme); -}; - -QT_END_NAMESPACE - -#endif // QQUICKUNIVERSALTHEME_P_H diff --git a/src/quickcontrols2/universal/qtquickcontrols2universalstyleplugin.cpp b/src/quickcontrols2/universal/qtquickcontrols2universalstyleplugin.cpp deleted file mode 100644 index e3bbc00a..00000000 --- a/src/quickcontrols2/universal/qtquickcontrols2universalstyleplugin.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickuniversalstyle_p.h" -#include "qquickuniversaltheme_p.h" - -#include <QtQuickControls2/private/qquickstyleplugin_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -extern void qml_register_types_QtQuick_Controls_Universal(); - -QT_BEGIN_NAMESPACE - -class QtQuickControls2UniversalStylePlugin : public QQuickStylePlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) - -public: - QtQuickControls2UniversalStylePlugin(QObject *parent = nullptr); - - QString name() const override; - void initializeTheme(QQuickTheme *theme) override; - - QQuickUniversalTheme theme; -}; - -QtQuickControls2UniversalStylePlugin::QtQuickControls2UniversalStylePlugin(QObject *parent) : QQuickStylePlugin(parent) -{ - volatile auto registration = &qml_register_types_QtQuick_Controls_Universal; - Q_UNUSED(registration); -} - -QString QtQuickControls2UniversalStylePlugin::name() const -{ - return QStringLiteral("Universal"); -} - -void QtQuickControls2UniversalStylePlugin::initializeTheme(QQuickTheme *theme) -{ - QQuickUniversalStyle::initGlobals(); - this->theme.initialize(theme); -} - -QT_END_NAMESPACE - -#include "qtquickcontrols2universalstyleplugin.moc" diff --git a/src/quickcontrols2/universal/qtquickcontrols2universalstyleplugin.qrc b/src/quickcontrols2/universal/qtquickcontrols2universalstyleplugin.qrc deleted file mode 100644 index bfcb0974..00000000 --- a/src/quickcontrols2/universal/qtquickcontrols2universalstyleplugin.qrc +++ /dev/null @@ -1,20 +0,0 @@ -<!DOCTYPE RCC><RCC version="1.0"> -<qresource prefix="qt-project.org/imports/QtQuick/Controls/Universal"> - <file>images/checkmark.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/downarrow.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/leftarrow.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/rightarrow.png</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> - <file>images/[email protected]</file> -</qresource> -</RCC> diff --git a/src/quickcontrols2/universal/universal.pri b/src/quickcontrols2/universal/universal.pri deleted file mode 100644 index b946a8f3..00000000 --- a/src/quickcontrols2/universal/universal.pri +++ /dev/null @@ -1,59 +0,0 @@ -HEADERS += \ - $$PWD/qquickuniversalstyle_p.h \ - $$PWD/qquickuniversaltheme_p.h - -SOURCES += \ - $$PWD/qquickuniversalstyle.cpp \ - $$PWD/qquickuniversaltheme.cpp - -QML_FILES += \ - $$PWD/ApplicationWindow.qml \ - $$PWD/BusyIndicator.qml \ - $$PWD/Button.qml \ - $$PWD/CheckBox.qml \ - $$PWD/CheckDelegate.qml \ - $$PWD/ComboBox.qml \ - $$PWD/DelayButton.qml \ - $$PWD/Dial.qml \ - $$PWD/Dialog.qml \ - $$PWD/DialogButtonBox.qml \ - $$PWD/Drawer.qml \ - $$PWD/Frame.qml \ - $$PWD/GroupBox.qml \ - $$PWD/HorizontalHeaderView.qml \ - $$PWD/ItemDelegate.qml \ - $$PWD/Label.qml \ - $$PWD/Menu.qml \ - $$PWD/MenuBar.qml \ - $$PWD/MenuBarItem.qml \ - $$PWD/MenuItem.qml \ - $$PWD/MenuSeparator.qml \ - $$PWD/Page.qml \ - $$PWD/PageIndicator.qml \ - $$PWD/Pane.qml \ - $$PWD/Popup.qml \ - $$PWD/ProgressBar.qml \ - $$PWD/RadioButton.qml \ - $$PWD/RadioDelegate.qml \ - $$PWD/RangeSlider.qml \ - $$PWD/RoundButton.qml \ - $$PWD/ScrollView.qml \ - $$PWD/ScrollBar.qml \ - $$PWD/ScrollIndicator.qml \ - $$PWD/Slider.qml \ - $$PWD/SpinBox.qml \ - $$PWD/SplitView.qml \ - $$PWD/StackView.qml \ - $$PWD/SwipeDelegate.qml \ - $$PWD/SwitchDelegate.qml \ - $$PWD/Switch.qml \ - $$PWD/TabBar.qml \ - $$PWD/TabButton.qml \ - $$PWD/TextArea.qml \ - $$PWD/TextField.qml \ - $$PWD/ToolBar.qml \ - $$PWD/ToolButton.qml \ - $$PWD/ToolSeparator.qml \ - $$PWD/ToolTip.qml \ - $$PWD/Tumbler.qml \ - $$PWD/VerticalHeaderView.qml diff --git a/src/quickcontrols2/windows/Button.qml b/src/quickcontrols2/windows/Button.qml deleted file mode 100644 index 1b73e1de..00000000 --- a/src/quickcontrols2/windows/Button.qml +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.Button { - id: control - - readonly property bool __nativeBackground: background instanceof NativeStyle.StyleItem - - // Since QQuickControl will subtract the insets from the control size to - // figure out the background size, we need to reverse that here, otherwise - // the control ends up too big. - implicitWidth: implicitBackgroundWidth + leftInset + rightInset - implicitHeight: implicitBackgroundHeight + topInset + bottomInset - - font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined - - leftPadding: __nativeBackground ? background.contentPadding.left : 5 - rightPadding: __nativeBackground ? background.contentPadding.right : 5 - topPadding: __nativeBackground ? background.contentPadding.top : 5 - bottomPadding: __nativeBackground ? background.contentPadding.bottom : 5 - - background: NativeStyle.Button { - control: control - contentWidth: contentItem.implicitWidth - contentHeight: contentItem.implicitHeight - useNinePatchImage: false - overrideState: NativeStyle.StyleItem.NeverHovered - } - - NativeStyle.Button { - id: hoverButton - control: control - x: background.x - y: background.y - width: background.width - height: background.height - useNinePatchImage: false - overrideState: NativeStyle.StyleItem.AlwaysHovered - opacity: control.hovered ? 1 : 0 - visible: opacity !== 0 - Behavior on opacity { NumberAnimation { duration: hoverButton.transitionDuration } } - } - - icon.width: 24 - icon.height: 24 - icon.color: control.checked || control.highlighted ? control.palette.brightText : - control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText - } -} diff --git a/src/quickcontrols2/windows/CMakeLists.txt b/src/quickcontrols2/windows/CMakeLists.txt deleted file mode 100644 index 194b4f1e..00000000 --- a/src/quickcontrols2/windows/CMakeLists.txt +++ /dev/null @@ -1,48 +0,0 @@ -##################################################################### -## qtquickcontrols2windowsstyleplugin Plugin: -##################################################################### - -set(qml_files - "Button.qml" - "CheckBox.qml" - "ComboBox.qml" - "Frame.qml" - "GroupBox.qml" - "ProgressBar.qml" - "RadioButton.qml" - "Slider.qml" - "SpinBox.qml" - "TextArea.qml" - "TextField.qml" - "ScrollBar.qml" - "ScrollView.qml" -) -set_source_files_properties(${qml_files} PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) - -qt_internal_add_qml_module(qtquickcontrols2windowsstyleplugin - URI "QtQuick.Controls.Windows" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2WindowsStylePlugin - IMPORTS - QtQuick.Controls.Fusion/auto - PAST_MAJOR_VERSIONS 2 - PLUGIN_TARGET qtquickcontrols2windowsstyleplugin - NO_PLUGIN_OPTIONAL - NO_GENERATE_PLUGIN_SOURCE - SOURCES - qtquickcontrols2windowsstyleplugin.cpp - QML_FILES - ${qml_files} - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickControls2Private - Qt::QuickPrivate - Qt::QuickTemplates2Private -) diff --git a/src/quickcontrols2/windows/CheckBox.qml b/src/quickcontrols2/windows/CheckBox.qml deleted file mode 100644 index 13fde0e6..00000000 --- a/src/quickcontrols2/windows/CheckBox.qml +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.NativeStyle as NativeStyle - -T.CheckBox { - id: control - - readonly property bool nativeIndicator: indicator instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - font.pixelSize: nativeIndicator ? indicator.styleFont(control).pixelSize : undefined - - spacing: nativeIndicator ? 0 : 6 - padding: nativeIndicator ? 0 : 6 - - indicator: NativeStyle.CheckBox { - control: control - y: control.topPadding + (control.availableHeight - height) >> 1 - contentWidth: contentItem.implicitWidth - contentHeight: contentItem.implicitHeight - useNinePatchImage: false - overrideState: NativeStyle.StyleItem.NeverHovered - } - - NativeStyle.CheckBox { - id: hoverCheckBox - control: control - x: indicator.x - y: indicator.y - z: 99 // Needs to be above the "unhovered" indicator - width: indicator.width - height: indicator.height - useNinePatchImage: false - overrideState: NativeStyle.StyleItem.AlwaysHovered - opacity: control.hovered ? 1 : 0 - visible: opacity !== 0 - Behavior on opacity { NumberAnimation { duration: hoverCheckBox.transitionDuration } } - } - - contentItem: CheckLabel { - text: control.text - font: control.font - color: control.palette.windowText - - // For some reason, the other styles set padding here (in the delegate), instead of in - // the control above. And they also adjust the indicator position by setting x and y - // explicitly (instead of using insets). So we follow the same pattern to ensure that - // setting a custom contentItem delegate from the app will end up looking the same for - // all styles. But this should probably be fixed for all styles (to make them work the - // same way as e.g Buttons). - leftPadding: { - if (nativeIndicator) - indicator.contentPadding.left - else - indicator && !mirrored ? indicator.width + spacing : 0 - } - - topPadding: nativeIndicator ? indicator.contentPadding.top : 0 - rightPadding: { - if (nativeIndicator) - indicator.contentPadding.right - else - indicator && mirrored ? indicator.width + spacing : 0 - } - } -} diff --git a/src/quickcontrols2/windows/ComboBox.qml b/src/quickcontrols2/windows/ComboBox.qml deleted file mode 100644 index 237d90b5..00000000 --- a/src/quickcontrols2/windows/ComboBox.qml +++ /dev/null @@ -1,130 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Window -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.ComboBox { - id: control - - readonly property bool __nativeBackground: background instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding, - 90 /* minimum */ ) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined - - leftPadding: __nativeBackground ? background.contentPadding.left : 5 - rightPadding: __nativeBackground ? background.contentPadding.right : 5 - topPadding: __nativeBackground ? background.contentPadding.top : 5 - bottomPadding: __nativeBackground ? background.contentPadding.bottom : 5 - - contentItem: T.TextField { - implicitWidth: contentWidth - implicitHeight: contentHeight - text: control.editable ? control.editText : control.displayText - - enabled: control.editable - autoScroll: control.editable - readOnly: control.down - inputMethodHints: control.inputMethodHints - validator: control.validator - selectByMouse: control.selectTextByMouse - - font: control.font - color: control.editable ? control.palette.text : control.palette.buttonText - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - verticalAlignment: Text.AlignVCenter - } - - background: NativeStyle.ComboBox { - control: control - contentWidth: contentItem.implicitWidth - contentHeight: contentItem.implicitHeight - useNinePatchImage: false - } - - delegate: ItemDelegate { - width: ListView.view.width - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData - palette.text: control.palette.text - palette.highlightedText: control.palette.highlightedText - font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal - highlighted: control.highlightedIndex === index - hoverEnabled: control.hoverEnabled - } - - popup: T.Popup { - readonly property var layoutMargins: control.__nativeBackground ? control.background.layoutMargins : null - x: layoutMargins ? layoutMargins.left : 0 - y: control.height - (layoutMargins ? layoutMargins.bottom : 0) - width: control.width - (layoutMargins ? layoutMargins.left + layoutMargins.right : 0) - height: Math.min(contentItem.implicitHeight, control.Window.height - topMargin - bottomMargin) - topMargin: 6 - bottomMargin: 6 - - contentItem: ListView { - clip: true - implicitHeight: contentHeight - model: control.delegateModel - currentIndex: control.highlightedIndex - highlightMoveDuration: 0 - - Rectangle { - z: 10 - width: parent.width - height: parent.height - color: "transparent" - border.color: control.palette.mid - } - - T.ScrollIndicator.vertical: ScrollIndicator { } - } - - background: Rectangle { - color: control.palette.window - } - } -} diff --git a/src/quickcontrols2/windows/Frame.qml b/src/quickcontrols2/windows/Frame.qml deleted file mode 100644 index f16a0835..00000000 --- a/src/quickcontrols2/windows/Frame.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultFrame { -} diff --git a/src/quickcontrols2/windows/GroupBox.qml b/src/quickcontrols2/windows/GroupBox.qml deleted file mode 100644 index 4ffbaae6..00000000 --- a/src/quickcontrols2/windows/GroupBox.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultGroupBox { -} diff --git a/src/quickcontrols2/windows/ProgressBar.qml b/src/quickcontrols2/windows/ProgressBar.qml deleted file mode 100644 index 59a1689d..00000000 --- a/src/quickcontrols2/windows/ProgressBar.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultProgressBar { -} diff --git a/src/quickcontrols2/windows/RadioButton.qml b/src/quickcontrols2/windows/RadioButton.qml deleted file mode 100644 index 82b85698..00000000 --- a/src/quickcontrols2/windows/RadioButton.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultRadioButton { -} diff --git a/src/quickcontrols2/windows/ScrollBar.qml b/src/quickcontrols2/windows/ScrollBar.qml deleted file mode 100644 index 0ccbb155..00000000 --- a/src/quickcontrols2/windows/ScrollBar.qml +++ /dev/null @@ -1,128 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultScrollBar { - id: controlRoot - - topPadding: orientation === Qt.Vertical ? controlRoot.__decreaseVisual.indicator.height : 0 - bottomPadding: orientation === Qt.Vertical ? controlRoot.__increaseVisual.indicator.height : 0 - leftPadding: orientation === Qt.Horizontal ? controlRoot.__decreaseVisual.indicator.width : 0 - rightPadding: orientation === Qt.Horizontal ? controlRoot.__increaseVisual.indicator.width : 0 - - contentItem: NativeStyle.ScrollBar { - control: controlRoot - subControl: NativeStyle.ScrollBar.Handle - } - - NativeStyle.ScrollBar { - // Fade a hovered-looking version of the handle - // on top of the default handle when hovering it - x: contentItem.x - y: contentItem.y - z: 1 - width: contentItem.width - height: contentItem.height - control: controlRoot - subControl: NativeStyle.ScrollBar.Handle - overrideState: NativeStyle.StyleItem.AlwaysHovered - opacity: controlRoot.hovered || control.pressed ? 1 : 0 - visible: contentItem instanceof NativeStyle.StyleItem - Behavior on opacity { NumberAnimation { duration: contentItem.transitionDuration } } - } - - // The groove background should have window color - Rectangle { - x: background.x - y: background.y - z: -1 - width: background.width - height: background.height - color: controlRoot.palette.window - } - - background: NativeStyle.ScrollBar { - control: controlRoot - subControl: NativeStyle.ScrollBar.Groove - overrideState: NativeStyle.ScrollBar.NeverHovered - } - - __decreaseVisual.indicator: NativeStyle.ScrollBar { - control: controlRoot - subControl: NativeStyle.ScrollBar.SubLine - overrideState: NativeStyle.ScrollBar.AlwaysHovered - opacity: controlRoot.__decreaseVisual.hovered ? 1 : 0 - visible: contentItem instanceof NativeStyle.StyleItem - Behavior on opacity { NumberAnimation { duration: contentItem.transitionDuration } } - useNinePatchImage: false - } - - NativeStyle.ScrollBar { - control: controlRoot - subControl: NativeStyle.ScrollBar.SubLine - overrideState: NativeStyle.ScrollBar.AlwaysSunken - opacity: controlRoot.__decreaseVisual.pressed ? 1 : 0 - visible: contentItem instanceof NativeStyle.StyleItem - useNinePatchImage: false - z: 1 - } - - __increaseVisual.indicator: NativeStyle.ScrollBar { - control: controlRoot - subControl: NativeStyle.ScrollBar.AddLine - x: orientation == Qt.Horizontal ? controlRoot.width - width : 0 - y: orientation == Qt.Vertical ? controlRoot.height - height : 0 - overrideState: NativeStyle.ScrollBar.AlwaysHovered - opacity: controlRoot.__increaseVisual.hovered ? 1 : 0 - visible: contentItem instanceof NativeStyle.StyleItem - Behavior on opacity { NumberAnimation { duration: contentItem.transitionDuration } } - useNinePatchImage: false - } - - NativeStyle.ScrollBar { - control: controlRoot - subControl: NativeStyle.ScrollBar.AddLine - x: __increaseVisual.indicator.x - y: __increaseVisual.indicator.y - z: 1 - overrideState: NativeStyle.ScrollBar.AlwaysSunken - opacity: controlRoot.__increaseVisual.pressed ? 1 : 0 - visible: contentItem instanceof NativeStyle.StyleItem - useNinePatchImage: false - } -} diff --git a/src/quickcontrols2/windows/ScrollView.qml b/src/quickcontrols2/windows/ScrollView.qml deleted file mode 100644 index 0e5ffff4..00000000 --- a/src/quickcontrols2/windows/ScrollView.qml +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Templates as T - -T.ScrollView { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - rightPadding: ScrollBar.vertical.visible ? ScrollBar.vertical.width : 0 - bottomPadding: ScrollBar.horizontal.visible ? ScrollBar.horizontal.height : 0 - - ScrollBar.vertical: ScrollBar { - parent: control - x: control.mirrored ? 0 : control.width - width - y: 0 - height: control.height - (control.ScrollBar.horizontal.visible ? control.ScrollBar.horizontal.height : 0) - active: control.ScrollBar.horizontal.active - } - - ScrollBar.horizontal: ScrollBar { - parent: control - x: 0 - y: control.height - height - width: control.width - (control.ScrollBar.vertical.visible ? control.ScrollBar.vertical.width : 0) - active: control.ScrollBar.vertical.active - } -} diff --git a/src/quickcontrols2/windows/Slider.qml b/src/quickcontrols2/windows/Slider.qml deleted file mode 100644 index ab72fcaa..00000000 --- a/src/quickcontrols2/windows/Slider.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultSlider { -} diff --git a/src/quickcontrols2/windows/SpinBox.qml b/src/quickcontrols2/windows/SpinBox.qml deleted file mode 100644 index 72309c60..00000000 --- a/src/quickcontrols2/windows/SpinBox.qml +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.SpinBox { - id: control - - property bool __nativeBackground: background instanceof NativeStyle.StyleItem - property bool nativeIndicators: up.indicator.hasOwnProperty("_qt_default") - && down.indicator.hasOwnProperty("_qt_default") - - font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined - - implicitWidth: Math.max(contentItem.implicitWidth + leftInset + rightInset, - 90 /* minimum */ ) - implicitHeight: Math.max(contentItem.implicitHeight, up.implicitIndicatorHeight + down.implicitIndicatorHeight) - + topInset + bottomInset - - spacing: 2 - - leftPadding: __nativeBackground ? background.contentPadding.left: 0 - topPadding: __nativeBackground ? background.contentPadding.top: 0 - rightPadding: (__nativeBackground ? background.contentPadding.right : 0) + rightInset - bottomPadding: __nativeBackground ? background.contentPadding.bottom: 0 - - validator: IntValidator { - locale: control.locale.name - bottom: Math.min(control.from, control.to) - top: Math.max(control.from, control.to) - } - - contentItem: TextField { - text: control.displayText - font: control.font - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - horizontalAlignment: Qt.AlignLeft - verticalAlignment: Qt.AlignVCenter - - topPadding: 0 - bottomPadding: 0 - leftPadding: 10 - rightPadding: 10 - - readOnly: !control.editable - validator: control.validator - inputMethodHints: control.inputMethodHints - - // Since the indicators are embedded inside the TextField we need to avoid that - // the TextField consumes mouse events for that area. - // We achieve that by setting a containmentMask - containmentMask: Item { height: contentItem.height; width: contentItem.width - upAndDown.width } - } - - NativeStyle.SpinBox { - id: upAndDown - control: control - subControl: NativeStyle.SpinBox.Up - visible: nativeIndicators - x: up.indicator.x - y: up.indicator.y - //implicitHeight: contentItem.implicitHeight-2 - height: parent.height-2 - useNinePatchImage: false - z:99 - } - - up.indicator: Item { - x: parent.width - width - 2 - y: 1 - height: upAndDown.height >> 1 - implicitWidth: upAndDown.implicitWidth - implicitHeight: (upAndDown.implicitHeight >> 1) - property bool _qt_default - } - - down.indicator: Item { - x: parent.width - width - 2 - y: up.indicator.y + (upAndDown.height >> 1) - height: upAndDown.height - up.indicator.height - implicitWidth: upAndDown.implicitWidth - implicitHeight: upAndDown.implicitHeight >> 1 - property bool _qt_default - } - - background: Item {} // No background, the TextField will cover the whole control -} diff --git a/src/quickcontrols2/windows/TextArea.qml b/src/quickcontrols2/windows/TextArea.qml deleted file mode 100644 index f6b88303..00000000 --- a/src/quickcontrols2/windows/TextArea.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultTextArea { -} diff --git a/src/quickcontrols2/windows/TextField.qml b/src/quickcontrols2/windows/TextField.qml deleted file mode 100644 index bc0e2cb7..00000000 --- a/src/quickcontrols2/windows/TextField.qml +++ /dev/null @@ -1,41 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.NativeStyle as NativeStyle - -NativeStyle.DefaultTextField { -} diff --git a/src/quickcontrols2/windows/qtquickcontrols2windowsstyleplugin.cpp b/src/quickcontrols2/windows/qtquickcontrols2windowsstyleplugin.cpp deleted file mode 100644 index 64e77e61..00000000 --- a/src/quickcontrols2/windows/qtquickcontrols2windowsstyleplugin.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtQml/qqml.h> -#include <QtQuickControls2/private/qquickstyleplugin_p.h> -#include <QtQuickControls2/qquickstyle.h> - -extern void qml_register_types_QtQuick_Controls_Windows(); - -QT_BEGIN_NAMESPACE - -class QtQuickControls2WindowsStylePlugin : public QQuickStylePlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) - -public: - QtQuickControls2WindowsStylePlugin(QObject *parent = nullptr); - QString name() const override; - void initializeTheme(QQuickTheme *theme) override; -}; - -QtQuickControls2WindowsStylePlugin::QtQuickControls2WindowsStylePlugin(QObject *parent): - QQuickStylePlugin(parent) -{ - volatile auto registration = &qml_register_types_QtQuick_Controls_Windows; - Q_UNUSED(registration); -} - -QString QtQuickControls2WindowsStylePlugin::name() const -{ - return QStringLiteral("Windows"); -} - -void QtQuickControls2WindowsStylePlugin::initializeTheme(QQuickTheme * /*theme*/) -{ -} - -QT_END_NAMESPACE - -#include "qtquickcontrols2windowsstyleplugin.moc" diff --git a/src/quickcontrols2/windows/windows.pri b/src/quickcontrols2/windows/windows.pri deleted file mode 100644 index 7f13eab0..00000000 --- a/src/quickcontrols2/windows/windows.pri +++ /dev/null @@ -1,14 +0,0 @@ -QML_FILES += \ - $$PWD/Button.qml \ - $$PWD/CheckBox.qml \ - $$PWD/ComboBox.qml \ - $$PWD/Frame.qml \ - $$PWD/GroupBox.qml \ - $$PWD/ProgressBar.qml \ - $$PWD/RadioButton.qml \ - $$PWD/Slider.qml \ - $$PWD/SpinBox.qml \ - $$PWD/TextArea.qml \ - $$PWD/TextField.qml \ - $$PWD/ScrollBar.qml \ - $$PWD/ScrollView.qml \ diff --git a/src/quickcontrols2impl/CMakeLists.txt b/src/quickcontrols2impl/CMakeLists.txt deleted file mode 100644 index dcad4d42..00000000 --- a/src/quickcontrols2impl/CMakeLists.txt +++ /dev/null @@ -1,43 +0,0 @@ -##################################################################### -## QuickControls2Impl Module: -##################################################################### - -qt_internal_add_qml_module(QuickControls2Impl - URI "QtQuick.Controls.impl" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickControls2ImplPlugin - DEPENDENCIES - QtQuick/auto - PLUGIN_TARGET qtquickcontrols2implplugin - SOURCES - qquickanimatednode.cpp qquickanimatednode_p.h - qquickattachedobject.cpp qquickattachedobject_p.h - qquickchecklabel.cpp qquickchecklabel_p.h - qquickclippedtext.cpp qquickclippedtext_p.h - qquickcolor.cpp qquickcolor_p.h - qquickcolorimage.cpp qquickcolorimage_p.h - qquickiconimage.cpp qquickiconimage_p.h - qquickiconimage_p_p.h - qquickiconlabel.cpp qquickiconlabel_p.h - qquickiconlabel_p_p.h - qquickitemgroup.cpp qquickitemgroup_p.h - qquickmnemoniclabel.cpp qquickmnemoniclabel_p.h - qquickpaddedrectangle.cpp qquickpaddedrectangle_p.h - qquickplaceholdertext.cpp qquickplaceholdertext_p.h - qtquickcontrols2foreign_p.h - qtquickcontrols2implglobal_p.h - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickPrivate - Qt::QuickTemplates2Private -) - -qt_internal_extend_target(QuickControls2Impl CONDITION QT_FEATURE_quick_listview AND QT_FEATURE_quick_pathview - SOURCES - qquicktumblerview.cpp qquicktumblerview_p.h -) diff --git a/src/quickcontrols2impl/qquickanimatednode.cpp b/src/quickcontrols2impl/qquickanimatednode.cpp deleted file mode 100644 index b4e665de..00000000 --- a/src/quickcontrols2impl/qquickanimatednode.cpp +++ /dev/null @@ -1,167 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickanimatednode_p.h" - -#include <QtQuick/qquickitem.h> -#include <QtQuick/qquickwindow.h> - -// based on qtdeclarative/examples/quick/scenegraph/threadedanimation - -QT_BEGIN_NAMESPACE - -QQuickAnimatedNode::QQuickAnimatedNode(QQuickItem *target) - : m_window(target->window()) -{ -} - -bool QQuickAnimatedNode::isRunning() const -{ - return m_running; -} - -int QQuickAnimatedNode::currentTime() const -{ - int time = m_currentTime; - if (m_running) - time += m_timer.elapsed(); - return time; -} - -void QQuickAnimatedNode::setCurrentTime(int time) -{ - m_currentTime = time; - m_timer.restart(); -} - -int QQuickAnimatedNode::duration() const -{ - return m_duration; -} - -void QQuickAnimatedNode::setDuration(int duration) -{ - m_duration = duration; -} - -int QQuickAnimatedNode::loopCount() const -{ - return m_loopCount; -} - -void QQuickAnimatedNode::setLoopCount(int count) -{ - m_loopCount = count; -} - -void QQuickAnimatedNode::sync(QQuickItem *target) -{ - Q_UNUSED(target); -} - -QQuickWindow *QQuickAnimatedNode::window() const -{ - return m_window; -} - -void QQuickAnimatedNode::start(int duration) -{ - if (m_running) - return; - - m_running = true; - m_currentLoop = 0; - m_timer.restart(); - if (duration > 0) - m_duration = duration; - - connect(m_window, &QQuickWindow::beforeRendering, this, &QQuickAnimatedNode::advance, Qt::DirectConnection); - connect(m_window, &QQuickWindow::frameSwapped, this, &QQuickAnimatedNode::update, Qt::DirectConnection); - - // If we're inside a QQuickWidget, this call is necessary to ensure the widget - // gets updated for the first time. - m_window->update(); - - emit started(); -} - -void QQuickAnimatedNode::restart() -{ - stop(); - start(); -} - -void QQuickAnimatedNode::stop() -{ - if (!m_running) - return; - - m_running = false; - disconnect(m_window, &QQuickWindow::beforeRendering, this, &QQuickAnimatedNode::advance); - disconnect(m_window, &QQuickWindow::frameSwapped, this, &QQuickAnimatedNode::update); - emit stopped(); -} - -void QQuickAnimatedNode::updateCurrentTime(int time) -{ - Q_UNUSED(time); -} - -void QQuickAnimatedNode::advance() -{ - int time = currentTime(); - if (time > m_duration) { - time = 0; - setCurrentTime(0); - - if (m_loopCount > 0 && ++m_currentLoop >= m_loopCount) { - time = m_duration; // complete - stop(); - } - } - updateCurrentTime(time); - - // If we're inside a QQuickWidget, this call is necessary to ensure the widget gets updated. - m_window->update(); -} - -void QQuickAnimatedNode::update() -{ - if (m_running) - m_window->update(); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qquickanimatednode_p.h b/src/quickcontrols2impl/qquickanimatednode_p.h deleted file mode 100644 index e403f0bf..00000000 --- a/src/quickcontrols2impl/qquickanimatednode_p.h +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKANIMATEDNODE_P_H -#define QQUICKANIMATEDNODE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/qsgnode.h> -#include <QtCore/qelapsedtimer.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickItem; -class QQuickWindow; - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickAnimatedNode : public QObject, public QSGTransformNode -{ - Q_OBJECT - -public: - explicit QQuickAnimatedNode(QQuickItem *target); - - bool isRunning() const; - - int currentTime() const; - void setCurrentTime(int time); - - int duration() const; - void setDuration(int duration); - - enum LoopCount { Infinite = -1 }; - - int loopCount() const; - void setLoopCount(int count); - - virtual void sync(QQuickItem *target); - - QQuickWindow *window() const; - - // must be called from sync() or updatePaintNode() - void start(int duration = 0); - void restart(); - void stop(); - -Q_SIGNALS: - void started(); - void stopped(); - -protected: - virtual void updateCurrentTime(int time); - -private Q_SLOTS: - void advance(); - void update(); - -private: - bool m_running = false; - int m_duration = 0; - int m_loopCount = 1; - int m_currentTime = 0; - int m_currentLoop = 0; - QElapsedTimer m_timer; - QQuickWindow *m_window = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKANIMATEDNODE_P_H diff --git a/src/quickcontrols2impl/qquickattachedobject.cpp b/src/quickcontrols2impl/qquickattachedobject.cpp deleted file mode 100644 index 722f22f9..00000000 --- a/src/quickcontrols2impl/qquickattachedobject.cpp +++ /dev/null @@ -1,274 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickattachedobject_p.h" - -#include <QtCore/qpointer.h> -#include <QtQuick/qquickwindow.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> -#include <QtQuickTemplates2/private/qquickpopup_p.h> - -QT_BEGIN_NAMESPACE - -static QQuickAttachedObject *attachedObject(const QMetaObject *type, QObject *object, bool create = false) -{ - if (!object) - return nullptr; - auto func = qmlAttachedPropertiesFunction(object, type); - return qobject_cast<QQuickAttachedObject *>(qmlAttachedPropertiesObject(object, func, create)); -} - -static QQuickAttachedObject *findAttachedParent(const QMetaObject *type, QObject *object) -{ - QQuickItem *item = qobject_cast<QQuickItem *>(object); - if (item) { - // lookup parent items and popups - QQuickItem *parent = item->parentItem(); - while (parent) { - QQuickAttachedObject *attached = attachedObject(type, parent); - if (attached) - return attached; - - QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent->parent()); - if (popup) - return attachedObject(type, popup); - - parent = parent->parentItem(); - } - - // fallback to item's window - QQuickAttachedObject *attached = attachedObject(type, item->window()); - if (attached) - return attached; - } else { - // lookup popup's window - QQuickPopup *popup = qobject_cast<QQuickPopup *>(object); - if (popup) - return attachedObject(type, popup->popupItem()->window()); - } - - // lookup parent window - QQuickWindow *window = qobject_cast<QQuickWindow *>(object); - if (window) { - QQuickWindow *parentWindow = qobject_cast<QQuickWindow *>(window->parent()); - if (parentWindow) { - QQuickAttachedObject *attached = attachedObject(type, window); - if (attached) - return attached; - } - } - - // fallback to engine (global) - if (object) { - QQmlEngine *engine = qmlEngine(object); - if (engine) { - QByteArray name = QByteArray("_q_") + type->className(); - QQuickAttachedObject *attached = engine->property(name).value<QQuickAttachedObject *>(); - if (!attached) { - attached = attachedObject(type, engine, true); - engine->setProperty(name, QVariant::fromValue(attached)); - } - return attached; - } - } - - return nullptr; -} - -static QList<QQuickAttachedObject *> findAttachedChildren(const QMetaObject *type, QObject *object) -{ - QList<QQuickAttachedObject *> children; - - QQuickItem *item = qobject_cast<QQuickItem *>(object); - if (!item) { - QQuickWindow *window = qobject_cast<QQuickWindow *>(object); - if (window) { - item = window->contentItem(); - - const auto &windowChildren = window->children(); - for (QObject *child : windowChildren) { - QQuickWindow *childWindow = qobject_cast<QQuickWindow *>(child); - if (childWindow) { - QQuickAttachedObject *attached = attachedObject(type, childWindow); - if (attached) - children += attached; - } - } - } - } - - if (item) { - const auto childItems = item->childItems(); - for (QQuickItem *child : childItems) { - QQuickAttachedObject *attached = attachedObject(type, child); - if (attached) - children += attached; - else - children += findAttachedChildren(type, child); - } - } - - return children; -} - -static QQuickItem *findAttachedItem(QObject *parent) -{ - QQuickItem *item = qobject_cast<QQuickItem *>(parent); - if (!item) { - QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent); - if (popup) - item = popup->popupItem(); - } - return item; -} - -class QQuickAttachedObjectPrivate : public QObjectPrivate, public QQuickItemChangeListener -{ - Q_DECLARE_PUBLIC(QQuickAttachedObject) - -public: - static QQuickAttachedObjectPrivate *get(QQuickAttachedObject *attachedObject) - { - return attachedObject->d_func(); - } - - void attachTo(QObject *object); - void detachFrom(QObject *object); - - void itemWindowChanged(QQuickWindow *window); - void itemParentChanged(QQuickItem *item, QQuickItem *parent) override; - - QList<QQuickAttachedObject *> attachedChildren; - QPointer<QQuickAttachedObject> attachedParent; -}; - -void QQuickAttachedObjectPrivate::attachTo(QObject *object) -{ - QQuickItem *item = findAttachedItem(object); - if (item) { - connect(item, &QQuickItem::windowChanged, this, &QQuickAttachedObjectPrivate::itemWindowChanged); - QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::Parent); - } -} - -void QQuickAttachedObjectPrivate::detachFrom(QObject *object) -{ - QQuickItem *item = findAttachedItem(object); - if (item) { - disconnect(item, &QQuickItem::windowChanged, this, &QQuickAttachedObjectPrivate::itemWindowChanged); - QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::Parent); - } -} - -void QQuickAttachedObjectPrivate::itemWindowChanged(QQuickWindow *window) -{ - Q_Q(QQuickAttachedObject); - QQuickAttachedObject *attachedParent = nullptr; - QQuickItem *item = qobject_cast<QQuickItem *>(q->sender()); - if (item) - attachedParent = findAttachedParent(q->metaObject(), item); - if (!attachedParent) - attachedParent = attachedObject(q->metaObject(), window); - q->setAttachedParent(attachedParent); -} - -void QQuickAttachedObjectPrivate::itemParentChanged(QQuickItem *item, QQuickItem *parent) -{ - Q_Q(QQuickAttachedObject); - Q_UNUSED(parent); - q->setAttachedParent(findAttachedParent(q->metaObject(), item)); -} - -QQuickAttachedObject::QQuickAttachedObject(QObject *parent) - : QObject(*(new QQuickAttachedObjectPrivate), parent) -{ - Q_D(QQuickAttachedObject); - d->attachTo(parent); -} - -QQuickAttachedObject::~QQuickAttachedObject() -{ - Q_D(QQuickAttachedObject); - d->detachFrom(parent()); - setAttachedParent(nullptr); -} - -QList<QQuickAttachedObject *> QQuickAttachedObject::attachedChildren() const -{ - Q_D(const QQuickAttachedObject); - return d->attachedChildren; -} - -QQuickAttachedObject *QQuickAttachedObject::attachedParent() const -{ - Q_D(const QQuickAttachedObject); - return d->attachedParent; -} - -void QQuickAttachedObject::setAttachedParent(QQuickAttachedObject *parent) -{ - Q_D(QQuickAttachedObject); - if (d->attachedParent == parent) - return; - - QQuickAttachedObject *oldParent = d->attachedParent; - if (d->attachedParent) - QQuickAttachedObjectPrivate::get(d->attachedParent)->attachedChildren.removeOne(this); - d->attachedParent = parent; - if (parent) - QQuickAttachedObjectPrivate::get(parent)->attachedChildren.append(this); - attachedParentChange(parent, oldParent); -} - -void QQuickAttachedObject::init() -{ - QQuickAttachedObject *attachedParent = findAttachedParent(metaObject(), parent()); - if (attachedParent) - setAttachedParent(attachedParent); - - const QList<QQuickAttachedObject *> attachedChildren = findAttachedChildren(metaObject(), parent()); - for (QQuickAttachedObject *child : attachedChildren) - child->setAttachedParent(this); -} - -void QQuickAttachedObject::attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent) -{ - Q_UNUSED(newParent); - Q_UNUSED(oldParent); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qquickattachedobject_p.h b/src/quickcontrols2impl/qquickattachedobject_p.h deleted file mode 100644 index cd2404c2..00000000 --- a/src/quickcontrols2impl/qquickattachedobject_p.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKATTACHEDOBJECT_P_H -#define QQUICKATTACHEDOBJECT_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQml/qqml.h> -#include <QtCore/qobject.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickAttachedObjectPrivate; - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickAttachedObject : public QObject -{ - Q_OBJECT - -public: - explicit QQuickAttachedObject(QObject *parent = nullptr); - ~QQuickAttachedObject(); - - QList<QQuickAttachedObject *> attachedChildren() const; - - QQuickAttachedObject *attachedParent() const; - void setAttachedParent(QQuickAttachedObject *parent); - -protected: - void init(); - - virtual void attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent); - -private: - Q_DISABLE_COPY(QQuickAttachedObject) - Q_DECLARE_PRIVATE(QQuickAttachedObject) -}; - -QT_END_NAMESPACE - -#endif // QQUICKATTACHEDOBJECT_P_H diff --git a/src/quickcontrols2impl/qquickchecklabel.cpp b/src/quickcontrols2impl/qquickchecklabel.cpp deleted file mode 100644 index dccbf77f..00000000 --- a/src/quickcontrols2impl/qquickchecklabel.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickchecklabel_p.h" - -QT_BEGIN_NAMESPACE - -QQuickCheckLabel::QQuickCheckLabel(QQuickItem *parent) : - QQuickText(parent) -{ - setHAlign(AlignLeft); - setVAlign(AlignVCenter); - setElideMode(ElideRight); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qquickchecklabel_p.h b/src/quickcontrols2impl/qquickchecklabel_p.h deleted file mode 100644 index 823ce9df..00000000 --- a/src/quickcontrols2impl/qquickchecklabel_p.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKCHECKLABEL_P_H -#define QQUICKCHECKLABEL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquicktext_p.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickCheckLabel : public QQuickText -{ - Q_OBJECT - QML_NAMED_ELEMENT(CheckLabel) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickCheckLabel(QQuickItem *parent = nullptr); -}; - -struct QQuickTextForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickText) - QML_ADDED_IN_VERSION(2, 3) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickCheckLabel) - -#endif // QQUICKCHECKLABEL_P_H diff --git a/src/quickcontrols2impl/qquickclippedtext.cpp b/src/quickcontrols2impl/qquickclippedtext.cpp deleted file mode 100644 index 862197f3..00000000 --- a/src/quickcontrols2impl/qquickclippedtext.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickclippedtext_p.h" - -#include <QtQuick/private/qquickitem_p.h> - -QT_BEGIN_NAMESPACE - -QQuickClippedText::QQuickClippedText(QQuickItem *parent) - : QQuickText(parent) -{ -} - -qreal QQuickClippedText::clipX() const -{ - return m_clipX; -} - -void QQuickClippedText::setClipX(qreal x) -{ - if (qFuzzyCompare(x, m_clipX)) - return; - - m_clipX = x; - markClipDirty(); -} - -qreal QQuickClippedText::clipY() const -{ - return m_clipY; -} - -void QQuickClippedText::setClipY(qreal y) -{ - if (qFuzzyCompare(y, m_clipY)) - return; - - m_clipY = y; - markClipDirty(); -} - -qreal QQuickClippedText::clipWidth() const -{ - return m_clipWidth ? m_clipWidth : width(); -} - -void QQuickClippedText::setClipWidth(qreal width) -{ - m_hasClipWidth = true; - if (qFuzzyCompare(width, m_clipWidth)) - return; - - m_clipWidth = width; - markClipDirty(); -} - -qreal QQuickClippedText::clipHeight() const -{ - return m_clipHeight ? m_clipHeight : height(); -} - -void QQuickClippedText::setClipHeight(qreal height) -{ - m_hasClipHeight = true; - if (qFuzzyCompare(height, m_clipHeight)) - return; - - m_clipHeight = height; - markClipDirty(); -} - -QRectF QQuickClippedText::clipRect() const -{ - return QRectF(clipX(), clipY(), clipWidth(), clipHeight()); -} - -void QQuickClippedText::markClipDirty() -{ - QQuickItemPrivate::get(this)->dirty(QQuickItemPrivate::Size); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qquickclippedtext_p.h b/src/quickcontrols2impl/qquickclippedtext_p.h deleted file mode 100644 index f3b011fd..00000000 --- a/src/quickcontrols2impl/qquickclippedtext_p.h +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKCLIPPEDTEXT_P_H -#define QQUICKCLIPPEDTEXT_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquicktext_p.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickClippedText : public QQuickText -{ - Q_OBJECT - Q_PROPERTY(qreal clipX READ clipX WRITE setClipX FINAL) - Q_PROPERTY(qreal clipY READ clipY WRITE setClipY FINAL) - Q_PROPERTY(qreal clipWidth READ clipWidth WRITE setClipWidth FINAL) - Q_PROPERTY(qreal clipHeight READ clipHeight WRITE setClipHeight FINAL) - QML_NAMED_ELEMENT(ClippedText) - QML_ADDED_IN_VERSION(2, 2) - -public: - explicit QQuickClippedText(QQuickItem *parent = nullptr); - - qreal clipX() const; - void setClipX(qreal x); - - qreal clipY() const; - void setClipY(qreal y); - - qreal clipWidth() const; - void setClipWidth(qreal width); - - qreal clipHeight() const; - void setClipHeight(qreal height); - - QRectF clipRect() const override; - -private: - void markClipDirty(); - - bool m_hasClipWidth = false; - bool m_hasClipHeight = false; - qreal m_clipX = 0; - qreal m_clipY = 0; - qreal m_clipWidth = 0; - qreal m_clipHeight = 0; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickClippedText) - -#endif // QQUICKCLIPPEDTEXT_P_H diff --git a/src/quickcontrols2impl/qquickcolor.cpp b/src/quickcontrols2impl/qquickcolor.cpp deleted file mode 100644 index 8ae568fc..00000000 --- a/src/quickcontrols2impl/qquickcolor.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickcolor_p.h" - -QT_BEGIN_NAMESPACE - -QQuickColor::QQuickColor(QObject *parent) : - QObject(parent) -{ -} - -QColor QQuickColor::transparent(const QColor &color, qreal opacity) const -{ - return QColor(color.red(), color.green(), color.blue(), - int(qreal(255) * qBound(qreal(0), opacity, qreal(1)))); -} - -QColor QQuickColor::blend(const QColor &a, const QColor &b, qreal factor) const -{ - if (factor <= 0.0) - return a; - if (factor >= 1.0) - return b; - - QColor color; - color.setRedF(a.redF() * (1.0 - factor) + b.redF() * factor); - color.setGreenF(a.greenF() * (1.0 - factor) + b.greenF() * factor); - color.setBlueF(a.blueF() * (1.0 - factor) + b.blueF() * factor); - return color; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qquickcolor_p.h b/src/quickcontrols2impl/qquickcolor_p.h deleted file mode 100644 index cd69d0d8..00000000 --- a/src/quickcontrols2impl/qquickcolor_p.h +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKCOLOR_P_H -#define QQUICKCOLOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtGui/qcolor.h> -#include <QtQml/qqml.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickColor : public QObject -{ - Q_OBJECT - QML_NAMED_ELEMENT(Color) - QML_SINGLETON - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickColor(QObject *parent = nullptr); - - Q_INVOKABLE QColor transparent(const QColor &color, qreal opacity) const; - Q_INVOKABLE QColor blend(const QColor &a, const QColor &b, qreal factor) const; -}; - -QT_END_NAMESPACE - -#endif // QQUICKCOLOR_P_H diff --git a/src/quickcontrols2impl/qquickcolorimage.cpp b/src/quickcontrols2impl/qquickcolorimage.cpp deleted file mode 100644 index 3afcef7e..00000000 --- a/src/quickcontrols2impl/qquickcolorimage.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickcolorimage_p.h" - -#include <QtQuick/private/qquickimagebase_p_p.h> - -QT_BEGIN_NAMESPACE - -QQuickColorImage::QQuickColorImage(QQuickItem *parent) - : QQuickImage(parent) -{ -} - -QColor QQuickColorImage::color() const -{ - return m_color; -} - -void QQuickColorImage::setColor(const QColor &color) -{ - if (m_color == color) - return; - - m_color = color; - if (isComponentComplete()) - load(); - emit colorChanged(); -} - -void QQuickColorImage::resetColor() -{ - setColor(Qt::transparent); -} - -QColor QQuickColorImage::defaultColor() const -{ - return m_defaultColor; -} - -void QQuickColorImage::setDefaultColor(const QColor &color) -{ - if (m_defaultColor == color) - return; - - m_defaultColor = color; - emit defaultColorChanged(); -} - -void QQuickColorImage::resetDefaultColor() -{ - setDefaultColor(Qt::transparent); -} - -void QQuickColorImage::pixmapChange() -{ - QQuickImage::pixmapChange(); - if (m_color.alpha() > 0 && m_color != m_defaultColor) { - QQuickImageBasePrivate *d = static_cast<QQuickImageBasePrivate *>(QQuickItemPrivate::get(this)); - QImage image = d->pix.image(); - if (!image.isNull()) { - QPainter painter(&image); - painter.setCompositionMode(QPainter::CompositionMode_SourceIn); - painter.fillRect(image.rect(), m_color); - d->pix.setImage(image); - } - } -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qquickcolorimage_p.h b/src/quickcontrols2impl/qquickcolorimage_p.h deleted file mode 100644 index faa2e42c..00000000 --- a/src/quickcontrols2impl/qquickcolorimage_p.h +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKCOLORIMAGE_P_H -#define QQUICKCOLORIMAGE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qcolor.h> -#include <QtQuick/private/qquickimage_p.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickColorImage : public QQuickImage -{ - Q_OBJECT - Q_PROPERTY(QColor color READ color WRITE setColor RESET resetColor NOTIFY colorChanged FINAL) - Q_PROPERTY(QColor defaultColor READ defaultColor WRITE setDefaultColor RESET resetDefaultColor NOTIFY defaultColorChanged FINAL) - QML_NAMED_ELEMENT(ColorImage) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickColorImage(QQuickItem *parent = nullptr); - - QColor color() const; - void setColor(const QColor &color); - void resetColor(); - - QColor defaultColor() const; - void setDefaultColor(const QColor &color); - void resetDefaultColor(); - -Q_SIGNALS: - void colorChanged(); - void defaultColorChanged(); - -protected: - void pixmapChange() override; - -private: - QColor m_color = Qt::transparent; - QColor m_defaultColor = Qt::transparent; -}; - -QT_END_NAMESPACE - -#endif // QQUICKCOLORIMAGE_P_H diff --git a/src/quickcontrols2impl/qquickiconimage.cpp b/src/quickcontrols2impl/qquickiconimage.cpp deleted file mode 100644 index 1fc3abfc..00000000 --- a/src/quickcontrols2impl/qquickiconimage.cpp +++ /dev/null @@ -1,213 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickiconimage_p.h" -#include "qquickiconimage_p_p.h" - -#include <QtCore/qmath.h> -#include <QtQuick/private/qquickimagebase_p_p.h> - -QT_BEGIN_NAMESPACE - -bool QQuickIconImagePrivate::updateDevicePixelRatio(qreal targetDevicePixelRatio) -{ - if (isThemeIcon) { - devicePixelRatio = calculateDevicePixelRatio(); - return true; - } - - return QQuickImagePrivate::updateDevicePixelRatio(targetDevicePixelRatio); -} - -void QQuickIconImagePrivate::updateIcon() -{ - Q_Q(QQuickIconImage); - // Both geometryChange() and QQuickImageBase::sourceSizeChanged() - // (which we connect to updateIcon() in the constructor) can be called as a result - // of updateIcon() changing the various sizes, so we must check that we're not recursing. - if (updatingIcon) - return; - - updatingIcon = true; - - QSize size = sourcesize; - // If no size is specified for theme icons, it will use the smallest available size. - if (size.width() <= 0) - size.setWidth(q->width()); - if (size.height() <= 0) - size.setHeight(q->height()); - - const qreal dpr = calculateDevicePixelRatio(); - const QIconLoaderEngineEntry *entry = QIconLoaderEngine::entryForSize(icon, size * dpr, qCeil(dpr)); - - if (entry) { - QQmlContext *context = qmlContext(q); - const QUrl entryUrl = QUrl::fromLocalFile(entry->filename); - url = context ? context->resolvedUrl(entryUrl) : entryUrl; - isThemeIcon = true; - } else { - url = source; - isThemeIcon = false; - } - q->load(); - - updatingIcon = false; -} - -void QQuickIconImagePrivate::updateFillMode() -{ - Q_Q(QQuickIconImage); - // If we start with a sourceSize of 28x28 and then set sourceSize.width to 24, the fillMode - // will change to PreserveAspectFit (because pixmapSize.width() > width()), which causes the - // pixmap to be reloaded at its original size of 28x28, which causes the fillMode to change - // to Pad (because pixmapSize.width() <= width()), and so on. - if (updatingFillMode) - return; - - updatingFillMode = true; - - const QSize pixmapSize = QSize(pix.width(), pix.height()) / calculateDevicePixelRatio(); - if (pixmapSize.width() > q->width() || pixmapSize.height() > q->height()) - q->setFillMode(QQuickImage::PreserveAspectFit); - else - q->setFillMode(QQuickImage::Pad); - - updatingFillMode = false; -} - -qreal QQuickIconImagePrivate::calculateDevicePixelRatio() const -{ - Q_Q(const QQuickIconImage); - return q->window() ? q->window()->effectiveDevicePixelRatio() : qApp->devicePixelRatio(); -} - -QQuickIconImage::QQuickIconImage(QQuickItem *parent) - : QQuickImage(*(new QQuickIconImagePrivate), parent) -{ - setFillMode(Pad); -} - -QString QQuickIconImage::name() const -{ - Q_D(const QQuickIconImage); - return d->icon.iconName; -} - -void QQuickIconImage::setName(const QString &name) -{ - Q_D(QQuickIconImage); - if (d->icon.iconName == name) - return; - - d->icon = QIconLoader::instance()->loadIcon(name); - if (isComponentComplete()) - d->updateIcon(); - emit nameChanged(); -} - -QColor QQuickIconImage::color() const -{ - Q_D(const QQuickIconImage); - return d->color; -} - -void QQuickIconImage::setColor(const QColor &color) -{ - Q_D(QQuickIconImage); - if (d->color == color) - return; - - d->color = color; - if (isComponentComplete()) - d->updateIcon(); - emit colorChanged(); -} - -void QQuickIconImage::setSource(const QUrl &source) -{ - Q_D(QQuickIconImage); - if (d->source == source) - return; - - d->source = source; - if (isComponentComplete()) - d->updateIcon(); - emit sourceChanged(source); -} - -void QQuickIconImage::componentComplete() -{ - Q_D(QQuickIconImage); - QQuickImage::componentComplete(); - d->updateIcon(); - QObjectPrivate::connect(this, &QQuickImageBase::sourceSizeChanged, d, &QQuickIconImagePrivate::updateIcon); -} - -void QQuickIconImage::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickIconImage); - QQuickImage::geometryChange(newGeometry, oldGeometry); - if (isComponentComplete() && newGeometry.size() != oldGeometry.size()) - d->updateIcon(); -} - -void QQuickIconImage::itemChange(ItemChange change, const ItemChangeData &value) -{ - Q_D(QQuickIconImage); - if (change == ItemDevicePixelRatioHasChanged) - d->updateIcon(); - QQuickImage::itemChange(change, value); -} - -void QQuickIconImage::pixmapChange() -{ - Q_D(QQuickIconImage); - QQuickImage::pixmapChange(); - d->updateFillMode(); - - // Don't apply the color if we're recursing (updateFillMode() can cause us to recurse). - if (!d->updatingFillMode && d->color.alpha() > 0) { - QImage image = d->pix.image(); - if (!image.isNull()) { - QPainter painter(&image); - painter.setCompositionMode(QPainter::CompositionMode_SourceIn); - painter.fillRect(image.rect(), d->color); - d->pix.setImage(image); - } - } -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qquickiconimage_p.h b/src/quickcontrols2impl/qquickiconimage_p.h deleted file mode 100644 index 37891476..00000000 --- a/src/quickcontrols2impl/qquickiconimage_p.h +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKICONIMAGE_P_H -#define QQUICKICONIMAGE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquickimage_p.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickIconImagePrivate; - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickIconImage : public QQuickImage -{ - Q_OBJECT - Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged FINAL) - Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL) - QML_NAMED_ELEMENT(IconImage) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickIconImage(QQuickItem *parent = nullptr); - - QString name() const; - void setName(const QString &name); - - QColor color() const; - void setColor(const QColor &color); - - void setSource(const QUrl &url) override; - -Q_SIGNALS: - void nameChanged(); - void colorChanged(); - -protected: - void componentComplete() override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - void itemChange(ItemChange change, const ItemChangeData &value) override; - void pixmapChange() override; - -private: - Q_DISABLE_COPY(QQuickIconImage) - Q_DECLARE_PRIVATE(QQuickIconImage) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickIconImage) - -#endif // QQUICKICONIMAGE_P_H diff --git a/src/quickcontrols2impl/qquickiconimage_p_p.h b/src/quickcontrols2impl/qquickiconimage_p_p.h deleted file mode 100644 index cec5956a..00000000 --- a/src/quickcontrols2impl/qquickiconimage_p_p.h +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKICONIMAGE_P_P_H -#define QQUICKICONIMAGE_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquickimage_p_p.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> -#include <QtGui/private/qiconloader_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickIconImagePrivate : public QQuickImagePrivate -{ - Q_DECLARE_PUBLIC(QQuickIconImage) - -public: - void updateIcon(); - void updateFillMode(); - qreal calculateDevicePixelRatio() const; - bool updateDevicePixelRatio(qreal targetDevicePixelRatio) override; - - QUrl source; - QColor color = Qt::transparent; - QThemeIconInfo icon; - bool updatingIcon = false; - bool isThemeIcon = false; - bool updatingFillMode = false; -}; - -QT_END_NAMESPACE - -#endif // QQUICKICONIMAGE_P_P_H diff --git a/src/quickcontrols2impl/qquickiconlabel.cpp b/src/quickcontrols2impl/qquickiconlabel.cpp deleted file mode 100644 index d76da28f..00000000 --- a/src/quickcontrols2impl/qquickiconlabel.cpp +++ /dev/null @@ -1,642 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickiconlabel_p.h" -#include "qquickiconlabel_p_p.h" -#include "qquickiconimage_p.h" -#include "qquickmnemoniclabel_p.h" - -#include <QtGui/private/qguiapplication_p.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquicktext_p.h> - -QT_BEGIN_NAMESPACE - -static void beginClass(QQuickItem *item) -{ - if (QQmlParserStatus *parserStatus = qobject_cast<QQmlParserStatus *>(item)) - parserStatus->classBegin(); -} - -static void completeComponent(QQuickItem *item) -{ - if (QQmlParserStatus *parserStatus = qobject_cast<QQmlParserStatus *>(item)) - parserStatus->componentComplete(); -} - -bool QQuickIconLabelPrivate::hasIcon() const -{ - return display != QQuickIconLabel::TextOnly && !icon.isEmpty(); -} - -bool QQuickIconLabelPrivate::hasText() const -{ - return display != QQuickIconLabel::IconOnly && !text.isEmpty(); -} - -bool QQuickIconLabelPrivate::createImage() -{ - Q_Q(QQuickIconLabel); - if (image) - return false; - - image = new QQuickIconImage(q); - watchChanges(image); - beginClass(image); - image->setObjectName(QStringLiteral("image")); - image->setName(icon.name()); - image->setSource(icon.source()); - image->setSourceSize(QSize(icon.width(), icon.height())); - image->setColor(icon.color()); - image->setCache(icon.cache()); - QQmlEngine::setContextForObject(image, qmlContext(q)); - if (componentComplete) - completeComponent(image); - return true; -} - -bool QQuickIconLabelPrivate::destroyImage() -{ - if (!image) - return false; - - unwatchChanges(image); - delete image; - image = nullptr; - return true; -} - -bool QQuickIconLabelPrivate::updateImage() -{ - if (!hasIcon()) - return destroyImage(); - return createImage(); -} - -void QQuickIconLabelPrivate::syncImage() -{ - if (!image || icon.isEmpty()) - return; - - image->setName(icon.name()); - image->setSource(icon.source()); - image->setSourceSize(QSize(icon.width(), icon.height())); - image->setColor(icon.color()); - image->setCache(icon.cache()); - const int valign = alignment & Qt::AlignVertical_Mask; - image->setVerticalAlignment(static_cast<QQuickImage::VAlignment>(valign)); - const int halign = alignment & Qt::AlignHorizontal_Mask; - image->setHorizontalAlignment(static_cast<QQuickImage::HAlignment>(halign)); -} - -void QQuickIconLabelPrivate::updateOrSyncImage() -{ - if (updateImage()) { - if (componentComplete) { - updateImplicitSize(); - layout(); - } - } else { - syncImage(); - } -} - -bool QQuickIconLabelPrivate::createLabel() -{ - Q_Q(QQuickIconLabel); - if (label) - return false; - - label = new QQuickMnemonicLabel(q); - watchChanges(label); - beginClass(label); - label->setObjectName(QStringLiteral("label")); - label->setFont(font); - label->setColor(color); - label->setElideMode(QQuickText::ElideRight); - const int valign = alignment & Qt::AlignVertical_Mask; - label->setVAlign(static_cast<QQuickText::VAlignment>(valign)); - const int halign = alignment & Qt::AlignHorizontal_Mask; - label->setHAlign(static_cast<QQuickText::HAlignment>(halign)); - label->setText(text); - if (componentComplete) - completeComponent(label); - return true; -} - -bool QQuickIconLabelPrivate::destroyLabel() -{ - if (!label) - return false; - - unwatchChanges(label); - delete label; - label = nullptr; - return true; -} - -bool QQuickIconLabelPrivate::updateLabel() -{ - if (!hasText()) - return destroyLabel(); - return createLabel(); -} - -void QQuickIconLabelPrivate::syncLabel() -{ - if (!label) - return; - - label->setText(text); -} - -void QQuickIconLabelPrivate::updateOrSyncLabel() -{ - if (updateLabel()) { - if (componentComplete) { - updateImplicitSize(); - layout(); - } - } else { - syncLabel(); - } -} - -void QQuickIconLabelPrivate::updateImplicitSize() -{ - Q_Q(QQuickIconLabel); - const bool showIcon = image && hasIcon(); - const bool showText = label && hasText(); - const qreal horizontalPadding = leftPadding + rightPadding; - const qreal verticalPadding = topPadding + bottomPadding; - const qreal iconImplicitWidth = showIcon ? image->implicitWidth() : 0; - const qreal iconImplicitHeight = showIcon ? image->implicitHeight() : 0; - const qreal textImplicitWidth = showText ? label->implicitWidth() : 0; - const qreal textImplicitHeight = showText ? label->implicitHeight() : 0; - const qreal effectiveSpacing = showText && showIcon && image->implicitWidth() > 0 ? spacing : 0; - const qreal implicitWidth = display == QQuickIconLabel::TextBesideIcon ? iconImplicitWidth + textImplicitWidth + effectiveSpacing - : qMax(iconImplicitWidth, textImplicitWidth); - const qreal implicitHeight = display == QQuickIconLabel::TextUnderIcon ? iconImplicitHeight + textImplicitHeight + effectiveSpacing - : qMax(iconImplicitHeight, textImplicitHeight); - q->setImplicitSize(implicitWidth + horizontalPadding, implicitHeight + verticalPadding); -} - -// adapted from QStyle::alignedRect() -static QRectF alignedRect(bool mirrored, Qt::Alignment alignment, const QSizeF &size, const QRectF &rectangle) -{ - alignment = QGuiApplicationPrivate::visualAlignment(mirrored ? Qt::RightToLeft : Qt::LeftToRight, alignment); - qreal x = rectangle.x(); - qreal y = rectangle.y(); - const qreal w = size.width(); - const qreal h = size.height(); - if ((alignment & Qt::AlignVCenter) == Qt::AlignVCenter) - y += rectangle.height() / 2 - h / 2; - else if ((alignment & Qt::AlignBottom) == Qt::AlignBottom) - y += rectangle.height() - h; - if ((alignment & Qt::AlignRight) == Qt::AlignRight) - x += rectangle.width() - w; - else if ((alignment & Qt::AlignHCenter) == Qt::AlignHCenter) - x += rectangle.width() / 2 - w / 2; - return QRectF(x, y, w, h); -} - -void QQuickIconLabelPrivate::layout() -{ - Q_Q(QQuickIconLabel); - if (!componentComplete) - return; - - const qreal availableWidth = width - leftPadding - rightPadding; - const qreal availableHeight = height - topPadding - bottomPadding; - - switch (display) { - case QQuickIconLabel::IconOnly: - if (image) { - const QRectF iconRect = alignedRect(mirrored, alignment, - QSizeF(qMin(image->implicitWidth(), availableWidth), - qMin(image->implicitHeight(), availableHeight)), - QRectF(leftPadding, topPadding, availableWidth, availableHeight)); - image->setSize(iconRect.size()); - image->setPosition(iconRect.topLeft()); - } - break; - case QQuickIconLabel::TextOnly: - if (label) { - const QRectF textRect = alignedRect(mirrored, alignment, - QSizeF(qMin(label->implicitWidth(), availableWidth), - qMin(label->implicitHeight(), availableHeight)), - QRectF(leftPadding, topPadding, availableWidth, availableHeight)); - label->setSize(textRect.size()); - label->setPosition(textRect.topLeft()); - } - break; - - case QQuickIconLabel::TextUnderIcon: { - // Work out the sizes first, as the positions depend on them. - QSizeF iconSize; - QSizeF textSize; - if (image) { - iconSize.setWidth(qMin(image->implicitWidth(), availableWidth)); - iconSize.setHeight(qMin(image->implicitHeight(), availableHeight)); - } - qreal effectiveSpacing = 0; - if (label) { - if (!iconSize.isEmpty()) - effectiveSpacing = spacing; - textSize.setWidth(qMin(label->implicitWidth(), availableWidth)); - textSize.setHeight(qMin(label->implicitHeight(), availableHeight - iconSize.height() - effectiveSpacing)); - } - - QRectF combinedRect = alignedRect(mirrored, alignment, - QSizeF(qMax(iconSize.width(), textSize.width()), - iconSize.height() + effectiveSpacing + textSize.height()), - QRectF(leftPadding, topPadding, availableWidth, availableHeight)); - if (image) { - QRectF iconRect = alignedRect(mirrored, Qt::AlignHCenter | Qt::AlignTop, iconSize, combinedRect); - image->setSize(iconRect.size()); - image->setPosition(iconRect.topLeft()); - } - if (label) { - QRectF textRect = alignedRect(mirrored, Qt::AlignHCenter | Qt::AlignBottom, textSize, combinedRect); - label->setSize(textRect.size()); - label->setPosition(textRect.topLeft()); - } - break; - } - - case QQuickIconLabel::TextBesideIcon: - default: - // Work out the sizes first, as the positions depend on them. - QSizeF iconSize(0, 0); - QSizeF textSize(0, 0); - if (image) { - iconSize.setWidth(qMin(image->implicitWidth(), availableWidth)); - iconSize.setHeight(qMin(image->implicitHeight(), availableHeight)); - } - qreal effectiveSpacing = 0; - if (label) { - if (!iconSize.isEmpty()) - effectiveSpacing = spacing; - textSize.setWidth(qMin(label->implicitWidth(), availableWidth - iconSize.width() - effectiveSpacing)); - textSize.setHeight(qMin(label->implicitHeight(), availableHeight)); - } - - const QRectF combinedRect = alignedRect(mirrored, alignment, - QSizeF(iconSize.width() + effectiveSpacing + textSize.width(), - qMax(iconSize.height(), textSize.height())), - QRectF(leftPadding, topPadding, availableWidth, availableHeight)); - if (image) { - const QRectF iconRect = alignedRect(mirrored, Qt::AlignLeft | Qt::AlignVCenter, iconSize, combinedRect); - image->setSize(iconRect.size()); - image->setPosition(iconRect.topLeft()); - } - if (label) { - const QRectF textRect = alignedRect(mirrored, Qt::AlignRight | Qt::AlignVCenter, textSize, combinedRect); - label->setSize(textRect.size()); - label->setPosition(textRect.topLeft()); - } - break; - } - - q->setBaselineOffset(label ? label->y() + label->baselineOffset() : 0); -} - -static const QQuickItemPrivate::ChangeTypes itemChangeTypes = - QQuickItemPrivate::ImplicitWidth - | QQuickItemPrivate::ImplicitHeight - | QQuickItemPrivate::Destroyed; - -void QQuickIconLabelPrivate::watchChanges(QQuickItem *item) -{ - QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); - itemPrivate->addItemChangeListener(this, itemChangeTypes); -} - -void QQuickIconLabelPrivate::unwatchChanges(QQuickItem* item) -{ - QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); - itemPrivate->removeItemChangeListener(this, itemChangeTypes); -} - -void QQuickIconLabelPrivate::itemImplicitWidthChanged(QQuickItem *) -{ - updateImplicitSize(); - layout(); -} - -void QQuickIconLabelPrivate::itemImplicitHeightChanged(QQuickItem *) -{ - updateImplicitSize(); - layout(); -} - -void QQuickIconLabelPrivate::itemDestroyed(QQuickItem *item) -{ - unwatchChanges(item); - if (item == image) - image = nullptr; - else if (item == label) - label = nullptr; -} - -QQuickIconLabel::QQuickIconLabel(QQuickItem *parent) - : QQuickItem(*(new QQuickIconLabelPrivate), parent) -{ -} - -QQuickIconLabel::~QQuickIconLabel() -{ - Q_D(QQuickIconLabel); - if (d->image) - d->unwatchChanges(d->image); - if (d->label) - d->unwatchChanges(d->label); -} - -QQuickIcon QQuickIconLabel::icon() const -{ - Q_D(const QQuickIconLabel); - return d->icon; -} - -void QQuickIconLabel::setIcon(const QQuickIcon &icon) -{ - Q_D(QQuickIconLabel); - if (d->icon == icon) - return; - - d->icon = icon; - d->updateOrSyncImage(); -} - -QString QQuickIconLabel::text() const -{ - Q_D(const QQuickIconLabel); - return d->text; -} - -void QQuickIconLabel::setText(const QString &text) -{ - Q_D(QQuickIconLabel); - if (d->text == text) - return; - - d->text = text; - d->updateOrSyncLabel(); -} - -QFont QQuickIconLabel::font() const -{ - Q_D(const QQuickIconLabel); - return d->font; -} - -void QQuickIconLabel::setFont(const QFont &font) -{ - Q_D(QQuickIconLabel); - if (d->font == font) - return; - - d->font = font; - if (d->label) - d->label->setFont(font); -} - -QColor QQuickIconLabel::color() const -{ - Q_D(const QQuickIconLabel); - return d->color; -} - -void QQuickIconLabel::setColor(const QColor &color) -{ - Q_D(QQuickIconLabel); - if (d->color == color) - return; - - d->color = color; - if (d->label) - d->label->setColor(color); -} - -QQuickIconLabel::Display QQuickIconLabel::display() const -{ - Q_D(const QQuickIconLabel); - return d->display; -} - -void QQuickIconLabel::setDisplay(Display display) -{ - Q_D(QQuickIconLabel); - if (d->display == display) - return; - - d->display = display; - d->updateImage(); - d->updateLabel(); - d->updateImplicitSize(); - d->layout(); -} - -qreal QQuickIconLabel::spacing() const -{ - Q_D(const QQuickIconLabel); - return d->spacing; -} - -void QQuickIconLabel::setSpacing(qreal spacing) -{ - Q_D(QQuickIconLabel); - if (qFuzzyCompare(d->spacing, spacing)) - return; - - d->spacing = spacing; - if (d->image && d->label) { - d->updateImplicitSize(); - d->layout(); - } -} - -bool QQuickIconLabel::isMirrored() const -{ - Q_D(const QQuickIconLabel); - return d->mirrored; -} - -void QQuickIconLabel::setMirrored(bool mirrored) -{ - Q_D(QQuickIconLabel); - if (d->mirrored == mirrored) - return; - - d->mirrored = mirrored; - d->layout(); -} - -Qt::Alignment QQuickIconLabel::alignment() const -{ - Q_D(const QQuickIconLabel); - return d->alignment; -} - -void QQuickIconLabel::setAlignment(Qt::Alignment alignment) -{ - Q_D(QQuickIconLabel); - const int valign = alignment & Qt::AlignVertical_Mask; - const int halign = alignment & Qt::AlignHorizontal_Mask; - const uint align = (valign ? valign : Qt::AlignVCenter) | (halign ? halign : Qt::AlignHCenter); - if (d->alignment == align) - return; - - d->alignment = static_cast<Qt::Alignment>(align); - if (d->label) { - d->label->setVAlign(static_cast<QQuickText::VAlignment>(valign)); - d->label->setHAlign(static_cast<QQuickText::HAlignment>(halign)); - } - if (d->image) { - d->image->setVerticalAlignment(static_cast<QQuickImage::VAlignment>(valign)); - d->image->setHorizontalAlignment(static_cast<QQuickImage::HAlignment>(halign)); - } - d->layout(); -} - -qreal QQuickIconLabel::topPadding() const -{ - Q_D(const QQuickIconLabel); - return d->topPadding; -} - -void QQuickIconLabel::setTopPadding(qreal padding) -{ - Q_D(QQuickIconLabel); - if (qFuzzyCompare(d->topPadding, padding)) - return; - - d->topPadding = padding; - d->updateImplicitSize(); - d->layout(); -} - -void QQuickIconLabel::resetTopPadding() -{ - setTopPadding(0); -} - -qreal QQuickIconLabel::leftPadding() const -{ - Q_D(const QQuickIconLabel); - return d->leftPadding; -} - -void QQuickIconLabel::setLeftPadding(qreal padding) -{ - Q_D(QQuickIconLabel); - if (qFuzzyCompare(d->leftPadding, padding)) - return; - - d->leftPadding = padding; - d->updateImplicitSize(); - d->layout(); -} - -void QQuickIconLabel::resetLeftPadding() -{ - setLeftPadding(0); -} - -qreal QQuickIconLabel::rightPadding() const -{ - Q_D(const QQuickIconLabel); - return d->rightPadding; -} - -void QQuickIconLabel::setRightPadding(qreal padding) -{ - Q_D(QQuickIconLabel); - if (qFuzzyCompare(d->rightPadding, padding)) - return; - - d->rightPadding = padding; - d->updateImplicitSize(); - d->layout(); -} - -void QQuickIconLabel::resetRightPadding() -{ - setRightPadding(0); -} - -qreal QQuickIconLabel::bottomPadding() const -{ - Q_D(const QQuickIconLabel); - return d->bottomPadding; -} - -void QQuickIconLabel::setBottomPadding(qreal padding) -{ - Q_D(QQuickIconLabel); - if (qFuzzyCompare(d->bottomPadding, padding)) - return; - - d->bottomPadding = padding; - d->updateImplicitSize(); - d->layout(); -} - -void QQuickIconLabel::resetBottomPadding() -{ - setBottomPadding(0); -} - -void QQuickIconLabel::componentComplete() -{ - Q_D(QQuickIconLabel); - if (d->image) - completeComponent(d->image); - if (d->label) - completeComponent(d->label); - QQuickItem::componentComplete(); - d->layout(); -} - -void QQuickIconLabel::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickIconLabel); - QQuickItem::geometryChange(newGeometry, oldGeometry); - d->layout(); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qquickiconlabel_p.h b/src/quickcontrols2impl/qquickiconlabel_p.h deleted file mode 100644 index 1ea0affb..00000000 --- a/src/quickcontrols2impl/qquickiconlabel_p.h +++ /dev/null @@ -1,142 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKICONLABEL_P_H -#define QQUICKICONLABEL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/qquickitem.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> -#include <QtQuickTemplates2/private/qquickicon_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickIconLabelPrivate; - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickIconLabel : public QQuickItem -{ - Q_OBJECT - Q_PROPERTY(QQuickIcon icon READ icon WRITE setIcon FINAL) - Q_PROPERTY(QString text READ text WRITE setText FINAL) - Q_PROPERTY(QFont font READ font WRITE setFont FINAL) - Q_PROPERTY(QColor color READ color WRITE setColor FINAL) - Q_PROPERTY(Display display READ display WRITE setDisplay FINAL) - Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing FINAL) - Q_PROPERTY(bool mirrored READ isMirrored WRITE setMirrored FINAL) - Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment FINAL) - Q_PROPERTY(qreal topPadding READ topPadding WRITE setTopPadding RESET resetTopPadding FINAL) - Q_PROPERTY(qreal leftPadding READ leftPadding WRITE setLeftPadding RESET resetLeftPadding FINAL) - Q_PROPERTY(qreal rightPadding READ rightPadding WRITE setRightPadding RESET resetRightPadding FINAL) - Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding RESET resetBottomPadding FINAL) - QML_NAMED_ELEMENT(IconLabel) - QML_ADDED_IN_VERSION(2, 3) - -public: - enum Display { - IconOnly, - TextOnly, - TextBesideIcon, - TextUnderIcon - }; - Q_ENUM(Display) - - explicit QQuickIconLabel(QQuickItem *parent = nullptr); - ~QQuickIconLabel(); - - QQuickIcon icon() const; - void setIcon(const QQuickIcon &icon); - - QString text() const; - void setText(const QString &text); - - QFont font() const; - void setFont(const QFont &font); - - QColor color() const; - void setColor(const QColor &color); - - Display display() const; - void setDisplay(Display display); - - qreal spacing() const; - void setSpacing(qreal spacing); - - bool isMirrored() const; - void setMirrored(bool mirrored); - - Qt::Alignment alignment() const; - void setAlignment(Qt::Alignment alignment); - - qreal topPadding() const; - void setTopPadding(qreal padding); - void resetTopPadding(); - - qreal leftPadding() const; - void setLeftPadding(qreal padding); - void resetLeftPadding(); - - qreal rightPadding() const; - void setRightPadding(qreal padding); - void resetRightPadding(); - - qreal bottomPadding() const; - void setBottomPadding(qreal padding); - void resetBottomPadding(); - -protected: - void componentComplete() override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - -private: - Q_DISABLE_COPY(QQuickIconLabel) - Q_DECLARE_PRIVATE(QQuickIconLabel) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickIconLabel) - -#endif // QQUICKICONLABEL_P_H diff --git a/src/quickcontrols2impl/qquickiconlabel_p_p.h b/src/quickcontrols2impl/qquickiconlabel_p_p.h deleted file mode 100644 index 18cefe53..00000000 --- a/src/quickcontrols2impl/qquickiconlabel_p_p.h +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKICONLABEL_P_P_H -#define QQUICKICONLABEL_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> -#include <QtQuickControls2Impl/private/qquickiconlabel_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickIconImage; -class QQuickMnemonicLabel; - -class QQuickIconLabelPrivate : public QQuickItemPrivate, public QQuickItemChangeListener -{ - Q_DECLARE_PUBLIC(QQuickIconLabel) - -public: - bool hasIcon() const; - bool hasText() const; - - bool createImage(); - bool destroyImage(); - bool updateImage(); - void syncImage(); - void updateOrSyncImage(); - - bool createLabel(); - bool destroyLabel(); - bool updateLabel(); - void syncLabel(); - void updateOrSyncLabel(); - - void updateImplicitSize(); - void layout(); - - void watchChanges(QQuickItem *item); - void unwatchChanges(QQuickItem *item); - void setPositioningDirty(); - - bool isLeftToRight() const; - - void itemImplicitWidthChanged(QQuickItem *) override; - void itemImplicitHeightChanged(QQuickItem *) override; - void itemDestroyed(QQuickItem *item) override; - - bool mirrored = false; - QQuickIconLabel::Display display = QQuickIconLabel::TextBesideIcon; - Qt::Alignment alignment = Qt::AlignCenter; - qreal spacing = 0; - qreal topPadding = 0; - qreal leftPadding = 0; - qreal rightPadding = 0; - qreal bottomPadding = 0; - QFont font; - QColor color; - QString text; - QQuickIcon icon; - QQuickIconImage *image = nullptr; - QQuickMnemonicLabel *label = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKICONLABEL_P_P_H diff --git a/src/quickcontrols2impl/qquickitemgroup.cpp b/src/quickcontrols2impl/qquickitemgroup.cpp deleted file mode 100644 index c4307001..00000000 --- a/src/quickcontrols2impl/qquickitemgroup.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickitemgroup_p.h" - -#include <QtQuick/private/qquickimplicitsizeitem_p_p.h> - -QT_BEGIN_NAMESPACE - -QQuickItemGroup::QQuickItemGroup(QQuickItem *parent) - : QQuickImplicitSizeItem(*(new QQuickImplicitSizeItemPrivate), parent) -{ -} - -QQuickItemGroup::~QQuickItemGroup() -{ - const auto children = childItems(); - for (QQuickItem *child : children) - unwatch(child); -} - -void QQuickItemGroup::watch(QQuickItem *item) -{ - QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); -} - -void QQuickItemGroup::unwatch(QQuickItem *item) -{ - QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); -} - -QSizeF QQuickItemGroup::calculateImplicitSize() const -{ - qreal width = 0; - qreal height = 0; - const auto children = childItems(); - for (QQuickItem *child : children) { - width = qMax(width, child->implicitWidth()); - height = qMax(height, child->implicitHeight()); - } - return QSizeF(width, height); -} - -void QQuickItemGroup::updateImplicitSize() -{ - QSizeF size = calculateImplicitSize(); - setImplicitSize(size.width(), size.height()); -} - -void QQuickItemGroup::itemChange(ItemChange change, const ItemChangeData &data) -{ - QQuickImplicitSizeItem::itemChange(change, data); - switch (change) { - case ItemChildAddedChange: - watch(data.item); - data.item->setSize(QSizeF(width(), height())); - updateImplicitSize(); - break; - case ItemChildRemovedChange: - unwatch(data.item); - updateImplicitSize(); - break; - default: - break; - } -} - -void QQuickItemGroup::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - QQuickImplicitSizeItem::geometryChange(newGeometry, oldGeometry); - - if (newGeometry.size() != oldGeometry.size()) { - const auto children = childItems(); - for (QQuickItem *child : children) - child->setSize(newGeometry.size()); - } -} - -void QQuickItemGroup::itemImplicitWidthChanged(QQuickItem *) -{ - setImplicitWidth(calculateImplicitSize().width()); -} - -void QQuickItemGroup::itemImplicitHeightChanged(QQuickItem *) -{ - setImplicitHeight(calculateImplicitSize().height()); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qquickitemgroup_p.h b/src/quickcontrols2impl/qquickitemgroup_p.h deleted file mode 100644 index 9c04a990..00000000 --- a/src/quickcontrols2impl/qquickitemgroup_p.h +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKITEMGROUP_P_H -#define QQUICKITEMGROUP_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquickimplicitsizeitem_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickItemGroup : public QQuickImplicitSizeItem, protected QQuickItemChangeListener -{ - Q_OBJECT - QML_NAMED_ELEMENT(ItemGroup) - QML_ADDED_IN_VERSION(2, 2) - -public: - explicit QQuickItemGroup(QQuickItem *parent = nullptr); - ~QQuickItemGroup(); - -protected: - void watch(QQuickItem *item); - void unwatch(QQuickItem *item); - - QSizeF calculateImplicitSize() const; - void updateImplicitSize(); - - void itemChange(ItemChange change, const ItemChangeData &data) override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickItemGroup) - -#endif // QQUICKITEMGROUP_P_H diff --git a/src/quickcontrols2impl/qquickmnemoniclabel.cpp b/src/quickcontrols2impl/qquickmnemoniclabel.cpp deleted file mode 100644 index 309d076a..00000000 --- a/src/quickcontrols2impl/qquickmnemoniclabel.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmnemoniclabel_p.h" - -#include <QtQuick/private/qquicktext_p_p.h> - -QT_BEGIN_NAMESPACE - -QQuickMnemonicLabel::QQuickMnemonicLabel(QQuickItem *parent) - : QQuickText(parent) -{ -} - -QString QQuickMnemonicLabel::text() const -{ - return m_fullText; -} - -void QQuickMnemonicLabel::setText(const QString &text) -{ - if (m_fullText == text) - return; - - m_fullText = text; - updateMnemonic(); -} - -bool QQuickMnemonicLabel::isMnemonicVisible() const -{ - return m_mnemonicVisible; -} - -void QQuickMnemonicLabel::setMnemonicVisible(bool visible) -{ - if (m_mnemonicVisible == visible) - return; - - m_mnemonicVisible = visible; - updateMnemonic(); - - if (isComponentComplete()) - forceLayout(); -} - -static QTextLayout::FormatRange underlineRange(int start, int length = 1) -{ - QTextLayout::FormatRange range; - range.start = start; - range.length = length; - range.format.setFontUnderline(true); - return range; -} - -// based on QPlatformTheme::removeMnemonics() -void QQuickMnemonicLabel::updateMnemonic() -{ - QString text(m_fullText.size(), QChar::Null); - int idx = 0; - int pos = 0; - int len = m_fullText.length(); - QList<QTextLayout::FormatRange> formats; - while (len) { - if (m_fullText.at(pos) == QLatin1Char('&') && (len == 1 || m_fullText.at(pos + 1) != QLatin1Char('&'))) { - if (m_mnemonicVisible && (pos == 0 || m_fullText.at(pos - 1) != QLatin1Char('&'))) - formats += underlineRange(pos); - ++pos; - --len; - if (len == 0) - break; - } else if (m_fullText.at(pos) == QLatin1Char('(') && len >= 4 && - m_fullText.at(pos + 1) == QLatin1Char('&') && - m_fullText.at(pos + 2) != QLatin1Char('&') && - m_fullText.at(pos + 3) == QLatin1Char(')')) { - // a mnemonic with format "\s*(&X)" - if (m_mnemonicVisible) { - formats += underlineRange(pos + 1); - } else { - int n = 0; - while (idx > n && text.at(idx - n - 1).isSpace()) - ++n; - idx -= n; - pos += 4; - len -= 4; - continue; - } - } - text[idx] = m_fullText.at(pos); - ++pos; - ++idx; - --len; - } - text.truncate(idx); - - QQuickTextPrivate::get(this)->layout.setFormats(formats); - QQuickText::setText(text); -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qquickmnemoniclabel_p.h b/src/quickcontrols2impl/qquickmnemoniclabel_p.h deleted file mode 100644 index 69ddbfb1..00000000 --- a/src/quickcontrols2impl/qquickmnemoniclabel_p.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMNEMONICLABEL_P_H -#define QQUICKMNEMONICLABEL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquicktext_p.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickMnemonicLabel : public QQuickText -{ - Q_OBJECT - Q_PROPERTY(QString text READ text WRITE setText FINAL) - Q_PROPERTY(bool mnemonicVisible READ isMnemonicVisible WRITE setMnemonicVisible FINAL) - QML_NAMED_ELEMENT(MnemonicLabel) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickMnemonicLabel(QQuickItem *parent = nullptr); - - QString text() const; - void setText(const QString &text); - - bool isMnemonicVisible() const; - void setMnemonicVisible(bool visible); - -private: - void updateMnemonic(); - - bool m_mnemonicVisible = true; - QString m_fullText; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickMnemonicLabel) - -#endif // QQUICKMNEMONICLABEL_P_H diff --git a/src/quickcontrols2impl/qquickpaddedrectangle.cpp b/src/quickcontrols2impl/qquickpaddedrectangle.cpp deleted file mode 100644 index fd9e9d90..00000000 --- a/src/quickcontrols2impl/qquickpaddedrectangle.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickpaddedrectangle_p.h" - -#include <QtQuick/private/qsgadaptationlayer_p.h> - -QT_BEGIN_NAMESPACE - -QQuickPaddedRectangle::QQuickPaddedRectangle(QQuickItem *parent) : - QQuickRectangle(parent) -{ -} - -qreal QQuickPaddedRectangle::padding() const -{ - return m_padding; -} - -void QQuickPaddedRectangle::setPadding(qreal padding) -{ - if (!qFuzzyCompare(m_padding, padding)) { - m_padding = padding; - update(); - emit paddingChanged(); - if (m_hasTopPadding) - emit topPaddingChanged(); - if (!m_hasLeftPadding) - emit leftPaddingChanged(); - if (!m_hasRightPadding) - emit rightPaddingChanged(); - if (!m_hasBottomPadding) - emit bottomPaddingChanged(); - } -} - -void QQuickPaddedRectangle::resetPadding() -{ - setPadding(0); -} - -qreal QQuickPaddedRectangle::topPadding() const -{ - return m_hasTopPadding ? m_topPadding : m_padding; -} - -void QQuickPaddedRectangle::setTopPadding(qreal padding) -{ - setTopPadding(padding, true); -} - -void QQuickPaddedRectangle::resetTopPadding() -{ - setTopPadding(0, false); -} - -qreal QQuickPaddedRectangle::leftPadding() const -{ - return m_hasLeftPadding ? m_leftPadding : m_padding; -} - -void QQuickPaddedRectangle::setLeftPadding(qreal padding) -{ - setLeftPadding(padding, true); -} - -void QQuickPaddedRectangle::resetLeftPadding() -{ - setLeftPadding(0, false); -} - -qreal QQuickPaddedRectangle::rightPadding() const -{ - return m_hasRightPadding ? m_rightPadding : m_padding; -} - -void QQuickPaddedRectangle::setRightPadding(qreal padding) -{ - setRightPadding(padding, true); -} - -void QQuickPaddedRectangle::resetRightPadding() -{ - setRightPadding(0, false); -} - -qreal QQuickPaddedRectangle::bottomPadding() const -{ - return m_hasBottomPadding ? m_bottomPadding : m_padding; -} - -void QQuickPaddedRectangle::setBottomPadding(qreal padding) -{ - setBottomPadding(padding, true); -} - -void QQuickPaddedRectangle::resetBottomPadding() -{ - setBottomPadding(0, false); -} - -void QQuickPaddedRectangle::setTopPadding(qreal padding, bool has) -{ - qreal oldPadding = topPadding(); - m_hasTopPadding = has; - m_topPadding = padding; - if (!qFuzzyCompare(oldPadding, padding)) { - update(); - emit topPaddingChanged(); - } -} - -void QQuickPaddedRectangle::setLeftPadding(qreal padding, bool has) -{ - qreal oldPadding = leftPadding(); - m_hasLeftPadding = has; - m_leftPadding = padding; - if (!qFuzzyCompare(oldPadding, padding)) { - update(); - emit leftPaddingChanged(); - } -} - -void QQuickPaddedRectangle::setRightPadding(qreal padding, bool has) -{ - qreal oldPadding = rightPadding(); - m_hasRightPadding = has; - m_rightPadding = padding; - if (!qFuzzyCompare(oldPadding, padding)) { - update(); - emit rightPaddingChanged(); - } -} - -void QQuickPaddedRectangle::setBottomPadding(qreal padding, bool has) -{ - qreal oldPadding = bottomPadding(); - m_hasBottomPadding = has; - m_bottomPadding = padding; - if (!qFuzzyCompare(oldPadding, padding)) { - update(); - emit bottomPaddingChanged(); - } -} - -QSGNode *QQuickPaddedRectangle::updatePaintNode(QSGNode *node, UpdatePaintNodeData *data) -{ - QSGTransformNode *transformNode = static_cast<QSGTransformNode *>(node); - if (!transformNode) - transformNode = new QSGTransformNode; - - QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(QQuickRectangle::updatePaintNode(transformNode->firstChild(), data)); - - if (rectNode) { - if (!transformNode->firstChild()) - transformNode->appendChildNode(rectNode); - - qreal top = topPadding(); - qreal left = leftPadding(); - qreal right = rightPadding(); - qreal bottom = bottomPadding(); - - if (!qFuzzyIsNull(top) || !qFuzzyIsNull(left) || !qFuzzyIsNull(right) || !qFuzzyIsNull(bottom)) { - QMatrix4x4 m; - m.translate(left, top); - transformNode->setMatrix(m); - - qreal w = qMax<qreal>(0.0, width() -left-right); - qreal h = qMax<qreal>(0.0, height() -top-bottom); - - rectNode->setRect(QRectF(0, 0, w, h)); - rectNode->update(); - } - } - return transformNode; -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qquickpaddedrectangle_p.h b/src/quickcontrols2impl/qquickpaddedrectangle_p.h deleted file mode 100644 index 27743270..00000000 --- a/src/quickcontrols2impl/qquickpaddedrectangle_p.h +++ /dev/null @@ -1,121 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPADDEDRECTANGLE_P_H -#define QQUICKPADDEDRECTANGLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquickrectangle_p.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickPaddedRectangle : public QQuickRectangle -{ - Q_OBJECT - Q_PROPERTY(qreal padding READ padding WRITE setPadding RESET resetPadding NOTIFY paddingChanged FINAL) - Q_PROPERTY(qreal topPadding READ topPadding WRITE setTopPadding RESET resetTopPadding NOTIFY topPaddingChanged FINAL) - Q_PROPERTY(qreal leftPadding READ leftPadding WRITE setLeftPadding RESET resetLeftPadding NOTIFY leftPaddingChanged FINAL) - Q_PROPERTY(qreal rightPadding READ rightPadding WRITE setRightPadding RESET resetRightPadding NOTIFY rightPaddingChanged FINAL) - Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding RESET resetBottomPadding NOTIFY bottomPaddingChanged FINAL) - QML_NAMED_ELEMENT(PaddedRectangle) - QML_ADDED_IN_VERSION(2, 0) - -public: - QQuickPaddedRectangle(QQuickItem *parent = nullptr); - - qreal padding() const; - void setPadding(qreal padding); - void resetPadding(); - - qreal topPadding() const; - void setTopPadding(qreal padding); - void resetTopPadding(); - - qreal leftPadding() const; - void setLeftPadding(qreal padding); - void resetLeftPadding(); - - qreal rightPadding() const; - void setRightPadding(qreal padding); - void resetRightPadding(); - - qreal bottomPadding() const; - void setBottomPadding(qreal padding); - void resetBottomPadding(); - -Q_SIGNALS: - void paddingChanged(); - void topPaddingChanged(); - void leftPaddingChanged(); - void rightPaddingChanged(); - void bottomPaddingChanged(); - -protected: - QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) override; - -private: - void setTopPadding(qreal padding, bool has); - void setLeftPadding(qreal padding, bool has); - void setRightPadding(qreal padding, bool has); - void setBottomPadding(qreal padding, bool has); - - qreal m_padding = 0; - qreal m_topPadding = 0; - qreal m_leftPadding = 0; - qreal m_rightPadding = 0; - qreal m_bottomPadding = 0; - bool m_hasTopPadding = false; - bool m_hasLeftPadding = false; - bool m_hasRightPadding = false; - bool m_hasBottomPadding = false; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPaddedRectangle) - -#endif // QQUICKPADDEDRECTANGLE_P_H diff --git a/src/quickcontrols2impl/qquickplaceholdertext.cpp b/src/quickcontrols2impl/qquickplaceholdertext.cpp deleted file mode 100644 index 2fe6be07..00000000 --- a/src/quickcontrols2impl/qquickplaceholdertext.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplaceholdertext_p.h" - -#include <QtQuick/private/qquicktext_p_p.h> -#include <QtQuick/private/qquicktextinput_p_p.h> -#include <QtQuick/private/qquicktextedit_p_p.h> - -QT_BEGIN_NAMESPACE - -QQuickPlaceholderText::QQuickPlaceholderText(QQuickItem *parent) : QQuickText(parent) -{ -} - -void QQuickPlaceholderText::componentComplete() -{ - QQuickText::componentComplete(); - connect(parentItem(), SIGNAL(effectiveHorizontalAlignmentChanged()), this, SLOT(updateAlignment())); - updateAlignment(); -} - -void QQuickPlaceholderText::updateAlignment() -{ - if (QQuickTextInput *input = qobject_cast<QQuickTextInput *>(parentItem())) { - if (QQuickTextInputPrivate::get(input)->hAlignImplicit) - resetHAlign(); - else - setHAlign(static_cast<HAlignment>(input->hAlign())); - } else if (QQuickTextEdit *edit = qobject_cast<QQuickTextEdit *>(parentItem())) { - if (QQuickTextEditPrivate::get(edit)->hAlignImplicit) - resetHAlign(); - else - setHAlign(static_cast<HAlignment>(edit->hAlign())); - } else { - resetHAlign(); - } -} - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qquickplaceholdertext_p.h b/src/quickcontrols2impl/qquickplaceholdertext_p.h deleted file mode 100644 index 0beccd72..00000000 --- a/src/quickcontrols2impl/qquickplaceholdertext_p.h +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLACEHOLDERTEXT_P_H -#define QQUICKPLACEHOLDERTEXT_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquicktext_p.h> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickPlaceholderText : public QQuickText -{ - Q_OBJECT - QML_NAMED_ELEMENT(PlaceholderText) - QML_ADDED_IN_VERSION(2, 2) - -public: - explicit QQuickPlaceholderText(QQuickItem *parent = nullptr); - -protected: - void componentComplete() override; - -private Q_SLOTS: - void updateAlignment(); -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPlaceholderText) - -#endif // QQUICKPLACEHOLDERTEXT_P_H diff --git a/src/quickcontrols2impl/qquicktumblerview.cpp b/src/quickcontrols2impl/qquicktumblerview.cpp deleted file mode 100644 index 911e2ae8..00000000 --- a/src/quickcontrols2impl/qquicktumblerview.cpp +++ /dev/null @@ -1,320 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktumblerview_p.h" - -#include <QtCore/qloggingcategory.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquicklistview_p.h> -#include <QtQuick/private/qquickpathview_p.h> - -#include <QtQuickTemplates2/private/qquicktumbler_p.h> -#include <QtQuickTemplates2/private/qquicktumbler_p_p.h> - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcTumblerView, "qt.quick.controls.tumblerview") - -QQuickTumblerView::QQuickTumblerView(QQuickItem *parent) : - QQuickItem(parent) -{ - // We don't call createView() here because we don't know what the wrap flag is set to - // yet, and we don't want to create a view that might never get used. -} - -QVariant QQuickTumblerView::model() const -{ - return m_model; -} - -void QQuickTumblerView::setModel(const QVariant &model) -{ - qCDebug(lcTumblerView) << "setting model to:" << model << "on" - << (m_pathView ? static_cast<QObject*>(m_pathView) : static_cast<QObject*>(m_listView)); - if (model == m_model) - return; - - m_model = model; - - if (m_pathView) { - m_pathView->setModel(m_model); - } else if (m_listView) { - // QQuickItemView::setModel() resets the current index, - // but if we're still creating the Tumbler, it should be maintained. - const int oldCurrentIndex = m_listView->currentIndex(); - m_listView->setModel(m_model); - if (!isComponentComplete()) - m_listView->setCurrentIndex(oldCurrentIndex); - } - - emit modelChanged(); -} - -QQmlComponent *QQuickTumblerView::delegate() const -{ - return m_delegate; -} - -void QQuickTumblerView::setDelegate(QQmlComponent *delegate) -{ - qCDebug(lcTumblerView) << "setting delegate to:" << delegate << "on" - << (m_pathView ? static_cast<QObject*>(m_pathView) : static_cast<QObject*>(m_listView)); - if (delegate == m_delegate) - return; - - m_delegate = delegate; - - if (m_pathView) - m_pathView->setDelegate(m_delegate); - else if (m_listView) - m_listView->setDelegate(m_delegate); - - emit delegateChanged(); -} - -QQuickPath *QQuickTumblerView::path() const -{ - return m_path; -} - -void QQuickTumblerView::setPath(QQuickPath *path) -{ - if (path == m_path) - return; - - m_path = path; - emit pathChanged(); -} - -void QQuickTumblerView::createView() -{ - Q_ASSERT(m_tumbler); - - // We create a view regardless of whether or not we know - // the count yet, because we rely on the view to tell us the count. - if (m_tumbler->wrap()) { - if (m_listView) { - // It's necessary to call deleteLater() rather than delete, - // as this code is most likely being run in rensponse to a signal - // emission somewhere in the list view's internals, so we need to - // wait until that has finished. - m_listView->deleteLater(); - QQml_setParent_noEvent(m_listView, nullptr); - // The auto tests pass with unparenting the list view alone, but - // just to be sure, we unset some other things as well. - m_listView->setParentItem(nullptr); - m_listView->setVisible(false); - m_listView->setModel(QVariant()); - m_listView = nullptr; - } - - if (!m_pathView) { - qCDebug(lcTumblerView) << "creating PathView"; - - m_pathView = new QQuickPathView; - QQmlEngine::setContextForObject(m_pathView, qmlContext(this)); - QQml_setParent_noEvent(m_pathView, this); - m_pathView->setParentItem(this); - m_pathView->setPath(m_path); - m_pathView->setDelegate(m_delegate); - m_pathView->setPreferredHighlightBegin(0.5); - m_pathView->setPreferredHighlightEnd(0.5); - m_pathView->setHighlightMoveDuration(1000); - m_pathView->setClip(true); - - // Give the view a size. - updateView(); - // Set the model. - updateModel(); - - qCDebug(lcTumblerView) << "finished creating PathView"; - } - } else { - if (m_pathView) { - m_pathView->deleteLater(); - QQml_setParent_noEvent(m_pathView, nullptr); - m_pathView->setParentItem(nullptr); - m_pathView->setVisible(false); - m_pathView->setModel(QVariant()); - m_pathView = nullptr; - } - - if (!m_listView) { - qCDebug(lcTumblerView) << "creating ListView"; - - m_listView = new QQuickListView; - QQmlEngine::setContextForObject(m_listView, qmlContext(this)); - QQml_setParent_noEvent(m_listView, this); - m_listView->setParentItem(this); - m_listView->setSnapMode(QQuickListView::SnapToItem); - m_listView->setClip(true); - - // Give the view a size. - updateView(); - // Set the model. - updateModel(); - - // Set these after the model is set so that the currentItem animation - // happens instantly on startup/after switching models. If we set them too early, - // the view animates any potential currentIndex change over one second, - // which we don't want when the contentItem has just been created. - m_listView->setDelegate(m_delegate); - // Set this after setting the delegate to avoid unexpected currentIndex changes: QTBUG-79150 - m_listView->setHighlightRangeMode(QQuickListView::StrictlyEnforceRange); - m_listView->setHighlightMoveDuration(1000); - - qCDebug(lcTumblerView) << "finished creating ListView"; - } - } -} - -// Called whenever the size or visibleItemCount changes. -void QQuickTumblerView::updateView() -{ - QQuickItem *theView = view(); - if (!theView) - return; - - theView->setSize(QSizeF(width(), height())); - - // Can be called in geometryChange when it might not have a parent item yet. - if (!m_tumbler) - return; - - // Set view-specific properties that have a dependency on the size, etc. - if (m_pathView) { - m_pathView->setPathItemCount(m_tumbler->visibleItemCount() + 1); - m_pathView->setDragMargin(width() / 2); - } else { - m_listView->setPreferredHighlightBegin(height() / 2 - (height() / m_tumbler->visibleItemCount() / 2)); - m_listView->setPreferredHighlightEnd(height() / 2 + (height() / m_tumbler->visibleItemCount() / 2)); - } -} - -void QQuickTumblerView::updateModel() -{ - if (m_pathView && !m_pathView->model().isValid() && m_model.isValid()) { - // QQuickPathView::setPathItemCount() resets the offset animation, - // so we just skip the animation while constructing the view. - const int oldHighlightMoveDuration = m_pathView->highlightMoveDuration(); - m_pathView->setHighlightMoveDuration(0); - - // Setting model can change the count, which can affect the wrap, which can cause - // the current view to be deleted before setModel() is finished, which causes a crash. - // Since QQuickTumbler can't know about QQuickTumblerView, we use its private API to - // inform it that it should delay setting wrap. - QQuickTumblerPrivate *tumblerPrivate = QQuickTumblerPrivate::get(m_tumbler); - tumblerPrivate->beginSetModel(); - m_pathView->setModel(m_model); - tumblerPrivate->endSetModel(); - - // The count-depends-on-wrap behavior could cause wrap to change after - // the call above, so we must check that we're still using a PathView. - if (m_pathView) - m_pathView->setHighlightMoveDuration(oldHighlightMoveDuration); - } else if (m_listView && !m_listView->model().isValid() && m_model.isValid()) { - const int currentIndex = m_tumbler->currentIndex(); - QQuickTumblerPrivate *tumblerPrivate = QQuickTumblerPrivate::get(m_tumbler); - - // setModel() causes QQuickTumblerPrivate::_q_onViewCountChanged() to - // be called, which calls QQuickTumbler::setCurrentIndex(), - // which results in QQuickItemViewPrivate::createHighlightItem() being - // called. When the highlight item is created, - // QQuickTumblerPrivate::itemChildAdded() is notified and - // QQuickTumblerPrivate::_q_updateItemHeights() is called, which causes - // a geometry change in the item and createHighlight() is called again. - // However, since the highlight item hadn't been assigned yet in the - // previous call frame, the "if (highlight) { delete highlight; }" - // check doesn't succeed, so the item is never deleted. - // - // To avoid this, we tell QQuickTumblerPrivate to ignore signals while - // setting the model, and manually call _q_onViewCountChanged() to - // ensure the correct sequence of calls happens (_q_onViewCountChanged() - // has to be within the ignoreSignals scope, because it also generates - // recursion otherwise). - tumblerPrivate->ignoreSignals = true; - m_listView->setModel(m_model); - m_listView->setCurrentIndex(currentIndex); - - tumblerPrivate->_q_onViewCountChanged(); - tumblerPrivate->ignoreSignals = false; - } -} - -void QQuickTumblerView::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - QQuickItem::geometryChange(newGeometry, oldGeometry); - updateView(); -} - -void QQuickTumblerView::componentComplete() -{ - QQuickItem::componentComplete(); - updateView(); -} - -void QQuickTumblerView::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - QQuickItem::itemChange(change, data); - - if (change == QQuickItem::ItemParentHasChanged && data.item) { - if (m_tumbler) - m_tumbler->disconnect(this); - - m_tumbler = qobject_cast<QQuickTumbler*>(parentItem()); - - if (m_tumbler) { - // We assume that the parentChanged() signal of the tumbler will be emitted before its wrap property is set... - connect(m_tumbler, &QQuickTumbler::wrapChanged, this, &QQuickTumblerView::createView); - connect(m_tumbler, &QQuickTumbler::visibleItemCountChanged, this, &QQuickTumblerView::updateView); - } - } -} - -QQuickItem *QQuickTumblerView::view() -{ - if (!m_tumbler) - return nullptr; - - if (m_tumbler->wrap()) - return m_pathView; - - return m_listView; -} - -QT_END_NAMESPACE - -#include "moc_qquicktumblerview_p.cpp" diff --git a/src/quickcontrols2impl/qquicktumblerview_p.h b/src/quickcontrols2impl/qquicktumblerview_p.h deleted file mode 100644 index 44ce5fa6..00000000 --- a/src/quickcontrols2impl/qquicktumblerview_p.h +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTUMBLERVIEW_P_H -#define QQUICKTUMBLERVIEW_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QQuickItem> -#include <QtQuickControls2Impl/private/qtquickcontrols2implglobal_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickListView; -class QQuickPath; -class QQuickPathView; - -class QQuickTumbler; - -class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickTumblerView : public QQuickItem -{ - Q_OBJECT - Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged) - Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged) - Q_PROPERTY(QQuickPath *path READ path WRITE setPath NOTIFY pathChanged) - QML_NAMED_ELEMENT(TumblerView) - QML_ADDED_IN_VERSION(2, 1) - -public: - QQuickTumblerView(QQuickItem *parent = nullptr); - - QVariant model() const; - void setModel(const QVariant &model); - - QQmlComponent *delegate() const; - void setDelegate(QQmlComponent *delegate); - - QQuickPath *path() const; - void setPath(QQuickPath *path); - -Q_SIGNALS: - void modelChanged(); - void delegateChanged(); - void pathChanged(); - -protected: - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - void componentComplete() override; - void itemChange(ItemChange change, const ItemChangeData &data) override; - -private: - QQuickItem *view(); - void createView(); - void updateView(); - void updateModel(); - - void wrapChange(); - - QQuickTumbler *m_tumbler = nullptr; - QVariant m_model; - QQmlComponent *m_delegate = nullptr; - QQuickPathView *m_pathView = nullptr; - QQuickListView *m_listView = nullptr; - QQuickPath *m_path = nullptr; -}; - -QT_END_NAMESPACE - -#endif // TUMBLERVIEW_H diff --git a/src/quickcontrols2impl/qtquickcontrols2foreign_p.h b/src/quickcontrols2impl/qtquickcontrols2foreign_p.h deleted file mode 100644 index 6285e43c..00000000 --- a/src/quickcontrols2impl/qtquickcontrols2foreign_p.h +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtQml/qqml.h> -#include <QtQuickTemplates2/private/qquickoverlay_p.h> -#include <QtQuickTemplates2/private/qquicksplitview_p.h> - -QT_BEGIN_NAMESPACE - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -// These are necessary in order to use C++ types in a file where only QtQuick.Controls has been imported. -// Control types like Button don't need this done for them, as each style module provides a Button type, -// and QtQuick.Controls is a sort of alias for the active style import. - -struct QQuickOverlayAttachedForeign -{ - Q_GADGET - QML_NAMED_ELEMENT(Overlay) - QML_FOREIGN(QQuickOverlay) - QML_UNCREATABLE("") - QML_ADDED_IN_VERSION(2, 3) -}; - -struct QQuickSplitHandleAttachedForeign -{ - Q_GADGET - QML_NAMED_ELEMENT(SplitHandle) - QML_FOREIGN(QQuickSplitHandleAttached) - QML_UNCREATABLE("") - QML_ADDED_IN_VERSION(2, 13) -}; - -QT_END_NAMESPACE diff --git a/src/quickcontrols2impl/qtquickcontrols2implglobal_p.h b/src/quickcontrols2impl/qtquickcontrols2implglobal_p.h deleted file mode 100644 index 1065aa78..00000000 --- a/src/quickcontrols2impl/qtquickcontrols2implglobal_p.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTQUICKCONTROLS2IMPLGLOBAL_H -#define QTQUICKCONTROLS2IMPLGLOBAL_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qglobal.h> - -#ifndef QT_STATIC -# if defined(QT_BUILD_QUICKCONTROLS2IMPL_LIB) -# define Q_QUICKCONTROLS2IMPL_EXPORT Q_DECL_EXPORT -# else -# define Q_QUICKCONTROLS2IMPL_EXPORT Q_DECL_IMPORT -# endif -#else -# define Q_QUICKCONTROLS2IMPL_EXPORT -#endif - -#define Q_QUICKCONTROLS2_PRIVATE_EXPORT Q_QUICKCONTROLS2IMPL_EXPORT - -#endif // QTQUICKCONTROLS2IMPLGLOBAL_H diff --git a/src/quickdialogs2/CMakeLists.txt b/src/quickdialogs2/CMakeLists.txt deleted file mode 100644 index 88ae9633..00000000 --- a/src/quickdialogs2/CMakeLists.txt +++ /dev/null @@ -1,3 +0,0 @@ -add_subdirectory(quickdialogs2utils) -add_subdirectory(quickdialogs2quickimpl) -add_subdirectory(quickdialogs2) diff --git a/src/quickdialogs2/quickdialogs2/CMakeLists.txt b/src/quickdialogs2/quickdialogs2/CMakeLists.txt deleted file mode 100644 index b73561b4..00000000 --- a/src/quickdialogs2/quickdialogs2/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -##################################################################### -## QuickDialogs2 Module: -##################################################################### - -qt_internal_add_qml_module(QuickDialogs2 - URI "QtQuick.Dialogs" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickDialogsPlugin - PLUGIN_TARGET qtquickdialogsplugin - SOURCES - qquickabstractdialog.cpp - qquickabstractdialog_p.h - qquickfiledialog.cpp - qquickfiledialog_p.h - qquickfontdialog.cpp - qquickfontdialog_p.h - qtquickdialogs2foreign_p.h - qtquickdialogs2global_p.h - DEFINES - QT_BUILD_QUICKDIALOGS2_LIB - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - INCLUDE_DIRECTORIES - ${CMAKE_CURRENT_SOURCE_DIR} - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickPrivate - Qt::QuickDialogs2UtilsPrivate - Qt::QuickDialogs2QuickImplPrivate -) - -qt_internal_add_docs(QuickDialogs2 - doc/qtquickdialogs.qdocconf -) diff --git a/src/quickdialogs2/quickdialogs2/doc/images/qtquickdialogs-filedialog-gtk.png b/src/quickdialogs2/quickdialogs2/doc/images/qtquickdialogs-filedialog-gtk.png Binary files differdeleted file mode 100644 index 9360d747..00000000 --- a/src/quickdialogs2/quickdialogs2/doc/images/qtquickdialogs-filedialog-gtk.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2/doc/images/qtquickdialogs-fontdialog-gtk.png b/src/quickdialogs2/quickdialogs2/doc/images/qtquickdialogs-fontdialog-gtk.png Binary files differdeleted file mode 100644 index 0c6217bd..00000000 --- a/src/quickdialogs2/quickdialogs2/doc/images/qtquickdialogs-fontdialog-gtk.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2/doc/qtquickdialogs.qdocconf b/src/quickdialogs2/quickdialogs2/doc/qtquickdialogs.qdocconf deleted file mode 100644 index 87296d6f..00000000 --- a/src/quickdialogs2/quickdialogs2/doc/qtquickdialogs.qdocconf +++ /dev/null @@ -1,41 +0,0 @@ -include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) -include($QT_INSTALL_DOCS/config/exampleurl-qtquickcontrols2.qdocconf) - -project = QtQuickDialogs -description = Qt Quick Dialogs Reference Documentation -version = $QT_VERSION - -qhp.projects = QtQuickDialogs - -qhp.QtQuickDialogs.file = qtquickdialogs.qhp -qhp.QtQuickDialogs.namespace = org.qt-project.qtquickdialogs.$QT_VERSION_TAG -qhp.QtQuickDialogs.virtualFolder = qtquickdialogs -qhp.QtQuickDialogs.indexTitle = Qt Quick Dialogs QML Types -qhp.QtQuickDialogs.indexRoot = - -qhp.QtQuickDialogs.filterAttributes = qtquickdialogs $QT_VERSION qtrefdoc -qhp.QtQuickDialogs.customFilters.Qt.name = QtQuickDialogs $QT_VERSION -qhp.QtQuickDialogs.customFilters.Qt.filterAttributes = qtquickdialogs $QT_VERSION - -qhp.QtQuickDialogs.subprojects = qmltypes -qhp.QtQuickDialogs.subprojects.qmltypes.title = QML Types -qhp.QtQuickDialogs.subprojects.qmltypes.indexTitle = Qt Quick Dialogs QML Types -qhp.QtQuickDialogs.subprojects.qmltypes.selectors = qmlclass -qhp.QtQuickDialogs.subprojects.qmltypes.sortPages = true - -depends = qtcore qtgui qtdoc qtqml qtquick qtquickcontrols - -# This module has no documented C++ types, clear the module header -moduleheader = - -headerdirs += .. -sourcedirs += .. \ - src - -imagedirs += images - -navigation.landingpage = "Qt Quick Dialogs QML Types" -navigation.landingtitle = "Qt Quick Dialogs" -navigation.qmltypespage = "Qt Quick Dialogs QML Types" - -tagfile = qtquickdialogs.tags diff --git a/src/quickdialogs2/quickdialogs2/doc/src/includes/fallback.qdocinc b/src/quickdialogs2/quickdialogs2/doc/src/includes/fallback.qdocinc deleted file mode 100644 index f3a4a180..00000000 --- a/src/quickdialogs2/quickdialogs2/doc/src/includes/fallback.qdocinc +++ /dev/null @@ -1 +0,0 @@ -Qt Quick Dialogs uses a Qt Quick implementation as a fallback on platforms that do not have a native implementation available. diff --git a/src/quickdialogs2/quickdialogs2/doc/src/qtquickdialogs-module.qdoc b/src/quickdialogs2/quickdialogs2/doc/src/qtquickdialogs-module.qdoc deleted file mode 100644 index 4ee8b8b1..00000000 --- a/src/quickdialogs2/quickdialogs2/doc/src/qtquickdialogs-module.qdoc +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \qmlmodule QtQuick.Dialogs - \title Qt Quick Dialogs QML Types - \brief Provides native dialogs with a Qt Quick fallback on platforms that - do not provide a native implementation. - \since 6.2 - - \include includes/fallback.qdocinc - - To use types in this module, use the following import statement: - - \badcode - import QtQuick.Dialogs - \endcode - - \section1 QML Types -*/ diff --git a/src/quickdialogs2/quickdialogs2/qquickabstractdialog.cpp b/src/quickdialogs2/quickdialogs2/qquickabstractdialog.cpp deleted file mode 100644 index 262e2ee3..00000000 --- a/src/quickdialogs2/quickdialogs2/qquickabstractdialog.cpp +++ /dev/null @@ -1,454 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickabstractdialog_p.h" - -#include <QtCore/qloggingcategory.h> -#include <QtGui/private/qguiapplication_p.h> -#include <QtQuick/qquickitem.h> -#include <QtQuick/qquickwindow.h> -#include <QtQuickDialogs2QuickImpl/private/qquickdialogimplfactory_p.h> - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcDialogs, "qt.quick.dialogs") - -/*! - \internal - - A dialog that can be backed by different implementations. - - Each dialog has a handle to QPlatformDialogHelper, which is created in create(). - The helper acts as an intermediary between the QML-facing dialog object - and the native/widget/quick implementation: - - +------------+ +------------------------------------+ +-------------------------------------+ - | | | | | | - | FileDialog |----->| Native/Widget/Quick QPlatformFile- |----->| Native OS dialog/QQuickFileDialog/ | - | | | DialogHelper subclass | | QQuickFileDialogImpl | - | | | | | | - +------------+ +------------------------------------+ +-------------------------------------+ -*/ - -/*! - \qmltype Dialog - \inherits QtObject -//! \instantiates QQuickAbstractDialog - \inqmlmodule QtQuick.Dialogs - \since 6.2 - \brief The base class of native dialogs. - - The Dialog type provides common QML API for native platform dialogs. - - To show a native dialog, construct an instance of one of the concrete - Dialog implementations, set the desired properties, and call \l open(). - Dialog emits \l accepted() or \l rejected() when the user is done with - the dialog. -*/ - -/*! - \qmlsignal void QtQuick.Dialogs::Dialog::accepted() - - This signal is emitted when the dialog has been accepted either - interactively or by calling \l accept(). - - \note This signal is \e not emitted when closing the dialog with \l close(). - - \sa rejected() -*/ - -/*! - \qmlsignal void QtQuick.Dialogs::Dialog::rejected() - - This signal is emitted when the dialog has been rejected either - interactively or by calling \l reject(). - - \note This signal is \e not emitted when closing the dialog with \l close(). - - \sa accepted() -*/ - -Q_DECLARE_LOGGING_CATEGORY(lcDialogs) - -QQuickAbstractDialog::QQuickAbstractDialog(QPlatformTheme::DialogType type, QObject *parent) - : QObject(parent), - m_type(type) -{ -} - -QQuickAbstractDialog::~QQuickAbstractDialog() -{ - destroy(); -} - -QPlatformDialogHelper *QQuickAbstractDialog::handle() const -{ - return m_handle.get(); -} - -/*! - \qmldefault - \qmlproperty list<Object> QtQuick.Dialogs::Dialog::data - - This default property holds the list of all objects declared as children of - the dialog. -*/ -QQmlListProperty<QObject> QQuickAbstractDialog::data() -{ - return QQmlListProperty<QObject>(this, &m_data); -} - -/*! - \qmlproperty Window QtQuick.Dialogs::Dialog::parentWindow - - This property holds the parent window of the dialog. - - Unless explicitly set, the window is automatically resolved by iterating - the QML parent objects until a \l Window or an \l Item that has a window - is found. -*/ -QWindow *QQuickAbstractDialog::parentWindow() const -{ - return m_parentWindow; -} - -void QQuickAbstractDialog::setParentWindow(QWindow *window) -{ - qCDebug(lcDialogs) << "set parent window to" << window; - if (m_parentWindow == window) - return; - - m_parentWindow = window; - emit parentWindowChanged(); -} - -/*! - \qmlproperty string QtQuick.Dialogs::Dialog::title - - This property holds the title of the dialog. -*/ -QString QQuickAbstractDialog::title() const -{ - return m_title; -} - -void QQuickAbstractDialog::setTitle(const QString &title) -{ - if (m_title == title) - return; - - m_title = title; - emit titleChanged(); -} - -/*! - \qmlproperty Qt::WindowFlags QtQuick.Dialogs::Dialog::flags - - This property holds the window flags of the dialog. The default value is \c Qt.Dialog. -*/ -Qt::WindowFlags QQuickAbstractDialog::flags() const -{ - return m_flags; -} - -void QQuickAbstractDialog::setFlags(Qt::WindowFlags flags) -{ - if (m_flags == flags) - return; - - m_flags = flags; - emit flagsChanged(); -} - -/*! - \qmlproperty Qt::WindowModality QtQuick.Dialogs::Dialog::modality - - This property holds the modality of the dialog. The default value is \c Qt.WindowModal. - - Available values: - \value Qt.NonModal The dialog is not modal and does not block input to other windows. - \value Qt.WindowModal The dialog is modal to a single window hierarchy and blocks input to its parent window, all grandparent windows, and all siblings of its parent and grandparent windows. - \value Qt.ApplicationModal The dialog is modal to the application and blocks input to all windows. -*/ -Qt::WindowModality QQuickAbstractDialog::modality() const -{ - return m_modality; -} - -void QQuickAbstractDialog::setModality(Qt::WindowModality modality) -{ - if (m_modality == modality) - return; - - m_modality = modality; - emit modalityChanged(); -} - -/*! - \qmlproperty bool QtQuick.Dialogs::Dialog::visible - - This property holds the visibility of the dialog. The default value is \c false. - - \sa open(), close() -*/ -bool QQuickAbstractDialog::isVisible() const -{ - return m_handle && m_visible; -} - -void QQuickAbstractDialog::setVisible(bool visible) -{ - qCDebug(lcDialogs) << "setVisible called with" << visible; - - if (visible) { - // Don't try to open before component completion, as we won't have a window yet, - // and open() sets m_visible to false if it fails. - if (!m_complete) - m_visibleRequested = true; - else - open(); - } else { - close(); - } -} - -/*! - \qmlproperty StandardCode QtQuick.Dialogs::Dialog::result - - This property holds the result code. - - Standard result codes: - \value Dialog.Accepted - \value Dialog.Rejected - - \note MessageDialog sets the result to the value of the clicked standard - button instead of using the standard result codes. -*/ -QQuickAbstractDialog::StandardCode QQuickAbstractDialog::result() const -{ - return m_result; -} - -void QQuickAbstractDialog::setResult(StandardCode result) -{ - if (m_result == result) - return; - - m_result = result; - emit resultChanged(); -} - -/*! - \qmlmethod void QtQuick.Dialogs::Dialog::open() - - Opens the dialog. - - \sa visible, close() -*/ -void QQuickAbstractDialog::open() -{ - qCDebug(lcDialogs) << "open called"; - if (m_visible || !create()) - return; - - onShow(m_handle.get()); - m_visible = m_handle->show(m_flags, m_modality, m_parentWindow); - if (m_visible) - emit visibleChanged(); -} - -/*! - \qmlmethod void QtQuick.Dialogs::Dialog::close() - - Closes the dialog. - - \sa visible, open() -*/ -void QQuickAbstractDialog::close() -{ - if (!m_handle || !m_visible) - return; - - onHide(m_handle.get()); - m_handle->hide(); - m_visible = false; - emit visibleChanged(); -} - -/*! - \qmlmethod void QtQuick.Dialogs::Dialog::accept() - - Closes the dialog and emits the \l accepted() signal. - - \sa reject() -*/ -void QQuickAbstractDialog::accept() -{ - done(Accepted); -} - -/*! - \qmlmethod void QtQuick.Dialogs::Dialog::reject() - - Closes the dialog and emits the \l rejected() signal. - - \sa accept() -*/ -void QQuickAbstractDialog::reject() -{ - done(Rejected); -} - -/*! - \qmlmethod void QtQuick.Dialogs::Dialog::done(StandardCode result) - - Closes the dialog and sets the \a result. - - \sa accept(), reject(), result -*/ -void QQuickAbstractDialog::done(StandardCode result) -{ - close(); - setResult(result); - - if (result == Accepted) - emit accepted(); - else if (result == Rejected) - emit rejected(); -} - -void QQuickAbstractDialog::classBegin() -{ -} - -void QQuickAbstractDialog::componentComplete() -{ - qCDebug(lcDialogs) << "componentComplete"; - m_complete = true; - - if (!m_parentWindow) { - qCDebug(lcDialogs) << "- no parent window; searching for one"; - setParentWindow(findParentWindow()); - } - - if (m_visibleRequested) { - qCDebug(lcDialogs) << "visible was bound to true before component completion; opening dialog"; - open(); - m_visibleRequested = false; - } -} - -static const char *qmlTypeName(const QObject *object) -{ - return object->metaObject()->className() + qstrlen("QQuickPlatform"); -} - -bool QQuickAbstractDialog::create() -{ - qCDebug(lcDialogs) << qmlTypeName(this) << "attempting to create dialog backend of type" - << m_type << "with parent window" << m_parentWindow; - if (m_handle) - return m_handle.get(); - - qCDebug(lcDialogs) << "- attempting to create a native dialog"; - if (useNativeDialog()) - m_handle.reset(QGuiApplicationPrivate::platformTheme()->createPlatformDialogHelper(m_type)); - - if (!m_handle) { - qCDebug(lcDialogs) << "- attempting to create a quick dialog"; - m_handle.reset(QQuickDialogImplFactory::createPlatformDialogHelper(m_type, this)); - } - - qCDebug(lcDialogs) << qmlTypeName(this) << "created ->" << m_handle.get(); - if (m_handle) { - onCreate(m_handle.get()); - connect(m_handle.get(), &QPlatformDialogHelper::accept, this, &QQuickAbstractDialog::accept); - connect(m_handle.get(), &QPlatformDialogHelper::reject, this, &QQuickAbstractDialog::reject); - } - return m_handle.get(); -} - -void QQuickAbstractDialog::destroy() -{ - m_handle.reset(); -} - -bool QQuickAbstractDialog::useNativeDialog() const -{ - if (QCoreApplication::testAttribute(Qt::AA_DontUseNativeDialogs)) { - qCDebug(lcDialogs) << " - Qt::AA_DontUseNativeDialogs was set; not using native dialog"; - return false; - } - - if (!QGuiApplicationPrivate::platformTheme()->usePlatformNativeDialog(m_type)) { - qCDebug(lcDialogs) << " - the platform theme told us a native dialog isn't available; not using native dialog"; - return false; - } - - return true; -} - -void QQuickAbstractDialog::onCreate(QPlatformDialogHelper *dialog) -{ - Q_UNUSED(dialog); -} - -void QQuickAbstractDialog::onShow(QPlatformDialogHelper *dialog) -{ - Q_UNUSED(dialog); -} - -void QQuickAbstractDialog::onHide(QPlatformDialogHelper *dialog) -{ - Q_UNUSED(dialog); -} - -QWindow *QQuickAbstractDialog::findParentWindow() const -{ - QObject *obj = parent(); - while (obj) { - QWindow *window = qobject_cast<QWindow *>(obj); - if (window) - return window; - QQuickItem *item = qobject_cast<QQuickItem *>(obj); - if (item && item->window()) - return item->window(); - obj = obj->parent(); - } - return nullptr; -} - -QT_END_NAMESPACE diff --git a/src/quickdialogs2/quickdialogs2/qquickabstractdialog_p.h b/src/quickdialogs2/quickdialogs2/qquickabstractdialog_p.h deleted file mode 100644 index 07e9ffbf..00000000 --- a/src/quickdialogs2/quickdialogs2/qquickabstractdialog_p.h +++ /dev/null @@ -1,161 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKABSTRACTDIALOG_P_H -#define QQUICKABSTRACTDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <memory> - -#include <QtCore/qobject.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtGui/qpa/qplatformdialoghelper.h> -#include <QtQml/qqmlparserstatus.h> -#include <QtQml/qqmllist.h> -#include <QtQml/qqml.h> - -#include "qtquickdialogs2global_p.h" - -QT_BEGIN_NAMESPACE - -class QWindow; -class QPlatformDialogHelper; - -class Q_QUICKDIALOGS2_PRIVATE_EXPORT QQuickAbstractDialog : public QObject, public QQmlParserStatus -{ - Q_OBJECT - Q_INTERFACES(QQmlParserStatus) - Q_PROPERTY(QQmlListProperty<QObject> data READ data FINAL) - Q_PROPERTY(QWindow *parentWindow READ parentWindow WRITE setParentWindow NOTIFY parentWindowChanged FINAL) - Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL) - Q_PROPERTY(Qt::WindowFlags flags READ flags WRITE setFlags NOTIFY flagsChanged FINAL) - Q_PROPERTY(Qt::WindowModality modality READ modality WRITE setModality NOTIFY modalityChanged FINAL) - Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) - Q_PROPERTY(StandardCode result READ result WRITE setResult NOTIFY resultChanged FINAL) - Q_CLASSINFO("DefaultProperty", "data") - Q_MOC_INCLUDE(<QtGui/qwindow.h>) - QML_ANONYMOUS - QML_ADDED_IN_VERSION(6, 2) - -public: - explicit QQuickAbstractDialog(QPlatformTheme::DialogType type, QObject *parent = nullptr); - ~QQuickAbstractDialog(); - - QPlatformDialogHelper *handle() const; - - QQmlListProperty<QObject> data(); - - QWindow *parentWindow() const; - void setParentWindow(QWindow *window); - - QString title() const; - void setTitle(const QString &title); - - Qt::WindowFlags flags() const; - void setFlags(Qt::WindowFlags flags); - - Qt::WindowModality modality() const; - void setModality(Qt::WindowModality modality); - - bool isVisible() const; - void setVisible(bool visible); - - enum StandardCode { Rejected, Accepted }; - Q_ENUM(StandardCode) - - StandardCode result() const; - void setResult(StandardCode result); - -public Q_SLOTS: - void open(); - void close(); - virtual void accept(); - virtual void reject(); - virtual void done(StandardCode result); - -Q_SIGNALS: - void accepted(); - void rejected(); - void parentWindowChanged(); - void titleChanged(); - void flagsChanged(); - void modalityChanged(); - void visibleChanged(); - void resultChanged(); - -protected: - void classBegin() override; - void componentComplete() override; - - bool create(); - void destroy(); - - virtual bool useNativeDialog() const; - virtual void onCreate(QPlatformDialogHelper *dialog); - virtual void onShow(QPlatformDialogHelper *dialog); - virtual void onHide(QPlatformDialogHelper *dialog); - - QWindow *findParentWindow() const; - -private: - bool m_visibleRequested = false; - bool m_visible = false; - bool m_complete = false; - StandardCode m_result = Rejected; - QWindow *m_parentWindow = nullptr; - QString m_title; - Qt::WindowFlags m_flags = Qt::Dialog; - Qt::WindowModality m_modality = Qt::WindowModal; - QPlatformTheme::DialogType m_type; - QList<QObject *> m_data; - std::unique_ptr<QPlatformDialogHelper> m_handle; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickAbstractDialog) - -#endif // QQUICKABSTRACTDIALOG_P_H diff --git a/src/quickdialogs2/quickdialogs2/qquickfiledialog.cpp b/src/quickdialogs2/quickdialogs2/qquickfiledialog.cpp deleted file mode 100644 index a8df0bd6..00000000 --- a/src/quickdialogs2/quickdialogs2/qquickfiledialog.cpp +++ /dev/null @@ -1,615 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickfiledialog_p.h" - -#include <QtCore/qlist.h> -#include <QtCore/qloggingcategory.h> -#include <QtQml/qqmlfile.h> - -#include <QtQuickDialogs2Utils/private/qquickfilenamefilter_p.h> - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcFileDialog, "qt.quick.dialogs.filedialog") - -/*! - \qmltype FileDialog - \inherits Dialog -//! \instantiates QQuickFileDialog - \inqmlmodule QtQuick.Dialogs - \since 6.2 - \brief A file dialog. - - The FileDialog type provides a QML API for file dialogs. - - \image qtquickdialogs-filedialog-gtk.png - - To show a file dialog, construct an instance of FileDialog, set the - desired properties, and call \l {Dialog::}{open()}. The \l currentFile - or \l currentFiles properties can be used to determine the currently - selected file(s) in the dialog. The \l selectedFile and \l selectedFiles - properties are updated only after the final selection has been made by - accepting the dialog. - - \code - MenuItem { - text: "Open..." - onTriggered: fileDialog.open() - } - - FileDialog { - id: fileDialog - currentFile: document.source - folder: StandardPaths.writableLocation(StandardPaths.DocumentsLocation) - } - - MyDocument { - id: document - source: fileDialog.file - } - \endcode - - \section2 Availability - - A native platform file dialog is currently available on the following platforms: - - \list - \li iOS - \li Linux (when running with the GTK+ platform theme) - \li macOS - \li Windows - \endlist - - \include includes/fallback.qdocinc - - //! \sa FolderDialog, StandardPaths -*/ - -Q_DECLARE_LOGGING_CATEGORY(lcDialogs) - -QQuickFileDialog::QQuickFileDialog(QObject *parent) - : QQuickAbstractDialog(QPlatformTheme::FileDialog, parent), - m_fileMode(OpenFile), - m_options(QFileDialogOptions::create()), - m_selectedNameFilter(nullptr) -{ - m_options->setFileMode(QFileDialogOptions::ExistingFile); - m_options->setAcceptMode(QFileDialogOptions::AcceptOpen); -} - -/*! - \qmlproperty enumeration QtQuick.Dialogs::FileDialog::fileMode - - This property holds the mode of the dialog. - - Available values: - \value FileDialog.OpenFile The dialog is used to select an existing file (default). - \value FileDialog.OpenFiles The dialog is used to select multiple existing files. - \value FileDialog.SaveFile The dialog is used to select any file. The file does not have to exist. -*/ -QQuickFileDialog::FileMode QQuickFileDialog::fileMode() const -{ - return m_fileMode; -} - -void QQuickFileDialog::setFileMode(FileMode mode) -{ - qCDebug(lcFileDialog) << "setFileMode called with" << mode; - if (mode == m_fileMode) - return; - - switch (mode) { - case OpenFile: - m_options->setFileMode(QFileDialogOptions::ExistingFile); - m_options->setAcceptMode(QFileDialogOptions::AcceptOpen); - break; - case OpenFiles: - m_options->setFileMode(QFileDialogOptions::ExistingFiles); - m_options->setAcceptMode(QFileDialogOptions::AcceptOpen); - break; - case SaveFile: - m_options->setFileMode(QFileDialogOptions::AnyFile); - m_options->setAcceptMode(QFileDialogOptions::AcceptSave); - break; - default: - break; - } - - m_fileMode = mode; - emit fileModeChanged(); -} - -/*! - \qmlproperty url QtQuick.Dialogs::FileDialog::selectedFile - \readonly - - This property holds the final accepted file. - - If there are multiple selected files, this property refers to the first - file. - - Unlike the \l currentFile property, the \c selectedFile property is not - updated while the user is selecting files in the dialog, but only after the - final selection has been made. That is, when the user has clicked - \uicontrol OK to accept a file. Alternatively, the - \l {Dialog::}{accepted()} signal can be handled to get the final selection. - - \sa selectedFiles, currentFile, {Dialog::}{accepted()}, currentFolder -*/ -QUrl QQuickFileDialog::selectedFile() const -{ - return addDefaultSuffix(m_selectedFiles.value(0)); -} - -/*! - \qmlproperty list<url> QtQuick.Dialogs::FileDialog::selectedFiles - - This property holds the final accepted files. - - Unlike the \l currentFiles property, the \c selectedFiles property is not - updated while the user is selecting files in the dialog, but only after the - final selection has been made. That is, when the user has clicked - \uicontrol OK to accept files. Alternatively, the \l {Dialog::}{accepted()} - signal can be handled to get the final selection. - - \sa currentFiles, {Dialog::}{accepted()}, currentFolder -*/ -QList<QUrl> QQuickFileDialog::selectedFiles() const -{ - return addDefaultSuffixes(m_selectedFiles); -} - -void QQuickFileDialog::setSelectedFiles(const QList<QUrl> &selectedFiles) -{ - if (m_selectedFiles == selectedFiles) - return; - - bool firstChanged = m_selectedFiles.value(0) != selectedFiles.value(0); - m_selectedFiles = selectedFiles; - if (firstChanged) - emit selectedFileChanged(); - emit selectedFilesChanged(); -} - -/*! - \qmlproperty url QtQuick.Dialogs::FileDialog::currentFile - - This property holds the currently selected file in the dialog. - - Unlike the \l selectedFile property, the \c currentFile property is updated - while the user is selecting files in the dialog, even before the final - selection has been made. - - \sa selectedFile, currentFiles, currentFolder -*/ -QUrl QQuickFileDialog::currentFile() const -{ - return currentFiles().value(0); -} - -void QQuickFileDialog::setCurrentFile(const QUrl &file) -{ - setCurrentFiles(QList<QUrl>() << file); -} - -/*! - \qmlproperty list<url> QtQuick.Dialogs::FileDialog::currentFiles - - This property holds the currently selected files in the dialog. - - Unlike the \l selectedFiles property, the \c currentFiles property is - updated while the user is selecting files in the dialog, even before the - final selection has been made. - - \sa selectedFiles, currentFile, currentFolder -*/ -QList<QUrl> QQuickFileDialog::currentFiles() const -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) - return fileDialog->selectedFiles(); - return m_options->initiallySelectedFiles(); -} - -void QQuickFileDialog::setCurrentFiles(const QList<QUrl> ¤tFiles) -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) { - for (const QUrl &file : currentFiles) - fileDialog->selectFile(file); - } - m_options->setInitiallySelectedFiles(currentFiles); -} - -/*! - \qmlproperty url QtQuick.Dialogs::FileDialog::currentFolder - - This property holds the folder where files are selected. It can be set to - control the initial directory that is shown when the dialog is opened. - -//! TODO: Remove \omit once FolderDialog is available -\omit - For selecting a folder, use FolderDialog instead. - - \sa FolderDialog -\endomit -*/ -QUrl QQuickFileDialog::currentFolder() const -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) - return fileDialog->directory(); - - // If we're not using a native file dialog and the folder is invalid, - // return the current directory. - if (!m_options->initialDirectory().isValid()) - return QUrl::fromLocalFile(QDir::currentPath()); - - return m_options->initialDirectory(); -} - -void QQuickFileDialog::setCurrentFolder(const QUrl ¤tFolder) -{ - qCDebug(lcFileDialog) << "setCurrentFolder called with" << currentFolder; - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) - fileDialog->setDirectory(currentFolder); - m_options->setInitialDirectory(currentFolder); -} - -/*! - \qmlproperty flags QtQuick.Dialogs::FileDialog::options - - This property holds the various options that affect the look and feel of the dialog. - - By default, all options are disabled. - - Options should be set before showing the dialog. Setting them while the dialog is - visible is not guaranteed to have an immediate effect on the dialog (depending on - the option and on the platform). - - Available options: - \value FileDialog.DontResolveSymlinks Don't resolve symlinks in the file dialog. By default symlinks are resolved. - \value FileDialog.DontConfirmOverwrite Don't ask for confirmation if an existing file is selected. By default confirmation is requested. - \value FileDialog.ReadOnly Indicates that the dialog doesn't allow creating directories. - \value FileDialog.HideNameFilterDetails Indicates if the file name filter details are hidden or not. -*/ -QFileDialogOptions::FileDialogOptions QQuickFileDialog::options() const -{ - return m_options->options(); -} - -void QQuickFileDialog::setOptions(QFileDialogOptions::FileDialogOptions options) -{ - if (options == m_options->options()) - return; - - m_options->setOptions(options); - emit optionsChanged(); -} - -void QQuickFileDialog::resetOptions() -{ - setOptions({}); -} - -/*! - \qmlproperty list<string> QtQuick.Dialogs::FileDialog::nameFilters - - This property holds the filters that restrict the types of files that - can be selected. - - \code - FileDialog { - nameFilters: ["Text files (*.txt)", "HTML files (*.html *.htm)"] - } - \endcode - - Different platforms may restrict the files that can be selected in - different ways. For example, macOS will disable file entries that do not - match the filters, whereas Windows will hide them. - - \note \b{*.*} is not a portable filter, because the historical assumption - that the file extension determines the file type is not consistent on every - operating system. It is possible to have a file with no dot in its name (for - example, \c Makefile). In a native Windows file dialog, \b{*.*} will match - such files, while in other types of file dialogs it may not. So it is better - to use \b{*} if you mean to select any file. - - \sa selectedNameFilter -*/ -QStringList QQuickFileDialog::nameFilters() const -{ - return m_options->nameFilters(); -} - -void QQuickFileDialog::setNameFilters(const QStringList &filters) -{ - qCDebug(lcFileDialog).nospace() << "setNameFilters called with " << filters - << " (old filters were: " << m_options->nameFilters() << ")"; - if (filters == m_options->nameFilters()) - return; - - m_options->setNameFilters(filters); - if (m_selectedNameFilter) { - int index = m_selectedNameFilter->index(); - if (index < 0 || index >= filters.count()) - index = 0; - m_selectedNameFilter->update(filters.value(index)); - } - emit nameFiltersChanged(); -} - -void QQuickFileDialog::resetNameFilters() -{ - setNameFilters(QStringList()); -} - -/*! - \qmlproperty int QtQuick.Dialogs::FileDialog::selectedNameFilter.index - \qmlproperty string QtQuick.Dialogs::FileDialog::selectedNameFilter.name - \qmlproperty list<string> QtQuick.Dialogs::FileDialog::selectedNameFilter.extensions - \qmlproperty list<string> QtQuick.Dialogs::FileDialog::selectedNameFilter.globs - - These properties hold the currently selected name filter. - - \table - \header - \li Name - \li Description - \row - \li \b index : int - \li This property determines which \l {nameFilters}{name filter} is selected. - The specified filter is selected when the dialog is opened. The value is - updated when the user selects another filter. - \row - \li [read-only] \b name : string - \li This property holds the name of the selected filter. In the - example below, the name of the first filter is \c {"Text files"} - and the second is \c {"HTML files"}. - \row - \li [read-only] \b extensions : list<string> - \li This property holds the list of extensions of the selected filter. - In the example below, the list of extensions of the first filter is - \c {["txt"]} and the second is \c {["html", "htm"]}. - \row - \li [read-only] \b globs : list<string> - \li This property holds the list of globs of the selected filter. - In the example below, the list of globs of the first filter is - \c {["*.txt"]} and the second is \c {["*.html", "*.htm"]}. - - This property is useful in conjunction with \l {FolderListModel}'s - \l {FolderListModel::}{nameFilters} property, for example. - \endtable - - \code - FileDialog { - id: fileDialog - selectedNameFilter.index: 1 - nameFilters: ["Text files (*.txt)", "HTML files (*.html *.htm)"] - } - - MyDocument { - id: document - fileType: fileDialog.selectedNameFilter.extensions[0] - } - \endcode - - \sa nameFilters -*/ -QQuickFileNameFilter *QQuickFileDialog::selectedNameFilter() const -{ - if (!m_selectedNameFilter) { - QQuickFileDialog *that = const_cast<QQuickFileDialog *>(this); - m_selectedNameFilter = new QQuickFileNameFilter(that); - m_selectedNameFilter->setOptions(m_options); - } - return m_selectedNameFilter; -} - -/*! - \qmlproperty string QtQuick.Dialogs::FileDialog::defaultSuffix - - This property holds a suffix that is added to selected files that have - no suffix specified. The suffix is typically used to indicate the file - type (e.g. "txt" indicates a text file). - - If the first character is a dot ('.'), it is removed. -*/ -QString QQuickFileDialog::defaultSuffix() const -{ - return m_options->defaultSuffix(); -} - -void QQuickFileDialog::setDefaultSuffix(const QString &suffix) -{ - if (suffix == m_options->defaultSuffix()) - return; - - m_options->setDefaultSuffix(suffix); - emit defaultSuffixChanged(); -} - -void QQuickFileDialog::resetDefaultSuffix() -{ - setDefaultSuffix(QString()); -} - -/*! - \qmlproperty string QtQuick.Dialogs::FileDialog::acceptLabel - - This property holds the label text shown on the button that accepts the dialog. - - When set to an empty string, the default label of the underlying platform is used. - The default label is typically \uicontrol Open or \uicontrol Save depending on which - \l fileMode the dialog is used in. - - The default value is an empty string. - - \sa rejectLabel -*/ -QString QQuickFileDialog::acceptLabel() const -{ - return m_options->labelText(QFileDialogOptions::Accept); -} - -void QQuickFileDialog::setAcceptLabel(const QString &label) -{ - if (label == m_options->labelText(QFileDialogOptions::Accept)) - return; - - m_options->setLabelText(QFileDialogOptions::Accept, label); - emit acceptLabelChanged(); -} - -void QQuickFileDialog::resetAcceptLabel() -{ - setAcceptLabel(QString()); -} - -/*! - \qmlproperty string QtQuick.Dialogs::FileDialog::rejectLabel - - This property holds the label text shown on the button that rejects the dialog. - - When set to an empty string, the default label of the underlying platform is used. - The default label is typically \uicontrol Cancel. - - The default value is an empty string. - - \sa acceptLabel -*/ -QString QQuickFileDialog::rejectLabel() const -{ - return m_options->labelText(QFileDialogOptions::Reject); -} - -void QQuickFileDialog::setRejectLabel(const QString &label) -{ - if (label == m_options->labelText(QFileDialogOptions::Reject)) - return; - - m_options->setLabelText(QFileDialogOptions::Reject, label); - emit rejectLabelChanged(); -} - -void QQuickFileDialog::resetRejectLabel() -{ - setRejectLabel(QString()); -} - -bool QQuickFileDialog::useNativeDialog() const -{ - if (!QQuickAbstractDialog::useNativeDialog()) - return false; - - if (m_options->testOption(QFileDialogOptions::DontUseNativeDialog)) { - qCDebug(lcDialogs) << " - the FileDialog was told not to use a native dialog; not using native dialog"; - return false; - } - - return true; -} - -void QQuickFileDialog::onCreate(QPlatformDialogHelper *dialog) -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) { - connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, this, &QQuickFileDialog::currentFileChanged); - connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, this, &QQuickFileDialog::currentFilesChanged); - connect(fileDialog, &QPlatformFileDialogHelper::directoryEntered, this, &QQuickFileDialog::currentFolderChanged); - fileDialog->setOptions(m_options); - } -} - -void QQuickFileDialog::onShow(QPlatformDialogHelper *dialog) -{ - m_options->setWindowTitle(title()); - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) { - // Ensure that a name filter is always selected. - int index = selectedNameFilter()->index(); - if (index == -1) - index = 0; - const QString filter = m_options->nameFilters().value(index); - m_options->setInitiallySelectedNameFilter(filter); - - fileDialog->setOptions(m_options); // setOptions only assigns a member and isn't virtual - - connect(fileDialog, &QPlatformFileDialogHelper::filterSelected, m_selectedNameFilter, &QQuickFileNameFilter::update); - fileDialog->selectNameFilter(filter); - - const QUrl initialDir = m_options->initialDirectory(); - // If it's not valid, or it's a file and not a directory, we shouldn't set it. - if (m_firstShow && initialDir.isValid() && QDir(QQmlFile::urlToLocalFileOrQrc(initialDir)).exists()) - fileDialog->setDirectory(m_options->initialDirectory()); - } - if (m_firstShow) - m_firstShow = false; -} - -void QQuickFileDialog::onHide(QPlatformDialogHelper *dialog) -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) { - if (m_selectedNameFilter) - disconnect(fileDialog, &QPlatformFileDialogHelper::filterSelected, m_selectedNameFilter, &QQuickFileNameFilter::update); - } -} - -void QQuickFileDialog::accept() -{ - if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) { - // Take the currently selected files and make them the final set of files. - setSelectedFiles(fileDialog->selectedFiles()); - } - QQuickAbstractDialog::accept(); -} - -QUrl QQuickFileDialog::addDefaultSuffix(const QUrl &file) const -{ - QUrl url = file; - const QString path = url.path(); - const QString suffix = m_options->defaultSuffix(); - if (!suffix.isEmpty() && !path.endsWith(QLatin1Char('/')) && path.lastIndexOf(QLatin1Char('.')) == -1) - url.setPath(path + QLatin1Char('.') + suffix); - return url; -} - -QList<QUrl> QQuickFileDialog::addDefaultSuffixes(const QList<QUrl> &files) const -{ - QList<QUrl> urls; - urls.reserve(files.size()); - for (const QUrl &file : files) - urls += addDefaultSuffix(file); - return urls; -} - -QT_END_NAMESPACE diff --git a/src/quickdialogs2/quickdialogs2/qquickfiledialog_p.h b/src/quickdialogs2/quickdialogs2/qquickfiledialog_p.h deleted file mode 100644 index 0dccbe72..00000000 --- a/src/quickdialogs2/quickdialogs2/qquickfiledialog_p.h +++ /dev/null @@ -1,165 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFILEDIALOG_P_H -#define QQUICKFILEDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qurl.h> -#include <QtQml/qqml.h> - -#include "qquickabstractdialog_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickFileNameFilter; - -class Q_QUICKDIALOGS2_PRIVATE_EXPORT QQuickFileDialog : public QQuickAbstractDialog -{ - Q_OBJECT - Q_PROPERTY(FileMode fileMode READ fileMode WRITE setFileMode NOTIFY fileModeChanged FINAL) - Q_PROPERTY(QUrl selectedFile READ selectedFile NOTIFY selectedFileChanged FINAL) - Q_PROPERTY(QList<QUrl> selectedFiles READ selectedFiles NOTIFY selectedFilesChanged FINAL) - Q_PROPERTY(QUrl currentFile READ currentFile WRITE setCurrentFile NOTIFY currentFileChanged FINAL) - Q_PROPERTY(QList<QUrl> currentFiles READ currentFiles WRITE setCurrentFiles NOTIFY currentFilesChanged FINAL) - Q_PROPERTY(QUrl currentFolder READ currentFolder WRITE setCurrentFolder NOTIFY currentFolderChanged FINAL) - Q_PROPERTY(QFileDialogOptions::FileDialogOptions options READ options WRITE setOptions RESET resetOptions NOTIFY optionsChanged FINAL) - Q_PROPERTY(QStringList nameFilters READ nameFilters WRITE setNameFilters RESET resetNameFilters NOTIFY nameFiltersChanged FINAL) - Q_PROPERTY(QQuickFileNameFilter *selectedNameFilter READ selectedNameFilter CONSTANT) - Q_PROPERTY(QString defaultSuffix READ defaultSuffix WRITE setDefaultSuffix RESET resetDefaultSuffix NOTIFY defaultSuffixChanged FINAL) - Q_PROPERTY(QString acceptLabel READ acceptLabel WRITE setAcceptLabel RESET resetAcceptLabel NOTIFY acceptLabelChanged FINAL) - Q_PROPERTY(QString rejectLabel READ rejectLabel WRITE setRejectLabel RESET resetRejectLabel NOTIFY rejectLabelChanged FINAL) - Q_FLAGS(QFileDialogOptions::FileDialogOptions) - QML_NAMED_ELEMENT(FileDialog) - QML_ADDED_IN_VERSION(6, 2) - Q_MOC_INCLUDE(<QtQuickDialogs2Utils/private/qquickfilenamefilter_p.h>) - -public: - explicit QQuickFileDialog(QObject *parent = nullptr); - - enum FileMode { - OpenFile, - OpenFiles, - SaveFile - }; - Q_ENUM(FileMode) - - FileMode fileMode() const; - void setFileMode(FileMode fileMode); - - QUrl selectedFile() const; - - QList<QUrl> selectedFiles() const; - - QUrl currentFile() const; - void setCurrentFile(const QUrl &file); - - QList<QUrl> currentFiles() const; - void setCurrentFiles(const QList<QUrl> ¤tFiles); - - QUrl currentFolder() const; - void setCurrentFolder(const QUrl ¤tFolder); - - QFileDialogOptions::FileDialogOptions options() const; - void setOptions(QFileDialogOptions::FileDialogOptions options); - void resetOptions(); - - QStringList nameFilters() const; - void setNameFilters(const QStringList &filters); - void resetNameFilters(); - - QQuickFileNameFilter *selectedNameFilter() const; - - QString defaultSuffix() const; - void setDefaultSuffix(const QString &suffix); - void resetDefaultSuffix(); - - QString acceptLabel() const; - void setAcceptLabel(const QString &label); - void resetAcceptLabel(); - - QString rejectLabel() const; - void setRejectLabel(const QString &label); - void resetRejectLabel(); - -Q_SIGNALS: - void fileModeChanged(); - void selectedFileChanged(); - void selectedFilesChanged(); - void currentFileChanged(); - void currentFilesChanged(); - void currentFolderChanged(); - void optionsChanged(); - void nameFiltersChanged(); - void defaultSuffixChanged(); - void acceptLabelChanged(); - void rejectLabelChanged(); - -protected: - bool useNativeDialog() const override; - void onCreate(QPlatformDialogHelper *dialog) override; - void onShow(QPlatformDialogHelper *dialog) override; - void onHide(QPlatformDialogHelper *dialog) override; - void accept() override; - -private: - QUrl addDefaultSuffix(const QUrl &file) const; - QList<QUrl> addDefaultSuffixes(const QList<QUrl> &files) const; - - void setSelectedFiles(const QList<QUrl> &selectedFiles); - - FileMode m_fileMode; - QList<QUrl> m_selectedFiles; - bool m_firstShow = true; - QSharedPointer<QFileDialogOptions> m_options; - mutable QQuickFileNameFilter *m_selectedNameFilter; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickFileDialog) - -#endif // QQUICKFILEDIALOG_P_H diff --git a/src/quickdialogs2/quickdialogs2/qquickfontdialog.cpp b/src/quickdialogs2/quickdialogs2/qquickfontdialog.cpp deleted file mode 100644 index 5bf59049..00000000 --- a/src/quickdialogs2/quickdialogs2/qquickfontdialog.cpp +++ /dev/null @@ -1,227 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFONTDIALOG_CPP -#define QQUICKFONTDIALOG_CPP - -#include "qquickfontdialog_p.h" - -#include <QtCore/qloggingcategory.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype FontDialog - \inherits Dialog -//! \instantiates QQuickFontDialog - \inqmlmodule QtQuick.Dialogs - \since 6.2 - \brief A font dialog. - - The FontDialog type provides a QML API for font dialogs. - - \image qtquickdialogs-fontdialog-gtk.png - - To show a font dialog, construct an instance of FontDialog, set the - desired properties, and call \l {Dialog::}{open()}. The \l currentFont - property can be used to determine the currently selected font in the - dialog. The \l selectedFont property is updated only after the final selection - has been made by accepting the dialog. - - \code - MenuItem { - text: "Font" - onTriggered: fontDialog.open() - } - - FontDialog { - id: fontDialog - currentFont.family: document.font - } - - MyDocument { - id: document - font: fontDialog.selectedFont - } - \endcode - - \section2 Availability - - A native platform font dialog is currently available on the following platforms: - - \list - \li macOS - \li Linux (when running with the GTK+ platform theme) - \endlist - - \include includes/fallback.qdocinc -*/ - -Q_LOGGING_CATEGORY(lcFontDialog, "qt.quick.dialogs.fontdialog") - -QQuickFontDialog::QQuickFontDialog(QObject *parent) - : QQuickAbstractDialog(QPlatformTheme::FontDialog, parent), - m_options(QFontDialogOptions::create()) -{ -} - -/*! - \qmlproperty font QtQuick.Dialogs::FontDialog::currentFont - - This property holds the currently selected font in the dialog. - - Unlike the \l selectedFont property, the \c currentFont property is updated - while the user is selecting fonts in the dialog, even before the final - selection has been made. - - \sa selectedFont -*/ - -QFont QQuickFontDialog::currentFont() const -{ - if (QPlatformFontDialogHelper *fontDialog = qobject_cast<QPlatformFontDialogHelper *>(handle())) - return fontDialog->currentFont(); - return QFont(); -} - -void QQuickFontDialog::setCurrentFont(const QFont &font) -{ - if (QPlatformFontDialogHelper *fontDialog = - qobject_cast<QPlatformFontDialogHelper *>(handle())) - fontDialog->setCurrentFont(font); -} - -/*! - \qmlproperty font QtQuick.Dialogs::FontDialog::selectedFont - - This property holds the final accepted font. - - Unlike the \l currentFont property, the \c selectedFont property is not updated - while the user is selecting fonts in the dialog, but only after the final - selection has been made. That is, when the user has clicked \uicontrol Open - to accept a font. Alternatively, the \l {Dialog::}{accepted()} signal - can be handled to get the final selection. - - \sa currentFont, {Dialog::}{accepted()} -*/ - -QFont QQuickFontDialog::selectedFont() const -{ - return m_selectedFont; -} - -void QQuickFontDialog::setSelectedFont(const QFont &font) -{ - if (m_selectedFont == font) - return; - - m_selectedFont = font; - emit selectedFontChanged(); -} - -/*! - \qmlproperty flags QtQuick.Dialogs::FontDialog::options - - This property holds the various options that affect the look and feel of the dialog. - - By default, all options are disabled. - - Options should be set before showing the dialog. Setting them while the dialog is - visible is not guaranteed to have an immediate effect on the dialog (depending on - the option and on the platform). - - Available options: - \value FontDialog.ScalableFonts Show scalable fonts. - \value FontDialog.NonScalableFonts Show non-scalable fonts. - \value FontDialog.MonospacedFonts Show monospaced fonts. - \value FontDialog.ProportionalFonts Show proportional fonts. - \value FontDialog.NoButtons Don't display \uicontrol Open and \uicontrol Cancel buttons (useful - for "live dialogs"). -*/ - -QFontDialogOptions::FontDialogOptions QQuickFontDialog::options() const -{ - return m_options->options(); -} - -void QQuickFontDialog::setOptions(QFontDialogOptions::FontDialogOptions options) -{ - if (options == m_options->options()) - return; - - m_options->setOptions(options); - emit optionsChanged(); -} - -void QQuickFontDialog::resetOptions() -{ - setOptions({}); -} - -bool QQuickFontDialog::useNativeDialog() const -{ - return QQuickAbstractDialog::useNativeDialog() - && !(m_options->testOption(QFontDialogOptions::DontUseNativeDialog)); -} - -void QQuickFontDialog::onCreate(QPlatformDialogHelper *dialog) -{ - if (QPlatformFontDialogHelper *fontDialog = qobject_cast<QPlatformFontDialogHelper *>(dialog)) { - connect(fontDialog, &QPlatformFontDialogHelper::currentFontChanged, this, - &QQuickFontDialog::currentFontChanged); - connect(fontDialog, &QPlatformFontDialogHelper::fontSelected, this, - &QQuickFontDialog::setSelectedFont); - fontDialog->setOptions(m_options); - } -} - -void QQuickFontDialog::onShow(QPlatformDialogHelper *dialog) -{ - m_options->setWindowTitle(title()); - if (QPlatformFontDialogHelper *fontDialog = qobject_cast<QPlatformFontDialogHelper *>(dialog)) - fontDialog->setOptions(m_options); // setOptions only assigns a member and isn't virtual -} - -void QQuickFontDialog::accept() -{ - if (auto fontDialog = qobject_cast<QPlatformFontDialogHelper *>(handle())) - setSelectedFont(fontDialog->currentFont()); - QQuickAbstractDialog::accept(); -} - -QT_END_NAMESPACE - -#endif // QQUICKFONTDIALOG_CPP diff --git a/src/quickdialogs2/quickdialogs2/qquickfontdialog_p.h b/src/quickdialogs2/quickdialogs2/qquickfontdialog_p.h deleted file mode 100644 index c12cbd62..00000000 --- a/src/quickdialogs2/quickdialogs2/qquickfontdialog_p.h +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFONTDIALOG_P_H -#define QQUICKFONTDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qquickabstractdialog_p.h" - -#include <QtGui/qfont.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKDIALOGS2_PRIVATE_EXPORT QQuickFontDialog : public QQuickAbstractDialog -{ - Q_OBJECT - Q_PROPERTY(QFont selectedFont READ selectedFont WRITE setSelectedFont NOTIFY selectedFontChanged) - Q_PROPERTY(QFont currentFont READ currentFont WRITE setCurrentFont NOTIFY currentFontChanged FINAL) - Q_PROPERTY(QFontDialogOptions::FontDialogOptions options READ options WRITE setOptions - RESET resetOptions NOTIFY optionsChanged) - Q_FLAGS(QFontDialogOptions::FontDialogOptions) - QML_NAMED_ELEMENT(FontDialog) - QML_ADDED_IN_VERSION(6, 2) - -public: - explicit QQuickFontDialog(QObject *parent = nullptr); - - void setCurrentFont(const QFont &font); - QFont currentFont() const; - - void setSelectedFont(const QFont &font); - QFont selectedFont() const; - - QFontDialogOptions::FontDialogOptions options() const; - void setOptions(QFontDialogOptions::FontDialogOptions options); - void resetOptions(); - -Q_SIGNALS: - void selectedFontChanged(); - void currentFontChanged(); - void optionsChanged(); - -protected: - bool useNativeDialog() const override; - void onCreate(QPlatformDialogHelper *dialog) override; - void onShow(QPlatformDialogHelper *dialog) override; - void accept() override; - -private: - QFont m_selectedFont; - QSharedPointer<QFontDialogOptions> m_options; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickFontDialog) - -#endif // QQUICKFONTDIALOG_P_H diff --git a/src/quickdialogs2/quickdialogs2/qtquickdialogs2foreign_p.h b/src/quickdialogs2/quickdialogs2/qtquickdialogs2foreign_p.h deleted file mode 100644 index 6337434f..00000000 --- a/src/quickdialogs2/quickdialogs2/qtquickdialogs2foreign_p.h +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTQUICKDIALOGS2FOREIGN_P_H -#define QTQUICKDIALOGS2FOREIGN_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpa/qplatformdialoghelper.h> -#include <QtQml/qqml.h> -#include <QtQuickDialogs2Utils/private/qquickfilenamefilter_p.h> - -QT_BEGIN_NAMESPACE - -struct QPlatformDialogHelperForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QPlatformDialogHelper) - QML_ADDED_IN_VERSION(6, 2) -}; - -struct QQuickFileNameFilterForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickFileNameFilter) - QML_ADDED_IN_VERSION(6, 2) -}; - -QT_END_NAMESPACE - -#endif // QTQUICKDIALOGS2FOREIGN_P_H diff --git a/src/quickdialogs2/quickdialogs2/qtquickdialogs2global_p.h b/src/quickdialogs2/quickdialogs2/qtquickdialogs2global_p.h deleted file mode 100644 index cae55a95..00000000 --- a/src/quickdialogs2/quickdialogs2/qtquickdialogs2global_p.h +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTQUICKDIALOGS2GLOBAL_P_H -#define QTQUICKDIALOGS2GLOBAL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qglobal.h> -#include <QtQml/private/qqmlglobal_p.h> - -QT_BEGIN_NAMESPACE - -#ifndef QT_STATIC -# if defined(QT_BUILD_QUICKDIALOGS2_LIB) -# define Q_QUICKDIALOGS2_PRIVATE_EXPORT Q_DECL_EXPORT -# else -# define Q_QUICKDIALOGS2_PRIVATE_EXPORT Q_DECL_IMPORT -# endif -#else -# define Q_QUICKDIALOGS2_PRIVATE_EXPORT -#endif - -QT_END_NAMESPACE - -#endif // QTQUICKDIALOGS2GLOBAL_P_H diff --git a/src/quickdialogs2/quickdialogs2quickimpl/CMakeLists.txt b/src/quickdialogs2/quickdialogs2quickimpl/CMakeLists.txt deleted file mode 100644 index f0d94d31..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/CMakeLists.txt +++ /dev/null @@ -1,137 +0,0 @@ -##################################################################### -## QuickDialogs2QuickImpl Module: -##################################################################### - -set(qml_files - "qml/FileDialog.qml" - "qml/FileDialogDelegate.qml" - "qml/FileDialogDelegateLabel.qml" - "qml/FolderBreadcrumbBar.qml" - "qml/FontDialog.qml" - "qml/FontDialogContent.qml" - "qml/+Fusion/FileDialog.qml" - "qml/+Fusion/FileDialogDelegate.qml" - "qml/+Fusion/FolderBreadcrumbBar.qml" - "qml/+Fusion/FontDialog.qml" - "qml/+Imagine/FileDialog.qml" - "qml/+Imagine/FileDialogDelegate.qml" - "qml/+Imagine/FolderBreadcrumbBar.qml" - "qml/+Imagine/FontDialog.qml" - "qml/+Material/FileDialog.qml" - "qml/+Material/FileDialogDelegate.qml" - "qml/+Material/FolderBreadcrumbBar.qml" - "qml/+Material/FontDialog.qml" - "qml/+Universal/FileDialog.qml" - "qml/+Universal/FileDialogDelegate.qml" - "qml/+Universal/FolderBreadcrumbBar.qml" - "qml/+Universal/FontDialog.qml" -) - -qt_internal_add_qml_module(QuickDialogs2QuickImpl - URI "QtQuick.Dialogs.quickimpl" - VERSION "${PROJECT_VERSION}" - CLASS_NAME QtQuickDialogs2QuickImplPlugin - PLUGIN_TARGET qtquickdialogs2quickimplplugin - SOURCES - qquickdialogimplfactory.cpp - qquickdialogimplfactory_p.h - qquickfiledialogdelegate.cpp - qquickfiledialogdelegate_p.h - qquickfiledialogimpl.cpp - qquickfiledialogimpl_p.h - qquickfiledialogimpl_p_p.h - qquickfolderbreadcrumbbar.cpp - qquickfolderbreadcrumbbar_p.h - qquickfolderbreadcrumbbar_p_p.h - qquickplatformfiledialog.cpp - qquickplatformfiledialog_p.h - qquickplatformfontdialog_p.h - qquickplatformfontdialog.cpp - qtquickdialogs2quickimplforeign_p.h - qtquickdialogs2quickimplglobal_p.h - qquickfontdialogimpl_p.h - qquickfontdialogimpl_p_p.h - qquickfontdialogimpl.cpp - QML_FILES - ${qml_files} - DEFINES - QT_BUILD_QUICKDIALOGS2QUICKIMPL_LIB - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - INCLUDE_DIRECTORIES - ${CMAKE_CURRENT_SOURCE_DIR} - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickPrivate - Qt::QuickTemplates2Private - Qt::QuickDialogs2UtilsPrivate -) - -# Resources: -set(qtquickdialogs2quickimpl_resource_files - "images/crumb-separator-icon-round.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/crumb-separator-icon-square.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/file-icon-round.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/file-icon-square.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/folder-icon-round.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/folder-icon-square.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/imagine/[email protected]" - "images/imagine/[email protected]" - "images/imagine/[email protected]" - "images/imagine/filedialogdelegate-background.9.png" - "images/imagine/[email protected]" - "images/imagine/[email protected]" - "images/imagine/[email protected]" - "images/imagine/filedialogdelegate-background-disabled.9.png" - "images/imagine/[email protected]" - "images/imagine/[email protected]" - "images/imagine/[email protected]" - "images/imagine/filedialogdelegate-background-pressed.9.png" - "images/imagine/[email protected]" - "images/imagine/[email protected]" - "images/imagine/[email protected]" - "images/imagine/filedialogdelegate-background-focused.9.png" - "images/imagine/[email protected]" - "images/imagine/[email protected]" - "images/imagine/[email protected]" - "images/imagine/filedialogdelegate-background-highlighted.9.png" - "images/up-icon-round.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/up-icon-square.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" - "images/up-icon-thick-square.png" - "images/[email protected]" - "images/[email protected]" - "images/[email protected]" -) - -qt_internal_add_resource(QuickDialogs2QuickImpl "QuickDialogs2QuickImpl" - PREFIX - "/qt-project.org/imports/QtQuick/Dialogs/quickimpl" - FILES - ${qtquickdialogs2quickimpl_resource_files} -) diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/crumb-separator-icon-round.png b/src/quickdialogs2/quickdialogs2quickimpl/images/crumb-separator-icon-round.png Binary files differdeleted file mode 100644 index aaa5a3e4..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/crumb-separator-icon-round.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/crumb-separator-icon-round.svg b/src/quickdialogs2/quickdialogs2quickimpl/images/crumb-separator-icon-round.svg deleted file mode 100644 index 013cedef..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/crumb-separator-icon-round.svg +++ /dev/null @@ -1,136 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - width="8" - height="8" - viewBox="0 0 8 8" - version="1.1" - id="svg2" - inkscape:version="1.1-alpha (b0f32e08fc, 2021-03-07)" - sodipodi:docname="crumb-separator-icon-round.svg" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/"> - <metadata - id="metadata10"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs8"> - <inkscape:path-effect - effect="fillet_chamfer" - id="path-effect3421" - is_visible="true" - lpeversion="1" - satellites_param="F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1" - unit="px" - method="auto" - mode="F" - radius="1" - chamfer_steps="1" - flexible="false" - use_knot_distance="true" - apply_no_radius="true" - apply_with_radius="true" - only_selected="false" - hide_knots="false" /> - <inkscape:path-effect - effect="fillet_chamfer" - id="path-effect1367" - is_visible="true" - lpeversion="1" - satellites_param="F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1" - unit="px" - method="auto" - mode="F" - radius="1" - chamfer_steps="1" - flexible="false" - use_knot_distance="true" - apply_no_radius="true" - apply_with_radius="true" - only_selected="false" - hide_knots="false" /> - <inkscape:path-effect - effect="fillet_chamfer" - id="path-effect1365" - is_visible="true" - lpeversion="1" - satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1" - unit="px" - method="auto" - mode="F" - radius="1" - chamfer_steps="1" - flexible="false" - use_knot_distance="true" - apply_no_radius="true" - apply_with_radius="true" - only_selected="false" - hide_knots="false" /> - </defs> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1848" - inkscape:window-height="1016" - id="namedview6" - showgrid="true" - inkscape:zoom="16.000001" - inkscape:cx="6.7812496" - inkscape:cy="15.031249" - inkscape:window-x="72" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" - inkscape:document-rotation="0" - inkscape:pagecheckerboard="0" - height="14px"> - <inkscape:grid - type="xygrid" - id="grid856" /> - </sodipodi:namedview> - <g - inkscape:groupmode="layer" - id="layer1" - inkscape:label="crumb-separator-icon-round" - transform="translate(2.046,3.0914383)"> - <rect - style="fill:none;stroke-width:4;stroke-linejoin:round" - id="rect2017" - width="8" - height="8" - x="-2.046" - y="-3.0914383" /> - </g> - <path - id="rect858" - style="fill:#757575;stroke-width:2.43737;stroke-linejoin:round" - d="M 3.0219754,1.01117 6.416287,3.5317721 a 0.74259596,0.74259596 90 0 1 0,1.1923778 L 3.0219754,7.2447519 A 0.5029757,0.5029757 26.701285 0 1 2.2191312,6.8409408 l 0,-5.4259596 A 0.5029757,0.5029757 153.29872 0 1 3.0219754,1.01117 Z" - sodipodi:nodetypes="cccc" - inkscape:path-effect="#path-effect3421" - inkscape:original-d="m 2.2191312,0.41498117 5,3.71297983 -5,3.7129798 z" /> - <rect - style="fill:none;stroke-width:4;stroke-linejoin:round" - id="rect1449" - width="8" - height="8" - x="0" - y="0" /> -</svg> diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 3f66fe17..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 24d9f6a6..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 1dc83ef0..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/crumb-separator-icon-square.png b/src/quickdialogs2/quickdialogs2quickimpl/images/crumb-separator-icon-square.png Binary files differdeleted file mode 100644 index 1f7ac63e..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/crumb-separator-icon-square.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/crumb-separator-icon-square.svg b/src/quickdialogs2/quickdialogs2quickimpl/images/crumb-separator-icon-square.svg deleted file mode 100644 index 96636734..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/crumb-separator-icon-square.svg +++ /dev/null @@ -1,134 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - width="8" - height="8" - viewBox="0 0 8 8" - version="1.1" - id="svg2" - inkscape:version="1.1-alpha (b0f32e08fc, 2021-03-07)" - sodipodi:docname="crumb-separator-icon-square.svg" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/"> - <metadata - id="metadata10"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs8"> - <inkscape:path-effect - effect="fillet_chamfer" - id="path-effect3421" - is_visible="true" - lpeversion="1" - satellites_param="F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1" - unit="px" - method="auto" - mode="F" - radius="1" - chamfer_steps="1" - flexible="false" - use_knot_distance="true" - apply_no_radius="true" - apply_with_radius="true" - only_selected="false" - hide_knots="false" /> - <inkscape:path-effect - effect="fillet_chamfer" - id="path-effect1367" - is_visible="true" - lpeversion="1" - satellites_param="F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1" - unit="px" - method="auto" - mode="F" - radius="1" - chamfer_steps="1" - flexible="false" - use_knot_distance="true" - apply_no_radius="true" - apply_with_radius="true" - only_selected="false" - hide_knots="false" /> - <inkscape:path-effect - effect="fillet_chamfer" - id="path-effect1365" - is_visible="true" - lpeversion="1" - satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1" - unit="px" - method="auto" - mode="F" - radius="1" - chamfer_steps="1" - flexible="false" - use_knot_distance="true" - apply_no_radius="true" - apply_with_radius="true" - only_selected="false" - hide_knots="false" /> - </defs> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1848" - inkscape:window-height="1016" - id="namedview6" - showgrid="true" - inkscape:zoom="90.509672" - inkscape:cx="4.43599" - inkscape:cy="3.3311357" - inkscape:window-x="72" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" - inkscape:document-rotation="0" - inkscape:pagecheckerboard="0" - height="14px"> - <inkscape:grid - type="xygrid" - id="grid856" /> - </sodipodi:namedview> - <g - inkscape:groupmode="layer" - id="layer1" - inkscape:label="crumb-separator-icon-square" - transform="translate(2.046,3.0914383)"> - <rect - style="fill:none;stroke-width:4;stroke-linejoin:round" - id="rect2017" - width="8" - height="8" - x="-2.046" - y="-3.0914383" /> - <path - style="fill:#757575;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m -0.046,-2.0914383 4,3 -4,3 z" - id="path1065" - sodipodi:nodetypes="cccc" /> - </g> - <rect - style="fill:none;stroke-width:4;stroke-linejoin:round" - id="rect1449" - width="8" - height="8" - x="0" - y="0" /> -</svg> diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 524872c1..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 33bce847..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 185c3eb7..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/file-icon-round.png b/src/quickdialogs2/quickdialogs2quickimpl/images/file-icon-round.png Binary files differdeleted file mode 100644 index c2a4928d..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/file-icon-round.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/file-icon-round.svg b/src/quickdialogs2/quickdialogs2quickimpl/images/file-icon-round.svg deleted file mode 100644 index 7ac6a23b..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/file-icon-round.svg +++ /dev/null @@ -1,117 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - width="14" - height="18" - viewBox="0 0 14 18" - version="1.1" - id="svg2" - inkscape:version="1.1-alpha (b0f32e08fc, 2021-03-07)" - sodipodi:docname="file-icon-round.svg" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/"> - <path - style="fill:none;stroke:#757575;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 1.5003822,2.5063148 1.5000273,15.5 A 0.99997269,0.99997269 45.000782 0 0 2.5,16.5 h 9 a 1,1 135 0 0 1,-1 V 6.3440001 A 2.3479106,2.3479106 66.930332 0 0 11.778973,4.6510931 L 9.221027,2.192907 A 2.4805476,2.4805476 21.904486 0 0 7.5000004,1.5009022 l -4.9995913,0.00451 A 1.0009299,1.0009299 134.97494 0 0 1.5003822,2.5063148 Z" - id="path917" - sodipodi:nodetypes="cccccc" - inkscape:path-effect="#path-effect1367" - inkscape:original-d="M 1.5004095,1.5063148 1.5,16.5 h 11 V 5.3440001 L 8.5,1.5 Z" /> - <path - id="path921" - style="fill:none;stroke:#757575;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 12.35,6.5 H 8.5 a 1,1 45 0 1 -1,-1 V 1.55" - inkscape:path-effect="#path-effect1365" - inkscape:original-d="M 12.35,6.5 H 7.5 V 1.55" - sodipodi:nodetypes="ccc" /> - <metadata - id="metadata10"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs8"> - <inkscape:path-effect - effect="fillet_chamfer" - id="path-effect1367" - is_visible="true" - lpeversion="1" - satellites_param="F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1" - unit="px" - method="auto" - mode="F" - radius="1" - chamfer_steps="1" - flexible="false" - use_knot_distance="true" - apply_no_radius="true" - apply_with_radius="true" - only_selected="false" - hide_knots="false" /> - <inkscape:path-effect - effect="fillet_chamfer" - id="path-effect1365" - is_visible="true" - lpeversion="1" - satellites_param="F,0,0,1,0,0,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1" - unit="px" - method="auto" - mode="F" - radius="1" - chamfer_steps="1" - flexible="false" - use_knot_distance="true" - apply_no_radius="true" - apply_with_radius="true" - only_selected="false" - hide_knots="false" /> - </defs> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1848" - inkscape:window-height="1016" - id="namedview6" - showgrid="true" - inkscape:zoom="32.000001" - inkscape:cx="7.8906248" - inkscape:cy="9.7343747" - inkscape:window-x="72" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" - inkscape:document-rotation="0" - inkscape:pagecheckerboard="0"> - <inkscape:grid - type="xygrid" - id="grid856" /> - </sodipodi:namedview> - <g - inkscape:groupmode="layer" - id="layer1" - inkscape:label="file-icon-round" - transform="translate(2.046,3.0914383)" /> - <rect - style="fill:none;stroke-width:4;stroke-linejoin:round" - id="rect2270" - width="14" - height="18" - x="0" - y="0" /> -</svg> diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 86af70d1..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 06fea29e..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 09f87873..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/file-icon-square.png b/src/quickdialogs2/quickdialogs2quickimpl/images/file-icon-square.png Binary files differdeleted file mode 100644 index 9e8f3ddd..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/file-icon-square.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/file-icon-square.svg b/src/quickdialogs2/quickdialogs2quickimpl/images/file-icon-square.svg deleted file mode 100644 index 107afa38..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/file-icon-square.svg +++ /dev/null @@ -1,83 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - width="14" - height="18" - viewBox="0 0 14 18" - version="1.1" - id="svg2" - inkscape:version="1.1-alpha (b0f32e08fc, 2021-03-07)" - sodipodi:docname="file-icon-square.svg" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/"> - <path - style="fill:none;stroke:#757575;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 1.5004095,1.5063148 1.5,16.5 h 11 V 5.3440001 L 8.5,1.5 Z" - id="path917" - sodipodi:nodetypes="cccccc" /> - <path - style="fill:none;stroke:#757575;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 8.5,1.55 V 5.5" - id="path919" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#757575;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 12.45,5.5 H 8.5" - id="path921" - sodipodi:nodetypes="cc" /> - <metadata - id="metadata10"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1848" - inkscape:window-height="1016" - id="namedview6" - showgrid="true" - inkscape:zoom="22.627417" - inkscape:cx="0.022097087" - inkscape:cy="8.1538251" - inkscape:window-x="72" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" - inkscape:document-rotation="0" - inkscape:pagecheckerboard="0"> - <inkscape:grid - type="xygrid" - id="grid856" /> - </sodipodi:namedview> - <g - inkscape:groupmode="layer" - id="layer1" - inkscape:label="file-icon-square" - transform="translate(2.046,3.0914383)" /> - <rect - style="fill:none;stroke-width:4;stroke-linejoin:round" - id="rect1895" - width="14" - height="18" - x="0" - y="0" /> -</svg> diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 8d330677..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 2987d2ca..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 69d76176..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/folder-icon-round.png b/src/quickdialogs2/quickdialogs2quickimpl/images/folder-icon-round.png Binary files differdeleted file mode 100644 index 60bc6c72..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/folder-icon-round.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/folder-icon-round.svg b/src/quickdialogs2/quickdialogs2quickimpl/images/folder-icon-round.svg deleted file mode 100644 index ba6b6276..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/folder-icon-round.svg +++ /dev/null @@ -1,93 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - width="18" - height="14" - viewBox="0 0 18 14" - version="1.1" - id="svg2" - inkscape:version="1.1-alpha (b0f32e08fc, 2021-03-07)" - sodipodi:docname="folder-icon-round.svg" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/"> - <path - style="fill:none;stroke:#757575;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 1.5003723,2.5063148 1.5000372,11.5 A 0.99996275,0.99996275 45.001067 0 0 2.5,12.5 h 13 a 1,1 135 0 0 1,-1 v -7 a 1,1 45 0 0 -1,-1 h -5 A 2.4142136,2.4142136 22.5 0 1 8.7928932,2.7928932 L 8.2071068,2.2071068 A 2.4106245,2.4106245 22.469847 0 0 6.5000006,1.5010525 l -3.9995917,0.00421 A 1.0010904,1.0010904 134.97091 0 0 1.5003723,2.5063148 Z" - id="path917" - sodipodi:nodetypes="ccccccc" - inkscape:path-effect="#path-effect1132" - inkscape:original-d="M 1.5004095,1.5063148 1.5,12.5 h 15 v -9 h -7 l -2,-2 z" /> - <metadata - id="metadata10"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs8"> - <inkscape:path-effect - effect="fillet_chamfer" - id="path-effect1132" - is_visible="true" - lpeversion="1" - satellites_param="F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1 @ F,0,0,1,0,1,0,1" - unit="px" - method="auto" - mode="F" - radius="1" - chamfer_steps="1" - flexible="false" - use_knot_distance="true" - apply_no_radius="true" - apply_with_radius="true" - only_selected="false" - hide_knots="false" /> - </defs> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1848" - inkscape:window-height="1016" - id="namedview6" - showgrid="true" - inkscape:zoom="16" - inkscape:cx="-11.28125" - inkscape:cy="7.40625" - inkscape:window-x="72" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" - inkscape:document-rotation="0" - inkscape:pagecheckerboard="0"> - <inkscape:grid - type="xygrid" - id="grid856" /> - </sodipodi:namedview> - <g - inkscape:groupmode="layer" - id="layer1" - inkscape:label="folder-icon-round" - transform="translate(2.046,3.0914383)" /> - <rect - style="fill:none;stroke-width:4;stroke-linejoin:round" - id="rect2548" - width="18" - height="14" - x="0" - y="0" /> -</svg> diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index e2873437..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 5ee70a95..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 47d28a4b..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/folder-icon-square.png b/src/quickdialogs2/quickdialogs2quickimpl/images/folder-icon-square.png Binary files differdeleted file mode 100644 index b84a90ae..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/folder-icon-square.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/folder-icon-square.svg b/src/quickdialogs2/quickdialogs2quickimpl/images/folder-icon-square.svg deleted file mode 100644 index 0002b5ac..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/folder-icon-square.svg +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - width="18" - height="14" - viewBox="0 0 18 14" - version="1.1" - id="svg2" - inkscape:version="1.1-alpha (b0f32e08fc, 2021-03-07)" - sodipodi:docname="folder-icon-square.svg" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/"> - <path - style="fill:none;stroke:#757575;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 1.5004095,1.5063148 1.5,12.5 h 15 v -9 h -7 l -2,-2 z" - id="path917" - sodipodi:nodetypes="ccccccc" /> - <metadata - id="metadata10"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1848" - inkscape:window-height="1016" - id="namedview6" - showgrid="true" - inkscape:zoom="16" - inkscape:cx="-1.59375" - inkscape:cy="12.65625" - inkscape:window-x="72" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" - inkscape:document-rotation="0" - inkscape:pagecheckerboard="0"> - <inkscape:grid - type="xygrid" - id="grid856" /> - </sodipodi:namedview> - <g - inkscape:groupmode="layer" - id="layer1" - inkscape:label="folder-icon-square" - transform="translate(2.046,3.0914383)"> - <rect - style="fill:none;stroke-width:4;stroke-linejoin:round" - id="rect1423" - width="18" - height="14" - x="-2.046" - y="-3.0914383" /> - </g> -</svg> diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 9bf320bb..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 9f12edb6..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 9ec5b389..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background-disabled.9.png b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background-disabled.9.png Binary files differdeleted file mode 100644 index ce48ee74..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background-disabled.9.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index c7abb65c..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index 46b84d7d..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index f4dfd338..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background-focused.9.png b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background-focused.9.png Binary files differdeleted file mode 100644 index 39fa8664..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background-focused.9.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index 6b61562c..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index e46c0bf1..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index 010444e8..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background-highlighted.9.png b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background-highlighted.9.png Binary files differdeleted file mode 100644 index 6f565e8b..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background-highlighted.9.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index 9fd0a434..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index 62b7435b..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index 96444b89..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background-pressed.9.png b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background-pressed.9.png Binary files differdeleted file mode 100644 index 39fa8664..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background-pressed.9.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index 6b61562c..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index e46c0bf1..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index 010444e8..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background.9.png b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background.9.png Binary files differdeleted file mode 100644 index cef1bafa..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background.9.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background.svg b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background.svg deleted file mode 100644 index acecfcc9..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/filedialogdelegate-background.svg +++ /dev/null @@ -1,358 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - width="210mm" - height="297mm" - viewBox="0 0 210 297" - version="1.1" - id="svg5" - inkscape:version="1.1-alpha (b0f32e08fc, 2021-03-07)" - sodipodi:docname="filedialogdelegate-background.svg" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/"> - <metadata - id="metadata122"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <sodipodi:namedview - id="namedview7" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - objecttolerance="10.0" - gridtolerance="10.0" - guidetolerance="10.0" - inkscape:pageshadow="2" - inkscape:pageopacity="0.0" - inkscape:pagecheckerboard="0" - inkscape:document-units="px" - showgrid="false" - inkscape:zoom="3.2715084" - inkscape:cx="24.912056" - inkscape:cy="54.867657" - inkscape:window-width="1848" - inkscape:window-height="1016" - inkscape:window-x="72" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="g1413" - showguides="true" - inkscape:guide-bbox="true" - inkscape:document-rotation="0"> - <sodipodi:guide - position="6.0854167,296.96676" - orientation="-1,0" - id="guide2310" - inkscape:label="" - inkscape:locked="true" - inkscape:color="rgb(0,0,255)" /> - <sodipodi:guide - position="3.363578,293.03125" - orientation="0,1" - id="guide2322" - inkscape:label="" - inkscape:locked="true" - inkscape:color="rgb(0,0,255)" /> - <sodipodi:guide - position="12.170833,297.68429" - orientation="-1,0" - id="guide2760" - inkscape:label="" - inkscape:locked="true" - inkscape:color="rgb(0,0,255)" /> - <sodipodi:guide - position="18.25625,297.91758" - orientation="-1,0" - id="guide949" - inkscape:label="" - inkscape:locked="true" - inkscape:color="rgb(0,0,255)" /> - <sodipodi:guide - position="24.341667,299.40187" - orientation="-1,0" - id="guide941" - inkscape:label="" - inkscape:locked="true" - inkscape:color="rgb(0,0,255)" /> - <sodipodi:guide - position="30.427083,299.08734" - orientation="-1,0" - id="guide1165" - inkscape:label="" - inkscape:locked="false" - inkscape:color="rgb(0,0,255)" /> - </sodipodi:namedview> - <defs - id="defs2" /> - <g - inkscape:label="[9] filedialogdelegate-background-highlighted" - inkscape:groupmode="layer" - id="g1413" - style="display:inline" - sodipodi:insensitive="true"> - <rect - style="fill:none;stroke-width:0.946642;stroke-linejoin:round" - id="rect1401" - width="6.0854168" - height="3.96875" - x="30.427084" - y="-6.9388939e-18" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:7.98967;stroke-linejoin:round" - id="rect1403" - width="0.26458332" - height="3.4395833" - x="30.427084" - y="0.26458332" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.1547;stroke-linejoin:round" - id="rect1405" - width="0.26458332" - height="5.5562401" - x="-0.26415125" - y="30.691679" - transform="matrix(3.6708238e-5,-1,1,1.4067378e-5,0,0)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.21594;stroke-linejoin:round" - id="rect1407" - width="0.26458332" - height="0.26458287" - x="-3.9588995" - y="33.337505" - transform="matrix(1.7480114e-6,-1,0.99999996,2.9541491e-4,0,0)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.21594;stroke-linejoin:round" - id="rect1409" - width="0.26458332" - height="0.26458287" - x="-2.1059568" - y="36.247913" - transform="matrix(1.7480114e-6,-1,0.99999996,2.9541491e-4,0,0)" /> - <rect - style="fill:#4fc1e9;fill-opacity:1;fill-rule:evenodd;stroke-width:0.263352" - id="rect1411" - width="5.5562501" - height="3.4395833" - x="30.691668" - y="0.26458332" /> - </g> - <g - inkscape:label="[9] filedialogdelegate-background-focused" - inkscape:groupmode="layer" - id="g939" - style="display:inline" - sodipodi:insensitive="true"> - <rect - style="fill:none;stroke-width:0.946642;stroke-linejoin:round" - id="rect927" - width="6.0854168" - height="3.96875" - x="18.25625" - y="-6.9388939e-18" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:7.98967;stroke-linejoin:round" - id="rect929" - width="0.26458332" - height="3.4395833" - x="18.25625" - y="0.26458332" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.1547;stroke-linejoin:round" - id="rect931" - width="0.26458332" - height="5.5562401" - x="-0.26432261" - y="18.520845" - transform="matrix(3.6708238e-5,-1,1,1.4067378e-5,0,0)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.21594;stroke-linejoin:round" - id="rect933" - width="0.26458332" - height="0.26458287" - x="-3.9624968" - y="21.166674" - transform="matrix(1.7480114e-6,-1,0.99999996,2.9541491e-4,0,0)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.21594;stroke-linejoin:round" - id="rect935" - width="0.26458332" - height="0.26458287" - x="-2.1095541" - y="24.077082" - transform="matrix(1.7480114e-6,-1,0.99999996,2.9541491e-4,0,0)" /> - <rect - style="fill:#e6e9ed;fill-opacity:1;fill-rule:evenodd;stroke-width:0.263352" - id="rect937" - width="5.5562501" - height="3.4395833" - x="18.520834" - y="0.26458332" /> - </g> - <g - inkscape:label="[9] filedialogdelegate-background-pressed" - inkscape:groupmode="layer" - id="g867" - style="display:inline" - sodipodi:insensitive="true"> - <rect - style="fill:none;stroke-width:0.946642;stroke-linejoin:round" - id="rect855" - width="6.0854168" - height="3.96875" - x="12.170834" - y="-6.9388939e-18" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:7.98967;stroke-linejoin:round" - id="rect857" - width="0.26458332" - height="3.4395833" - x="12.170834" - y="0.26458332" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.1547;stroke-linejoin:round" - id="rect859" - width="0.26458332" - height="5.5562401" - x="-0.26440823" - y="12.435429" - transform="matrix(3.6708238e-5,-1,1,1.4067378e-5,0,0)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.21594;stroke-linejoin:round" - id="rect861" - width="0.26458332" - height="0.26458287" - x="-3.9642947" - y="15.081257" - transform="matrix(1.7480114e-6,-1,0.99999996,2.9541491e-4,0,0)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.21594;stroke-linejoin:round" - id="rect863" - width="0.26458332" - height="0.26458287" - x="-2.111352" - y="17.991665" - transform="matrix(1.7480114e-6,-1,0.99999996,2.9541491e-4,0,0)" /> - <rect - style="fill:#e6e9ed;fill-opacity:1;fill-rule:evenodd;stroke-width:0.263352" - id="rect865" - width="5.5562501" - height="3.4395833" - x="12.435416" - y="0.26458332" /> - </g> - <g - inkscape:label="[9] filedialogdelegate-background-disabled" - inkscape:groupmode="layer" - id="g2435" - style="display:inline" - sodipodi:insensitive="true"> - <rect - style="fill:none;stroke-width:0.946642;stroke-linejoin:round" - id="rect2425" - width="6.0854168" - height="3.96875" - x="6.0854168" - y="-6.9388939e-18" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:7.98967;stroke-linejoin:round" - id="rect2427" - width="0.26458332" - height="3.4395833" - x="6.0854168" - y="0.26458332" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.1547;stroke-linejoin:round" - id="rect2429" - width="0.26458332" - height="5.5562401" - x="-0.264494" - y="6.3500099" - transform="matrix(3.6708238e-5,-1,1,1.4067378e-5,0,0)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.21594;stroke-linejoin:round" - id="rect2431" - width="0.26458332" - height="0.26458287" - x="-3.9660921" - y="8.995841" - transform="matrix(1.7480114e-6,-1,0.99999996,2.9541491e-4,0,0)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.21594;stroke-linejoin:round" - id="rect2433" - width="0.26458332" - height="0.26458287" - x="-2.1131494" - y="11.906255" - transform="matrix(1.7480114e-6,-1,0.99999996,2.9541491e-4,0,0)" /> - <rect - style="fill:#f5f7fa;fill-opacity:1;fill-rule:evenodd;stroke-width:0.263352" - id="rect124" - width="5.5562501" - height="3.4395833" - x="6.3499999" - y="0.26458332" /> - </g> - <g - inkscape:label="[9] filedialogdelegate-background" - inkscape:groupmode="layer" - id="layer1" - style="display:inline" - sodipodi:insensitive="true"> - <rect - style="fill:none;stroke-width:0.946642;stroke-linejoin:round" - id="rect846" - width="6.0854168" - height="3.96875" - x="0" - y="-6.9388939e-18" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:7.98967;stroke-linejoin:round" - id="rect1054" - width="0.26458332" - height="3.4395833" - x="0" - y="0.26458332" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:10.1547;stroke-linejoin:round" - id="rect1212" - width="0.26458332" - height="5.5562401" - x="-0.26457959" - y="0.26459303" - transform="matrix(3.6708238e-5,-1,1,1.4067378e-5,0,0)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.21594;stroke-linejoin:round" - id="rect1505" - width="0.26458332" - height="0.26458287" - x="-3.9678898" - y="2.9104238" - transform="matrix(1.7480114e-6,-1,0.99999996,2.9541491e-4,0,0)" /> - <rect - style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.21594;stroke-linejoin:round" - id="rect1587" - width="0.26458332" - height="0.26458287" - x="-2.1149471" - y="5.8208375" - transform="matrix(1.7480114e-6,-1,0.99999996,2.9541491e-4,0,0)" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.0578;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect3108" - width="5.5562501" - height="3.4395833" - x="0.26458332" - y="0.26458332" /> - </g> -</svg> diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index 5a136a0c..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index f47a366b..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] Binary files differdeleted file mode 100644 index 9ecb680f..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/imagine/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-round.png b/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-round.png Binary files differdeleted file mode 100644 index a4b7bc03..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-round.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-round.svg b/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-round.svg deleted file mode 100644 index fd053957..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-round.svg +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - width="16" - height="16" - viewBox="0 0 16 16" - version="1.1" - id="svg2" - inkscape:version="1.1-alpha (b0f32e08fc, 2021-03-07)" - sodipodi:docname="up-icon-round.svg" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/"> - <metadata - id="metadata10"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1848" - inkscape:window-height="1016" - id="namedview6" - showgrid="true" - inkscape:zoom="16" - inkscape:cx="-1.96875" - inkscape:cy="10.65625" - inkscape:window-x="72" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" - inkscape:document-rotation="0" - inkscape:pagecheckerboard="0"> - <inkscape:grid - type="xygrid" - id="grid1497" /> - </sodipodi:namedview> - <g - inkscape:groupmode="layer" - id="layer1" - inkscape:label="up-icon-round" /> - <g - id="g1413" - transform="translate(0.3592822,-0.0034197)"> - <path - style="fill:none;fill-opacity:1;stroke:#757575;stroke-width:2.23721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 7.6407178,2.1165354 3e-7,11.7737686" - id="path20" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;fill-opacity:1;stroke:#757575;stroke-width:2.23721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 7.6407178,2.1165354 2.6616436,7.0956099" - id="path950" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;fill-opacity:1;stroke:#757575;stroke-width:2.23721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 7.6407178,2.1165354 12.619792,7.0956096" - id="path952" - sodipodi:nodetypes="cc" /> - </g> - <rect - style="fill:none;stroke-width:5.33333;stroke-linejoin:round" - id="rect2897" - width="16" - height="16" - x="0" - y="0" /> -</svg> diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 25ee970a..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 486f2f46..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 58540253..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-square.png b/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-square.png Binary files differdeleted file mode 100644 index f7d4151a..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-square.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-square.svg b/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-square.svg deleted file mode 100644 index 93fc45ba..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-square.svg +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - width="16" - height="16" - viewBox="0 0 16 16" - version="1.1" - id="svg2" - inkscape:version="1.1-alpha (b0f32e08fc, 2021-03-07)" - sodipodi:docname="up-icon-square.svg" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/"> - <metadata - id="metadata10"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1848" - inkscape:window-height="1016" - id="namedview6" - showgrid="true" - inkscape:zoom="11.313709" - inkscape:cx="-6.3197669" - inkscape:cy="28.416854" - inkscape:window-x="72" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" - inkscape:document-rotation="0" - inkscape:pagecheckerboard="0"> - <inkscape:grid - type="xygrid" - id="grid1497" /> - </sodipodi:namedview> - <g - inkscape:groupmode="layer" - id="layer1" - inkscape:label="up-icon-square" /> - <path - style="fill:#757575;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 8.000315,1 -6,6 L 3,8 8,3 13,8 14,7 Z" - id="path928" - sodipodi:nodetypes="ccccccc" /> - <rect - style="fill:none;stroke-width:5.33333;stroke-linejoin:round" - id="rect2897" - width="16" - height="16" - x="0" - y="0" /> - <rect - style="fill:#757575;fill-opacity:1;stroke:none;stroke-width:5.23075;stroke-linejoin:round" - id="rect4947" - width="1.5" - height="11" - x="7.2501574" - y="3" /> -</svg> diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 2e2a3d94..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 8965148c..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 0a56bbcc..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-thick-square.png b/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-thick-square.png Binary files differdeleted file mode 100644 index 3f9f8762..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-thick-square.png +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-thick-square.svg b/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-thick-square.svg deleted file mode 100644 index dd20777b..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/up-icon-thick-square.svg +++ /dev/null @@ -1,72 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - width="16" - height="16" - viewBox="0 0 16 16" - version="1.1" - id="svg2" - inkscape:version="1.1-alpha (b0f32e08fc, 2021-03-07)" - sodipodi:docname="up-icon-thick-square.svg" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/"> - <metadata - id="metadata10"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1848" - inkscape:window-height="1016" - id="namedview6" - showgrid="true" - inkscape:zoom="22.627417" - inkscape:cx="2.3201941" - inkscape:cy="10.00998" - inkscape:window-x="72" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" - inkscape:document-rotation="0" - inkscape:pagecheckerboard="0"> - <inkscape:grid - type="xygrid" - id="grid1497" /> - </sodipodi:namedview> - <g - inkscape:groupmode="layer" - id="layer1" - inkscape:label="up-icon-thick-square" /> - <path - style="fill:#757575;fill-opacity:1;stroke:none;stroke-width:1.34164px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="m 2,8 6,-6 6,6 h -3 v 7 H 5 V 8 Z" - id="path1103" - sodipodi:nodetypes="cccccccc" /> - <rect - style="fill:none;stroke-width:4;stroke-linejoin:round" - id="rect1748" - width="16" - height="16" - x="0" - y="0" /> -</svg> diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index b4efe132..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 2e8302b1..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] b/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] Binary files differdeleted file mode 100644 index 5cf05ab3..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/images/[email protected] +++ /dev/null diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Fusion/FileDialog.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Fusion/FileDialog.qml deleted file mode 100644 index 744f32f4..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Fusion/FileDialog.qml +++ /dev/null @@ -1,196 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt.labs.folderlistmodel -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl -import QtQuick.Dialogs -import QtQuick.Dialogs.quickimpl -import QtQuick.Layouts -import QtQuick.Templates as T - -import "." as DialogsImpl - -FileDialogImpl { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - padding: 6 - horizontalPadding: 12 - - standardButtons: T.Dialog.Open | T.Dialog.Cancel - - /* - We use attached properties because we want to handle logic in C++, and: - - We can't assume the footer only contains a DialogButtonBox (which would allow us - to connect up to it in QQuickFileDialogImpl); it also needs to hold a ComboBox - and therefore the root footer item will be e.g. a layout item instead. - - We don't want to create our own "FileDialogButtonBox" (in order to be able to handle the logic - in C++) because we'd need to copy (and hence duplicate code in) DialogButtonBox.qml. - */ - FileDialogImpl.buttonBox: buttonBox - FileDialogImpl.nameFiltersComboBox: nameFiltersComboBox - FileDialogImpl.fileDialogListView: fileDialogListView - FileDialogImpl.breadcrumbBar: breadcrumbBar - - background: Rectangle { - implicitWidth: 600 - implicitHeight: 400 - color: control.palette.window - border.color: control.palette.mid - radius: 2 - - Rectangle { - z: -1 - x: 1 - y: 1 - width: parent.width - height: parent.height - color: control.palette.shadow - opacity: 0.2 - radius: 2 - } - } - - header: ColumnLayout { - spacing: 0 - - Label { - objectName: "dialogTitleBarLabel" - text: control.title - horizontalAlignment: Label.AlignHCenter - elide: Label.ElideRight - font.bold: true - padding: 6 - - Layout.fillWidth: true - Layout.leftMargin: 12 - Layout.rightMargin: 12 - Layout.topMargin: control.title.length > 0 ? 0 : 12 - Layout.preferredHeight: control.title.length > 0 ? implicitHeight : 0 - } - - DialogsImpl.FolderBreadcrumbBar { - id: breadcrumbBar - fileDialog: control - - Layout.fillWidth: true - Layout.leftMargin: 12 - Layout.rightMargin: 12 - - KeyNavigation.tab: fileDialogListView - } - } - - contentItem: Frame { - padding: 0 - verticalPadding: 1 - - ListView { - id: fileDialogListView - objectName: "fileDialogListView" - anchors.fill: parent - clip: true - focus: true - boundsBehavior: Flickable.StopAtBounds - - ScrollBar.vertical: ScrollBar {} - - model: FolderListModel { - folder: control.currentFolder - nameFilters: control.selectedNameFilter.globs - showDirsFirst: true - } - delegate: DialogsImpl.FileDialogDelegate { - objectName: "fileDialogDelegate" + index - x: 1 - width: ListView.view.width - 2 - highlighted: ListView.isCurrentItem - fileDialog: control - fileDetailRowWidth: nameFiltersComboBox.width - - KeyNavigation.backtab: breadcrumbBar - KeyNavigation.tab: nameFiltersComboBox - } - } - } - - footer: RowLayout { - id: rowLayout - spacing: 12 - - ComboBox { - // OK to use IDs here, since users shouldn't be overriding this stuff. - id: nameFiltersComboBox - model: control.nameFilters - - Layout.leftMargin: 12 - Layout.fillWidth: true - Layout.bottomMargin: 12 - } - - DialogButtonBox { - id: buttonBox - standardButtons: control.standardButtons - spacing: 6 - horizontalPadding: 0 - verticalPadding: 0 - background: null - - Layout.rightMargin: 12 - Layout.bottomMargin: 12 - } - } - - T.Overlay.modal: Rectangle { - color: Fusion.topShadow - } - - T.Overlay.modeless: Rectangle { - color: Fusion.topShadow - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Fusion/FileDialogDelegate.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Fusion/FileDialogDelegate.qml deleted file mode 100644 index 3c2b7b9c..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Fusion/FileDialogDelegate.qml +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl as ControlsImpl -import QtQuick.Controls.Fusion -import QtQuick.Controls.Fusion.impl -import QtQuick.Dialogs.quickimpl as DialogsQuickImpl - -DialogsQuickImpl.FileDialogDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 6 - spacing: 6 - - file: fileUrl - - icon.width: 16 - icon.height: 16 - icon.color: highlighted ? palette.highlightedText : palette.text - icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/" - + (fileIsDir ? "folder" : "file") + "-icon-round.png" - - // We don't use index here, but in C++. Since we're using required - // properties, the index context property will not be injected, so we can't - // use its QQmlContext to access it. - required property int index - required property string fileName - required property url fileUrl - required property int fileSize - required property date fileModified - required property bool fileIsDir - - required property int fileDetailRowWidth - - contentItem: FileDialogDelegateLabel { - delegate: control - fileDetailRowTextColor: control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text - fileDetailRowWidth: control.fileDetailRowWidth - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 20 - color: control.down ? Fusion.buttonColor(control.palette, false, true, true) - : control.highlighted ? Fusion.highlight(control.palette) : control.palette.base - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Fusion/FolderBreadcrumbBar.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Fusion/FolderBreadcrumbBar.qml deleted file mode 100644 index 066a60d7..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Fusion/FolderBreadcrumbBar.qml +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Dialogs.quickimpl as DialogsQuickImpl - -DialogsQuickImpl.FolderBreadcrumbBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + (upButton ? upButton.implicitWidth + upButtonSpacing : 0) - + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - upButtonSpacing: 6 - - contentItem: ListView { - id: listView - currentIndex: control.currentIndex - model: control.contentModel - orientation: ListView.Horizontal - snapMode: ListView.SnapToItem - highlightMoveDuration: 0 - interactive: false - clip: true - - Rectangle { - anchors.fill: parent - color: control.palette.light - border.color: control.palette.mid - radius: 2 - z: -1 - } - } - buttonDelegate: Button { - id: buttonDelegateRoot - text: folderName - flat: true - - // The default of 100 is a bit too wide for short directory names. - Binding { - target: buttonDelegateRoot.background - property: "implicitWidth" - value: 24 - } - - required property int index - required property string folderName - } - separatorDelegate: IconImage { - id: iconImage - source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/crumb-separator-icon-round.png" - sourceSize: Qt.size(8, 8) - width: 8 + 6 - height: control.contentItem.height - color: control.palette.dark - y: (control.height - height) / 2 - } - upButton: Button { - x: control.leftPadding - y: control.topPadding - icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/up-icon-round.png" - icon.width: 16 - icon.height: 16 - width: height - height: Math.max(implicitHeight, control.contentItem.height) - focusPolicy: Qt.TabFocus - } - textField: TextField { - text: control.fileDialog.selectedFile - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Fusion/FontDialog.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Fusion/FontDialog.qml deleted file mode 100644 index dd75338f..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Fusion/FontDialog.qml +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Controls.Fusion -import QtQuick.Dialogs -import QtQuick.Dialogs.quickimpl -import QtQuick.Layouts -import QtQuick.Templates as T - -FontDialogImpl { - id: control - - implicitWidth: Math.max(control.implicitBackgroundWidth + control.leftInset + control.rightInset, - control.contentWidth + control.leftPadding + control.rightPadding, - control.implicitHeaderWidth, - control.implicitFooterWidth) - implicitHeight: Math.max(control.implicitBackgroundHeight + control.topInset + control.bottomInset, - control.contentHeight + control.topPadding + control.bottomPadding - + (control.implicitHeaderHeight > 0 ? control.implicitHeaderHeight + control.spacing : 0) - + (control.implicitFooterHeight > 0 ? control.implicitFooterHeight + control.spacing : 0)) - - leftPadding: 20 - rightPadding: 20 - // Ensure that the background's border is visible. - leftInset: -1 - rightInset: -1 - topInset: -1 - bottomInset: -1 - - standardButtons: T.Dialog.Ok | T.Dialog.Cancel - - FontDialogImpl.buttonBox: buttonBox - FontDialogImpl.familyListView: content.familyListView - FontDialogImpl.styleListView: content.styleListView - FontDialogImpl.sizeListView: content.sizeListView - FontDialogImpl.sampleEdit: content.sampleEdit - FontDialogImpl.writingSystemComboBox: writingSystemComboBox - FontDialogImpl.underlineCheckBox: content.underline - FontDialogImpl.strikeoutCheckBox: content.strikeout - FontDialogImpl.familyEdit: content.familyEdit - FontDialogImpl.styleEdit: content.styleEdit - FontDialogImpl.sizeEdit: content.sizeEdit - - background: Rectangle { - implicitWidth: 600 - implicitHeight: 400 - color: control.palette.window - border.color: control.palette.mid - radius: 2 - - Rectangle { - z: -1 - x: 1 - y: 1 - width: parent.width - height: parent.height - color: control.palette.shadow - opacity: 0.2 - radius: 2 - } - } - - Overlay.modal: Rectangle { - color: Fusion.topShadow - } - - Overlay.modeless: Rectangle { - color: Fusion.topShadow - } - - header: Label { - text: control.title - horizontalAlignment: Label.AlignHCenter - elide: Label.ElideRight - font.bold: true - padding: 6 - } - - contentItem: FontDialogContent { - id: content - } - - footer: RowLayout { - id: rowLayout - spacing: 12 - - Label { - text: qsTr("Writing System") - - Layout.leftMargin: 12 - Layout.topMargin: 6 - Layout.bottomMargin: 6 - } - ComboBox{ - id: writingSystemComboBox - - Layout.fillWidth: true - Layout.topMargin: 6 - Layout.bottomMargin: 6 - } - - DialogButtonBox { - id: buttonBox - standardButtons: control.standardButtons - spacing: 6 - horizontalPadding: 0 - verticalPadding: 0 - background: null - - Layout.rightMargin: 12 - Layout.topMargin: 6 - Layout.bottomMargin: 6 - } - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Imagine/FileDialog.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Imagine/FileDialog.qml deleted file mode 100644 index fdf8f36e..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Imagine/FileDialog.qml +++ /dev/null @@ -1,190 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt.labs.folderlistmodel -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl -import QtQuick.Dialogs.quickimpl -import QtQuick.Layouts - -import "." as DialogsImpl - -FileDialogImpl { - id: control - - // Can't set implicitWidth of the NinePatchImage background, so we do it here. - implicitWidth: Math.max(600, - implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(400, - implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - standardButtons: T.Dialog.Open | T.Dialog.Cancel - - FileDialogImpl.buttonBox: buttonBox - FileDialogImpl.nameFiltersComboBox: nameFiltersComboBox - FileDialogImpl.fileDialogListView: fileDialogListView - FileDialogImpl.breadcrumbBar: breadcrumbBar - - background: NinePatchImage { - source: Imagine.url + "dialog-background" - NinePatchImageSelector on source { - states: [ - {"modal": control.modal}, - {"dim": control.dim} - ] - } - } - - header: ColumnLayout { - spacing: 12 - - Label { - text: control.title - elide: Label.ElideRight - font.bold: true - - Layout.leftMargin: 16 - Layout.rightMargin: 16 - Layout.topMargin: 12 - Layout.fillWidth: true - Layout.preferredHeight: control.title.length > 0 ? implicitHeight : 0 - - background: NinePatchImage { - width: parent.width - height: parent.height - - source: Imagine.url + "dialog-title" - NinePatchImageSelector on source { - states: [ - {"modal": control.modal}, - {"dim": control.dim} - ] - } - } - } - - DialogsImpl.FolderBreadcrumbBar { - id: breadcrumbBar - fileDialog: control - - Layout.leftMargin: 16 - Layout.rightMargin: 16 - Layout.fillWidth: true - Layout.maximumWidth: parent.width - 28 - } - } - - contentItem: ListView { - id: fileDialogListView - objectName: "fileDialogListView" - clip: true - boundsBehavior: Flickable.StopAtBounds - - ScrollBar.vertical: ScrollBar {} - - model: FolderListModel { - folder: control.currentFolder - nameFilters: control.selectedNameFilter.globs - showDirsFirst: true - } - delegate: DialogsImpl.FileDialogDelegate { - objectName: "fileDialogDelegate" + index - width: ListView.view.width - highlighted: ListView.isCurrentItem - fileDialog: control - fileDetailRowWidth: nameFiltersComboBox.width - } - } - - footer: RowLayout { - id: rowLayout - spacing: 20 - - ComboBox { - id: nameFiltersComboBox - model: control.nameFilters - - Layout.leftMargin: 16 - Layout.bottomMargin: 16 - Layout.fillWidth: true - } - - DialogButtonBox { - id: buttonBox - standardButtons: control.standardButtons - spacing: 12 - - Layout.bottomMargin: 16 - Layout.rightMargin: 16 - } - } - - T.Overlay.modal: NinePatchImage { - source: Imagine.url + "dialog-overlay" - NinePatchImageSelector on source { - states: [ - {"modal": true} - ] - } - } - - T.Overlay.modeless: NinePatchImage { - source: Imagine.url + "dialog-overlay" - NinePatchImageSelector on source { - states: [ - {"modal": false} - ] - } - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Imagine/FileDialogDelegate.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Imagine/FileDialogDelegate.qml deleted file mode 100644 index 9785afd1..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Imagine/FileDialogDelegate.qml +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick.Controls -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl -import QtQuick.Controls.impl as ControlsImpl -import QtQuick.Dialogs.quickimpl as DialogsQuickImpl - -DialogsQuickImpl.FileDialogDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 12 - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - file: fileUrl - - icon.width: 16 - icon.height: 16 - icon.color: highlighted ? palette.highlightedText : palette.text - icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/" - + (fileIsDir ? "folder" : "file") + "-icon-round.png" - - required property int index - required property string fileName - required property url fileUrl - required property int fileSize - required property date fileModified - required property bool fileIsDir - - required property int fileDetailRowWidth - - contentItem: FileDialogDelegateLabel { - delegate: control - fileDetailRowTextColor: control.icon.color - fileDetailRowWidth: control.fileDetailRowWidth - } - - background: NinePatchImage { - source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/imagine/filedialogdelegate-background" - NinePatchImageSelector on source { - states: [ - { "disabled": !control.enabled }, - { "pressed": control.down }, - { "focused": control.visualFocus }, - { "highlighted": control.highlighted }, - { "mirrored": control.mirrored }, - { "hovered": control.hovered } - ] - } - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Imagine/FolderBreadcrumbBar.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Imagine/FolderBreadcrumbBar.qml deleted file mode 100644 index 2a56a3c3..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Imagine/FolderBreadcrumbBar.qml +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Dialogs.quickimpl as DialogsQuickImpl - -DialogsQuickImpl.FolderBreadcrumbBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + (upButton ? upButton.implicitWidth + upButtonSpacing : 0) - + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - upButtonSpacing: 20 - padding: 1 - - background: Rectangle {} - contentItem: ListView { - id: listView - currentIndex: control.currentIndex - model: control.contentModel - orientation: ListView.Horizontal - snapMode: ListView.SnapToItem - highlightMoveDuration: 0 - interactive: false - clip: true - } - buttonDelegate: Button { - id: buttonDelegateRoot - text: folderName - flat: true - - required property int index - required property string folderName - } - separatorDelegate: IconImage { - id: iconImage - source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/crumb-separator-icon-round.png" - sourceSize: Qt.size(8, 8) - width: 8 - height: control.contentItem.height - y: (control.height - height) / 2 - } - upButton: ToolButton { - x: control.leftPadding - y: control.topPadding - icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/up-icon-thick-square.png" - icon.width: 16 - icon.height: 16 - focusPolicy: Qt.TabFocus - } - textField: TextField { - text: control.fileDialog.selectedFile - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Imagine/FontDialog.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Imagine/FontDialog.qml deleted file mode 100644 index 47bd53da..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Imagine/FontDialog.qml +++ /dev/null @@ -1,167 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Controls.Imagine -import QtQuick.Controls.Imagine.impl -import QtQuick.Dialogs -import QtQuick.Dialogs.quickimpl -import QtQuick.Layouts -import QtQuick.Templates as T - -FontDialogImpl { - id: control - - // Can't set implicitWidth of the NinePatchImage background, so we do it here. - implicitWidth: Math.max(600, - implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(400, - implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - topPadding: background ? background.topPadding : 0 - leftPadding: background ? background.leftPadding : 0 - rightPadding: background ? background.rightPadding : 0 - bottomPadding: background ? background.bottomPadding : 0 - - topInset: background ? -background.topInset || 0 : 0 - leftInset: background ? -background.leftInset || 0 : 0 - rightInset: background ? -background.rightInset || 0 : 0 - bottomInset: background ? -background.bottomInset || 0 : 0 - - standardButtons: T.Dialog.Ok | T.Dialog.Cancel - - FontDialogImpl.buttonBox: buttonBox - FontDialogImpl.familyListView: content.familyListView - FontDialogImpl.styleListView: content.styleListView - FontDialogImpl.sizeListView: content.sizeListView - FontDialogImpl.sampleEdit: content.sampleEdit - FontDialogImpl.writingSystemComboBox: writingSystemComboBox - FontDialogImpl.underlineCheckBox: content.underline - FontDialogImpl.strikeoutCheckBox: content.strikeout - FontDialogImpl.familyEdit: content.familyEdit - FontDialogImpl.styleEdit: content.styleEdit - FontDialogImpl.sizeEdit: content.sizeEdit - - background: NinePatchImage { - source: Imagine.url + "dialog-background" - NinePatchImageSelector on source { - states: [ - {"modal": control.modal}, - {"dim": control.dim} - ] - } - } - - Overlay.modal: NinePatchImage { - source: Imagine.url + "dialog-overlay" - NinePatchImageSelector on source { - states: [ - {"modal": true} - ] - } - } - - Overlay.modeless: NinePatchImage { - source: Imagine.url + "dialog-overlay" - NinePatchImageSelector on source { - states: [ - {"modal": false} - ] - } - } - - header: Label { - text: control.title - elide: Label.ElideRight - font.bold: true - - leftPadding: 16 - rightPadding: 16 - topPadding: 12 - height: control.title.length > 0 ? implicitHeight : 0 - - background: NinePatchImage { - width: parent.width - height: parent.height - - source: Imagine.url + "dialog-title" - NinePatchImageSelector on source { - states: [ - {"modal": control.modal}, - {"dim": control.dim} - ] - } - } - } - - contentItem: FontDialogContent { - id: content - rowSpacing: 16 - } - - footer: RowLayout { - id: rowLayout - spacing: 20 - - Label { - text: qsTr("Writing System") - Layout.leftMargin: 20 - Layout.bottomMargin: 16 - } - ComboBox{ - id: writingSystemComboBox - - Layout.fillWidth: true - Layout.bottomMargin: 16 - } - - DialogButtonBox { - id: buttonBox - standardButtons: control.standardButtons - spacing: 12 - Layout.rightMargin: 20 - Layout.bottomMargin: 16 - } - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Material/FileDialog.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Material/FileDialog.qml deleted file mode 100644 index 7e7c4307..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Material/FileDialog.qml +++ /dev/null @@ -1,163 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt.labs.folderlistmodel -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl -import QtQuick.Dialogs -import QtQuick.Dialogs.quickimpl -import QtQuick.Layouts -import QtQuick.Templates as T - -import "." as DialogsImpl - -FileDialogImpl { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - leftPadding: 24 - rightPadding: 24 - - standardButtons: T.Dialog.Open | T.Dialog.Cancel - - Material.elevation: 24 - - FileDialogImpl.buttonBox: buttonBox - FileDialogImpl.nameFiltersComboBox: nameFiltersComboBox - FileDialogImpl.fileDialogListView: fileDialogListView - FileDialogImpl.breadcrumbBar: breadcrumbBar - - background: Rectangle { - implicitWidth: 600 - implicitHeight: 400 - radius: 2 - color: control.Material.dialogColor - - layer.enabled: control.Material.elevation > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - } - } - - header: ColumnLayout { - spacing: 12 - - Label { - text: control.title - visible: control.title.length > 0 - elide: Label.ElideRight - font.bold: true - font.pixelSize: 16 - - Layout.leftMargin: 24 - Layout.rightMargin: 24 - Layout.topMargin: 24 - Layout.fillWidth: true - } - - DialogsImpl.FolderBreadcrumbBar { - id: breadcrumbBar - fileDialog: control - - Layout.leftMargin: 24 - Layout.rightMargin: 24 - Layout.fillWidth: true - Layout.maximumWidth: parent.width - 48 - } - } - - contentItem: ListView { - id: fileDialogListView - objectName: "fileDialogListView" - clip: true - - ScrollBar.vertical: ScrollBar {} - - model: FolderListModel { - folder: control.currentFolder - nameFilters: control.selectedNameFilter.globs - showDirsFirst: true - } - delegate: DialogsImpl.FileDialogDelegate { - objectName: "fileDialogDelegate" + index - width: ListView.view.width - highlighted: ListView.isCurrentItem - fileDialog: control - fileDetailRowWidth: nameFiltersComboBox.width - } - } - - footer: RowLayout { - id: rowLayout - spacing: 20 - - ComboBox { - id: nameFiltersComboBox - model: control.nameFilters - - Layout.leftMargin: 20 - Layout.fillWidth: true - } - - DialogButtonBox { - id: buttonBox - standardButtons: control.standardButtons - spacing: 12 - horizontalPadding: 0 - verticalPadding: 20 - - Layout.rightMargin: 20 - } - } - - Overlay.modal: Rectangle { - color: Color.transparent(control.palette.shadow, 0.5) - } - - Overlay.modeless: Rectangle { - color: Color.transparent(control.palette.shadow, 0.12) - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Material/FileDialogDelegate.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Material/FileDialogDelegate.qml deleted file mode 100644 index eb4bae9b..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Material/FileDialogDelegate.qml +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl -import QtQuick.Dialogs.quickimpl as DialogsQuickImpl - -DialogsQuickImpl.FileDialogDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 16 - verticalPadding: 8 - spacing: 16 - - icon.width: 16 - icon.height: 16 - icon.color: enabled ? Material.foreground : Material.hintTextColor - icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/" - + (fileIsDir ? "folder" : "file") + "-icon-square.png" - - file: fileUrl - - required property int index - required property string fileName - required property url fileUrl - required property int fileSize - required property date fileModified - required property bool fileIsDir - - required property int fileDetailRowWidth - - contentItem: FileDialogDelegateLabel { - delegate: control - fileDetailRowTextColor: control.Material.hintTextColor - fileDetailRowWidth: control.fileDetailRowWidth - } - - background: Rectangle { - implicitHeight: control.Material.delegateHeight - - color: control.highlighted ? Color.transparent(control.Material.accentColor, 0.08) : "transparent" - - Ripple { - width: parent.width - height: parent.height - - clip: visible - pressed: control.pressed - anchor: control - active: control.down || control.visualFocus || control.hovered - color: control.highlighted ? control.Material.highlightedRippleColor : control.Material.rippleColor - } - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Material/FolderBreadcrumbBar.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Material/FolderBreadcrumbBar.qml deleted file mode 100644 index 7b839034..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Material/FolderBreadcrumbBar.qml +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Dialogs.quickimpl as DialogsQuickImpl - -DialogsQuickImpl.FolderBreadcrumbBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + (upButton ? upButton.implicitWidth + upButtonSpacing : 0) - + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - upButtonSpacing: 20 - padding: 1 - - background: Rectangle {} - contentItem: ListView { - id: listView - currentIndex: control.currentIndex - model: control.contentModel - orientation: ListView.Horizontal - snapMode: ListView.SnapToItem - highlightMoveDuration: 0 - interactive: false - clip: true - } - buttonDelegate: Button { - id: buttonDelegateRoot - text: folderName - flat: true - font.capitalization: Font.MixedCase - - // The default of 100 is a bit too wide for short directory names. - Binding { - target: buttonDelegateRoot.background - property: "implicitWidth" - value: control.Material.buttonHeight - } - - required property int index - required property string folderName - } - separatorDelegate: IconImage { - id: iconImage - source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/crumb-separator-icon-square.png" - sourceSize: Qt.size(8, 8) - // The image is 8x8, and add 2 px padding on each side. - width: 8 + 4 - height: control.contentItem.height - color: control.Material.hintTextColor - y: (control.height - height) / 2 - } - upButton: ToolButton { - x: control.leftPadding - y: control.topPadding - icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/up-icon-thick-square.png" - icon.width: 16 - icon.height: 16 - width: height - focusPolicy: Qt.TabFocus - } - textField: TextField { - text: control.fileDialog.selectedFile - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Material/FontDialog.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Material/FontDialog.qml deleted file mode 100644 index 51134680..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Material/FontDialog.qml +++ /dev/null @@ -1,142 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Controls.Material -import QtQuick.Controls.Material.impl -import QtQuick.Dialogs -import QtQuick.Dialogs.quickimpl -import QtQuick.Layouts -import QtQuick.Templates as T - -FontDialogImpl { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - leftPadding: 24 - rightPadding: 24 - - standardButtons: T.Dialog.Ok | T.Dialog.Cancel - - Material.elevation: 24 - - FontDialogImpl.buttonBox: buttonBox - FontDialogImpl.familyListView: content.familyListView - FontDialogImpl.styleListView: content.styleListView - FontDialogImpl.sizeListView: content.sizeListView - FontDialogImpl.sampleEdit: content.sampleEdit - FontDialogImpl.writingSystemComboBox: writingSystemComboBox - FontDialogImpl.underlineCheckBox: content.underline - FontDialogImpl.strikeoutCheckBox: content.strikeout - FontDialogImpl.familyEdit: content.familyEdit - FontDialogImpl.styleEdit: content.styleEdit - FontDialogImpl.sizeEdit: content.sizeEdit - - background: Rectangle { - implicitWidth: 600 - implicitHeight: 400 - radius: 2 - color: control.Material.dialogColor - - layer.enabled: control.Material.elevation > 0 - layer.effect: ElevationEffect { - elevation: control.Material.elevation - } - } - - Overlay.modal: Rectangle { - color: Color.transparent(control.palette.shadow, 0.5) - } - - Overlay.modeless: Rectangle { - color: Color.transparent(control.palette.shadow, 0.12) - } - - header: Label { - text: control.title - visible: control.title.length > 0 - elide: Label.ElideRight - font.bold: true - font.pixelSize: 16 - - leftPadding: 24 - rightPadding: 24 - topPadding: 24 - bottomPadding: 24 - } - - contentItem: FontDialogContent { - id: content - familyEdit.bottomPadding: 8 - styleEdit.bottomPadding: 8 - sizeEdit.bottomPadding: 8 - } - - footer: RowLayout { - id: rowLayout - spacing: 20 - - Label { - text: qsTr("Writing System") - - Layout.leftMargin: 20 - } - ComboBox{ - id: writingSystemComboBox - - Layout.fillWidth: true - } - - DialogButtonBox { - id: buttonBox - standardButtons: control.standardButtons - spacing: 12 - horizontalPadding: 0 - verticalPadding: 20 - - Layout.rightMargin: 20 - } - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Universal/FileDialog.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Universal/FileDialog.qml deleted file mode 100644 index 02b7368c..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Universal/FileDialog.qml +++ /dev/null @@ -1,165 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt.labs.folderlistmodel -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.Universal -import QtQuick.Dialogs -import QtQuick.Dialogs.quickimpl -import QtQuick.Layouts -import QtQuick.Templates as T - -import "." as DialogsImpl - -FileDialogImpl { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - padding: 24 - verticalPadding: 18 - - standardButtons: T.Dialog.Open | T.Dialog.Cancel - - FileDialogImpl.buttonBox: buttonBox - FileDialogImpl.nameFiltersComboBox: nameFiltersComboBox - FileDialogImpl.fileDialogListView: fileDialogListView - FileDialogImpl.breadcrumbBar: breadcrumbBar - - background: Rectangle { - implicitWidth: 600 - implicitHeight: 400 - color: control.Universal.chromeMediumLowColor - border.color: control.Universal.chromeHighColor - border.width: 1 // FlyoutBorderThemeThickness - } - - header: ColumnLayout { - spacing: 12 - - Label { - text: control.title - elide: Label.ElideRight - // TODO: QPlatformTheme::TitleBarFont - font.pixelSize: 20 - - Layout.leftMargin: 24 - Layout.rightMargin: 24 - Layout.topMargin: 18 - Layout.fillWidth: true - Layout.preferredHeight: control.title.length > 0 ? implicitHeight : 0 - - background: Rectangle { - x: 1; y: 1 // // FlyoutBorderThemeThickness - color: control.Universal.chromeMediumLowColor - width: parent.width - 2 - height: parent.height - 1 - } - } - - DialogsImpl.FolderBreadcrumbBar { - id: breadcrumbBar - fileDialog: control - - Layout.leftMargin: 24 - Layout.rightMargin: 24 - Layout.fillWidth: true - Layout.maximumWidth: parent.width - 48 - } - } - - contentItem: ListView { - id: fileDialogListView - objectName: "fileDialogListView" - clip: true - boundsBehavior: Flickable.StopAtBounds - - ScrollBar.vertical: ScrollBar {} - - model: FolderListModel { - folder: control.currentFolder - nameFilters: control.selectedNameFilter.globs - showDirsFirst: true - } - delegate: DialogsImpl.FileDialogDelegate { - objectName: "fileDialogDelegate" + index - width: ListView.view.width - highlighted: ListView.isCurrentItem - fileDialog: control - fileDetailRowWidth: nameFiltersComboBox.width - } - } - - footer: RowLayout { - id: rowLayout - spacing: 24 - - ComboBox { - id: nameFiltersComboBox - model: control.nameFilters - - Layout.leftMargin: 24 - Layout.fillWidth: true - Layout.topMargin: 6 - Layout.bottomMargin: 24 - } - - DialogButtonBox { - id: buttonBox - standardButtons: control.standardButtons - spacing: 12 - horizontalPadding: 0 - - Layout.rightMargin: 24 - } - } - - T.Overlay.modal: Rectangle { - color: control.Universal.baseLowColor - } - - T.Overlay.modeless: Rectangle { - color: control.Universal.baseLowColor - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Universal/FileDialogDelegate.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Universal/FileDialogDelegate.qml deleted file mode 100644 index d4322dc5..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Universal/FileDialogDelegate.qml +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls.impl -import QtQuick.Controls.Universal -import QtQuick.Dialogs.quickimpl as DialogsQuickImpl - -DialogsQuickImpl.FileDialogDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - spacing: 12 - - padding: 12 - topPadding: padding - 1 - bottomPadding: padding + 1 - - icon.width: 20 - icon.height: 20 - icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) - icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/" - + (fileIsDir ? "folder" : "file") + "-icon-square.png" - - file: fileUrl - - required property int index - required property string fileName - required property url fileUrl - required property int fileSize - required property date fileModified - required property bool fileIsDir - - required property int fileDetailRowWidth - - contentItem: FileDialogDelegateLabel { - delegate: control - fileDetailRowTextColor: control.icon.color - fileDetailRowWidth: control.fileDetailRowWidth - } - - background: Rectangle { - visible: control.down || control.highlighted || control.visualFocus || control.hovered - color: control.down ? control.Universal.listMediumColor : - control.hovered ? control.Universal.listLowColor : control.Universal.altMediumLowColor - - Rectangle { - width: parent.width - height: parent.height - visible: control.visualFocus || control.highlighted - color: control.Universal.accent - opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 - } - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Universal/FolderBreadcrumbBar.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Universal/FolderBreadcrumbBar.qml deleted file mode 100644 index f270b411..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Universal/FolderBreadcrumbBar.qml +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Controls.Universal -import QtQuick.Dialogs.quickimpl as DialogsQuickImpl - -DialogsQuickImpl.FolderBreadcrumbBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + (upButton ? upButton.implicitWidth + upButtonSpacing : 0) - + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - upButtonSpacing: 20 - padding: 1 - - background: Rectangle {} - contentItem: ListView { - id: listView - currentIndex: control.currentIndex - model: control.contentModel - orientation: ListView.Horizontal - snapMode: ListView.SnapToItem - highlightMoveDuration: 0 - interactive: false - clip: true - } - buttonDelegate: ToolButton { - id: buttonDelegateRoot - text: folderName - - // The default is a bit too wide for short directory names. - Binding { - target: buttonDelegateRoot.background - property: "implicitWidth" - value: 48 - } - - required property int index - required property string folderName - } - separatorDelegate: IconImage { - id: iconImage - source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/crumb-separator-icon-square.png" - sourceSize: Qt.size(8, 8) - // The image is 8x8, and add 2 px padding on each side. - width: 8 + 4 - height: control.contentItem.height - color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) - y: (control.height - height) / 2 - } - upButton: ToolButton { - x: control.leftPadding - y: control.topPadding - icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/up-icon-square.png" - icon.width: 16 - icon.height: 16 - width: height - focusPolicy: Qt.TabFocus - } - textField: TextField { - text: control.fileDialog.selectedFile - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Universal/FontDialog.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/+Universal/FontDialog.qml deleted file mode 100644 index 1bd3092e..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/+Universal/FontDialog.qml +++ /dev/null @@ -1,144 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Controls.Universal -import QtQuick.Dialogs -import QtQuick.Dialogs.quickimpl -import QtQuick.Layouts -import QtQuick.Templates as T - -FontDialogImpl { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - padding: 24 - verticalPadding: 18 - - standardButtons: T.Dialog.Ok | T.Dialog.Cancel - - FontDialogImpl.buttonBox: buttonBox - FontDialogImpl.familyListView: content.familyListView - FontDialogImpl.styleListView: content.styleListView - FontDialogImpl.sizeListView: content.sizeListView - FontDialogImpl.sampleEdit: content.sampleEdit - FontDialogImpl.writingSystemComboBox: writingSystemComboBox - FontDialogImpl.underlineCheckBox: content.underline - FontDialogImpl.strikeoutCheckBox: content.strikeout - FontDialogImpl.familyEdit: content.familyEdit - FontDialogImpl.styleEdit: content.styleEdit - FontDialogImpl.sizeEdit: content.sizeEdit - - background: Rectangle { - implicitWidth: 600 - implicitHeight: 400 - color: control.Universal.chromeMediumLowColor - border.color: control.Universal.chromeHighColor - border.width: 1 // FlyoutBorderThemeThickness - } - - Overlay.modal: Rectangle { - color: control.Universal.baseLowColor - } - - Overlay.modeless: Rectangle { - color: control.Universal.baseLowColor - } - - header: Label { - text: control.title - elide: Label.ElideRight - // TODO: QPlatformTheme::TitleBarFont - font.pixelSize: 20 - - leftPadding: 24 - rightPadding: 24 - topPadding: 18 - height: control.title.length > 0 ? implicitHeight : 0 - - background: Rectangle { - x: 1; y: 1 // // FlyoutBorderThemeThickness - color: control.Universal.chromeMediumLowColor - width: parent.width - 2 - height: parent.height - 1 - } - } - - contentItem: FontDialogContent { - id: content - rowSpacing: 12 - } - - footer: RowLayout { - id: rowLayout - spacing: 24 - - Label { - text: qsTr("Writing System") - - Layout.leftMargin: 24 - Layout.topMargin: 6 - Layout.bottomMargin: 24 - } - ComboBox{ - id: writingSystemComboBox - - Layout.fillWidth: true - Layout.topMargin: 6 - Layout.bottomMargin: 24 - - } - - DialogButtonBox { - id: buttonBox - standardButtons: control.standardButtons - spacing: 12 - horizontalPadding: 0 - - Layout.rightMargin: 24 - } - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/FileDialog.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/FileDialog.qml deleted file mode 100644 index 99a90cbc..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/FileDialog.qml +++ /dev/null @@ -1,183 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import Qt.labs.folderlistmodel -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Dialogs -import QtQuick.Dialogs.quickimpl -import QtQuick.Layouts -import QtQuick.Templates as T - -import "." as DialogsImpl - -FileDialogImpl { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitHeaderWidth, - implicitFooterWidth) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding - + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) - + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) - - leftPadding: 20 - rightPadding: 20 - // Ensure that the background's border is visible. - leftInset: -1 - rightInset: -1 - topInset: -1 - bottomInset: -1 - - standardButtons: T.Dialog.Open | T.Dialog.Cancel - - /* - We use attached properties because we want to handle logic in C++, and: - - We can't assume the footer only contains a DialogButtonBox (which would allow us - to connect up to it in QQuickFileDialogImpl); it also needs to hold a ComboBox - and therefore the root footer item will be e.g. a layout item instead. - - We don't want to create our own "FileDialogButtonBox" (in order to be able to handle the logic - in C++) because we'd need to copy (and hence duplicate code in) DialogButtonBox.qml. - */ - FileDialogImpl.buttonBox: buttonBox - FileDialogImpl.nameFiltersComboBox: nameFiltersComboBox - FileDialogImpl.fileDialogListView: fileDialogListView - FileDialogImpl.breadcrumbBar: breadcrumbBar - - background: Rectangle { - implicitWidth: 600 - implicitHeight: 400 - color: control.palette.window - border.color: control.palette.dark - } - - header: Pane { - palette.window: control.palette.light - padding: 20 - - contentItem: Column { - spacing: 12 - - Label { - objectName: "dialogTitleBarLabel" - width: parent.width - text: control.title - visible: control.title.length > 0 - horizontalAlignment: Label.AlignHCenter - elide: Label.ElideRight - font.bold: true - } - - DialogsImpl.FolderBreadcrumbBar { - id: breadcrumbBar - width: parent.width - fileDialog: control - - KeyNavigation.tab: fileDialogListView - } - } - } - - contentItem: ListView { - id: fileDialogListView - objectName: "fileDialogListView" - clip: true - focus: true - boundsBehavior: Flickable.StopAtBounds - - ScrollBar.vertical: ScrollBar {} - - model: FolderListModel { - folder: control.currentFolder - nameFilters: control.selectedNameFilter.globs - showDirsFirst: true - } - delegate: DialogsImpl.FileDialogDelegate { - objectName: "fileDialogDelegate" + index - width: ListView.view.width - highlighted: ListView.isCurrentItem - fileDialog: control - fileDetailRowWidth: nameFiltersComboBox.width - - KeyNavigation.backtab: breadcrumbBar - KeyNavigation.tab: nameFiltersComboBox - } - } - - footer: Rectangle { - color: control.palette.light - implicitWidth: rowLayout.implicitWidth - implicitHeight: rowLayout.implicitHeight - - RowLayout { - id: rowLayout - width: parent.width - height: parent.height - spacing: 20 - - ComboBox { - // OK to use IDs here, since users shouldn't be overriding this stuff. - id: nameFiltersComboBox - model: control.nameFilters - - Layout.leftMargin: 20 - Layout.fillWidth: true - } - - DialogButtonBox { - id: buttonBox - standardButtons: control.standardButtons - palette.window: control.palette.light - spacing: 12 - horizontalPadding: 0 - verticalPadding: 20 - - Layout.rightMargin: 20 - } - } - } - - Overlay.modal: Rectangle { - color: Color.transparent(control.palette.shadow, 0.5) - } - - Overlay.modeless: Rectangle { - color: Color.transparent(control.palette.shadow, 0.12) - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/FileDialogDelegate.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/FileDialogDelegate.qml deleted file mode 100644 index 03250faa..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/FileDialogDelegate.qml +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl as ControlsImpl -import QtQuick.Dialogs.quickimpl as DialogsQuickImpl - -DialogsQuickImpl.FileDialogDelegate { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - padding: 12 - spacing: 8 - topPadding: 0 - bottomPadding: 0 - - file: fileUrl - - icon.width: 16 - icon.height: 16 - icon.color: highlighted ? palette.highlightedText : palette.text - icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/" - + (fileIsDir ? "folder" : "file") + "-icon-round.png" - - // We don't use index here, but in C++. Since we're using required - // properties, the index context property will not be injected, so we can't - // use its QQmlContext to access it. - required property int index - required property string fileName - required property url fileUrl - required property int fileSize - required property date fileModified - required property bool fileIsDir - - required property int fileDetailRowWidth - - contentItem: FileDialogDelegateLabel { - delegate: control - fileDetailRowTextColor: control.icon.color - fileDetailRowWidth: control.fileDetailRowWidth - } - - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - visible: control.down || control.highlighted || control.visualFocus - color: Color.blend(control.down ? control.palette.midlight : control.palette.light, - control.palette.highlight, control.highlighted ? 0.15 : 0.0) - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/FileDialogDelegateLabel.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/FileDialogDelegateLabel.qml deleted file mode 100644 index 9768cd51..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/FileDialogDelegateLabel.qml +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Dialogs.quickimpl as DialogsQuickImpl - -/* - Most of the elements in here are the same between styles, so we - have a reusable component for it and provide some properties to enable style-specific tweaks. -*/ -Item { - id: root - implicitWidth: column.implicitWidth - implicitHeight: column.implicitHeight - - required property DialogsQuickImpl.FileDialogDelegate delegate - required property int fileDetailRowWidth - - property color fileDetailRowTextColor - - Column { - id: column - y: (parent.height - height) / 2 - - Row { - spacing: root.delegate.spacing - - IconImage { - id: iconImage - source: root.delegate.icon.source - sourceSize: Qt.size(root.delegate.icon.width, root.delegate.icon.height) - width: root.delegate.icon.width - height: root.delegate.icon.height - color: root.delegate.icon.color - y: (parent.height - height) / 2 - } - Label { - text: root.delegate.fileName - color: root.delegate.icon.color - y: (parent.height - height) / 2 - } - } - - Item { - id: fileDetailRow - x: iconImage.width + root.delegate.spacing - width: fileDetailRowWidth - x - root.delegate.leftPadding - implicitHeight: childrenRect.height - - Label { - text: locale.formattedDataSize(root.delegate.fileSize) - font.pixelSize: root.delegate.font.pixelSize * 0.75 - color: root.fileDetailRowTextColor - } - Label { - text: Qt.formatDateTime(root.delegate.fileModified) - font.pixelSize: root.delegate.font.pixelSize * 0.75 - color: root.fileDetailRowTextColor - x: parent.width - width - } - } - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/FolderBreadcrumbBar.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/FolderBreadcrumbBar.qml deleted file mode 100644 index f04d5804..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/FolderBreadcrumbBar.qml +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Dialogs.quickimpl as DialogsQuickImpl - -DialogsQuickImpl.FolderBreadcrumbBar { - id: control - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + (upButton ? upButton.implicitWidth + upButtonSpacing : 0) - + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - upButtonSpacing: 20 - padding: 1 - - background: Rectangle { - border.color: control.palette.button - } - contentItem: ListView { - id: listView - currentIndex: control.currentIndex - model: control.contentModel - orientation: ListView.Horizontal - snapMode: ListView.SnapToItem - highlightMoveDuration: 0 - interactive: false - clip: true - } - buttonDelegate: Button { - id: buttonDelegateRoot - text: folderName - flat: true - - // The default of 100 is a bit too wide for short directory names. - Binding { - target: buttonDelegateRoot.background - property: "implicitWidth" - value: 40 - } - - required property int index - required property string folderName - } - separatorDelegate: IconImage { - id: iconImage - source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/crumb-separator-icon-round.png" - sourceSize: Qt.size(8, 8) - width: 8 - height: control.contentItem.height - color: control.palette.button - y: (control.height - height) / 2 - } - upButton: ToolButton { - x: control.leftPadding - y: control.topPadding - icon.source: "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/images/up-icon-round.png" - icon.width: 16 - icon.height: 16 - width: height - focusPolicy: Qt.TabFocus - } - textField: TextField { - text: control.fileDialog.selectedFile - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/FontDialog.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/FontDialog.qml deleted file mode 100644 index e2caea40..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/FontDialog.qml +++ /dev/null @@ -1,148 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Dialogs -import QtQuick.Dialogs.quickimpl -import QtQuick.Layouts -import QtQuick.Templates as T - -FontDialogImpl { - id: control - - implicitWidth: Math.max(control.implicitBackgroundWidth + control.leftInset + control.rightInset, - control.contentWidth + control.leftPadding + control.rightPadding, - control.implicitHeaderWidth, - control.implicitFooterWidth) - implicitHeight: Math.max(control.implicitBackgroundHeight + control.topInset + control.bottomInset, - control.contentHeight + control.topPadding + control.bottomPadding - + (control.implicitHeaderHeight > 0 ? control.implicitHeaderHeight + control.spacing : 0) - + (control.implicitFooterHeight > 0 ? control.implicitFooterHeight + control.spacing : 0)) - - leftPadding: 20 - rightPadding: 20 - // Ensure that the background's border is visible. - leftInset: -1 - rightInset: -1 - topInset: -1 - bottomInset: -1 - - spacing: 12 - - standardButtons: T.Dialog.Ok | T.Dialog.Cancel - - FontDialogImpl.buttonBox: buttonBox - FontDialogImpl.familyListView: content.familyListView - FontDialogImpl.styleListView: content.styleListView - FontDialogImpl.sizeListView: content.sizeListView - FontDialogImpl.sampleEdit: content.sampleEdit - FontDialogImpl.writingSystemComboBox: writingSystemComboBox - FontDialogImpl.underlineCheckBox: content.underline - FontDialogImpl.strikeoutCheckBox: content.strikeout - FontDialogImpl.familyEdit: content.familyEdit - FontDialogImpl.styleEdit: content.styleEdit - FontDialogImpl.sizeEdit: content.sizeEdit - - background: Rectangle { - implicitWidth: 600 - implicitHeight: 400 - color: control.palette.window - border.color: control.palette.dark - } - - Overlay.modal: Rectangle { - color: Color.transparent(control.palette.shadow, 0.5) - } - - Overlay.modeless: Rectangle { - color: Color.transparent(control.palette.shadow, 0.12) - } - - header: Pane { - palette.window: control.palette.light - padding: 20 - - contentItem: Label { - width: parent.width - text: control.title - visible: control.title.length > 0 - horizontalAlignment: Label.AlignHCenter - elide: Label.ElideRight - font.bold: true - } - } - - contentItem: FontDialogContent { - id: content - } - - footer: Rectangle { - color: control.palette.light - implicitWidth: rowLayout.implicitWidth - implicitHeight: rowLayout.implicitHeight - - RowLayout { - id: rowLayout - width: parent.width - height: parent.height - spacing: 20 - - Label { - text: qsTr("Writing System") - - Layout.leftMargin: 20 - } - ComboBox{ - id: writingSystemComboBox - - Layout.fillWidth: true - } - - DialogButtonBox { - id: buttonBox - standardButtons: control.standardButtons - palette.window: control.palette.light - spacing: 12 - horizontalPadding: 0 - verticalPadding: 20 - - Layout.rightMargin: 20 - } - } - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qml/FontDialogContent.qml b/src/quickdialogs2/quickdialogs2quickimpl/qml/FontDialogContent.qml deleted file mode 100644 index a0b7dd38..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qml/FontDialogContent.qml +++ /dev/null @@ -1,267 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Dialogs -import QtQuick.Dialogs.quickimpl -import QtQuick.Layouts - -GridLayout { - property alias familyListView: fontFamilyListView - property alias styleListView: fontStyleListView - property alias sizeListView: fontSizeListView - property alias sampleEdit: fontSample - property alias underline: fontUnderline - property alias strikeout: fontStrikeout - property alias familyEdit: fontFamilyEdit - property alias styleEdit: fontStyleEdit - property alias sizeEdit: fontSizeEdit - - columns: 3 - - ColumnLayout { - spacing: 0 - - Layout.preferredWidth: 50 - - Label { - text: qsTr("Family") - Layout.alignment: Qt.AlignLeft - } - TextField { - id: fontFamilyEdit - objectName: "familyEdit" - readOnly: true - Layout.fillWidth: true - focus: true - } - Frame { - Layout.fillWidth: true - Layout.fillHeight: true - background: Rectangle { - color: "white" - } - ListView { - id: fontFamilyListView - objectName: "familyListView" - implicitHeight: 200 - anchors.fill: parent - clip: true - - ScrollBar.vertical: ScrollBar { - policy: ScrollBar.AlwaysOn - } - - boundsBehavior: Flickable.StopAtBounds - - highlightMoveVelocity: -1 - highlightMoveDuration: 1 - highlightFollowsCurrentItem: true - keyNavigationEnabled: true - - delegate: ItemDelegate { - width: ListView.view.width - highlighted: ListView.isCurrentItem - onClicked: () => fontFamilyListView.currentIndex = index - text: modelData - } - } - } - } - - ColumnLayout { - spacing: 0 - - Layout.preferredWidth: 30 - - Label { - text: qsTr("Style") - Layout.alignment: Qt.AlignLeft - } - TextField { - id: fontStyleEdit - objectName: "styleEdit" - readOnly: true - Layout.fillWidth: true - } - Frame { - Layout.fillWidth: true - Layout.fillHeight: true - background: Rectangle { - color: "white" - } - ListView { - id: fontStyleListView - objectName: "styleListView" - implicitHeight: 200 - anchors.fill: parent - clip: true - - ScrollBar.vertical: ScrollBar {} - boundsBehavior: Flickable.StopAtBounds - - highlightMoveVelocity: -1 - highlightMoveDuration: 1 - highlightFollowsCurrentItem: true - keyNavigationEnabled: true - - delegate: ItemDelegate { - width: ListView.view.width - highlighted: ListView.isCurrentItem - onClicked: () => fontStyleListView.currentIndex = index - text: modelData - } - } - } - } - - ColumnLayout { - spacing: 0 - - Layout.preferredWidth: 20 - - Label { - text: qsTr("Size") - Layout.alignment: Qt.AlignLeft - } - TextField { - id: fontSizeEdit - objectName: "sizeEdit" - Layout.fillWidth: true - validator: IntValidator { - bottom: 1 - top: 512 - } - } - Frame { - Layout.fillWidth: true - Layout.fillHeight: true - - background: Rectangle { - color: "white" - } - ListView { - id: fontSizeListView - objectName: "sizeListView" - implicitHeight: 200 - anchors.fill: parent - clip: true - - ScrollBar.vertical: ScrollBar { - policy: ScrollBar.AlwaysOn - } - - boundsBehavior: Flickable.StopAtBounds - - highlightMoveVelocity: -1 - highlightMoveDuration: 1 - highlightFollowsCurrentItem: true - keyNavigationEnabled: true - - delegate: ItemDelegate { - width: ListView.view.width - highlighted: ListView.isCurrentItem - onClicked: () => fontSizeListView.currentIndex = index - text: modelData - } - } - } - } - - ColumnLayout { - Layout.preferredWidth: 80 - - GroupBox { - id: effectsGroupBox - title: qsTr("Effects") - - Layout.fillWidth: true - Layout.fillHeight: true - - label: Label { - anchors.left: effectsGroupBox.left - text: parent.title - } - - RowLayout { - anchors.fill: parent - CheckBox { - id: fontUnderline - objectName: "underlineEffect" - text: qsTr("Underline") - } - CheckBox{ - id: fontStrikeout - objectName: "strikeoutEffect" - text: qsTr("Strikeout") - } - } - } - } - - GroupBox { - id: sample - padding: label.implicitHeight - title: qsTr("Sample") - - Layout.fillWidth: true - Layout.preferredWidth: 80 - Layout.fillHeight: true - Layout.columnSpan: 2 - clip: true - - background: Rectangle { - y: sample.topPadding - sample.bottomPadding - width: parent.width - sample.leftPadding + sample.rightPadding - height: parent.height - sample.topPadding + sample.bottomPadding - radius: 3 - } - - label: Label { - anchors.left: sample.left - text: sample.title - } - - TextEdit { - id: fontSample - objectName: "sampleEdit" - anchors.centerIn: parent - readOnly: true - } - } -} diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickdialogimplfactory.cpp b/src/quickdialogs2/quickdialogs2quickimpl/qquickdialogimplfactory.cpp deleted file mode 100644 index da298432..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickdialogimplfactory.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickdialogimplfactory_p.h" - -#include <QtCore/qloggingcategory.h> - -#include "qquickplatformfiledialog_p.h" -#include "qquickplatformfontdialog_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \internal - - Creates concrete QML-based dialogs. -*/ - -Q_LOGGING_CATEGORY(lcQuickDialogImplFactory, "qt.quick.dialogs.quickdialogimplfactory") - -QPlatformDialogHelper *QQuickDialogImplFactory::createPlatformDialogHelper( - QPlatformTheme::DialogType type, QObject *parent) -{ - switch (type) { - case QPlatformTheme::FileDialog: { - auto dialog = new QQuickPlatformFileDialog(parent); - // If the QML file failed to load, we need to handle it gracefully. - if (!dialog->isValid()) { - delete dialog; - return nullptr; - } - - return dialog; - } - case QPlatformTheme::FontDialog: { - auto dialog = new QQuickPlatformFontDialog(parent); - - if (!dialog->isValid()) { - delete dialog; - return nullptr; - } - return dialog; - } - default: - break; - } - - return nullptr; -} - -QT_END_NAMESPACE diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickdialogimplfactory_p.h b/src/quickdialogs2/quickdialogs2quickimpl/qquickdialogimplfactory_p.h deleted file mode 100644 index 54aa921f..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickdialogimplfactory_p.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKQMLDIALOGFACTORY_P_H -#define QQUICKQMLDIALOGFACTORY_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtGui/qpa/qplatformtheme.h> - -#include "qtquickdialogs2quickimplglobal_p.h" - -QT_BEGIN_NAMESPACE - -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickDialogImplFactory -{ -public: - static QPlatformDialogHelper *createPlatformDialogHelper(QPlatformTheme::DialogType type, - QObject *parent); -}; - -QT_END_NAMESPACE - -#endif // QQUICKQMLDIALOGFACTORY_P_H diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogdelegate.cpp b/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogdelegate.cpp deleted file mode 100644 index b1d44773..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogdelegate.cpp +++ /dev/null @@ -1,163 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickfiledialogdelegate_p.h" - -#include <QtCore/qfileinfo.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtQml/QQmlFile> -#include <QtQml/qqmlexpression.h> -#include <QtQuick/private/qquicklistview_p.h> -#include <QtQuickTemplates2/private/qquickitemdelegate_p_p.h> - -#include "qquickfiledialogimpl_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickFileDialogDelegatePrivate : public QQuickItemDelegatePrivate -{ - Q_DECLARE_PUBLIC(QQuickFileDialogDelegate) - -public: - void highlightFile(); - void chooseFile(); - - bool acceptKeyClick(Qt::Key key) const override; - - QQuickFileDialogImpl *fileDialog = nullptr; - QUrl file; -}; - -void QQuickFileDialogDelegatePrivate::highlightFile() -{ - Q_Q(QQuickFileDialogDelegate); - QQuickListViewAttached *attached = static_cast<QQuickListViewAttached*>( - qmlAttachedPropertiesObject<QQuickListView>(q)); - if (!attached) - return; - - QQmlContext *delegateContext = qmlContext(q); - if (!delegateContext) - return; - - bool converted = false; - const int index = q->property("index").toInt(&converted); - if (converted) { - attached->view()->setCurrentIndex(index); - fileDialog->setCurrentFile(file); - } -} - -void QQuickFileDialogDelegatePrivate::chooseFile() -{ - const QFileInfo fileInfo(QQmlFile::urlToLocalFileOrQrc(file)); - if (fileInfo.isDir()) { - // If it's a directory, navigate to it. - fileDialog->setCurrentFolder(file); - } else { - // Otherwise it's a file, so select it and close the dialog. - fileDialog->setSelectedFile(file); - fileDialog->accept(); - } -} - -bool QQuickFileDialogDelegatePrivate::acceptKeyClick(Qt::Key key) const -{ - return key == Qt::Key_Return || key == Qt::Key_Enter; -} - -QQuickFileDialogDelegate::QQuickFileDialogDelegate(QQuickItem *parent) - : QQuickItemDelegate(*(new QQuickFileDialogDelegatePrivate), parent) -{ - Q_D(QQuickFileDialogDelegate); - // Clicking and tabbing should result in it getting focus, - // as e.g. Ubuntu and Windows both allow tabbing through file dialogs. - setFocusPolicy(Qt::StrongFocus); - setCheckable(true); - QObjectPrivate::connect(this, &QQuickFileDialogDelegate::clicked, - d, &QQuickFileDialogDelegatePrivate::highlightFile); - QObjectPrivate::connect(this, &QQuickFileDialogDelegate::doubleClicked, - d, &QQuickFileDialogDelegatePrivate::chooseFile); -} - -QQuickFileDialogImpl *QQuickFileDialogDelegate::fileDialog() const -{ - Q_D(const QQuickFileDialogDelegate); - return d->fileDialog; -} - -void QQuickFileDialogDelegate::setFileDialog(QQuickFileDialogImpl *fileDialog) -{ - Q_D(QQuickFileDialogDelegate); - if (fileDialog == d->fileDialog) - return; - - d->fileDialog = fileDialog; - emit fileDialogChanged(); -} - -QUrl QQuickFileDialogDelegate::file() const -{ - Q_D(const QQuickFileDialogDelegate); - return d->file; -} - -void QQuickFileDialogDelegate::setFile(const QUrl &file) -{ - Q_D(QQuickFileDialogDelegate); - if (file == d->file) - return; - - d->file = file; - emit fileChanged(); -} - -void QQuickFileDialogDelegate::keyReleaseEvent(QKeyEvent *event) -{ - Q_D(QQuickFileDialogDelegate); - // We need to respond to being triggered by enter being pressed, - // but we can't use event->isAccepted() to check, because events are pre-accepted. - auto connection = QObjectPrivate::connect(this, &QQuickFileDialogDelegate::clicked, - d, &QQuickFileDialogDelegatePrivate::chooseFile); - - QQuickItemDelegate::keyReleaseEvent(event); - - disconnect(connection); -} - -QT_END_NAMESPACE - -#include "moc_qquickfiledialogdelegate_p.cpp" diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogdelegate_p.h b/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogdelegate_p.h deleted file mode 100644 index 093e27bd..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogdelegate_p.h +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFILEDIALOGDELEGATE_P_H -#define QQUICKFILEDIALOGDELEGATE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickitemdelegate_p.h> - -#include "qtquickdialogs2quickimplglobal_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickFileDialogImpl; -class QQuickFileDialogDelegatePrivate; - -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFileDialogDelegate : public QQuickItemDelegate -{ - Q_OBJECT - Q_PROPERTY(QQuickFileDialogImpl *fileDialog READ fileDialog WRITE setFileDialog NOTIFY fileDialogChanged) - Q_PROPERTY(QUrl file READ file WRITE setFile NOTIFY fileChanged) - QML_NAMED_ELEMENT(FileDialogDelegate) - QML_ADDED_IN_VERSION(6, 2) - -public: - explicit QQuickFileDialogDelegate(QQuickItem *parent = nullptr); - - QQuickFileDialogImpl *fileDialog() const; - void setFileDialog(QQuickFileDialogImpl *fileDialog); - - QUrl file() const; - void setFile(const QUrl &file); - -Q_SIGNALS: - void fileDialogChanged(); - void fileChanged(); - -protected: - void keyReleaseEvent(QKeyEvent *event) override; - -private: - Q_DISABLE_COPY(QQuickFileDialogDelegate) - Q_DECLARE_PRIVATE(QQuickFileDialogDelegate) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickFileDialogDelegate) - -#endif // QQUICKFILEDIALOGDELEGATE_P_H diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl.cpp b/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl.cpp deleted file mode 100644 index 8074b259..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl.cpp +++ /dev/null @@ -1,564 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickfiledialogimpl_p.h" -#include "qquickfiledialogimpl_p_p.h" - -#include <QtCore/qloggingcategory.h> -#include <QtQml/qqmlinfo.h> -#include <QtQml/qqmlfile.h> -#include <QtQuickDialogs2Utils/private/qquickfilenamefilter_p.h> -#include <QtQuickTemplates2/private/qquickdialogbuttonbox_p_p.h> -#include <QtQuickTemplates2/private/qquickpopupitem_p_p.h> -#include "qquickfiledialogdelegate_p.h" -#include "qquickfolderbreadcrumbbar_p.h" - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcCurrentFolder, "qt.quick.dialogs.quickfiledialogimpl.currentFolder") -Q_LOGGING_CATEGORY(lcOptions, "qt.quick.dialogs.quickfiledialogimpl.options") -Q_LOGGING_CATEGORY(lcNameFilters, "qt.quick.dialogs.quickfiledialogimpl.namefilters") -Q_LOGGING_CATEGORY(lcAttachedNameFilters, "qt.quick.dialogs.quickfiledialogimplattached.namefilters") - -QQuickFileDialogImplPrivate::QQuickFileDialogImplPrivate() -{ -} - -void QQuickFileDialogImplPrivate::setNameFilters(const QStringList &filters) -{ - Q_Q(QQuickFileDialogImpl); - if (filters == nameFilters) - return; - - nameFilters = filters; - emit q->nameFiltersChanged(); -} - -void QQuickFileDialogImplPrivate::updateEnabled() -{ - Q_Q(QQuickFileDialogImpl); - QQuickFileDialogImplAttached *attached = attachedOrWarn(); - if (!attached) - return; - - auto openButton = attached->buttonBox()->standardButton(QPlatformDialogHelper::Open); - if (!openButton) { - qmlWarning(q).nospace() << "Can't update Open button's enabled state because it wasn't found"; - return; - } - - openButton->setEnabled(!currentFile.isEmpty() && attached->breadcrumbBar() - && !attached->breadcrumbBar()->textField()->isVisible()); -} - -/*! - \internal - - Ensures that a file is always selected after a change in \c folder. - - \a oldFolderPath is the previous value of \c folder. -*/ -void QQuickFileDialogImplPrivate::updateCurrentFile(const QString &oldFolderPath) -{ - Q_Q(QQuickFileDialogImpl); - QQuickFileDialogImplAttached *attached = attachedOrWarn(); - if (!attached || !attached->fileDialogListView()) - return; - - QString newCurrentFilePath; - int newCurrentFileIndex = 0; - const QString newFolderPath = QQmlFile::urlToLocalFileOrQrc(currentFolder); - if (!oldFolderPath.isEmpty() && !newFolderPath.isEmpty()) { - // If the user went up a directory (or several), we should set - // currentFile to be the directory that we were in (or - // its closest ancestor that is a child of the new directory). - // E.g. if oldFolderPath is /foo/bar/baz/abc/xyz, and newFolderPath is /foo/bar, - // then we want to set currentFile to be /foo/bar/baz. - const int indexOfFolder = oldFolderPath.indexOf(newFolderPath); - if (indexOfFolder != -1) { - // [folder] - // [ oldFolderPath ] - // /foo/bar/baz/abc/xyz - // [rel...Paths] - QStringList relativePaths = oldFolderPath.mid(indexOfFolder + newFolderPath.size()).split(QLatin1Char('/'), Qt::SkipEmptyParts); - newCurrentFilePath = newFolderPath + QLatin1Char('/') + relativePaths.first(); - - // Now find the index of that directory so that we can set the ListView's currentIndex to it. - const QDir newFolderDir(newFolderPath); - // Just to be safe... - if (!newFolderDir.exists()) { - qmlWarning(q) << "Directory" << newCurrentFilePath << "doesn't exist; can't get a file entry list for it"; - return; - } - - const QFileInfoList dirs = newFolderDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::DirsFirst); - const QFileInfo newCurrentFileInfo(newCurrentFilePath); - // The directory can contain files, but since we put dirs first, that should never affect the indices. - newCurrentFileIndex = dirs.indexOf(newCurrentFileInfo); - } - } - - if (newCurrentFilePath.isEmpty()) { - // When entering into a directory that isn't a parent of the old one, the first - // file delegate should be selected. - // TODO: is there a cheaper way to do this? QDirIterator doesn't support sorting, - // so we can't use that. QQuickFolderListModel uses threads to fetch its data, - // so should be considered asynchronous. We might be able to use it, but it would - // complicate the code even more... - QDir newFolderDir(newFolderPath); - if (newFolderDir.exists()) { - const QFileInfoList files = newFolderDir.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot, QDir::DirsFirst); - if (!files.isEmpty()) - newCurrentFilePath = files.first().absoluteFilePath(); - } - } - - if (!newCurrentFilePath.isEmpty()) { - q->setCurrentFile(QUrl::fromLocalFile(newCurrentFilePath)); - attached->fileDialogListView()->setCurrentIndex(newCurrentFileIndex); - if (QQuickItem *currentItem = attached->fileDialogListView()->currentItem()) - currentItem->forceActiveFocus(); - } -} - -void QQuickFileDialogImplPrivate::handleAccept() -{ - // Let handleClick take care of calling accept(). -} - -void QQuickFileDialogImplPrivate::handleClick(QQuickAbstractButton *button) -{ - Q_Q(QQuickFileDialogImpl); - if (buttonRole(button) == QPlatformDialogHelper::AcceptRole && currentFile.isValid()) { - // The "Open" button was clicked, so we need to set the file to the current file, if any. - const QFileInfo fileInfo(currentFile.toLocalFile()); - if (fileInfo.isDir()) { - // If it's a directory, navigate to it. - q->setCurrentFolder(currentFile); - // Don't call accept(), because selecting a folder != accepting the dialog. - } else { - // Otherwise it's a file, so select it and close the dialog. - q->setSelectedFile(currentFile); - q->accept(); - QQuickDialogPrivate::handleClick(button); - emit q->fileSelected(currentFile); - } - } -} - -QQuickFileDialogImpl::QQuickFileDialogImpl(QObject *parent) - : QQuickDialog(*(new QQuickFileDialogImplPrivate), parent) -{ -} - -QQuickFileDialogImplAttached *QQuickFileDialogImpl::qmlAttachedProperties(QObject *object) -{ - return new QQuickFileDialogImplAttached(object); -} - -QUrl QQuickFileDialogImpl::currentFolder() const -{ - Q_D(const QQuickFileDialogImpl); - return d->currentFolder; -} - -void QQuickFileDialogImpl::setCurrentFolder(const QUrl ¤tFolder) -{ - qCDebug(lcCurrentFolder) << "setCurrentFolder called with" << currentFolder; - Q_D(QQuickFileDialogImpl); - if (currentFolder == d->currentFolder) - return; - - const QString oldFolderPath = QQmlFile::urlToLocalFileOrQrc(d->currentFolder); - - d->currentFolder = currentFolder; - // Since the directory changed, the old file can no longer be selected. - setCurrentFile(QUrl()); - d->updateCurrentFile(oldFolderPath); - emit currentFolderChanged(d->currentFolder); -} - -QUrl QQuickFileDialogImpl::selectedFile() const -{ - Q_D(const QQuickFileDialogImpl); - return d->selectedFile; -} - -void QQuickFileDialogImpl::setSelectedFile(const QUrl &selectedFile) -{ - Q_D(QQuickFileDialogImpl); - if (selectedFile == d->selectedFile) - return; - - d->selectedFile = selectedFile; - emit selectedFileChanged(); -} - -QUrl QQuickFileDialogImpl::currentFile() const -{ - Q_D(const QQuickFileDialogImpl); - return d->currentFile; -} - -void QQuickFileDialogImpl::setCurrentFile(const QUrl ¤tFile) -{ - Q_D(QQuickFileDialogImpl); - if (currentFile == d->currentFile) - return; - - d->currentFile = currentFile; - d->updateEnabled(); - emit currentFileChanged(d->currentFile); -} - -QSharedPointer<QFileDialogOptions> QQuickFileDialogImpl::options() const -{ - Q_D(const QQuickFileDialogImpl); - return d->options; -} - -void QQuickFileDialogImpl::setOptions(const QSharedPointer<QFileDialogOptions> &options) -{ - qCDebug(lcOptions).nospace() << "setOptions called with:" - << " acceptMode=" << options->acceptMode() - << " fileMode=" << options->fileMode() - << " initialDirectory=" << options->initialDirectory() - << " nameFilters=" << options->nameFilters() - << " initiallySelectedNameFilter=" << options->initiallySelectedNameFilter(); - - Q_D(QQuickFileDialogImpl); - d->options = options; - - if (d->options) { - d->selectedNameFilter->setOptions(options); - d->setNameFilters(options->nameFilters()); - } -} - -/*! - \internal - - The list of user-facing strings describing the available file filters. -*/ -QStringList QQuickFileDialogImpl::nameFilters() const -{ - Q_D(const QQuickFileDialogImpl); - return d->options ? d->options->nameFilters() : QStringList(); -} - -void QQuickFileDialogImpl::resetNameFilters() -{ - Q_D(QQuickFileDialogImpl); - d->setNameFilters(QStringList()); -} - -QQuickFileNameFilter *QQuickFileDialogImpl::selectedNameFilter() const -{ - Q_D(const QQuickFileDialogImpl); - if (!d->selectedNameFilter) { - QQuickFileDialogImpl *that = const_cast<QQuickFileDialogImpl *>(this); - d->selectedNameFilter = new QQuickFileNameFilter(that); - if (d->options) - d->selectedNameFilter->setOptions(d->options); - } - return d->selectedNameFilter; -} - -/*! - \internal - - These allow QQuickPlatformFileDialog::show() to set custom labels on the - dialog buttons without having to know about/go through QQuickFileDialogImplAttached - and QQuickDialogButtonBox. -*/ -void QQuickFileDialogImpl::setAcceptLabel(const QString &label) -{ - Q_D(QQuickFileDialogImpl); - d->acceptLabel = label; - QQuickFileDialogImplAttached *attached = d->attachedOrWarn(); - if (!attached) - return; - - auto acceptButton = attached->buttonBox()->standardButton(QPlatformDialogHelper::Open); - if (!acceptButton) { - qmlWarning(this).nospace() << "Can't set accept label to " << label - << "; failed to find Open button in DialogButtonBox of " << this; - return; - } - - acceptButton->setText(!label.isEmpty() - ? label : QQuickDialogButtonBoxPrivate::buttonText(QPlatformDialogHelper::Open)); -} - -void QQuickFileDialogImpl::setRejectLabel(const QString &label) -{ - Q_D(QQuickFileDialogImpl); - d->rejectLabel = label; - QQuickFileDialogImplAttached *attached = d->attachedOrWarn(); - if (!attached) - return; - - auto rejectButton = attached->buttonBox()->standardButton(QPlatformDialogHelper::Cancel); - if (!rejectButton) { - qmlWarning(this).nospace() << "Can't set reject label to " << label - << "; failed to find Open button in DialogButtonBox of " << this; - return; - } - - rejectButton->setText(!label.isEmpty() - ? label : QQuickDialogButtonBoxPrivate::buttonText(QPlatformDialogHelper::Cancel)); -} - -void QQuickFileDialogImpl::selectNameFilter(const QString &filter) -{ - qCDebug(lcNameFilters) << "selectNameFilter called with" << filter; - Q_D(QQuickFileDialogImpl); - d->selectedNameFilter->update(filter); - emit filterSelected(filter); -} - -void QQuickFileDialogImpl::componentComplete() -{ - Q_D(QQuickFileDialogImpl); - QQuickDialog::componentComplete(); - - // Find the right-most button and set its key navigation so that - // tab moves focus to the breadcrumb bar's up button. I tried - // doing this via KeyNavigation on the DialogButtonBox in QML, - // but it didn't work (probably because it's not the right item). - QQuickFileDialogImplAttached *attached = d->attachedOrWarn(); - if (!attached) - return; - - const int buttonCount = attached->buttonBox()->count(); - if (buttonCount == 0) - return; - - QQuickAbstractButton *rightMostButton = qobject_cast<QQuickAbstractButton *>( - attached->buttonBox()->itemAt(buttonCount - 1)); - if (!rightMostButton) { - qmlWarning(this) << "Can't find right-most button in DialogButtonBox"; - return; - } - - auto keyNavigationAttached = QQuickKeyNavigationAttached::qmlAttachedProperties(rightMostButton); - if (!keyNavigationAttached) { - qmlWarning(this) << "Can't create attached KeyNavigation object on" << QDebug::toString(rightMostButton); - return; - } - - keyNavigationAttached->setTab(attached->breadcrumbBar()->upButton()); -} - -void QQuickFileDialogImpl::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - Q_D(QQuickFileDialogImpl); - QQuickDialog::itemChange(change, data); - - if (change != QQuickItem::ItemVisibleHasChanged || !isComponentComplete() || !data.boolValue) - return; - - QQuickFileDialogImplAttached *attached = d->attachedOrWarn(); - if (!attached) - return; - - attached->fileDialogListView()->forceActiveFocus(); - d->updateEnabled(); -} - -QQuickFileDialogImplAttached *QQuickFileDialogImplPrivate::attachedOrWarn() -{ - Q_Q(QQuickFileDialogImpl); - QQuickFileDialogImplAttached *attached = static_cast<QQuickFileDialogImplAttached*>( - qmlAttachedPropertiesObject<QQuickFileDialogImpl>(q)); - if (!attached) - qmlWarning(q) << "Expected FileDialogImpl attached object to be present on" << this; - return attached; -} - -void QQuickFileDialogImplAttachedPrivate::nameFiltersComboBoxItemActivated(int index) -{ - qCDebug(lcAttachedNameFilters) << "nameFiltersComboBoxItemActivated called with" << index; - auto fileDialogImpl = qobject_cast<QQuickFileDialogImpl*>(parent); - if (!fileDialogImpl) - return; - - fileDialogImpl->selectNameFilter(nameFiltersComboBox->textAt(index)); -} - -void QQuickFileDialogImplAttachedPrivate::fileDialogListViewCurrentIndexChanged() -{ - auto fileDialogImpl = qobject_cast<QQuickFileDialogImpl*>(parent); - if (!fileDialogImpl) - return; - - auto fileDialogDelegate = qobject_cast<QQuickFileDialogDelegate*>(fileDialogListView->currentItem()); - if (!fileDialogDelegate) - return; - - fileDialogImpl->setCurrentFile(fileDialogDelegate->file()); -} - -QQuickFileDialogImplAttached::QQuickFileDialogImplAttached(QObject *parent) - : QObject(*(new QQuickFileDialogImplAttachedPrivate), parent) -{ - if (!qobject_cast<QQuickFileDialogImpl*>(parent)) { - qmlWarning(this) << "FileDialogImpl attached properties should only be " - << "accessed through the root FileDialogImpl instance"; - } -} - -QQuickDialogButtonBox *QQuickFileDialogImplAttached::buttonBox() const -{ - Q_D(const QQuickFileDialogImplAttached); - return d->buttonBox; -} - -void QQuickFileDialogImplAttached::setButtonBox(QQuickDialogButtonBox *buttonBox) -{ - Q_D(QQuickFileDialogImplAttached); - if (buttonBox == d->buttonBox) - return; - - if (d->buttonBox) { - QQuickFileDialogImpl *fileDialogImpl = qobject_cast<QQuickFileDialogImpl*>(parent()); - if (fileDialogImpl) { - auto dialogPrivate = QQuickDialogPrivate::get(fileDialogImpl); - QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::accepted, - dialogPrivate, &QQuickDialogPrivate::handleAccept); - QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::rejected, - dialogPrivate, &QQuickDialogPrivate::handleReject); - QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::clicked, - dialogPrivate, &QQuickDialogPrivate::handleClick); - } - } - - d->buttonBox = buttonBox; - - if (buttonBox) { - QQuickFileDialogImpl *fileDialogImpl = qobject_cast<QQuickFileDialogImpl*>(parent()); - if (fileDialogImpl) { - auto dialogPrivate = QQuickDialogPrivate::get(fileDialogImpl); - QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::accepted, - dialogPrivate, &QQuickDialogPrivate::handleAccept); - QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::rejected, - dialogPrivate, &QQuickDialogPrivate::handleReject); - QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::clicked, - dialogPrivate, &QQuickDialogPrivate::handleClick); - } - } - - emit buttonBoxChanged(); -} - -QQuickComboBox *QQuickFileDialogImplAttached::nameFiltersComboBox() const -{ - Q_D(const QQuickFileDialogImplAttached); - return d->nameFiltersComboBox; -} - -void QQuickFileDialogImplAttached::setNameFiltersComboBox(QQuickComboBox *nameFiltersComboBox) -{ - Q_D(QQuickFileDialogImplAttached); - if (nameFiltersComboBox == d->nameFiltersComboBox) - return; - - d->nameFiltersComboBox = nameFiltersComboBox; - - QObjectPrivate::connect(d->nameFiltersComboBox, &QQuickComboBox::activated, - d, &QQuickFileDialogImplAttachedPrivate::nameFiltersComboBoxItemActivated); - - emit nameFiltersComboBoxChanged(); -} - -QString QQuickFileDialogImplAttached::selectedNameFilter() const -{ - Q_D(const QQuickFileDialogImplAttached); - return d->nameFiltersComboBox ? d->nameFiltersComboBox->currentText() : QString(); -} - -void QQuickFileDialogImplAttached::selectNameFilter(const QString &filter) -{ - Q_D(QQuickFileDialogImplAttached); - qCDebug(lcAttachedNameFilters) << "selectNameFilter called with" << filter; - if (!d->nameFiltersComboBox) - return; - - const int indexInComboBox = d->nameFiltersComboBox->find(filter); - if (indexInComboBox == -1) - return; - - qCDebug(lcAttachedNameFilters) << "setting ComboBox's currentIndex to" << indexInComboBox; - d->nameFiltersComboBox->setCurrentIndex(indexInComboBox); -} - -QQuickListView *QQuickFileDialogImplAttached::fileDialogListView() const -{ - Q_D(const QQuickFileDialogImplAttached); - return d->fileDialogListView; -} - -void QQuickFileDialogImplAttached::setFileDialogListView(QQuickListView *fileDialogListView) -{ - Q_D(QQuickFileDialogImplAttached); - if (fileDialogListView == d->fileDialogListView) - return; - - d->fileDialogListView = fileDialogListView; - - QObjectPrivate::connect(d->fileDialogListView, &QQuickListView::currentIndexChanged, - d, &QQuickFileDialogImplAttachedPrivate::fileDialogListViewCurrentIndexChanged); - - emit fileDialogListViewChanged(); -} - -QQuickFolderBreadcrumbBar *QQuickFileDialogImplAttached::breadcrumbBar() const -{ - Q_D(const QQuickFileDialogImplAttached); - return d->breadcrumbBar; -} - -void QQuickFileDialogImplAttached::setBreadcrumbBar(QQuickFolderBreadcrumbBar *breadcrumbBar) -{ - Q_D(QQuickFileDialogImplAttached); - if (breadcrumbBar == d->breadcrumbBar) - return; - - d->breadcrumbBar = breadcrumbBar; - emit breadcrumbBarChanged(); -} - -QT_END_NAMESPACE diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl_p.h b/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl_p.h deleted file mode 100644 index 23f8cf14..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl_p.h +++ /dev/null @@ -1,168 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFILEDIALOGIMPL_P_H -#define QQUICKFILEDIALOGIMPL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquicklistview_p.h> -#include <QtQuickTemplates2/private/qquickdialog_p.h> - -#include "qtquickdialogs2quickimplglobal_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickComboBox; -class QQuickDialogButtonBox; - -class QQuickFileDialogImplAttached; -class QQuickFileDialogImplAttachedPrivate; -class QQuickFileDialogImplPrivate; -class QQuickFileNameFilter; -class QQuickFolderBreadcrumbBar; - -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFileDialogImpl : public QQuickDialog -{ - Q_OBJECT - Q_PROPERTY(QUrl currentFolder READ currentFolder WRITE setCurrentFolder NOTIFY currentFolderChanged FINAL) - Q_PROPERTY(QUrl selectedFile READ selectedFile WRITE setSelectedFile NOTIFY selectedFileChanged FINAL) - Q_PROPERTY(QUrl currentFile READ currentFile WRITE setCurrentFile NOTIFY currentFileChanged FINAL) - Q_PROPERTY(QStringList nameFilters READ nameFilters NOTIFY nameFiltersChanged FINAL) - Q_PROPERTY(QQuickFileNameFilter *selectedNameFilter READ selectedNameFilter CONSTANT) - QML_NAMED_ELEMENT(FileDialogImpl) - QML_ATTACHED(QQuickFileDialogImplAttached) - QML_ADDED_IN_VERSION(6, 2) - Q_MOC_INCLUDE(<QtQuickDialogs2Utils/private/qquickfilenamefilter_p.h>) - Q_MOC_INCLUDE(<QtQuickDialogs2QuickImpl/private/qquickfolderbreadcrumbbar_p.h>) - -public: - explicit QQuickFileDialogImpl(QObject *parent = nullptr); - - static QQuickFileDialogImplAttached *qmlAttachedProperties(QObject *object); - - QUrl currentFolder() const; - void setCurrentFolder(const QUrl ¤tFolder); - - QUrl selectedFile() const; - void setSelectedFile(const QUrl &file); - - QUrl currentFile() const; - void setCurrentFile(const QUrl ¤tFile); - - QSharedPointer<QFileDialogOptions> options() const; - void setOptions(const QSharedPointer<QFileDialogOptions> &options); - - QStringList nameFilters() const; - void resetNameFilters(); - - QQuickFileNameFilter *selectedNameFilter() const; - - void setAcceptLabel(const QString &label); - void setRejectLabel(const QString &label); - -public Q_SLOTS: - void selectNameFilter(const QString &filter); - -Q_SIGNALS: - void currentFolderChanged(const QUrl &folderUrl); - void selectedFileChanged(); - void currentFileChanged(const QUrl ¤tFileUrl); - void nameFiltersChanged(); - void fileSelected(const QUrl &fileUrl); - void filterSelected(const QString &filter); - -private: - void componentComplete() override; - void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) override; - - Q_DISABLE_COPY(QQuickFileDialogImpl) - Q_DECLARE_PRIVATE(QQuickFileDialogImpl) -}; - -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFileDialogImplAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickDialogButtonBox *buttonBox READ buttonBox WRITE setButtonBox NOTIFY buttonBoxChanged FINAL) - Q_PROPERTY(QQuickComboBox *nameFiltersComboBox READ nameFiltersComboBox WRITE setNameFiltersComboBox NOTIFY nameFiltersComboBoxChanged) - Q_PROPERTY(QQuickListView *fileDialogListView READ fileDialogListView WRITE setFileDialogListView NOTIFY fileDialogListViewChanged) - Q_PROPERTY(QQuickFolderBreadcrumbBar *breadcrumbBar READ breadcrumbBar WRITE setBreadcrumbBar NOTIFY breadcrumbBarChanged) - Q_MOC_INCLUDE(<QtQuickTemplates2/private/qquickdialogbuttonbox_p.h>) - Q_MOC_INCLUDE(<QtQuickTemplates2/private/qquickcombobox_p.h>) - -public: - explicit QQuickFileDialogImplAttached(QObject *parent = nullptr); - - QQuickDialogButtonBox *buttonBox() const; - void setButtonBox(QQuickDialogButtonBox *buttonBox); - - QQuickComboBox *nameFiltersComboBox() const; - void setNameFiltersComboBox(QQuickComboBox *nameFiltersComboBox); - - QString selectedNameFilter() const; - void selectNameFilter(const QString &filter); - - QQuickListView *fileDialogListView() const; - void setFileDialogListView(QQuickListView *fileDialogListView); - - QQuickFolderBreadcrumbBar *breadcrumbBar() const; - void setBreadcrumbBar(QQuickFolderBreadcrumbBar *breadcrumbBar); - -Q_SIGNALS: - void buttonBoxChanged(); - void nameFiltersComboBoxChanged(); - void fileDialogListViewChanged(); - void breadcrumbBarChanged(); - -private: - Q_DISABLE_COPY(QQuickFileDialogImplAttached) - Q_DECLARE_PRIVATE(QQuickFileDialogImplAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickFileDialogImpl) - -#endif // QQUICKFILEDIALOGIMPL_P_H diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl_p_p.h b/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl_p_p.h deleted file mode 100644 index 1831a7dc..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfiledialogimpl_p_p.h +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFILEDIALOG_P_P_H -#define QQUICKFILEDIALOG_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcombobox_p.h> -#include <QtQuickTemplates2/private/qquickdialog_p_p.h> -#include <QtQuickTemplates2/private/qquickdialogbuttonbox_p.h> - -#include "qquickfiledialogimpl_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickFileNameFilter; - -class QQuickFileDialogImplPrivate : public QQuickDialogPrivate -{ - Q_DECLARE_PUBLIC(QQuickFileDialogImpl) - -public: - QQuickFileDialogImplPrivate(); - - static QQuickFileDialogImplPrivate *get(QQuickFileDialogImpl *dialog) - { - return dialog->d_func(); - } - - QQuickFileDialogImplAttached *attachedOrWarn(); - - void setNameFilters(const QStringList &filters); - - void updateEnabled(); - void updateCurrentFile(const QString &oldFolderPath); - - void handleAccept() override; - void handleClick(QQuickAbstractButton *button) override; - - QSharedPointer<QFileDialogOptions> options; - QUrl currentFolder; - QUrl selectedFile; - QUrl currentFile; - QStringList nameFilters; - mutable QQuickFileNameFilter *selectedNameFilter = nullptr; - QString acceptLabel; - QString rejectLabel; -}; - -class QQuickFileDialogImplAttachedPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickFileDialogImplAttached) - - void nameFiltersComboBoxItemActivated(int index); - void fileDialogListViewCurrentIndexChanged(); - -public: - QPointer<QQuickDialogButtonBox> buttonBox; - QPointer<QQuickComboBox> nameFiltersComboBox; - QPointer<QQuickListView> fileDialogListView; - QPointer<QQuickFolderBreadcrumbBar> breadcrumbBar; -}; - -QT_END_NAMESPACE - -#endif // QQUICKFILEDIALOG_P_P_H diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfolderbreadcrumbbar.cpp b/src/quickdialogs2/quickdialogs2quickimpl/qquickfolderbreadcrumbbar.cpp deleted file mode 100644 index c204d8fa..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfolderbreadcrumbbar.cpp +++ /dev/null @@ -1,784 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickfolderbreadcrumbbar_p.h" -#include "qquickfolderbreadcrumbbar_p_p.h" - -#include <QtCore/qdir.h> -#include <QtCore/qloggingcategory.h> -#if QT_CONFIG(shortcut) -#include <QtGui/private/qshortcutmap_p.h> -#endif -#include <QtGui/private/qguiapplication_p.h> -#include <QtQml/QQmlFile> -#include <QtQuick/private/qquicktextinput_p.h> -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> -#include <QtQuickTemplates2/private/qquickpopupitem_p_p.h> -#include <QtQuickTemplates2/private/qquickshortcutcontext_p_p.h> - -#include "qquickfiledialogimpl_p.h" -#include "qquickfiledialogimpl_p_p.h" - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcFolderBreadcrumbBar, "qt.quick.dialogs.folderbreadcrumbbar") -Q_LOGGING_CATEGORY(lcContentSize, "qt.quick.dialogs.folderbreadcrumbbar.contentsize") -Q_LOGGING_CATEGORY(lcDelegates, "qt.quick.dialogs.folderbreadcrumbbar.delegates") -Q_LOGGING_CATEGORY(lcShortcuts, "qt.quick.dialogs.folderbreadcrumbbar.shortcuts") -Q_LOGGING_CATEGORY(lcTextInput, "qt.quick.dialogs.folderbreadcrumbbar.textinput") -Q_LOGGING_CATEGORY(lcCurrentItem, "qt.quick.dialogs.folderbreadcrumbbar.currentitem") - -QQuickItem *QQuickFolderBreadcrumbBarPrivate::createDelegateItem(QQmlComponent *component, const QVariantMap &initialProperties) -{ - Q_Q(QQuickFolderBreadcrumbBar); - // If we don't use the correct context, it won't be possible to refer to - // the control's id from within the delegates. - QQmlContext *creationContext = component->creationContext(); - // The component might not have been created in QML, in which case - // the creation context will be null and we have to create it ourselves. - if (!creationContext) - creationContext = qmlContext(q); - QQmlContext *context = new QQmlContext(creationContext, q); - context->setContextObject(q); - QQuickItem *item = qobject_cast<QQuickItem*>(component->createWithInitialProperties(initialProperties, context)); - if (item) - QQml_setParent_noEvent(item, q); - qCDebug(lcDelegates) << "- created delegate item" << item << "with initialProperties" << initialProperties; - return item; -} - -QString QQuickFolderBreadcrumbBarPrivate::folderBaseName(const QString &folderPath) -{ - if (folderPath == QLatin1String("/")) { - // Unix root. - return folderPath; - } else if (folderPath.endsWith(QLatin1String(":/"))) { - // Windows drive. - return folderPath.mid(0, folderPath.size() - 1); - } - const QString baseName = folderPath.mid(folderPath.lastIndexOf(QLatin1Char('/')) + 1); - return baseName; -} - -/*! - \internal - - Returns \c { "/foo", "/foo/bar", "/foo/bar/baz" } if \a folder is \c "/foo/bar/baz". -*/ -QStringList QQuickFolderBreadcrumbBarPrivate::crumbPathsForFolder(const QUrl &folder) -{ - const QString folderPath = QDir::fromNativeSeparators(QQmlFile::urlToLocalFileOrQrc(folder)); - QDir dir(folderPath); - // In order to collect the paths for each breadcrumb, we need to work backwards, so we prepend. - QStringList paths; - do { - paths.prepend(dir.absolutePath()); - } while (dir.cdUp()); - return paths; -} - -void QQuickFolderBreadcrumbBarPrivate::repopulate() -{ - Q_Q(QQuickFolderBreadcrumbBar); - qCDebug(lcDelegates) << "attemping to repopulate breadcrumb bar using folder..."; - - if (repopulating) - return; - - if (!buttonDelegate || !separatorDelegate || !q->contentItem()) { - qCWarning(lcDelegates) << "Both delegates and contentItem must be set before repopulating"; - return; - } - - QBoolBlocker repopulateGuard(repopulating); - - auto failureCleanup = [=](){ - folderPaths.clear(); - while (q->count() > 0) - q->removeItem(q->itemAt(0)); - }; - - qCDebug(lcDelegates) << "- getting paths for directory" << fileDialog->currentFolder(); - folderPaths = crumbPathsForFolder(fileDialog->currentFolder()); - - while (q->count() > 0) - q->removeItem(q->itemAt(0)); - - for (int i = 0; i < folderPaths.size(); ++i) { - const QString &folderPath = folderPaths.at(i); - - QVariantMap initialProperties = { - { QStringLiteral("index"), QVariant::fromValue(i) }, - { QStringLiteral("folderName"), QVariant::fromValue(folderBaseName(folderPath)) } - }; - QQuickItem *buttonItem = createDelegateItem(buttonDelegate, initialProperties); - if (!buttonItem) { - qCWarning(lcDelegates) << "Failed creating breadcrumb buttonDelegate item:\n" << buttonDelegate->errorString(); - failureCleanup(); - break; - } - if (QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton*>(buttonItem)) { - QObjectPrivate::connect(button, &QQuickAbstractButton::clicked, - this, &QQuickFolderBreadcrumbBarPrivate::crumbClicked); - } - insertItem(q->count(), buttonItem); - - // Don't add a separator for the last button. - if (i < folderPaths.size() - 1) { - initialProperties = {}; - QQuickItem *separatorItem = createDelegateItem(separatorDelegate, initialProperties); - if (!separatorItem) { - qCWarning(lcDelegates) << "Failed creating breadcrumb separatorDelegate item:\n" << buttonDelegate->errorString(); - failureCleanup(); - break; - } - insertItem(q->count(), separatorItem); - } - } - - const int finalCount = q->count(); - // We would do - 2, since separators are included in the count, - // but as we don't add a separator for the last button, we only need to subtract 1. - const int newCurrentIndex = finalCount > 2 ? finalCount - 1 : -1; - qCDebug(lcDelegates) << "- setting currentIndex to" << newCurrentIndex; - q->setCurrentIndex(newCurrentIndex); - - updateImplicitContentSize(); - - qCDebug(lcDelegates) << "... bar now contains" << q->count() - << "buttons and separators in total, for the following paths:" << folderPaths; -} - -void QQuickFolderBreadcrumbBarPrivate::crumbClicked() -{ - Q_Q(QQuickFolderBreadcrumbBar); - qCDebug(lcCurrentItem) << "updateCurrentIndex called by sender" << q->sender(); - QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton*>(q->sender()); - if (button) { - const int buttonIndex = contentModel->indexOf(button, nullptr); - q->setCurrentIndex(buttonIndex); - const QUrl folderUrl = QUrl::fromLocalFile(folderPaths.at(buttonIndex / 2)); - // TODO: don't repopulate the whole model when clicking on crumbs - qCDebug(lcCurrentItem) << "setting file dialog's folder to" << folderUrl; - fileDialog->setCurrentFolder(folderUrl); - } -} - -void QQuickFolderBreadcrumbBarPrivate::folderChanged() -{ - if (componentComplete) - repopulate(); -} - -static inline QString upButtonName() -{ - return QStringLiteral("upButton"); -} - -void QQuickFolderBreadcrumbBarPrivate::cancelUpButton() -{ - Q_Q(QQuickFolderBreadcrumbBar); - quickCancelDeferred(q, upButtonName()); -} - -void QQuickFolderBreadcrumbBarPrivate::executeUpButton(bool complete) -{ - Q_Q(QQuickFolderBreadcrumbBar); - if (upButton.wasExecuted()) - return; - - if (!upButton || complete) - quickBeginDeferred(q, upButtonName(), upButton); - if (complete) - quickCompleteDeferred(q, upButtonName(), upButton); -} - -void QQuickFolderBreadcrumbBarPrivate::goUp() -{ - QDir dir(QQmlFile::urlToLocalFileOrQrc(fileDialog->currentFolder())); - dir.cdUp(); - fileDialog->setCurrentFolder(QUrl::fromLocalFile(dir.absolutePath())); -} - -static inline QString textFieldName() -{ - return QStringLiteral("textField"); -} - -void QQuickFolderBreadcrumbBarPrivate::cancelTextField() -{ - Q_Q(QQuickFolderBreadcrumbBar); - quickCancelDeferred(q, textFieldName()); -} - -void QQuickFolderBreadcrumbBarPrivate::executeTextField(bool complete) -{ - Q_Q(QQuickFolderBreadcrumbBar); - if (textField.wasExecuted()) - return; - - if (!textField || complete) - quickBeginDeferred(q, textFieldName(), textField); - if (complete) - quickCompleteDeferred(q, textFieldName(), textField); -} - -void QQuickFolderBreadcrumbBarPrivate::toggleTextFieldVisibility() -{ - const QUrl url = !fileDialog->selectedFile().isEmpty() ? fileDialog->selectedFile() : fileDialog->currentFolder(); - textField->setText(QQmlFile::urlToLocalFileOrQrc(url)); - textField->setVisible(!textField->isVisible()); - - qCDebug(lcTextInput) << "text field visibility changed to" << textField->isVisible(); - - if (textField->isVisible()) { - // The text field is now visible, so give it focus, - // select the text, and let it handle escape/back. - textField->forceActiveFocus(Qt::ShortcutFocusReason); - textField->selectAll(); - } - - // We connect to the TextField's visibleChanged signal, so textFieldVisibleChanged() - // will get called automatically and we don't need to call it here. - - contentItem->setVisible(!textField->isVisible()); - - // When the TextField is visible, certain items in the dialog need to be disabled. - auto fileDialogPrivate = QQuickFileDialogImplPrivate::get(fileDialog); - fileDialogPrivate->updateEnabled(); -} - -void QQuickFolderBreadcrumbBarPrivate::textFieldAccepted() -{ - const QUrl fileUrl = QUrl::fromLocalFile(textField->text()); - const bool mustExist = fileDialog->options()->acceptMode() != QFileDialogOptions::AcceptSave; - const bool enteredPathIsValidUrl = fileUrl.isValid(); - bool enteredPathExists = false; - bool enteredPathIsDir = false; - if (enteredPathIsValidUrl) { - const QFileInfo fileInfo(textField->text()); - enteredPathExists = fileInfo.exists(); - if (enteredPathExists) - enteredPathIsDir = fileInfo.isDir(); - } - - qCDebug(lcTextInput).nospace() << "text field accepted -" - << " text=" << textField->text() - << " fileUrl=" << fileUrl - << " mustExist=" << mustExist - << " enteredPathIsValidUrl=" << enteredPathIsValidUrl - << " enteredPathExists=" << enteredPathExists - << " enteredPathIsDir=" << enteredPathIsDir; - - if (enteredPathIsDir && (enteredPathExists || !mustExist)) { - qCDebug(lcTextInput) << "path entered is a folder; setting folder"; - fileDialog->setCurrentFolder(fileUrl); - } else if (!enteredPathIsDir && (enteredPathExists || !mustExist)) { - qCDebug(lcTextInput) << "path entered is a file; setting file and calling accept()"; - // It's important that we set the currentFile here, as that's what - // QQuickPlatformFileDialog::selectedFiles() needs to return, and - // QQuickFileDialog::accept() sets its file property based on - // selectedFiles(). - fileDialog->setCurrentFile(fileUrl); - fileDialog->setSelectedFile(fileUrl); - fileDialog->accept(); - } else { - qCDebug(lcTextInput) << "path entered is not valid; not setting file/folder"; - } - - toggleTextFieldVisibility(); -} - -void QQuickFolderBreadcrumbBarPrivate::textFieldVisibleChanged() -{ - qCDebug(lcShortcuts) << "text field was either hidden or shown"; - - if (textField && textField->isVisible()) - handleTextFieldShown(); - else - handleTextFieldHidden(); -} - -void QQuickFolderBreadcrumbBarPrivate::textFieldActiveFocusChanged() -{ - // When the text field loses focus, it should be hidden. - if (!textField->hasActiveFocus() && textField->isVisible()) - toggleTextFieldVisibility(); -} - -/* - When the text field is visible: - - - Ctrl+L should do nothing (matches e.g. Ubuntu and Windows) - - Escape/back should hide it -*/ -void QQuickFolderBreadcrumbBarPrivate::handleTextFieldShown() -{ -#if QT_CONFIG(shortcut) - Q_Q(QQuickFolderBreadcrumbBar); - if (editPathToggleShortcutId == 0) - return; - - QGuiApplicationPrivate *appPrivate = QGuiApplicationPrivate::instance(); - qCDebug(lcShortcuts) << "text field was shown; grabbing/ungrabbing relevant shortcuts..."; - - // Disable the back/escape shortcuts for QQuickPopup so that the TextField can get them. - auto popupItem = qobject_cast<QQuickPopupItem*>(fileDialog->popupItem()); - popupItem->ungrabShortcut(); - - appPrivate->shortcutMap.removeShortcut(editPathToggleShortcutId, q); - editPathToggleShortcutId = 0; - - editPathBackShortcutId = appPrivate->shortcutMap.addShortcut( - q, Qt::Key_Back, Qt::WindowShortcut, QQuickShortcutContext::matcher); - editPathEscapeShortcutId = appPrivate->shortcutMap.addShortcut( - q, Qt::Key_Escape, Qt::WindowShortcut, QQuickShortcutContext::matcher); - - qCDebug(lcShortcuts).nospace() << "... shortcut IDs:" - << " editPathToggleShortcutId=" << editPathToggleShortcutId - << " editPathBackShortcutId=" << editPathBackShortcutId - << " editPathEscapeShortcutId=" << editPathEscapeShortcutId; -#endif -} - -/* - When the text field is not visible: - - - Ctrl+L should make it visible - - Escape/back should close the dialog -*/ -void QQuickFolderBreadcrumbBarPrivate::handleTextFieldHidden() -{ -#if QT_CONFIG(shortcut) - Q_Q(QQuickFolderBreadcrumbBar); - - QGuiApplicationPrivate *appPrivate = QGuiApplicationPrivate::instance(); - qCDebug(lcShortcuts) << "text field was hidden; grabbing/ungrabbing relevant shortcuts..."; - - if (editPathToggleShortcutId == 0) { - editPathToggleShortcutId = appPrivate->shortcutMap.addShortcut( - q, Qt::CTRL | Qt::Key_L, Qt::WindowShortcut, QQuickShortcutContext::matcher); - } - - // When the bar is first completed, this function is called, since the text field starts off hidden. - // If removeShortcut is called with a zero id, all shortcuts for the given object will be removed, - // and we don't want that. - if (editPathBackShortcutId != 0) { - appPrivate->shortcutMap.removeShortcut(editPathBackShortcutId, q); - editPathBackShortcutId = 0; - } - if (editPathEscapeShortcutId != 0) { - appPrivate->shortcutMap.removeShortcut(editPathEscapeShortcutId, q); - editPathEscapeShortcutId = 0; - } - - // Re-enable the back/escape shortcuts for QQuickPopup now that TextField no longer needs them. - auto popupItem = qobject_cast<QQuickPopupItem*>(fileDialog->popupItem()); - if (popupItem) - popupItem->grabShortcut(); - - qCDebug(lcShortcuts).nospace() << "... shortcut IDs: " - << " editPathToggleShortcutId=" << editPathToggleShortcutId - << " editPathBackShortcutId=" << editPathBackShortcutId - << " editPathEscapeShortcutId=" << editPathEscapeShortcutId; -#endif -} - -void QQuickFolderBreadcrumbBarPrivate::ungrabEditPathShortcuts() -{ -#if QT_CONFIG(shortcut) - Q_Q(QQuickFolderBreadcrumbBar); - QGuiApplicationPrivate *appPrivate = QGuiApplicationPrivate::instance(); - qCDebug(lcShortcuts) << "ungrabbing all edit path shortcuts"; - - if (editPathToggleShortcutId != 0) { - appPrivate->shortcutMap.removeShortcut(editPathToggleShortcutId, q); - editPathToggleShortcutId = 0; - } - if (editPathBackShortcutId != 0) { - appPrivate->shortcutMap.removeShortcut(editPathBackShortcutId, q); - editPathBackShortcutId = 0; - } - if (editPathEscapeShortcutId != 0) { - appPrivate->shortcutMap.removeShortcut(editPathEscapeShortcutId, q); - editPathEscapeShortcutId = 0; - } -#endif -} - -qreal QQuickFolderBreadcrumbBarPrivate::getContentWidth() const -{ - Q_Q(const QQuickFolderBreadcrumbBar); - const int count = contentModel->count(); - qreal totalWidth = qMax(0, count - 1) * spacing; - for (int i = 0; i < count; ++i) { - QQuickItem *item = q->itemAt(i); - if (item) { - QQuickItemPrivate *p = QQuickItemPrivate::get(item); - if (!p->widthValid()) - totalWidth += item->implicitWidth(); - else - totalWidth += item->width(); - } - } - qCDebug(lcContentSize) << "content width:" << totalWidth; - return totalWidth; -} - -qreal QQuickFolderBreadcrumbBarPrivate::getContentHeight() const -{ - Q_Q(const QQuickFolderBreadcrumbBar); - const int count = contentModel->count(); - qreal maxHeight = 0; - for (int i = 0; i < count; ++i) { - QQuickItem *item = q->itemAt(i); - if (item) - maxHeight = qMax(maxHeight, item->implicitHeight()); - } - qCDebug(lcContentSize) << "content height:" << maxHeight; - return maxHeight; -} - -void QQuickFolderBreadcrumbBarPrivate::resizeContent() -{ - Q_Q(QQuickFolderBreadcrumbBar); - if (contentItem) { - const int upButtonSpace = q->upButton() ? q->upButton()->width() + upButtonSpacing : 0; - contentItem->setPosition(QPointF(q->leftPadding() + upButtonSpace, q->topPadding())); - contentItem->setSize(QSizeF(q->availableWidth() - upButtonSpace, q->availableHeight())); - - if (textField) { - textField->setPosition(contentItem->position()); - textField->setSize(contentItem->size()); - } - } -} - -void QQuickFolderBreadcrumbBarPrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) -{ - QQuickContainerPrivate::itemGeometryChanged(item, change, diff); - if (change.sizeChange()) - updateImplicitContentSize(); -} - -void QQuickFolderBreadcrumbBarPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - QQuickContainerPrivate::itemImplicitWidthChanged(item); - if (item != contentItem) - updateImplicitContentWidth(); -} - -void QQuickFolderBreadcrumbBarPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - QQuickContainerPrivate::itemImplicitHeightChanged(item); - if (item != contentItem) - updateImplicitContentHeight(); -} - -/*! - \internal - - Private class for breadcrumb navigation of a directory. - - Given a FileDialog, FolderBreadCrumbbar creates breadcrumb buttons and - separators from the specified delegate components. -*/ - -QQuickFolderBreadcrumbBar::QQuickFolderBreadcrumbBar(QQuickItem *parent) - : QQuickContainer(*(new QQuickFolderBreadcrumbBarPrivate), parent) -{ - Q_D(QQuickFolderBreadcrumbBar); - d->changeTypes |= QQuickItemPrivate::Geometry | QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight; -} - -QQuickFileDialogImpl *QQuickFolderBreadcrumbBar::fileDialog() const -{ - Q_D(const QQuickFolderBreadcrumbBar); - return d->fileDialog; -} - -void QQuickFolderBreadcrumbBar::setFileDialog(QQuickFileDialogImpl *fileDialog) -{ - Q_D(QQuickFolderBreadcrumbBar); - if (fileDialog == d->fileDialog) - return; - - if (d->fileDialog) - QObjectPrivate::disconnect(d->fileDialog, &QQuickFileDialogImpl::currentFolderChanged, - d, &QQuickFolderBreadcrumbBarPrivate::folderChanged); - - d->fileDialog = fileDialog; - - if (d->fileDialog) - QObjectPrivate::connect(d->fileDialog, &QQuickFileDialogImpl::currentFolderChanged, - d, &QQuickFolderBreadcrumbBarPrivate::folderChanged); - - emit fileDialogChanged(); -} - -QQmlComponent *QQuickFolderBreadcrumbBar::buttonDelegate() -{ - Q_D(QQuickFolderBreadcrumbBar); - return d->buttonDelegate; -} - -void QQuickFolderBreadcrumbBar::setButtonDelegate(QQmlComponent *delegate) -{ - Q_D(QQuickFolderBreadcrumbBar); - qCDebug(lcFolderBreadcrumbBar) << "setButtonDelegate called with" << delegate; - if (d->componentComplete) { - // Simplify the code by disallowing this. - qCWarning(lcFolderBreadcrumbBar) << "BreadcrumbBar does not support setting delegates after component completion"; - return; - } - - if (delegate == d->buttonDelegate) - return; - - d->buttonDelegate = delegate; - emit buttonDelegateChanged(); -} - -QQmlComponent *QQuickFolderBreadcrumbBar::separatorDelegate() -{ - Q_D(QQuickFolderBreadcrumbBar); - return d->separatorDelegate; -} - -void QQuickFolderBreadcrumbBar::setSeparatorDelegate(QQmlComponent *delegate) -{ - Q_D(QQuickFolderBreadcrumbBar); - qCDebug(lcFolderBreadcrumbBar) << "setSeparatorDelegate called with" << delegate; - if (d->componentComplete) { - qCWarning(lcFolderBreadcrumbBar) << "BreadcrumbBar does not support setting delegates after component completion"; - return; - } - - if (delegate == d->separatorDelegate) - return; - - d->separatorDelegate = delegate; - emit separatorDelegateChanged(); -} - -QQuickAbstractButton *QQuickFolderBreadcrumbBar::upButton() -{ - Q_D(QQuickFolderBreadcrumbBar); - if (!d->upButton) - d->executeUpButton(); - return d->upButton; -} - -void QQuickFolderBreadcrumbBar::setUpButton(QQuickAbstractButton *upButton) -{ - Q_D(QQuickFolderBreadcrumbBar); - if (upButton == d->upButton) - return; - - if (!d->upButton.isExecuting()) - d->cancelUpButton(); - - if (d->upButton) { - QObjectPrivate::disconnect(d->upButton.data(), &QQuickAbstractButton::clicked, - d, &QQuickFolderBreadcrumbBarPrivate::goUp); - } - - QQuickControlPrivate::hideOldItem(d->upButton); - d->upButton = upButton; - if (d->upButton) { - if (!d->upButton->parentItem()) - d->upButton->setParentItem(this); - - QObjectPrivate::connect(d->upButton.data(), &QQuickAbstractButton::clicked, - d, &QQuickFolderBreadcrumbBarPrivate::goUp); - } - if (!d->upButton.isExecuting()) - emit upButtonChanged(); -} - -int QQuickFolderBreadcrumbBar::upButtonSpacing() const -{ - Q_D(const QQuickFolderBreadcrumbBar); - return d->upButtonSpacing; -} - -void QQuickFolderBreadcrumbBar::setUpButtonSpacing(int upButtonSpacing) -{ - Q_D(QQuickFolderBreadcrumbBar); - if (upButtonSpacing == d->upButtonSpacing) - return; - - d->upButtonSpacing = upButtonSpacing; - emit upButtonSpacingChanged(); -} - -QQuickTextField *QQuickFolderBreadcrumbBar::textField() -{ - Q_D(QQuickFolderBreadcrumbBar); - return d->textField; -} - -void QQuickFolderBreadcrumbBar::setTextField(QQuickTextField *textField) -{ - Q_D(QQuickFolderBreadcrumbBar); - if (textField == d->textField) - return; - - if (!d->textField.isExecuting()) - d->cancelUpButton(); - - if (d->textField) - d->handleTextFieldHidden(); - - if (d->textField) { - QObjectPrivate::disconnect(d->textField.data(), &QQuickTextInput::visibleChanged, - d, &QQuickFolderBreadcrumbBarPrivate::textFieldVisibleChanged); - QObjectPrivate::disconnect(d->textField.data(), &QQuickTextInput::activeFocusChanged, - d, &QQuickFolderBreadcrumbBarPrivate::textFieldActiveFocusChanged); - QObjectPrivate::disconnect(d->textField.data(), &QQuickTextInput::accepted, - d, &QQuickFolderBreadcrumbBarPrivate::textFieldAccepted); - } - - QQuickControlPrivate::hideOldItem(d->textField); - d->textField = textField; - if (d->textField) { - if (!d->textField->parentItem()) - d->textField->setParentItem(this); - - d->textField->setVisible(false); - - QObjectPrivate::connect(d->textField.data(), &QQuickTextInput::visibleChanged, - d, &QQuickFolderBreadcrumbBarPrivate::textFieldVisibleChanged); - QObjectPrivate::connect(d->textField.data(), &QQuickTextInput::activeFocusChanged, - d, &QQuickFolderBreadcrumbBarPrivate::textFieldActiveFocusChanged); - QObjectPrivate::connect(d->textField.data(), &QQuickTextInput::accepted, - d, &QQuickFolderBreadcrumbBarPrivate::textFieldAccepted); - } - if (!d->textField.isExecuting()) - emit textFieldChanged(); -} - -bool QQuickFolderBreadcrumbBar::event(QEvent *event) -{ -#if QT_CONFIG(shortcut) - Q_D(QQuickFolderBreadcrumbBar); - if (event->type() == QEvent::Shortcut) { - QShortcutEvent *shortcutEvent = static_cast<QShortcutEvent *>(event); - if (shortcutEvent->shortcutId() == d->editPathToggleShortcutId - || shortcutEvent->shortcutId() == d->editPathBackShortcutId - || shortcutEvent->shortcutId() == d->editPathEscapeShortcutId) { - d->toggleTextFieldVisibility(); - return true; - } else if (shortcutEvent->shortcutId() == d->goUpShortcutId) { - d->goUp(); - } - } -#endif - return QQuickItem::event(event); -} - -void QQuickFolderBreadcrumbBar::componentComplete() -{ - Q_D(QQuickFolderBreadcrumbBar); - qCDebug(lcFolderBreadcrumbBar) << "componentComplete"; - QQuickContainer::componentComplete(); - d->repopulate(); - - if (d->textField) { - // Force it to be updated as setTextField() is too early to do it. - d->textFieldVisibleChanged(); - } -} - -void QQuickFolderBreadcrumbBar::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - Q_D(QQuickFolderBreadcrumbBar); - QQuickContainer::itemChange(change, data); - - if (change == QQuickItem::ItemVisibleHasChanged && isComponentComplete()) { - if (data.boolValue && d->fileDialog->isVisible()) { - // It's visible. - d->handleTextFieldHidden(); - - d->goUpShortcutId = QGuiApplicationPrivate::instance()->shortcutMap.addShortcut( - this, QKeySequence(Qt::ALT | Qt::Key_Up), Qt::WindowShortcut, QQuickShortcutContext::matcher); - } else { - // It's hidden. - // Hide the text field so that when the dialog gets opened again, it's not still visible. - if (d->textField) - d->textField->setVisible(false); - - // Make the ListView visible again. - if (d->contentItem) - d->contentItem->setVisible(true); - - // We also need to ungrab all shortcuts when we're not visible. - d->ungrabEditPathShortcuts(); - - if (d->goUpShortcutId != 0) { - QGuiApplicationPrivate::instance()->shortcutMap.removeShortcut(d->goUpShortcutId, this); - d->goUpShortcutId = 0; - } - } - } -} - -bool QQuickFolderBreadcrumbBar::isContent(QQuickItem *item) const -{ - if (!qmlContext(item)) - return false; - - if (QQuickItemPrivate::get(item)->isTransparentForPositioner()) - return false; - - return true; -} - -QFont QQuickFolderBreadcrumbBar::defaultFont() const -{ - // TODO - return QQuickTheme::font(QQuickTheme::TabBar); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickFolderBreadcrumbBar::accessibleRole() const -{ - // TODO - return QAccessible::PageTabList; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfolderbreadcrumbbar_p.h b/src/quickdialogs2/quickdialogs2quickimpl/qquickfolderbreadcrumbbar_p.h deleted file mode 100644 index 5e14f5b0..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfolderbreadcrumbbar_p.h +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFOLDERBREADCRUMBBAR_P_H -#define QQUICKFOLDERBREADCRUMBBAR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQml/qqmlcomponent.h> -#include <QtQuickTemplates2/private/qquickcontainer_p.h> -#include <QtQuickTemplates2/private/qquicktextfield_p.h> - -#include "qquickfiledialogimpl_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickFolderBreadcrumbBarPrivate; - -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFolderBreadcrumbBar : public QQuickContainer -{ - Q_OBJECT - Q_PROPERTY(QQuickFileDialogImpl *fileDialog READ fileDialog WRITE setFileDialog NOTIFY fileDialogChanged) - Q_PROPERTY(QQmlComponent *buttonDelegate READ buttonDelegate WRITE setButtonDelegate NOTIFY buttonDelegateChanged) - Q_PROPERTY(QQmlComponent *separatorDelegate READ separatorDelegate WRITE setSeparatorDelegate NOTIFY separatorDelegateChanged) - Q_PROPERTY(QQuickAbstractButton *upButton READ upButton WRITE setUpButton NOTIFY upButtonChanged) - Q_PROPERTY(QQuickTextField *textField READ textField WRITE setTextField NOTIFY textFieldChanged) - Q_PROPERTY(int upButtonSpacing READ upButtonSpacing WRITE setUpButtonSpacing NOTIFY upButtonSpacingChanged) - QML_NAMED_ELEMENT(FolderBreadcrumbBar) - QML_ADDED_IN_VERSION(6, 2) - -public: - explicit QQuickFolderBreadcrumbBar(QQuickItem *parent = nullptr); - - QQuickFileDialogImpl *fileDialog() const; - void setFileDialog(QQuickFileDialogImpl *fileDialog); - - QQmlComponent *buttonDelegate(); - void setButtonDelegate(QQmlComponent *delegate); - - QQmlComponent *separatorDelegate(); - void setSeparatorDelegate(QQmlComponent *delegate); - - QQuickAbstractButton *upButton(); - void setUpButton(QQuickAbstractButton *upButton); - - int upButtonSpacing() const; - void setUpButtonSpacing(int upButtonSpacing); - - QQuickTextField *textField(); - void setTextField(QQuickTextField *textField); - -Q_SIGNALS: - void fileDialogChanged(); - void buttonDelegateChanged(); - void separatorDelegateChanged(); - void upButtonChanged(); - void upButtonSpacingChanged(); - void textFieldChanged(); - -protected: - bool event(QEvent *event) override; - - void componentComplete() override; - - void itemChange(ItemChange change, const ItemChangeData &data) override; - - bool isContent(QQuickItem *item) const override; - - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickFolderBreadcrumbBar) - Q_DECLARE_PRIVATE(QQuickFolderBreadcrumbBar) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickFolderBreadcrumbBar) - -#endif // QQUICKFOLDERBREADCRUMBBAR_P_H diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfolderbreadcrumbbar_p_p.h b/src/quickdialogs2/quickdialogs2quickimpl/qquickfolderbreadcrumbbar_p_p.h deleted file mode 100644 index 4616b6a9..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfolderbreadcrumbbar_p_p.h +++ /dev/null @@ -1,113 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFOLDERBREADCRUMBBAR_P_P_H -#define QQUICKFOLDERBREADCRUMBBAR_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontainer_p_p.h> -#include <QtQuickTemplates2/private/qquickdeferredexecute_p_p.h> - -#include "qquickfiledialogimpl_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickAbstractButton; -class QQuickTextField; - -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFolderBreadcrumbBarPrivate : public QQuickContainerPrivate -{ - Q_DECLARE_PUBLIC(QQuickFolderBreadcrumbBar) - -public: - QQuickItem *createDelegateItem(QQmlComponent *component, const QVariantMap &initialProperties); - static QString folderBaseName(const QString &folderPath); - static QStringList crumbPathsForFolder(const QUrl &folder); - void repopulate(); - void crumbClicked(); - void folderChanged(); - - void cancelUpButton(); - void executeUpButton(bool complete = false); - void goUp(); - - void cancelTextField(); - void executeTextField(bool complete = false); - void toggleTextFieldVisibility(); - void textFieldAccepted(); - - void textFieldVisibleChanged(); - void textFieldActiveFocusChanged(); - void handleTextFieldShown(); - void handleTextFieldHidden(); - void ungrabEditPathShortcuts(); - - qreal getContentWidth() const override; - qreal getContentHeight() const override; - void resizeContent() override; - - void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override; - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - -private: - QQuickFileDialogImpl *fileDialog = nullptr; - QList<QString> folderPaths; - QQmlComponent *buttonDelegate = nullptr; - QQmlComponent *separatorDelegate = nullptr; - QQuickDeferredPointer<QQuickAbstractButton> upButton; - QQuickDeferredPointer<QQuickTextField> textField; - int editPathToggleShortcutId = 0; - int editPathBackShortcutId = 0; - int editPathEscapeShortcutId = 0; - int goUpShortcutId = 0; - int upButtonSpacing = 0; - bool repopulating = false; -}; - -QT_END_NAMESPACE - -#endif // QQUICKFOLDERBREADCRUMBBAR_P_P_H diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl.cpp b/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl.cpp deleted file mode 100644 index 3263b73b..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl.cpp +++ /dev/null @@ -1,836 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickfontdialogimpl_p.h" -#include "qquickfontdialogimpl_p_p.h" - -#include <QtQuickTemplates2/private/qquickdialogbuttonbox_p_p.h> -#include <private/qfontdatabase_p.h> - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcAttachedProperty, "qt.quick.dialogs.quickfontdialogimpl.attachedOrWarn") - -QQuickFontDialogImplPrivate::QQuickFontDialogImplPrivate() -{ -} - -QQuickFontDialogImplAttached *QQuickFontDialogImplPrivate::attachedOrWarn() -{ - Q_Q(QQuickFontDialogImpl); - QQuickFontDialogImplAttached *attached = static_cast<QQuickFontDialogImplAttached *>( - qmlAttachedPropertiesObject<QQuickFontDialogImpl>(q)); - if (!attached) { - qCWarning(lcAttachedProperty) - << "Expected FontDialogImpl attached object to be present on" << this; - } - return attached; -} - -void QQuickFontDialogImplPrivate::handleAccept() { } - -void QQuickFontDialogImplPrivate::handleClick(QQuickAbstractButton *button) -{ - Q_Q(QQuickFontDialogImpl); - if (buttonRole(button) == QPlatformDialogHelper::AcceptRole) { - q->accept(); - QQuickDialogPrivate::handleClick(button); - } -} - -QQuickFontDialogImpl::QQuickFontDialogImpl(QObject *parent) - : QQuickDialog(*(new QQuickFontDialogImplPrivate), parent) -{ -} - -QQuickFontDialogImplAttached *QQuickFontDialogImpl::qmlAttachedProperties(QObject *object) -{ - return new QQuickFontDialogImplAttached(object); -} - -QSharedPointer<QFontDialogOptions> QQuickFontDialogImpl::options() const -{ - Q_D(const QQuickFontDialogImpl); - - return d->options; -} - -void QQuickFontDialogImpl::setOptions(const QSharedPointer<QFontDialogOptions> &options) -{ - Q_D(QQuickFontDialogImpl); - - if (options == d->options) - return; - - d->options = options; - - emit optionsChanged(); -} - -QFont QQuickFontDialogImpl::currentFont() const -{ - Q_D(const QQuickFontDialogImpl); - return d->currentFont; -} - -void QQuickFontDialogImpl::setCurrentFont(const QFont &font) -{ - Q_D(QQuickFontDialogImpl); - - if (font == d->currentFont) - return; - - d->currentFont = font; - - emit currentFontChanged(font); -} - -void QQuickFontDialogImpl::updateListViews() -{ - Q_D(QQuickFontDialogImpl); - QQuickFontDialogImplAttached *attached = d->attachedOrWarn(); - if (!attached) - return; - - attached->updateFamilies(); - - attached->buttonBox()->setVisible(!(options()->options() & QFontDialogOptions::NoButtons)); -} - -void QQuickFontDialogImpl::keyReleaseEvent(QKeyEvent *event) -{ - Q_D(QQuickFontDialogImpl); - - QQuickDialog::keyReleaseEvent(event); - - QQuickFontDialogImplAttached *attached = d->attachedOrWarn(); - if (!attached) - return; - - // The family and style text edits are read-only so that they - // can show the current selection but also allow key input to "search". - // This is why we handle just the release event, and don't accept it. - if (window()->activeFocusItem() == attached->familyEdit()) - attached->searchFamily(event->text()); - else if (window()->activeFocusItem() == attached->styleEdit()) - attached->searchStyle(event->text()); -} - -void QQuickFontDialogImpl::focusOutEvent(QFocusEvent *event) -{ - Q_D(QQuickFontDialogImpl); - - QQuickDialog::focusOutEvent(event); - - QQuickFontDialogImplAttached *attached = d->attachedOrWarn(); - if (!attached) - return; - - attached->clearSearch(); -} - -QQuickFontDialogImplAttached::QQuickFontDialogImplAttached(QObject *parent) - : QObject(*(new QQuickFontDialogImplAttachedPrivate), parent), - m_writingSystem(QFontDatabase::Any), - m_selectedSize(-1), - m_smoothlyScalable(false), - m_isUpdatingStyles(false) -{ - if (!qobject_cast<QQuickFontDialogImpl *>(parent)) { - qmlWarning(this) << "FontDialogImpl attached properties should only be " - << "accessed through the root FileDialogImpl instance"; - } -} - -QQuickListView *QQuickFontDialogImplAttached::familyListView() const -{ - Q_D(const QQuickFontDialogImplAttached); - return d->familyListView; -} - -void QQuickFontDialogImplAttached::setFamilyListView(QQuickListView *familyListView) -{ - Q_D(QQuickFontDialogImplAttached); - if (d->familyListView == familyListView) - return; - - if (d->familyListView) { - disconnect(d->familyListView, &QQuickListView::currentIndexChanged, - this, &QQuickFontDialogImplAttached::_q_familyChanged); - } - - d->familyListView = familyListView; - - if (familyListView) { - connect(d->familyListView, &QQuickListView::currentIndexChanged, - this, &QQuickFontDialogImplAttached::_q_familyChanged); - } - - emit familyListViewChanged(); -} - -QQuickListView *QQuickFontDialogImplAttached::styleListView() const -{ - Q_D(const QQuickFontDialogImplAttached); - return d->styleListView; -} - -void QQuickFontDialogImplAttached::setStyleListView(QQuickListView *styleListView) -{ - Q_D(QQuickFontDialogImplAttached); - if (d->styleListView == styleListView) - return; - - if (d->styleListView) { - disconnect(d->styleListView, &QQuickListView::currentIndexChanged, - this, &QQuickFontDialogImplAttached::_q_styleChanged); - } - - d->styleListView = styleListView; - - if (styleListView) { - connect(d->styleListView, &QQuickListView::currentIndexChanged, - this, &QQuickFontDialogImplAttached::_q_styleChanged); - } - - emit styleListViewChanged(); -} - -QQuickListView *QQuickFontDialogImplAttached::sizeListView() const -{ - Q_D(const QQuickFontDialogImplAttached); - return d->sizeListView; -} - -void QQuickFontDialogImplAttached::setSizeListView(QQuickListView *sizeListView) -{ - Q_D(QQuickFontDialogImplAttached); - if (d->sizeListView == sizeListView) - return; - - if (d->sizeListView) { - disconnect(d->sizeListView, &QQuickListView::currentIndexChanged, - this, &QQuickFontDialogImplAttached::_q_sizeChanged); - } - - d->sizeListView = sizeListView; - - if (d->sizeListView) { - connect(d->sizeListView, &QQuickListView::currentIndexChanged, - this, &QQuickFontDialogImplAttached::_q_sizeChanged); - } - - emit sizeListViewChanged(); -} - -QQuickTextEdit *QQuickFontDialogImplAttached::sampleEdit() const -{ - Q_D(const QQuickFontDialogImplAttached); - return d->sampleEdit; -} - -void QQuickFontDialogImplAttached::setSampleEdit(QQuickTextEdit *sampleEdit) -{ - Q_D(QQuickFontDialogImplAttached); - - if (d->sampleEdit == sampleEdit) - return; - - if (d->sampleEdit) { - QObjectPrivate::disconnect(d->sampleEdit, &QQuickTextEdit::fontChanged, - d, &QQuickFontDialogImplAttachedPrivate::currentFontChanged); - } - - d->sampleEdit = sampleEdit; - - if (d->sampleEdit) { - QObjectPrivate::connect(d->sampleEdit, &QQuickTextEdit::fontChanged, - d, &QQuickFontDialogImplAttachedPrivate::currentFontChanged); - - d->sampleEdit->setText(QFontDatabase::writingSystemSample(m_writingSystem)); - } - - emit sampleEditChanged(); -} - -QQuickDialogButtonBox *QQuickFontDialogImplAttached::buttonBox() const -{ - Q_D(const QQuickFontDialogImplAttached); - return d->buttonBox; -} - -void QQuickFontDialogImplAttached::setButtonBox(QQuickDialogButtonBox *buttonBox) -{ - Q_D(QQuickFontDialogImplAttached); - if (buttonBox == d->buttonBox) - return; - - if (d->buttonBox) { - QQuickFontDialogImpl *fontDialogImpl = qobject_cast<QQuickFontDialogImpl *>(parent()); - if (fontDialogImpl) { - auto dialogPrivate = QQuickDialogPrivate::get(fontDialogImpl); - QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::accepted, - dialogPrivate, &QQuickDialogPrivate::handleAccept); - QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::rejected, - dialogPrivate, &QQuickDialogPrivate::handleReject); - QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::clicked, dialogPrivate, - &QQuickDialogPrivate::handleClick); - } - } - - d->buttonBox = buttonBox; - - if (buttonBox) { - QQuickFontDialogImpl *fontDialogImpl = qobject_cast<QQuickFontDialogImpl *>(parent()); - if (fontDialogImpl) { - auto dialogPrivate = QQuickDialogPrivate::get(fontDialogImpl); - QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::accepted, dialogPrivate, - &QQuickDialogPrivate::handleAccept); - QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::rejected, dialogPrivate, - &QQuickDialogPrivate::handleReject); - QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::clicked, dialogPrivate, - &QQuickDialogPrivate::handleClick); - } - } - - emit buttonBoxChanged(); -} - -QQuickComboBox *QQuickFontDialogImplAttached::writingSystemComboBox() const -{ - Q_D(const QQuickFontDialogImplAttached); - return d->writingSystemComboBox; -} - -void QQuickFontDialogImplAttached::setWritingSystemComboBox(QQuickComboBox *writingSystemComboBox) -{ - Q_D(QQuickFontDialogImplAttached); - - if (d->writingSystemComboBox == writingSystemComboBox) - return; - - if (d->writingSystemComboBox) { - disconnect(d->writingSystemComboBox, &QQuickComboBox::activated, - this, &QQuickFontDialogImplAttached::_q_writingSystemChanged); - } - - d->writingSystemComboBox = writingSystemComboBox; - - if (d->writingSystemComboBox) { - QStringList writingSystemModel; - for (int i = 0; i < QFontDatabase::WritingSystemsCount; ++i) { - QFontDatabase::WritingSystem ws = QFontDatabase::WritingSystem(i); - QString wsName = QFontDatabase::writingSystemName(ws); - if (wsName.isEmpty()) - break; - writingSystemModel.append(wsName); - } - - d->writingSystemComboBox->setModel(writingSystemModel); - - connect(d->writingSystemComboBox, &QQuickComboBox::activated, - this, &QQuickFontDialogImplAttached::_q_writingSystemChanged); - } - - emit writingSystemComboBoxChanged(); -} - -QQuickCheckBox *QQuickFontDialogImplAttached::underlineCheckBox() const -{ - Q_D(const QQuickFontDialogImplAttached); - return d->underlineCheckBox; -} - -void QQuickFontDialogImplAttached::setUnderlineCheckBox(QQuickCheckBox *underlineCheckBox) -{ - Q_D(QQuickFontDialogImplAttached); - - if (d->underlineCheckBox == underlineCheckBox) - return; - - if (d->underlineCheckBox) { - disconnect(d->underlineCheckBox, &QQuickCheckBox::checkStateChanged, - this, &QQuickFontDialogImplAttached::_q_updateSample); - } - - d->underlineCheckBox = underlineCheckBox; - - if (d->underlineCheckBox) { - connect(d->underlineCheckBox, &QQuickCheckBox::checkStateChanged, - this, &QQuickFontDialogImplAttached::_q_updateSample); - } - - emit underlineCheckBoxChanged(); -} - -QQuickCheckBox *QQuickFontDialogImplAttached::strikeoutCheckBox() const -{ - Q_D(const QQuickFontDialogImplAttached); - return d->strikeoutCheckBox; -} - -void QQuickFontDialogImplAttached::setStrikeoutCheckBox(QQuickCheckBox *strikeoutCheckBox) -{ - Q_D(QQuickFontDialogImplAttached); - - if (d->strikeoutCheckBox == strikeoutCheckBox) - return; - - if (d->strikeoutCheckBox) { - disconnect(d->strikeoutCheckBox, &QQuickCheckBox::checkStateChanged, - this, &QQuickFontDialogImplAttached::_q_updateSample); - } - - d->strikeoutCheckBox = strikeoutCheckBox; - - if (d->strikeoutCheckBox) { - connect(d->strikeoutCheckBox, &QQuickCheckBox::checkStateChanged, - this, &QQuickFontDialogImplAttached::_q_updateSample); - } - - emit strikeoutCheckBoxChanged(); -} - -QQuickTextField *QQuickFontDialogImplAttached::familyEdit() const -{ - Q_D(const QQuickFontDialogImplAttached); - return d->familyEdit; -} - -void QQuickFontDialogImplAttached::setFamilyEdit(QQuickTextField *familyEdit) -{ - Q_D(QQuickFontDialogImplAttached); - - if (d->familyEdit == familyEdit) - return; - - d->familyEdit = familyEdit; - - emit familyEditChanged(); -} - -QQuickTextField *QQuickFontDialogImplAttached::styleEdit() const -{ - Q_D(const QQuickFontDialogImplAttached); - return d->styleEdit; -} - -void QQuickFontDialogImplAttached::setStyleEdit(QQuickTextField *styleEdit) -{ - Q_D(QQuickFontDialogImplAttached); - - if (d->styleEdit == styleEdit) - return; - - d->styleEdit = styleEdit; - - emit styleEditChanged(); -} - -QQuickTextField *QQuickFontDialogImplAttached::sizeEdit() const -{ - Q_D(const QQuickFontDialogImplAttached); - return d->sizeEdit; -} - -void QQuickFontDialogImplAttached::setSizeEdit(QQuickTextField *sizeEdit) -{ - Q_D(QQuickFontDialogImplAttached); - - if (d->sizeEdit == sizeEdit) - return; - - if (d->sizeEdit) { - disconnect(d->sizeEdit, &QQuickTextField::textChanged, - this, &QQuickFontDialogImplAttached::_q_sizeEdited); - } - - d->sizeEdit = sizeEdit; - - if (d->sizeEdit) { - connect(d->sizeEdit, &QQuickTextField::textChanged, - this, &QQuickFontDialogImplAttached::_q_sizeEdited); - } - - emit sizeEditChanged(); -} - -/*! - \internal - - Updates the model for the family list view, and attempt - to reselect the previously selected font family. - - Calls updateStyles() - */ -void QQuickFontDialogImplAttached::updateFamilies() -{ - enum match_t { MATCH_NONE = 0, MATCH_LAST_RESORT = 1, MATCH_APP = 2, MATCH_FAMILY = 3 }; - - const QFontDialogOptions::FontDialogOptions scalableMask( - QFontDialogOptions::ScalableFonts | QFontDialogOptions::NonScalableFonts); - - const QFontDialogOptions::FontDialogOptions spacingMask(QFontDialogOptions::ProportionalFonts - | QFontDialogOptions::MonospacedFonts); - - const auto p = qobject_cast<QQuickFontDialogImpl *>(parent()); - - const auto options = p->options()->options(); - - QStringList familyNames; - const auto families = QFontDatabase::families(m_writingSystem); - for (const auto &family : families) { - if (QFontDatabase::isPrivateFamily(family)) - continue; - - if ((options & scalableMask) && (options & scalableMask) != scalableMask) { - if (bool(options & QFontDialogOptions::ScalableFonts) - != QFontDatabase::isSmoothlyScalable(family)) - continue; - } - - if ((options & spacingMask) && (options & scalableMask) != spacingMask) { - if (bool(options & QFontDialogOptions::MonospacedFonts) - != QFontDatabase::isFixedPitch(family)) - continue; - } - - familyNames << family; - } - - auto listView = familyListView(); - - // Index will be set to -1 on empty model, and 0 for non empty models. - // Will overwrite selectedFamily and selectedStyle - listView->setModel(familyNames); - - QString foundryName1, familyName1, foundryName2, familyName2; - int bestFamilyMatch = -1; - match_t bestFamilyType = MATCH_NONE; - const QFont f; - - QFontDatabasePrivate::parseFontName(m_selectedFamily, foundryName1, familyName1); - - int i = 0; - for (auto it = familyNames.constBegin(); it != familyNames.constEnd(); ++it, ++i) { - QFontDatabasePrivate::parseFontName(*it, foundryName2, familyName2); - - if (familyName1 == familyName2) { - bestFamilyType = MATCH_FAMILY; - if (foundryName1 == foundryName2) { - bestFamilyMatch = i; - break; - } - if (bestFamilyMatch < MATCH_FAMILY) { - bestFamilyMatch = i; - } - } - - match_t type = MATCH_NONE; - if (bestFamilyType <= MATCH_NONE && familyName2 == QStringLiteral("helvetica")) - type = MATCH_LAST_RESORT; - if (bestFamilyType <= MATCH_LAST_RESORT && familyName2 == f.families().constFirst()) - type = MATCH_APP; - if (type != MATCH_NONE) { - bestFamilyType = type; - bestFamilyMatch = i; - } - } - - if (!familyNames.isEmpty() && bestFamilyType != MATCH_NONE) { - listView->setCurrentIndex(bestFamilyMatch); - } else { - listView->setCurrentIndex(-1); - } - - updateStyles(); -} - -/*! - \internal - - Updates the model for the style list view, and - attempt to reselect the style that was previously selected. - - Calls updateSizes() - */ -void QQuickFontDialogImplAttached::updateStyles() -{ - const QString family = familyListView()->currentIndex() >= 0 ? m_selectedFamily : QString(); - const QStringList styles = QFontDatabase::styles(family); - - auto listView = styleListView(); - - m_isUpdatingStyles = true; - - listView->setModel(styles); - - if (styles.isEmpty()) { - styleEdit()->clear(); - m_smoothlyScalable = false; - } else { - int newIndex = 0; - - if (!m_selectedStyle.isEmpty()) { - bool redo = true, found = false; - QString cstyle = m_selectedStyle; - do { - for (int i = 0; i < styles.count(); ++i) { - if (cstyle.toLower() == styles.at(i).toLower()) { - newIndex = i; - found = true; - break; - } - } - - if (!found && redo) { - redo = false; - - if (cstyle.contains(QLatin1String("Italic"))) { - cstyle.replace(QLatin1String("Italic"), QLatin1String("Oblique")); - continue; - } else if (cstyle.contains(QLatin1String("Oblique"))) { - cstyle.replace(QLatin1String("Oblique"), QLatin1String("Italic")); - continue; - } else if (cstyle.contains(QLatin1String("Regular"))) { - cstyle.replace(QLatin1String("Regular"), QLatin1String("Normal")); - continue; - } else if (cstyle.contains(QLatin1String("Normal"))) { - cstyle.replace(QLatin1String("Normal"), QLatin1String("Regular")); - continue; - } - } - - } while (!found && redo); - } - - listView->setCurrentIndex(newIndex); - - m_selectedStyle = styles.at(newIndex); - styleEdit()->setText(m_selectedStyle); - - m_smoothlyScalable = QFontDatabase::isSmoothlyScalable(m_selectedFamily, m_selectedStyle); - } - - m_isUpdatingStyles = false; - - updateSizes(); -} - -/*! - \internal - - Updates the model for the size list view, - and attempts to reselect the size that was previously selected - */ -void QQuickFontDialogImplAttached::updateSizes() -{ - if (!m_selectedFamily.isEmpty()) { - const QList<int> sizes = QFontDatabase::pointSizes(m_selectedFamily, m_selectedStyle); - - QStringList str_sizes; - - str_sizes.reserve(sizes.size()); - - int idx = 0, current = -1; - for (QList<int>::const_iterator it = sizes.constBegin(); it != sizes.constEnd(); it++) { - str_sizes.append(QString::number(*it)); - if (current == -1 && m_selectedSize == *it) { - current = idx; - } - ++idx; - } - - auto listView = sizeListView(); - - listView->setModel(str_sizes); - if (current != -1) - listView->setCurrentIndex(current); - - sizeEdit()->setText(!m_smoothlyScalable && listView->currentIndex() > 0 - ? str_sizes.at(listView->currentIndex()) - : QString::number(m_selectedSize)); - } else { - qCWarning(lcAttachedProperty) << "Warning! selectedFamily is empty"; - sizeEdit()->clear(); - } - - _q_updateSample(); -} - -void QQuickFontDialogImplAttached::_q_updateSample() -{ - const int pSize = sizeEdit()->text().toInt(); - - QFont newFont = QFontDatabase::font(m_selectedFamily, m_selectedStyle, pSize); - - newFont.setUnderline(underlineCheckBox()->isChecked()); - newFont.setStrikeOut(strikeoutCheckBox()->isChecked()); - - if (!m_selectedFamily.isEmpty()) { - sampleEdit()->setFont(newFont); - } -} - -void QQuickFontDialogImplAttached::_q_writingSystemChanged(int index) -{ - m_writingSystem = QFontDatabase::WritingSystem(index); - sampleEdit()->setText(QFontDatabase::writingSystemSample(m_writingSystem)); - - updateFamilies(); -} - -void QQuickFontDialogImplAttached::searchListView(const QString &s, QQuickListView *listView) -{ - const QStringList model = listView->model().toStringList(); - - bool redo = false; - - do { - m_search.append(s); - - for (int i = 0; i < model.count(); ++i) { - if (model.at(i).startsWith(m_search, Qt::CaseInsensitive)) { - listView->setCurrentIndex(i); - return; - } - } - - clearSearch(); - - redo = !redo; - } while (redo); -} - -void QQuickFontDialogImplAttached::clearSearch() -{ - m_search.clear(); -} - -void QQuickFontDialogImplAttached::_q_familyChanged() -{ - const int index = familyListView()->currentIndex(); - - if (index < 0) { - familyEdit()->clear(); - return; - } - - m_selectedFamily = familyListView()->model().toStringList().at(index); - familyEdit()->setText(m_selectedFamily); - - updateStyles(); -} - -void QQuickFontDialogImplAttached::_q_styleChanged() -{ - if (m_isUpdatingStyles) - return; - - const int index = styleListView()->currentIndex(); - - if (index < 0) { - qCWarning(lcAttachedProperty) << "currentIndex changed to -1"; - return; - } - - m_selectedStyle = styleListView()->model().toStringList().at(index); - styleEdit()->setText(m_selectedStyle); - - updateSizes(); -} - -void QQuickFontDialogImplAttached::_q_sizeEdited() -{ - const int size = sizeEdit()->text().toInt(); - - if (size == m_selectedSize) - return; - - m_selectedSize = size; - - if (sizeListView()->count()) { - auto model = sizeListView()->model().toStringList(); - - int i; - for (i = 0; i < model.count() - 1; ++i) { - if (model.at(i).toInt() >= size) - break; - } - - QSignalBlocker blocker(sizeListView()); - if (model.at(i).toInt() == size) - sizeListView()->setCurrentIndex(i); - else - sizeListView()->setCurrentIndex(-1); - } - - _q_updateSample(); -} - -void QQuickFontDialogImplAttached::_q_sizeChanged() -{ - const int index = sizeListView()->currentIndex(); - - if (index < 0) { - qCWarning(lcAttachedProperty) << "currentIndex changed to -1"; - return; - } - - const QString s = sizeListView()->model().toStringList().at(index); - m_selectedSize = s.toInt(); - - sizeEdit()->setText(s); - - _q_updateSample(); -} - -void QQuickFontDialogImplAttachedPrivate::currentFontChanged(const QFont &font) -{ - - auto fontDialogImpl = qobject_cast<QQuickFontDialogImpl *>(parent); - - if (!fontDialogImpl) { - return; - } - - fontDialogImpl->setCurrentFont(font); - - if (fontDialogImpl->options()->testOption(QFontDialogOptions::NoButtons)) - emit fontDialogImpl->fontSelected(font); -} - -QT_END_NAMESPACE diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl_p.h b/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl_p.h deleted file mode 100644 index 98567353..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl_p.h +++ /dev/null @@ -1,215 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFONTDIALOGIMPL_P_H -#define QQUICKFONTDIALOGIMPL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qfontdatabase.h> -#include <QtQuick/private/qquicklistview_p.h> -#include <QtQuick/private/qquicktextedit_p.h> -#include <QtQuickTemplates2/private/qquicktextfield_p.h> -#include <QtQuickTemplates2/private/qquickcombobox_p.h> -#include <QtQuickTemplates2/private/qquickcheckbox_p.h> -#include <QtQuickTemplates2/private/qquickdialog_p.h> -#include "qtquickdialogs2quickimplglobal_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickDialogButtonBox; - -class QQuickFontDialogImplAttached; -class QQuickFontDialogImplAttachedPrivate; -class QQuickFontDialogImplPrivate; - -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFontDialogImpl : public QQuickDialog -{ - Q_OBJECT - Q_PROPERTY(QFont currentFont READ currentFont WRITE setCurrentFont NOTIFY currentFontChanged FINAL) - QML_NAMED_ELEMENT(FontDialogImpl) - QML_ATTACHED(QQuickFontDialogImplAttached) - QML_ADDED_IN_VERSION(6, 2) - -public: - explicit QQuickFontDialogImpl(QObject *parent = nullptr); - - static QQuickFontDialogImplAttached *qmlAttachedProperties(QObject *object); - - QSharedPointer<QFontDialogOptions> options() const; - void setOptions(const QSharedPointer<QFontDialogOptions> &options); - - QFont currentFont() const; - void setCurrentFont(const QFont &font); - - void updateListViews(); - -Q_SIGNALS: - void optionsChanged(); - void currentFontChanged(const QFont &font); - void fontSelected(const QFont &font); - -private: - void keyReleaseEvent(QKeyEvent *event) override; - void focusOutEvent(QFocusEvent *event) override; - - Q_DISABLE_COPY(QQuickFontDialogImpl) - Q_DECLARE_PRIVATE(QQuickFontDialogImpl) -}; - -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFontDialogImplAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickListView *familyListView READ familyListView WRITE setFamilyListView - NOTIFY familyListViewChanged) - Q_PROPERTY(QQuickListView *styleListView READ styleListView WRITE setStyleListView - NOTIFY styleListViewChanged) - Q_PROPERTY(QQuickListView *sizeListView READ sizeListView WRITE setSizeListView - NOTIFY sizeListViewChanged) - Q_PROPERTY(QQuickTextEdit *sampleEdit READ sampleEdit WRITE setSampleEdit - NOTIFY sampleEditChanged) - Q_PROPERTY(QQuickDialogButtonBox *buttonBox READ buttonBox WRITE setButtonBox - NOTIFY buttonBoxChanged) - Q_PROPERTY(QQuickComboBox *writingSystemComboBox READ writingSystemComboBox - WRITE setWritingSystemComboBox NOTIFY writingSystemComboBoxChanged) - Q_PROPERTY(QQuickCheckBox *underlineCheckBox READ underlineCheckBox WRITE setUnderlineCheckBox - NOTIFY underlineCheckBoxChanged) - Q_PROPERTY(QQuickCheckBox *strikeoutCheckBox READ strikeoutCheckBox WRITE setStrikeoutCheckBox - NOTIFY strikeoutCheckBoxChanged) - - Q_PROPERTY(QQuickTextField *familyEdit READ familyEdit WRITE setFamilyEdit - NOTIFY familyEditChanged) - Q_PROPERTY(QQuickTextField *styleEdit READ styleEdit WRITE setStyleEdit NOTIFY styleEditChanged) - Q_PROPERTY(QQuickTextField *sizeEdit READ sizeEdit WRITE setSizeEdit NOTIFY sizeEditChanged) - - Q_MOC_INCLUDE(<QtQuickTemplates2 / private / qquickdialogbuttonbox_p.h>) - -public: - explicit QQuickFontDialogImplAttached(QObject *parent = nullptr); - - QQuickListView *familyListView() const; - void setFamilyListView(QQuickListView *familyListView); - - QQuickListView *styleListView() const; - void setStyleListView(QQuickListView *styleListView); - - QQuickListView *sizeListView() const; - void setSizeListView(QQuickListView *sizeListView); - - QQuickTextEdit *sampleEdit() const; - void setSampleEdit(QQuickTextEdit *sampleEdit); - - QQuickDialogButtonBox *buttonBox() const; - void setButtonBox(QQuickDialogButtonBox *buttonBox); - - QQuickComboBox *writingSystemComboBox() const; - void setWritingSystemComboBox(QQuickComboBox *writingSystemComboBox); - - QQuickCheckBox *underlineCheckBox() const; - void setUnderlineCheckBox(QQuickCheckBox *underlineCheckBox); - - QQuickCheckBox *strikeoutCheckBox() const; - void setStrikeoutCheckBox(QQuickCheckBox *strikethroughCheckBox); - - QQuickTextField *familyEdit() const; - void setFamilyEdit(QQuickTextField *familyEdit); - - QQuickTextField *styleEdit() const; - void setStyleEdit(QQuickTextField *styleEdit); - - QQuickTextField *sizeEdit() const; - void setSizeEdit(QQuickTextField *sizeEdit); - -Q_SIGNALS: - void buttonBoxChanged(); - void familyListViewChanged(); - void styleListViewChanged(); - void sizeListViewChanged(); - void sampleEditChanged(); - void writingSystemComboBoxChanged(); - void underlineCheckBoxChanged(); - void strikeoutCheckBoxChanged(); - void familyEditChanged(); - void styleEditChanged(); - void sizeEditChanged(); - -public: - void searchFamily(const QString &s) { searchListView(s, familyListView()); } - void searchStyle(const QString &s) { searchListView(s, styleListView()); } - void clearSearch(); - - void updateFamilies(); - -private: - void updateStyles(); - void updateSizes(); - - void _q_familyChanged(); - void _q_styleChanged(); - void _q_sizeEdited(); - void _q_sizeChanged(); - void _q_updateSample(); - - void _q_writingSystemChanged(int index); - - void searchListView(const QString &s, QQuickListView *listView); - - QFontDatabase::WritingSystem m_writingSystem; - QString m_selectedFamily; - QString m_selectedStyle; - QString m_search; - int m_selectedSize; - bool m_smoothlyScalable; - bool m_isUpdatingStyles; - - Q_DISABLE_COPY(QQuickFontDialogImplAttached) - Q_DECLARE_PRIVATE(QQuickFontDialogImplAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickFontDialogImpl) - -#endif // QQUICKFONTDIALOGIMPL_P_H diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl_p_p.h b/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl_p_p.h deleted file mode 100644 index 8de3480d..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl_p_p.h +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFONTDIALOGIMPL_P_P_H -#define QQUICKFONTDIALOGIMPL_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcombobox_p.h> -#include <QtQuickTemplates2/private/qquickdialog_p_p.h> -#include <QtQuickTemplates2/private/qquickdialogbuttonbox_p.h> - -#include "qquickfontdialogimpl_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickFontDialogImplPrivate : public QQuickDialogPrivate -{ - Q_DECLARE_PUBLIC(QQuickFontDialogImpl) -public: - QQuickFontDialogImplPrivate(); - - static QQuickFontDialogImplPrivate *get(QQuickFontDialogImpl *dialog) - { - return dialog->d_func(); - } - - QQuickFontDialogImplAttached *attachedOrWarn(); - - void updateEnabled(); - - void handleAccept() override; - void handleClick(QQuickAbstractButton *button) override; - - QSharedPointer<QFontDialogOptions> options; - - QFont currentFont; -}; - -class QQuickFontDialogImplAttachedPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickFontDialogImplAttached) - - void currentFontChanged(const QFont &font); - -public: - QPointer<QQuickDialogButtonBox> buttonBox; - QPointer<QQuickListView> familyListView; - QPointer<QQuickListView> styleListView; - QPointer<QQuickListView> sizeListView; - QPointer<QQuickTextEdit> sampleEdit; - QPointer<QQuickComboBox> writingSystemComboBox; - QPointer<QQuickCheckBox> underlineCheckBox; - QPointer<QQuickCheckBox> strikeoutCheckBox; - QPointer<QQuickTextField> familyEdit; - QPointer<QQuickTextField> styleEdit; - QPointer<QQuickTextField> sizeEdit; -}; - -QT_END_NAMESPACE - -#endif // QQUICKFONTDIALOGIMPL_P_P_H diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickplatformfiledialog.cpp b/src/quickdialogs2/quickdialogs2quickimpl/qquickplatformfiledialog.cpp deleted file mode 100644 index deccd9bb..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickplatformfiledialog.cpp +++ /dev/null @@ -1,226 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformfiledialog_p.h" - -#include <QtCore/qloggingcategory.h> -#include <QtGui/qwindow.h> -#include <QtQml/qqmlcontext.h> -#include <QtQml/qqmlinfo.h> -#include <QtQuick/qquickwindow.h> -#include <QtQuickDialogs2Utils/private/qquickfilenamefilter_p.h> -#include <QtQuickTemplates2/private/qquickdialog_p.h> -#include <QtQuickTemplates2/private/qquickpopup_p_p.h> -#include <QtQuickTemplates2/private/qquickpopupanchors_p.h> - -#include "qquickfiledialogimpl_p.h" - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcQuickPlatformFileDialog, "qt.quick.dialogs.quickplatformfiledialog") - -/*! - \class QQuickPlatformFileDialog - \internal - - An interface that QQuickFileDialog can use to access the non-native Qt Quick FileDialog. - - Both this and the native implementations are created in QQuickAbstractDialog::create(). -*/ -QQuickPlatformFileDialog::QQuickPlatformFileDialog(QObject *parent) -{ - qCDebug(lcQuickPlatformFileDialog) << "creating non-native Qt Quick FileDialog with parent" << parent; - - // Set a parent so that we get deleted if we can't be shown for whatever reason. - // Our eventual parent should be the window, though. - setParent(parent); - - auto qmlContext = ::qmlContext(parent); - if (!qmlContext) { - qmlWarning(parent) << "No QQmlContext for QQuickPlatformFileDialog; can't create non-native FileDialog implementation"; - return; - } - - const auto dialogQmlUrl = QUrl(QStringLiteral("qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/qml/FileDialog.qml")); - QQmlComponent fileDialogComponent(qmlContext->engine(), dialogQmlUrl, parent); - if (!fileDialogComponent.isReady()) { - qmlWarning(parent) << "Failed to load non-native FileDialog implementation:\n" << fileDialogComponent.errorString(); - return; - } - m_dialog = qobject_cast<QQuickFileDialogImpl*>(fileDialogComponent.create()); - if (!m_dialog) { - qmlWarning(parent) << "Failed to create an instance of the non-native FileDialog:\n" << fileDialogComponent.errorString(); - return; - } - // Give it a parent until it's parented to the window in show(). - m_dialog->setParent(this); - - connect(m_dialog, &QQuickDialog::accepted, this, &QPlatformDialogHelper::accept); - connect(m_dialog, &QQuickDialog::rejected, this, &QPlatformDialogHelper::reject); - - connect(m_dialog, &QQuickFileDialogImpl::fileSelected, this, &QQuickPlatformFileDialog::fileSelected); - // TODO: add support for multiple file selection (QTBUG-92585) -// connect(m_dialog, &QQuickFileDialogImpl::filesSelected, [this](const QList<QString> &files) { -// QList<QUrl> urls; -// urls.reserve(files.count()); -// for (const QString &file : files) -// urls += QUrl::fromLocalFile(file); -// emit filesSelected(urls); -// }); - connect(m_dialog, &QQuickFileDialogImpl::currentFileChanged, this, &QQuickPlatformFileDialog::currentChanged); - connect(m_dialog, &QQuickFileDialogImpl::currentFolderChanged, this, &QQuickPlatformFileDialog::directoryEntered); - connect(m_dialog, &QQuickFileDialogImpl::filterSelected, this, &QQuickPlatformFileDialog::filterSelected); - - // We would do this in QQuickFileDialogImpl, but we need to ensure that folderChanged() - // is connected to directoryEntered() before setting it to ensure that the QQuickFileDialog is notified. - if (m_dialog->currentFolder().isEmpty()) - m_dialog->setCurrentFolder(QUrl::fromLocalFile(QDir().absolutePath())); -} - -bool QQuickPlatformFileDialog::isValid() const -{ - return m_dialog; -} - -bool QQuickPlatformFileDialog::defaultNameFilterDisables() const -{ - return false; -} - -void QQuickPlatformFileDialog::setDirectory(const QUrl &directory) -{ - if (!m_dialog) - return; - - m_dialog->setCurrentFolder(directory); -} - -QUrl QQuickPlatformFileDialog::directory() const -{ - if (!m_dialog) - return {}; - - return m_dialog->currentFolder(); -} - -void QQuickPlatformFileDialog::selectFile(const QUrl &file) -{ - if (!m_dialog) - return; - - m_dialog->setSelectedFile(file); -} - -QList<QUrl> QQuickPlatformFileDialog::selectedFiles() const -{ - // TODO: support for multiple selected files - return { m_dialog->currentFile() }; -} - -void QQuickPlatformFileDialog::setFilter() -{ -} - -void QQuickPlatformFileDialog::selectNameFilter(const QString &filter) -{ - // There is a bit of a problem with order here - QQuickFileDialog::onShow() - // is called before our show(), but it needs to set the selected filter - // (which we can't do in our show() because we don't know about QQuickFileDialog). - // So, delay setting the filter until we're shown. This shouldn't be an issue - // in practice, since it doesn't make sense for the filter to programmatically - // change while the dialog is visible. - m_pendingNameFilter = filter; -} - -QString QQuickPlatformFileDialog::selectedNameFilter() const -{ - return m_dialog->selectedNameFilter()->name(); -} - -void QQuickPlatformFileDialog::exec() -{ - qCWarning(lcQuickPlatformFileDialog) << "exec() is not supported for the Qt Quick FileDialog fallback"; -} - -bool QQuickPlatformFileDialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) -{ - qCDebug(lcQuickPlatformFileDialog) << "show called with flags" << flags << - "modality" << modality << "parent" << parent; - if (!m_dialog) - return false; - - if (!parent) - return false; - - auto quickWindow = qobject_cast<QQuickWindow*>(parent); - if (!quickWindow) { - qmlInfo(this->parent()) << "Parent window (" << parent << ") of non-native dialog is not a QQuickWindow"; - return false; - } - m_dialog->setParent(parent); - m_dialog->resetParentItem(); - - auto popupPrivate = QQuickPopupPrivate::get(m_dialog); - popupPrivate->getAnchors()->setCenterIn(m_dialog->parentItem()); - - QSharedPointer<QFileDialogOptions> options = QPlatformFileDialogHelper::options(); - m_dialog->setTitle(options->windowTitle()); - m_dialog->setOptions(options); - m_dialog->selectNameFilter(m_pendingNameFilter); - m_pendingNameFilter.clear(); - m_dialog->setAcceptLabel(options->isLabelExplicitlySet(QFileDialogOptions::Accept) - ? options->labelText(QFileDialogOptions::Accept) : QString()); - m_dialog->setRejectLabel(options->isLabelExplicitlySet(QFileDialogOptions::Reject) - ? options->labelText(QFileDialogOptions::Reject) : QString()); - - m_dialog->open(); - return true; -} - -void QQuickPlatformFileDialog::hide() -{ - if (!m_dialog) - return; - - m_dialog->close(); -} - -QQuickFileDialogImpl *QQuickPlatformFileDialog::dialog() const -{ - return m_dialog; -} - -QT_END_NAMESPACE diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickplatformfiledialog_p.h b/src/quickdialogs2/quickdialogs2quickimpl/qquickplatformfiledialog_p.h deleted file mode 100644 index 883b7ed9..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickplatformfiledialog_p.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMFILEDIALOG_P_H -#define QQUICKPLATFORMFILEDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpa/qplatformdialoghelper.h> - -#include "qtquickdialogs2quickimplglobal_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickFileDialogImpl; -class QWindow; - -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickPlatformFileDialog : public QPlatformFileDialogHelper -{ - Q_OBJECT - -public: - explicit QQuickPlatformFileDialog(QObject *parent); - ~QQuickPlatformFileDialog() = default; - - bool isValid() const; - bool defaultNameFilterDisables() const override; - void setDirectory(const QUrl &directory) override; - QUrl directory() const override; - void selectFile(const QUrl &file) override; - QList<QUrl> selectedFiles() const override; - void setFilter() override; - void selectNameFilter(const QString &filter) override; - QString selectedNameFilter() const override; - - void exec() override; - bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) override; - void hide() override; - - QQuickFileDialogImpl *dialog() const; - -private: - QQuickFileDialogImpl *m_dialog = nullptr; - QString m_pendingNameFilter; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPLATFORMFILEDIALOG_P_H diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickplatformfontdialog.cpp b/src/quickdialogs2/quickdialogs2quickimpl/qquickplatformfontdialog.cpp deleted file mode 100644 index 9ae2c29a..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickplatformfontdialog.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickplatformfontdialog_p.h" - -#include <QtCore/qloggingcategory.h> -#include <QtGui/qwindow.h> -#include <QtQml/qqmlcontext.h> -#include <QtQml/qqmlinfo.h> -#include <QtQuick/qquickwindow.h> -#include <QtQuickTemplates2/private/qquickdialog_p.h> -#include <QtQuickTemplates2/private/qquickpopup_p_p.h> -#include <QtQuickTemplates2/private/qquickpopupanchors_p.h> - -#include "qquickfontdialogimpl_p.h" - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcQuickPlatformFontDialog, "qt.quick.dialogs.quickplatformfontdialog") - -/*! - \class QQuickPlatformFontDialog - \internal - - An interface that QQuickFontDialog can use to access the non-native Qt Quick FontDialog. - - Both this and the native implementations are created in QQuickAbstractDialog::create(). - -*/ -QQuickPlatformFontDialog::QQuickPlatformFontDialog(QObject *parent) -{ - qCDebug(lcQuickPlatformFontDialog) - << "creating non-native Qt Quick FontDialog with parent" << parent; - - // Set a parent so that we get deleted if we can't be shown for whatever reason. - // Our eventual parent should be the window, though. - setParent(parent); - - auto qmlContext = ::qmlContext(parent); - if (!qmlContext) { - qmlWarning(parent) << "No QQmlContext for QQuickPlatformFontDialog; can't create " - "non-native FontDialog implementation"; - return; - } - - const auto dialogQmlUrl = QUrl(QStringLiteral( - "qrc:/qt-project.org/imports/QtQuick/Dialogs/quickimpl/qml/FontDialog.qml")); - - QQmlComponent fontDialogComponent(qmlContext->engine(), dialogQmlUrl, parent); - if (!fontDialogComponent.isReady()) { - qmlWarning(parent) << "Failed to load non-native FontDialog implementation:\n" - << fontDialogComponent.errorString(); - return; - } - - m_dialog = qobject_cast<QQuickFontDialogImpl *>(fontDialogComponent.create()); - - if (!m_dialog) { - qmlWarning(parent) << "Failed to create an instance of the non-native FontDialog:\n" - << fontDialogComponent.errorString(); - return; - } - - m_dialog->setParent(this); - - connect(m_dialog, &QQuickDialog::accepted, this, &QPlatformDialogHelper::accept); - connect(m_dialog, &QQuickDialog::rejected, this, &QPlatformDialogHelper::reject); - - connect(m_dialog, &QQuickFontDialogImpl::currentFontChanged, - this, &QQuickPlatformFontDialog::currentFontChanged); - connect(m_dialog, &QQuickFontDialogImpl::fontSelected, this, &QQuickPlatformFontDialog::fontSelected); -} - -bool QQuickPlatformFontDialog::isValid() const -{ - return m_dialog; -} - -void QQuickPlatformFontDialog::setCurrentFont(const QFont &font) -{ - if (m_dialog) - m_dialog->setCurrentFont(font); -} - -QFont QQuickPlatformFontDialog::currentFont() const -{ - return m_dialog ? m_dialog->currentFont() : QFont(); -} - -void QQuickPlatformFontDialog::exec() -{ - qCWarning(lcQuickPlatformFontDialog) - << "exec() is not supported for the Qt Quick FontDialog fallback"; -} - -bool QQuickPlatformFontDialog::show(Qt::WindowFlags flags, Qt::WindowModality modality, - QWindow *parent) -{ - qCDebug(lcQuickPlatformFontDialog) - << "show called with flags" << flags << "modality" << modality << "parent" << parent; - - if (!isValid()) - return false; - - if (!parent) - return false; - - auto quickWindow = qobject_cast<QQuickWindow *>(parent); - if (!quickWindow) { - qmlInfo(this->parent()) << "Parent window (" << parent - << ") of non-native dialog is not a QQuickWindow"; - return false; - } - m_dialog->setParent(parent); - m_dialog->resetParentItem(); - - auto popupPrivate = QQuickPopupPrivate::get(m_dialog); - popupPrivate->getAnchors()->setCenterIn(m_dialog->parentItem()); - - QSharedPointer<QFontDialogOptions> options = QPlatformFontDialogHelper::options(); - m_dialog->setTitle(options->windowTitle()); - m_dialog->setOptions(options); - m_dialog->updateListViews(); - - m_dialog->open(); - return true; -} - -void QQuickPlatformFontDialog::hide() -{ - if (isValid()) - m_dialog->close(); -} - -QQuickFontDialogImpl *QQuickPlatformFontDialog::dialog() const -{ - return m_dialog; -} - -QT_END_NAMESPACE diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickplatformfontdialog_p.h b/src/quickdialogs2/quickdialogs2quickimpl/qquickplatformfontdialog_p.h deleted file mode 100644 index a5009fac..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qquickplatformfontdialog_p.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPLATFORMFONTDIALOG_P_H -#define QQUICKPLATFORMFONTDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpa/qplatformdialoghelper.h> - -#include "qtquickdialogs2quickimplglobal_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickFontDialogImpl; -class QWindow; - -class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickPlatformFontDialog - : public QPlatformFontDialogHelper -{ - Q_OBJECT - -public: - explicit QQuickPlatformFontDialog(QObject *parent); - ~QQuickPlatformFontDialog() = default; - - bool isValid() const; - - virtual void setCurrentFont(const QFont &font) override; - virtual QFont currentFont() const override; - - void exec() override; - bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) override; - void hide() override; - - QQuickFontDialogImpl *dialog() const; - -private: - QQuickFontDialogImpl *m_dialog = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPLATFORMFONTDIALOG_P_H diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qtquickdialogs2quickimplforeign_p.h b/src/quickdialogs2/quickdialogs2quickimpl/qtquickdialogs2quickimplforeign_p.h deleted file mode 100644 index 4564786f..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qtquickdialogs2quickimplforeign_p.h +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTQUICKDIALOGS2QUICKIMPLFOREIGN_P_H -#define QTQUICKDIALOGS2QUICKIMPLFOREIGN_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQml/qqml.h> -#include <QtQuickDialogs2Utils/private/qquickfilenamefilter_p.h> -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> -#include <QtQuickTemplates2/private/qquickcontrol_p.h> -#include <QtQuickTemplates2/private/qquickdialog_p.h> -#include <QtQuickTemplates2/private/qquickicon_p.h> -#include <QtQuickTemplates2/private/qquickpopup_p.h> - -QT_BEGIN_NAMESPACE - -struct QQuickFileNameFilterForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickFileNameFilter) - QML_ADDED_IN_VERSION(6, 2) -}; - -// TODO: remove these ones when not needed (QTBUG-88179) - -// verticalPadding, etc. -struct QQuickControlForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickControl) - QML_ADDED_IN_VERSION(2, 0) -}; - -struct QQuickAbstractButtonForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickAbstractButton) - QML_ADDED_IN_VERSION(2, 0) -}; - -struct QQuickIconForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickIcon) - QML_ADDED_IN_VERSION(6, 2) -}; - -// For leftInset, etc. -struct QQuickPopupForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickPopup) - QML_ADDED_IN_VERSION(2, 0) -}; - -struct QQuickDialogForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickDialog) - QML_ADDED_IN_VERSION(2, 1) -}; - -QT_END_NAMESPACE - -#endif // QTQUICKDIALOGS2QUICKIMPLFOREIGN_P_H diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qtquickdialogs2quickimplglobal_p.h b/src/quickdialogs2/quickdialogs2quickimpl/qtquickdialogs2quickimplglobal_p.h deleted file mode 100644 index 38b5a01b..00000000 --- a/src/quickdialogs2/quickdialogs2quickimpl/qtquickdialogs2quickimplglobal_p.h +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTQUICKDIALOGS2QUICKIMPLGLOBAL_P_H -#define QTQUICKDIALOGS2QUICKIMPLGLOBAL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qglobal.h> -#include <QtQml/private/qqmlglobal_p.h> - -QT_BEGIN_NAMESPACE - -#ifndef QT_STATIC -# if defined(QT_BUILD_QUICKDIALOGS2QUICKIMPL_LIB) -# define Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT Q_DECL_EXPORT -# else -# define Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT Q_DECL_IMPORT -# endif -#else -# define Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT -#endif - -QT_END_NAMESPACE - -#endif // QTQUICKDIALOGS2QUICKIMPLGLOBAL_P_H diff --git a/src/quickdialogs2/quickdialogs2utils/CMakeLists.txt b/src/quickdialogs2/quickdialogs2utils/CMakeLists.txt deleted file mode 100644 index 0242ffcf..00000000 --- a/src/quickdialogs2/quickdialogs2utils/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -# This library exists because QuickDialogs2 and QuickDialogs2QuickImpl -# both need QQuickNameFilter. QQuickNameFilter was originally in -# QuickDialogs2. Since QuickDialogs2 already links to -# QuickDialogs2QuickImpl, making the latter link to the former (to get -# access to QQuickNameFilter) would result in a circular dependency, -# so we have this library as a result. - -qt_internal_add_module(QuickDialogs2Utils - SOURCES - qquickfilenamefilter.cpp - qquickfilenamefilter_p.h - qtquickdialogs2utilsglobal_p.h - DEFINES - QT_BUILD_QUICKDIALOGS2UTILS_LIB - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - INCLUDE_DIRECTORIES - ${CMAKE_CURRENT_SOURCE_DIR} - LIBRARIES - Qt::GuiPrivate - PUBLIC_LIBRARIES - Qt::Core -) diff --git a/src/quickdialogs2/quickdialogs2utils/qquickfilenamefilter.cpp b/src/quickdialogs2/quickdialogs2utils/qquickfilenamefilter.cpp deleted file mode 100644 index bada00d1..00000000 --- a/src/quickdialogs2/quickdialogs2utils/qquickfilenamefilter.cpp +++ /dev/null @@ -1,158 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickfilenamefilter_p.h" - -#include <QtCore/qloggingcategory.h> - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcFileNameFilter, "qt.quick.dialogs.qquickfilenamefilter") - -QQuickFileNameFilter::QQuickFileNameFilter(QObject *parent) - : QObject(parent), m_index(-1) -{ -} - -int QQuickFileNameFilter::index() const -{ - return m_index; -} - -void QQuickFileNameFilter::setIndex(int index) -{ - if (m_index == index) - return; - - m_index = index; - emit indexChanged(index); -} - -QString QQuickFileNameFilter::name() const -{ - return m_name; -} - -QStringList QQuickFileNameFilter::extensions() const -{ - return m_extensions; -} - -QStringList QQuickFileNameFilter::globs() const -{ - return m_globs; -} - -QSharedPointer<QFileDialogOptions> QQuickFileNameFilter::options() const -{ - return m_options; -} - -void QQuickFileNameFilter::setOptions(const QSharedPointer<QFileDialogOptions> &options) -{ - m_options = options; -} - -static QString extractName(const QString &filter) -{ - return filter.left(filter.indexOf(QLatin1Char('(')) - 1); -} - -static QString extractExtension(QStringView filter) -{ - return filter.mid(filter.indexOf(QLatin1Char('.')) + 1).toString(); -} - -static void extractExtensionsAndGlobs(QStringView filter, QStringList &extensions, QStringList &globs) -{ - extensions.clear(); - globs.clear(); - - const int from = filter.indexOf(QLatin1Char('(')); - const int to = filter.lastIndexOf(QLatin1Char(')')) - 1; - if (from >= 0 && from < to) { - const QStringView ref = filter.mid(from + 1, to - from); - const QList<QStringView> exts = ref.split(QLatin1Char(' '), Qt::SkipEmptyParts); - // For example, given the filter "HTML files (*.html *.htm)", - // "ref" would be "*.html" and "*.htm". - for (const QStringView &ref : exts) { - extensions += extractExtension(ref); - globs += ref.toString(); - } - } -} - -void QQuickFileNameFilter::update(const QString &filter) -{ - const QStringList filters = nameFilters(); - - const int oldIndex = m_index; - const QString oldName = m_name; - const QStringList oldExtensions = m_extensions; - const QStringList oldGlobs = m_globs; - - m_index = filters.indexOf(filter); - m_name = extractName(filter); - extractExtensionsAndGlobs(filter, m_extensions, m_globs); - - if (oldIndex != m_index) - emit indexChanged(m_index); - if (oldName != m_name) - emit nameChanged(m_name); - if (oldExtensions != m_extensions) - emit extensionsChanged(m_extensions); - if (oldGlobs != m_globs) - emit globsChanged(m_globs); - - qCDebug(lcFileNameFilter).nospace() << "update called on " << this << " of " << parent() - << " with filter " << filter << " (current filters are " << filters << "):" - << "\n old index=" << oldIndex << "new index=" << m_index - << "\n old name=" << oldName << "new name=" << m_name - << "\n old extensions=" << oldExtensions << "new extensions=" << m_extensions - << "\n old glob=s" << oldGlobs << "new globs=" << m_globs; -} - -QStringList QQuickFileNameFilter::nameFilters() const -{ - return m_options ? m_options->nameFilters() : QStringList(); -} - -QString QQuickFileNameFilter::nameFilter(int index) const -{ - return m_options ? m_options->nameFilters().value(index) : QString(); -} - -QT_END_NAMESPACE diff --git a/src/quickdialogs2/quickdialogs2utils/qquickfilenamefilter_p.h b/src/quickdialogs2/quickdialogs2utils/qquickfilenamefilter_p.h deleted file mode 100644 index 586da869..00000000 --- a/src/quickdialogs2/quickdialogs2utils/qquickfilenamefilter_p.h +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFILENAMEFILTER_P_H -#define QQUICKFILENAMEFILTER_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtCore/qsharedpointer.h> -#include <QtCore/qstringlist.h> -#include <QtGui/qpa/qplatformdialoghelper.h> - -#include "qtquickdialogs2utilsglobal_p.h" - -QT_BEGIN_NAMESPACE - -class Q_QUICKDIALOGS2UTILS_PRIVATE_EXPORT QQuickFileNameFilter : public QObject -{ - Q_OBJECT - Q_PROPERTY(int index READ index WRITE setIndex NOTIFY indexChanged FINAL) - Q_PROPERTY(QString name READ name NOTIFY nameChanged FINAL) - Q_PROPERTY(QStringList extensions READ extensions NOTIFY extensionsChanged FINAL) - Q_PROPERTY(QStringList globs READ globs NOTIFY globsChanged FINAL) - -public: - explicit QQuickFileNameFilter(QObject *parent = nullptr); - - int index() const; - void setIndex(int index); - - QString name() const; - QStringList extensions() const; - QStringList globs() const; - - QSharedPointer<QFileDialogOptions> options() const; - void setOptions(const QSharedPointer<QFileDialogOptions> &options); - - void update(const QString &filter); - -Q_SIGNALS: - void indexChanged(int index); - void nameChanged(const QString &name); - void extensionsChanged(const QStringList &extensions); - void globsChanged(const QStringList &globs); - -private: - QStringList nameFilters() const; - QString nameFilter(int index) const; - - int m_index; - QString m_name; - QStringList m_extensions; - QStringList m_globs; - QSharedPointer<QFileDialogOptions> m_options; -}; - -QT_END_NAMESPACE - -#endif // QQUICKFILENAMEFILTER_P_H diff --git a/src/quickdialogs2/quickdialogs2utils/qtquickdialogs2utilsglobal_p.h b/src/quickdialogs2/quickdialogs2utils/qtquickdialogs2utilsglobal_p.h deleted file mode 100644 index 52f7a397..00000000 --- a/src/quickdialogs2/quickdialogs2utils/qtquickdialogs2utilsglobal_p.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Dialogs module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTQUICKDIALOGS2UTILSGLOBAL_P_H -#define QTQUICKDIALOGS2UTILSGLOBAL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qglobal.h> - -QT_BEGIN_NAMESPACE - -#ifndef QT_STATIC -# if defined(QT_BUILD_QUICKDIALOGS2UTILS_LIB) -# define Q_QUICKDIALOGS2UTILS_PRIVATE_EXPORT Q_DECL_EXPORT -# else -# define Q_QUICKDIALOGS2UTILS_PRIVATE_EXPORT Q_DECL_IMPORT -# endif -#else -# define Q_QUICKDIALOGS2UTILS_PRIVATE_EXPORT -#endif - -QT_END_NAMESPACE - -#endif // QTQUICKDIALOGS2UTILSUTILSGLOBAL_P_H diff --git a/src/quicknativestyle/CMakeLists.txt b/src/quicknativestyle/CMakeLists.txt deleted file mode 100644 index 428938c2..00000000 --- a/src/quicknativestyle/CMakeLists.txt +++ /dev/null @@ -1,103 +0,0 @@ -##################################################################### -## qtquickcontrols2nativestyleplugin Plugin: -##################################################################### - -set(qml_files - "controls/DefaultButton.qml" - "controls/DefaultSlider.qml" - "controls/DefaultGroupBox.qml" - "controls/DefaultCheckBox.qml" - "controls/DefaultRadioButton.qml" - "controls/DefaultSpinBox.qml" - "controls/DefaultTextField.qml" - "controls/DefaultFrame.qml" - "controls/DefaultTextArea.qml" - "controls/DefaultComboBox.qml" - "controls/DefaultScrollBar.qml" - "controls/DefaultProgressBar.qml" - "controls/DefaultDial.qml" -) -set_source_files_properties(${qml_files} PROPERTIES - QT_QML_SOURCE_VERSION "2.0;6.0" -) - -if(MACOS) - # TODO: QT_QML_SOURCE_VERSION wasn't set on this file before, should it be? - list(APPEND qml_files "util/FocusFrame.qml") -endif() - -qt_internal_add_qml_module(qtquickcontrols2nativestyleplugin - URI "QtQuick.NativeStyle" - VERSION "${PROJECT_VERSION}" - CLASSNAME QtQuickControls2NativeStylePlugin - DEPENDENCIES - QtQuick.Controls/auto - QtQuick.Layouts/auto - PAST_MAJOR_VERSIONS 2 - PLUGIN_TARGET qtquickcontrols2nativestyleplugin - NO_PLUGIN_OPTIONAL - NO_GENERATE_PLUGIN_SOURCE - SOURCES - items/qquickstyleitem.cpp items/qquickstyleitem.h - items/qquickstyleitembutton.cpp items/qquickstyleitembutton.h - items/qquickstyleitemcheckbox.cpp items/qquickstyleitemcheckbox.h - items/qquickstyleitemcombobox.cpp items/qquickstyleitemcombobox.h - items/qquickstyleitemdial.cpp items/qquickstyleitemdial.h - items/qquickstyleitemframe.cpp items/qquickstyleitemframe.h - items/qquickstyleitemgroupbox.cpp items/qquickstyleitemgroupbox.h - items/qquickstyleitemprogressbar.cpp items/qquickstyleitemprogressbar.h - items/qquickstyleitemradiobutton.cpp items/qquickstyleitemradiobutton.h - items/qquickstyleitemscrollbar.cpp items/qquickstyleitemscrollbar.h - items/qquickstyleitemslider.cpp items/qquickstyleitemslider.h - items/qquickstyleitemspinbox.cpp items/qquickstyleitemspinbox.h - items/qquickstyleitemtextfield.cpp items/qquickstyleitemtextfield.h - qstyle/qquickcommonstyle.cpp qstyle/qquickcommonstyle.h qstyle/qquickcommonstyle_p.h - qstyle/qquickcommonstylepixmaps_p.h - qstyle/qquickdrawutil.cpp qstyle/qquickdrawutil.h - qstyle/qquicknativestyle.cpp qstyle/qquicknativestyle.h - qstyle/qquickstyle.cpp qstyle/qquickstyle.h qstyle/qquickstyle_p.h - qstyle/qquickstylehelper.cpp qstyle/qquickstylehelper_p.h - qstyle/qquickstyleoption.cpp qstyle/qquickstyleoption.h - qtquickcontrols2nativestyleplugin.cpp - QML_FILES - ${qml_files} - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - INCLUDE_DIRECTORIES - items - qstyle - util - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickControls2Private - Qt::QuickPrivate - Qt::QuickTemplates2Private -) - -qt_internal_extend_target(qtquickcontrols2nativestyleplugin CONDITION MACOS - SOURCES - items/qquickstyleitemscrollviewcorner.cpp items/qquickstyleitemscrollviewcorner.h - qstyle/mac/qquickmacstyle_mac.mm qstyle/mac/qquickmacstyle_mac_p.h - qstyle/mac/qquickmacstyle_mac_p_p.h - util/qquickmacfocusframe.h util/qquickmacfocusframe.mm - INCLUDE_DIRECTORIES - qstyle/mac - LIBRARIES - ${FWAppKit} -) - -qt_internal_extend_target(qtquickcontrols2nativestyleplugin CONDITION WIN32 - SOURCES - qstyle/windows/qquickwindowsstyle.cpp qstyle/windows/qquickwindowsstyle_p.h - qstyle/windows/qquickwindowsstyle_p_p.h - qstyle/windows/qquickwindowsxpstyle.cpp - INCLUDE_DIRECTORIES - qstyle/windows - LIBRARIES - gdi32 - user32 - uxtheme -) diff --git a/src/quicknativestyle/controls/DefaultButton.qml b/src/quicknativestyle/controls/DefaultButton.qml deleted file mode 100644 index 7e55aaa2..00000000 --- a/src/quicknativestyle/controls/DefaultButton.qml +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.Button { - id: control - - readonly property bool __nativeBackground: background instanceof NativeStyle.StyleItem - - // Since QQuickControl will subtract the insets from the control size to - // figure out the background size, we need to reverse that here, otherwise - // the control ends up too big. - implicitWidth: implicitBackgroundWidth + leftInset + rightInset - implicitHeight: implicitBackgroundHeight + topInset + bottomInset - - font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined - - leftPadding: __nativeBackground ? background.contentPadding.left : 5 - rightPadding: __nativeBackground ? background.contentPadding.right : 5 - topPadding: __nativeBackground ? background.contentPadding.top : 5 - bottomPadding: __nativeBackground ? background.contentPadding.bottom : 5 - - background: NativeStyle.Button { - control: control - contentWidth: contentItem.implicitWidth - contentHeight: contentItem.implicitHeight - } - - icon.width: 24 - icon.height: 24 - icon.color: control.checked || control.highlighted ? control.palette.brightText : - control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText - - contentItem: IconLabel { - spacing: control.spacing - mirrored: control.mirrored - display: control.display - - icon: control.icon - text: control.text - font: control.font - color: control.checked || control.highlighted ? control.palette.brightText : - control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText - } -} diff --git a/src/quicknativestyle/controls/DefaultCheckBox.qml b/src/quicknativestyle/controls/DefaultCheckBox.qml deleted file mode 100644 index 09166820..00000000 --- a/src/quicknativestyle/controls/DefaultCheckBox.qml +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.NativeStyle as NativeStyle - -T.CheckBox { - id: control - - readonly property bool nativeIndicator: indicator instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - font.pixelSize: nativeIndicator ? indicator.styleFont(control).pixelSize : undefined - - spacing: nativeIndicator ? 0 : 6 - padding: nativeIndicator ? 0 : 6 - - indicator: NativeStyle.CheckBox { - control: control - y: control.topPadding + (control.availableHeight - height) >> 1 - contentWidth: contentItem.implicitWidth - contentHeight: contentItem.implicitHeight - useNinePatchImage: false - } - - contentItem: CheckLabel { - text: control.text - font: control.font - color: control.palette.windowText - - // For some reason, the other styles set padding here (in the delegate), instead of in - // the control above. And they also adjust the indicator position by setting x and y - // explicitly (instead of using insets). So we follow the same pattern to ensure that - // setting a custom contentItem delegate from the app will end up looking the same for - // all styles. But this should probably be fixed for all styles (to make them work the - // same way as e.g Buttons). - leftPadding: { - if (nativeIndicator) - indicator.contentPadding.left - else - indicator && !mirrored ? indicator.width + spacing : 0 - } - - topPadding: nativeIndicator ? indicator.contentPadding.top : 0 - rightPadding: { - if (nativeIndicator) - indicator.contentPadding.right - else - indicator && mirrored ? indicator.width + spacing : 0 - } - } -} diff --git a/src/quicknativestyle/controls/DefaultComboBox.qml b/src/quicknativestyle/controls/DefaultComboBox.qml deleted file mode 100644 index 7b286a1e..00000000 --- a/src/quicknativestyle/controls/DefaultComboBox.qml +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Window -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.ComboBox { - id: control - - readonly property bool __nativeBackground: background instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding, - 90 /* minimum */ ) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined - - leftPadding: __nativeBackground ? background.contentPadding.left : 5 - rightPadding: __nativeBackground ? background.contentPadding.right : 5 - topPadding: __nativeBackground ? background.contentPadding.top : 5 - bottomPadding: __nativeBackground ? background.contentPadding.bottom : 5 - - contentItem: T.TextField { - implicitWidth: contentWidth - implicitHeight: contentHeight - text: control.editable ? control.editText : control.displayText - - enabled: control.editable - autoScroll: control.editable - readOnly: control.down - inputMethodHints: control.inputMethodHints - validator: control.validator - selectByMouse: control.selectTextByMouse - - font: control.font - color: control.editable ? control.palette.text : control.palette.buttonText - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - verticalAlignment: Text.AlignVCenter - } - - background: NativeStyle.ComboBox { - control: control - contentWidth: contentItem.implicitWidth - contentHeight: contentItem.implicitHeight - } - - delegate: ItemDelegate { - width: ListView.view.width - text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData - palette.text: control.palette.text - palette.highlightedText: control.palette.highlightedText - font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal - highlighted: control.highlightedIndex === index - hoverEnabled: control.hoverEnabled - } - - popup: T.Popup { - readonly property var layoutMargins: control.__nativeBackground ? control.background.layoutMargins : null - x: layoutMargins ? layoutMargins.left : 0 - y: control.height - (layoutMargins ? layoutMargins.bottom : 0) - width: control.width - (layoutMargins ? layoutMargins.left + layoutMargins.right : 0) - height: Math.min(contentItem.implicitHeight, control.Window.height - topMargin - bottomMargin) - topMargin: 6 - bottomMargin: 6 - - contentItem: ListView { - clip: true - implicitHeight: contentHeight - model: control.delegateModel - currentIndex: control.highlightedIndex - highlightMoveDuration: 0 - - Rectangle { - z: 10 - width: parent.width - height: parent.height - color: "transparent" - border.color: control.palette.mid - } - - T.ScrollIndicator.vertical: ScrollIndicator { } - } - - background: Rectangle { - color: control.palette.window - } - } -} diff --git a/src/quicknativestyle/controls/DefaultDial.qml b/src/quicknativestyle/controls/DefaultDial.qml deleted file mode 100644 index b628ed09..00000000 --- a/src/quicknativestyle/controls/DefaultDial.qml +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.Dial { - id: control - - readonly property bool __nativeBackground: background instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding, - 80 /* minimum */ ) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - 80 /* minimum */ ) - - font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined - - background: NativeStyle.Dial { - control: control - useNinePatchImage: false - } -} diff --git a/src/quicknativestyle/controls/DefaultFrame.qml b/src/quicknativestyle/controls/DefaultFrame.qml deleted file mode 100644 index 77ca6125..00000000 --- a/src/quicknativestyle/controls/DefaultFrame.qml +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.Frame { - id: control - - readonly property bool __nativeBackground: background instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - leftPadding: __nativeBackground ? background.contentPadding.left : 12 - rightPadding: __nativeBackground ? background.contentPadding.right : 12 - topPadding: __nativeBackground ? background.contentPadding.top : 12 - bottomPadding: __nativeBackground ? background.contentPadding.bottom : 12 - - background: NativeStyle.Frame { - control: control - contentWidth: control.contentWidth - contentHeight: control.contentHeight - } -} diff --git a/src/quicknativestyle/controls/DefaultGroupBox.qml b/src/quicknativestyle/controls/DefaultGroupBox.qml deleted file mode 100644 index a7f3f9d0..00000000 --- a/src/quicknativestyle/controls/DefaultGroupBox.qml +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.GroupBox { - id: control - - readonly property bool __nativeBackground: background instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - contentWidth + leftPadding + rightPadding, - implicitLabelWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding) - - font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined - - label: Rectangle { - color: control.palette.window - property point labelPos : control.__nativeBackground - ? background.labelPos - : Qt.point(0,0) - x: labelPos.x + background.x - y: labelPos.y + background.y - (__nativeBackground ? background.groupBoxPadding.top : 0) - width: children[0].implicitWidth - height: children[0].implicitHeight - Text { - width: parent.width - height: parent.height - text: control.title - font: control.font - color: control.palette.windowText - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - } - - leftPadding: __nativeBackground ? background.contentPadding.left : 0 - rightPadding: __nativeBackground ? background.contentPadding.right : 0 - topPadding: __nativeBackground ? background.contentPadding.top : 0 - bottomPadding: __nativeBackground ? background.contentPadding.bottom : 0 - - background: NativeStyle.GroupBox { - control: control - - x: groupBoxPadding.left - y: groupBoxPadding.top - width: contentItem.width + control.leftPadding + control.rightPadding - groupBoxPadding.left - groupBoxPadding.right - height: contentItem.height + control.topPadding + control.bottomPadding - groupBoxPadding.top - groupBoxPadding.bottom - - contentWidth: contentItem.implicitWidth - contentHeight: contentItem.implicitHeight - } -} diff --git a/src/quicknativestyle/controls/DefaultProgressBar.qml b/src/quicknativestyle/controls/DefaultProgressBar.qml deleted file mode 100644 index 037bdbae..00000000 --- a/src/quicknativestyle/controls/DefaultProgressBar.qml +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls -import QtQuick.NativeStyle as NativeStyle - -T.ProgressBar { - id: control - - readonly property bool __nativeBackground: background instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding, - control.horizontal ? 90 : 0 /* minimum */ ) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - control.vertical ? 90 : 0 /* minimum */ ) - - font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined - - background: NativeStyle.ProgressBar { - control: control - useNinePatchImage: false - } -} diff --git a/src/quicknativestyle/controls/DefaultRadioButton.qml b/src/quicknativestyle/controls/DefaultRadioButton.qml deleted file mode 100644 index 29746ba7..00000000 --- a/src/quicknativestyle/controls/DefaultRadioButton.qml +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Templates as T -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.NativeStyle as NativeStyle - -T.RadioButton { - id: control - - readonly property bool nativeIndicator: indicator instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding, - implicitIndicatorHeight + topPadding + bottomPadding) - - font.pixelSize: nativeIndicator ? indicator.styleFont(control).pixelSize : undefined - - spacing: nativeIndicator ? 0 : 6 - padding: nativeIndicator ? 0 : 6 - - indicator: NativeStyle.RadioButton { - control: control - contentWidth: contentItem.implicitWidth - contentHeight: contentItem.implicitHeight - useNinePatchImage: false -// Component.onCompleted: { -// var f = indicator.font(control) -// control.font.pixelSize = f.pixelSize -// print(f) -// } - } - - contentItem: CheckLabel { - text: control.text - font: control.font - color: control.palette.windowText - - // For some reason, the other styles set padding here (in the delegate), instead of in - // the control above. And they also adjust the indicator position by setting x and y - // explicitly (instead of using insets). So we follow the same pattern to ensure that - // setting a custom contentItem delegate from the app will end up looking the same for - // all styles. But this should probably be fixed for all styles (to make them work the - // same way as e.g Buttons). - leftPadding: { - if (nativeIndicator) - indicator.contentPadding.left - else - indicator && !mirrored ? indicator.width + spacing : 0 - } - - rightPadding: { - if (nativeIndicator) - indicator.contentPadding.right - else - indicator && mirrored ? indicator.width + spacing : 0 - } - } -} diff --git a/src/quicknativestyle/controls/DefaultScrollBar.qml b/src/quicknativestyle/controls/DefaultScrollBar.qml deleted file mode 100644 index b7b78732..00000000 --- a/src/quicknativestyle/controls/DefaultScrollBar.qml +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.ScrollBar { - id: control - - readonly property bool __nativeContentItem: contentItem instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - - font.pixelSize: __nativeContentItem ? contentItem.styleFont(control).pixelSize : undefined - - visible: policy === T.ScrollBar.AlwaysOn || (policy === T.ScrollBar.AsNeeded && size < 1.0) - minimumSize: !__nativeContentItem ? 10 : orientation === Qt.Vertical ? - contentItem.minimumSize.height / height : contentItem.minimumSize.width / width - - background: NativeStyle.ScrollBar { - control: control - subControl: NativeStyle.ScrollBar.Groove - } - - contentItem: NativeStyle.ScrollBar { - control: control - subControl: NativeStyle.ScrollBar.Handle - } -} diff --git a/src/quicknativestyle/controls/DefaultSlider.qml b/src/quicknativestyle/controls/DefaultSlider.qml deleted file mode 100644 index ebc1c265..00000000 --- a/src/quicknativestyle/controls/DefaultSlider.qml +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.Slider { - id: control - - readonly property bool __nativeBackground: background instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitHandleWidth + leftPadding + rightPadding, - control.horizontal ? 90 : 0 /* minimum */ ) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitHandleHeight + topPadding + bottomPadding, - control.vertical ? 90 : 0 /* minimum */ ) - - font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined - - background: NativeStyle.Slider { - control: control - subControl: NativeStyle.Slider.Groove - // We normally cannot use a nine patch image for the - // groove if we draw tickmarks (since then the scaling - // would scale the tickmarks too). The groove might - // also use a different background color before, and - // after, the handle. - useNinePatchImage: false - } - - handle: NativeStyle.Slider { - control: control - subControl: NativeStyle.Slider.Handle - x: control.leftPadding + (control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) - y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) - useNinePatchImage: false - } -} diff --git a/src/quicknativestyle/controls/DefaultSpinBox.qml b/src/quicknativestyle/controls/DefaultSpinBox.qml deleted file mode 100644 index 869ff411..00000000 --- a/src/quicknativestyle/controls/DefaultSpinBox.qml +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.SpinBox { - id: control - - readonly property bool __nativeBackground: background instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(implicitBackgroundWidth + spacing + up.implicitIndicatorWidth - + leftInset + rightInset, - 90 /* minimum */ ) - implicitHeight: Math.max(implicitBackgroundHeight, up.implicitIndicatorHeight + down.implicitIndicatorHeight - + (spacing * 3)) + topInset + bottomInset - - font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined - - spacing: 2 - - leftPadding: (__nativeBackground ? background.contentPadding.left: 0) - topPadding: (__nativeBackground ? background.contentPadding.top: 0) - rightPadding: (__nativeBackground ? background.contentPadding.right : 0) + up.implicitIndicatorWidth + spacing - bottomPadding: (__nativeBackground ? background.contentPadding.bottom: 0) + spacing - - validator: IntValidator { - locale: control.locale.name - bottom: Math.min(control.from, control.to) - top: Math.max(control.from, control.to) - } - - contentItem: TextInput { - text: control.displayText - font: font.font - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - horizontalAlignment: Qt.AlignLeft - verticalAlignment: Qt.AlignVCenter - - topPadding: 2 - bottomPadding: 2 - leftPadding: 10 - rightPadding: 10 - - readOnly: !control.editable - validator: control.validator - inputMethodHints: control.inputMethodHints - } - - up.indicator: NativeStyle.SpinBox { - control: control - subControl: NativeStyle.SpinBox.Up - x: parent.width - width - spacing - y: (parent.height / 2) - height - useNinePatchImage: false - } - - down.indicator: NativeStyle.SpinBox { - control: control - subControl: NativeStyle.SpinBox.Down - x: up.indicator.x - y: up.indicator.y + up.indicator.height - useNinePatchImage: false - } - - background: NativeStyle.SpinBox { - control: control - subControl: NativeStyle.SpinBox.Frame - contentWidth: contentItem.implicitWidth - contentHeight: contentItem.implicitHeight - } -} diff --git a/src/quicknativestyle/controls/DefaultTextArea.qml b/src/quicknativestyle/controls/DefaultTextArea.qml deleted file mode 100644 index c634da7e..00000000 --- a/src/quicknativestyle/controls/DefaultTextArea.qml +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.TextArea { - id: control - - implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, - implicitBackgroundWidth + leftInset + rightInset, - placeholder.implicitWidth + leftPadding + rightPadding) - implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, - implicitBackgroundHeight + topInset + bottomInset, - placeholder.implicitHeight + topPadding + bottomPadding) - - leftPadding: 7 - rightPadding: 7 - topPadding: 3 - bottomPadding: 3 - - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - placeholderTextColor: control.palette.placeholderText - verticalAlignment: TextInput.AlignTop - - PlaceholderText { - id: placeholder - height: control.height - topPadding: control.topPadding - bottomPadding: control.bottomPadding - leftPadding: control.leftPadding - rightPadding: control.rightPadding - text: control.placeholderText - font: control.font - color: control.placeholderTextColor - verticalAlignment: control.verticalAlignment - visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) - elide: Text.ElideRight - renderType: control.renderType - } - - background: Rectangle { - color: control.palette.light - } -} diff --git a/src/quicknativestyle/controls/DefaultTextField.qml b/src/quicknativestyle/controls/DefaultTextField.qml deleted file mode 100644 index 8f8c8e4d..00000000 --- a/src/quicknativestyle/controls/DefaultTextField.qml +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Controls.impl -import QtQuick.Templates as T -import QtQuick.NativeStyle as NativeStyle - -T.TextField { - id: control - - readonly property bool __nativeBackground: background instanceof NativeStyle.StyleItem - - implicitWidth: Math.max(Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding, - implicitBackgroundWidth + leftInset + rightInset, - 90 /* minimum */ ) - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - contentHeight + topPadding + bottomPadding, - placeholder.implicitHeight + topPadding + bottomPadding) - - font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined - - leftPadding: __nativeBackground ? background.contentPadding.left: 7 - rightPadding: __nativeBackground ? background.contentPadding.right: 7 - topPadding: __nativeBackground ? background.contentPadding.top: 3 - bottomPadding: __nativeBackground ? background.contentPadding.bottom: 3 - - color: control.palette.text - selectionColor: control.palette.highlight - selectedTextColor: control.palette.highlightedText - placeholderTextColor: control.palette.placeholderText - verticalAlignment: TextInput.AlignTop - - PlaceholderText { - id: placeholder - height: control.height - topPadding: control.topPadding - bottomPadding: control.bottomPadding - leftPadding: control.leftPadding - rightPadding: control.rightPadding - text: control.placeholderText - font: control.font - color: control.placeholderTextColor - verticalAlignment: control.verticalAlignment - visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) - elide: Text.ElideRight - renderType: control.renderType - } - - background: NativeStyle.TextField { - control: control - contentWidth: Math.max(control.contentWidth, placeholder.implicitWidth) - contentHeight: control.contentHeight - } -} diff --git a/src/quicknativestyle/controls/controls.pri b/src/quicknativestyle/controls/controls.pri deleted file mode 100644 index 8675989e..00000000 --- a/src/quicknativestyle/controls/controls.pri +++ /dev/null @@ -1,14 +0,0 @@ -QML_FILES += \ - $$PWD/DefaultButton.qml \ - $$PWD/DefaultSlider.qml \ - $$PWD/DefaultGroupBox.qml \ - $$PWD/DefaultCheckBox.qml \ - $$PWD/DefaultRadioButton.qml \ - $$PWD/DefaultSpinBox.qml \ - $$PWD/DefaultTextField.qml \ - $$PWD/DefaultFrame.qml \ - $$PWD/DefaultTextArea.qml \ - $$PWD/DefaultComboBox.qml \ - $$PWD/DefaultScrollBar.qml \ - $$PWD/DefaultProgressBar.qml \ - $$PWD/DefaultDial.qml \ diff --git a/src/quicknativestyle/items/items.pri b/src/quicknativestyle/items/items.pri deleted file mode 100644 index 5b6d9251..00000000 --- a/src/quicknativestyle/items/items.pri +++ /dev/null @@ -1,36 +0,0 @@ -INCLUDEPATH += $$PWD - -HEADERS += \ - $$PWD/qquickstyleitem.h \ - $$PWD/qquickstyleitembutton.h \ - $$PWD/qquickstyleitemgroupbox.h \ - $$PWD/qquickstyleitemcheckbox.h \ - $$PWD/qquickstyleitemradiobutton.h \ - $$PWD/qquickstyleitemslider.h \ - $$PWD/qquickstyleitemspinbox.h \ - $$PWD/qquickstyleitemtextfield.h \ - $$PWD/qquickstyleitemframe.h \ - $$PWD/qquickstyleitemcombobox.h \ - $$PWD/qquickstyleitemscrollbar.h \ - $$PWD/qquickstyleitemprogressbar.h \ - $$PWD/qquickstyleitemdial.h \ - -SOURCES += \ - $$PWD/qquickstyleitem.cpp \ - $$PWD/qquickstyleitembutton.cpp \ - $$PWD/qquickstyleitemgroupbox.cpp \ - $$PWD/qquickstyleitemcheckbox.cpp \ - $$PWD/qquickstyleitemradiobutton.cpp \ - $$PWD/qquickstyleitemslider.cpp \ - $$PWD/qquickstyleitemspinbox.cpp \ - $$PWD/qquickstyleitemtextfield.cpp \ - $$PWD/qquickstyleitemframe.cpp \ - $$PWD/qquickstyleitemcombobox.cpp \ - $$PWD/qquickstyleitemscrollbar.cpp \ - $$PWD/qquickstyleitemprogressbar.cpp \ - $$PWD/qquickstyleitemdial.cpp \ - -macos { - HEADERS += $$PWD/qquickstyleitemscrollviewcorner.h - SOURCES += $$PWD/qquickstyleitemscrollviewcorner.cpp -} diff --git a/src/quicknativestyle/items/qquickstyleitem.cpp b/src/quicknativestyle/items/qquickstyleitem.cpp deleted file mode 100644 index ec041d01..00000000 --- a/src/quicknativestyle/items/qquickstyleitem.cpp +++ /dev/null @@ -1,563 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitem.h" - -#include <QtCore/qscopedvaluerollback.h> -#include <QtCore/qdir.h> - -#include <QtQuick/qsgninepatchnode.h> -#include <QtQuick/private/qquickwindow_p.h> -#include <QtQuick/qquickwindow.h> - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> -#include <QtQuickTemplates2/private/qquickbutton_p.h> - -#include <QtQml/qqml.h> - -#include "qquickstyleitembutton.h" -#include "qquickstylehelper_p.h" - -QT_BEGIN_NAMESPACE - -QDebug operator<<(QDebug debug, const QQuickStyleMargins &padding) -{ - QDebugStateSaver saver(debug); - debug.nospace(); - debug << "StyleMargins("; - debug << padding.left() << ", "; - debug << padding.top() << ", "; - debug << padding.right() << ", "; - debug << padding.bottom(); - debug << ')'; - return debug; -} - -QDebug operator<<(QDebug debug, const StyleItemGeometry &cg) -{ - QDebugStateSaver saver(debug); - debug.nospace(); - debug << "StyleItemGeometry("; - debug << "implicitSize:" << cg.implicitSize << ", "; - debug << "contentRect:" << cg.contentRect << ", "; - debug << "layoutRect:" << cg.layoutRect << ", "; - debug << "minimumSize:" << cg.minimumSize << ", "; - debug << "9patchMargins:" << cg.ninePatchMargins; - debug << ')'; - return debug; -} - -int QQuickStyleItem::dprAlignedSize(const int size) const -{ - // Return the first value equal to or bigger than size - // that is a whole number when multiplied with the dpr. - static int multiplier = [&]() { - const qreal dpr = window()->devicePixelRatio(); - for (int m = 1; m <= 10; ++m) { - const qreal v = m * dpr; - if (v == int(v)) - return m; - } - - qWarning() << "The current dpr (" << dpr << ") is not supported" - << "by the style and might result in drawing artifacts"; - return 1; - }(); - - return int(qCeil(qreal(size) / qreal(multiplier)) * multiplier); -} - -QQuickStyleItem::QQuickStyleItem(QQuickItem *parent) - : QQuickItem(parent) -{ - setFlag(QQuickItem::ItemHasContents); -} - -QQuickStyleItem::~QQuickStyleItem() -{ -} - -void QQuickStyleItem::connectToControl() const -{ - connect(m_control, &QQuickStyleItem::enabledChanged, this, &QQuickStyleItem::markImageDirty); - connect(m_control, &QQuickItem::activeFocusChanged, this, &QQuickStyleItem::markImageDirty); - - if (QQuickWindow *win = window()) { - connect(win, &QQuickWindow::activeChanged, this, &QQuickStyleItem::markImageDirty); - m_connectedWindow = win; - } -} - -void QQuickStyleItem::markImageDirty() -{ - m_dirty.setFlag(DirtyFlag::Image); - if (isComponentComplete()) - polish(); -} - -void QQuickStyleItem::markGeometryDirty() -{ - m_dirty.setFlag(DirtyFlag::Geometry); - if (isComponentComplete()) - polish(); -} - -QSGNode *QQuickStyleItem::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *) -{ - QSGNinePatchNode *node = static_cast<QSGNinePatchNode *>(oldNode); - if (!node) - node = window()->createNinePatchNode(); - if (m_paintedImage.isNull()) - return node; - - const auto texture = window()->createTextureFromImage(m_paintedImage, QQuickWindow::TextureCanUseAtlas); - - QRectF bounds = boundingRect(); - const qreal dpr = window()->devicePixelRatio(); - const QSizeF unscaledImageSize = QSizeF(m_paintedImage.size()) / dpr; - - // We can scale the image up with a nine patch node, but should - // avoid to scale it down. Otherwise the nine patch image will look - // wrapped (or look truncated, in case of no padding). So if the - // item is smaller that the image, don't scale. - if (bounds.width() < unscaledImageSize.width()) - bounds.setWidth(unscaledImageSize.width()); - if (bounds.height() < unscaledImageSize.height()) - bounds.setHeight(unscaledImageSize.height()); - -#ifdef QT_DEBUG - if (m_debugFlags.testFlag(Unscaled)) { - bounds.setSize(unscaledImageSize); - qqc2Info() << "Setting qsg node size to the unscaled size of m_paintedImage:" << bounds; - } -#endif - - if (m_useNinePatchImage) { - QMargins padding = m_styleItemGeometry.ninePatchMargins; - if (padding.right() == -1) { - // Special case: a padding of -1 means that - // the image shouldn't scale in the given direction. - padding.setLeft(0); - padding.setRight(0); - } - if (padding.bottom() == -1) { - padding.setTop(0); - padding.setBottom(0); - } - node->setPadding(padding.left(), padding.top(), padding.right(), padding.bottom()); - } - - node->setBounds(bounds); - node->setTexture(texture); - node->setDevicePixelRatio(dpr); - node->update(); - - return node; -} - -QStyle::State QQuickStyleItem::controlSize(QQuickItem *item) -{ - // TODO: add proper API for small and mini - if (item->metaObject()->indexOfProperty("qqc2_style_small") != -1) - return QStyle::State_Small; - if (item->metaObject()->indexOfProperty("qqc2_style_mini") != -1) - return QStyle::State_Mini; - return QStyle::State_None; -} - -void QQuickStyleItem::initStyleOptionBase(QStyleOption &styleOption) const -{ - Q_ASSERT(m_control); - - styleOption.control = const_cast<QQuickItem *>(control<QQuickItem>()); - styleOption.window = window(); - styleOption.palette = QQuickItemPrivate::get(m_control)->palette()->toQPalette(); - styleOption.rect = QRect(QPoint(0, 0), imageSize()); - - styleOption.state = QStyle::State_None; - styleOption.state |= controlSize(styleOption.control); - - // Note: not all controls inherit from QQuickControl (e.g QQuickTextField) - if (const auto quickControl = dynamic_cast<QQuickControl *>(m_control.data())) - styleOption.direction = quickControl->isMirrored() ? Qt::RightToLeft : Qt::LeftToRight; - - if (window()) { - if (styleOption.window->isActive()) - styleOption.state |= QStyle::State_Active; - if (m_control->isEnabled()) - styleOption.state |= QStyle::State_Enabled; - if (m_control->hasActiveFocus()) - styleOption.state |= QStyle::State_HasFocus; - if (m_control->isUnderMouse()) - styleOption.state |= QStyle::State_MouseOver; - // Should this depend on the focusReason (e.g. only TabFocus) ? - styleOption.state |= QStyle::State_KeyboardFocusChange; - } - - if (m_overrideState != None) { - // In Button.qml we fade between two versions of - // the handle, depending on if it's hovered or not - if (m_overrideState & AlwaysHovered) - styleOption.state |= QStyle::State_MouseOver; - else if (m_overrideState & NeverHovered) - styleOption.state &= ~QStyle::State_MouseOver; - } - - qqc2Info() << styleOption; -} - -void QQuickStyleItem::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - QQuickItem::geometryChange(newGeometry, oldGeometry); - - // Ensure that we only schedule a new geometry update - // and polish if this geometry change was caused by - // something else than us already updating geometry. - if (!m_polishing) - markGeometryDirty(); -} - -void QQuickStyleItem::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - QQuickItem::itemChange(change, data); - - switch (change) { - case QQuickItem::ItemVisibleHasChanged: - if (data.boolValue) - markImageDirty(); - break; - case QQuickItem::ItemSceneChange: { - markImageDirty(); - QQuickWindow *win = data.window; - if (m_connectedWindow) - disconnect(m_connectedWindow, &QQuickWindow::activeChanged, this, &QQuickStyleItem::markImageDirty); - if (win) - connect(win, &QQuickWindow::activeChanged, this, &QQuickStyleItem::markImageDirty); - m_connectedWindow = win; - break;} - default: - break; - } -} - -void QQuickStyleItem::updateGeometry() -{ - qqc2InfoHeading("GEOMETRY"); - m_dirty.setFlag(DirtyFlag::Geometry, false); - - const QQuickStyleMargins oldContentPadding = contentPadding(); - const QQuickStyleMargins oldLayoutMargins = layoutMargins(); - const QSize oldMinimumSize = minimumSize(); - - m_styleItemGeometry = calculateGeometry(); - -#ifdef QT_DEBUG - if (m_styleItemGeometry.minimumSize.isEmpty()) - qmlWarning(this) << "minimumSize is empty!"; -#endif - - if (m_styleItemGeometry.implicitSize.isEmpty()) { - // If the item has no contents (or its size is - // empty), we just use the minimum size as implicit size. - m_styleItemGeometry.implicitSize = m_styleItemGeometry.minimumSize; - qqc2Info() << "implicitSize is empty, using minimumSize instead"; - } - - if (contentPadding() != oldContentPadding) - emit contentPaddingChanged(); - if (layoutMargins() != oldLayoutMargins) - emit layoutMarginsChanged(); - if (minimumSize() != oldMinimumSize) - emit minimumSizeChanged(); - - setImplicitSize(m_styleItemGeometry.implicitSize.width(), m_styleItemGeometry.implicitSize.height()); - - qqc2Info() << m_styleItemGeometry - << "bounding rect:" << boundingRect() - << "layout margins:" << layoutMargins() - << "content padding:" << contentPadding() - << "input content size:" << m_contentSize; -} - -void QQuickStyleItem::paintControlToImage() -{ - qqc2InfoHeading("PAINT"); - const QSize imgSize = imageSize(); - if (imgSize.isEmpty()) - return; - - m_dirty.setFlag(DirtyFlag::Image, false); - - // The size of m_paintedImage should normally be imgSize * dpr. The problem is - // that the dpr can be e.g 1.25, which means that the size can end up having a - // fraction. But an image cannot have a size with a fraction, so it would need - // to be rounded. But on the flip side, rounding the size means that the size - // of the scene graph node (which is, when the texture is not scaled, - // m_paintedImage.size() / dpr), will end up with a fraction instead. And this - // causes rendering artifacts in the scene graph when the texture is mapped - // to physical screen coordinates. So for that reason we calculate an image size - // that might be slightly larger than imgSize, so that imgSize * dpr lands on a - // whole number. The result is that neither the image size, nor the scene graph - // node, ends up with a size that has a fraction. - const qreal dpr = window()->devicePixelRatio(); - const int alignedW = int(dprAlignedSize(imgSize.width()) * dpr); - const int alignedH = int(dprAlignedSize(imgSize.height()) * dpr); - const QSize alignedSize = QSize(alignedW, alignedH); - - if (m_paintedImage.size() != alignedSize) { - m_paintedImage = QImage(alignedSize, QImage::Format_ARGB32_Premultiplied); - m_paintedImage.setDevicePixelRatio(dpr); - qqc2Info() << "created image with dpr aligned size:" << alignedSize; - } - - m_paintedImage.fill(Qt::transparent); - - QPainter painter(&m_paintedImage); - paintEvent(&painter); - -#ifdef QT_DEBUG - if (m_debugFlags != NoDebug) { - painter.setPen(QColor(255, 0, 0, 255)); - if (m_debugFlags.testFlag(ImageRect)) - painter.drawRect(QRect(QPoint(0, 0), alignedSize / dpr)); - if (m_debugFlags.testFlag(LayoutRect)) { - const auto m = layoutMargins(); - QRect rect = QRect(QPoint(0, 0), imgSize); - rect.adjust(m.left(), m.top(), -m.right(), -m.bottom()); - painter.drawRect(rect); - } - if (m_debugFlags.testFlag(ContentRect)) { - const auto p = contentPadding(); - QRect rect = QRect(QPoint(0, 0), imgSize); - rect.adjust(p.left(), p.top(), -p.right(), -p.bottom()); - painter.drawRect(rect); - } - if (m_debugFlags.testFlag(InputContentSize)) { - const int offset = 2; - const QPoint p = m_styleItemGeometry.contentRect.topLeft(); - painter.drawLine(p.x() - offset, p.y() - offset, p.x() + m_contentSize.width(), p.y() - offset); - painter.drawLine(p.x() - offset, p.y() - offset, p.x() - offset, p.y() + m_contentSize.height()); - } - if (m_debugFlags.testFlag(NinePatchMargins)) { - const QMargins m = m_styleItemGeometry.ninePatchMargins; - if (m.right() != -1) { - painter.drawLine(m.left(), 0, m.left(), imgSize.height()); - painter.drawLine(imgSize.width() - m.right(), 0, imgSize.width() - m.right(), imgSize.height()); - } - if (m.bottom() != -1) { - painter.drawLine(0, m.top(), imgSize.width(), m.top()); - painter.drawLine(0, imgSize.height() - m.bottom(), imgSize.width(), imgSize.height() - m.bottom()); - } - } - if (m_debugFlags.testFlag(SaveImage)) { - static int nr = -1; - ++nr; - static QString filename = QStringLiteral("styleitem_saveimage_"); - const QString path = QDir::current().absoluteFilePath(filename); - const QString name = path + QString::number(nr) + QStringLiteral(".png"); - m_paintedImage.save(name); - qDebug() << "image saved to:" << name; - } - } -#endif - - update(); -} - -void QQuickStyleItem::updatePolish() -{ - QScopedValueRollback<bool> guard(m_polishing, true); - - const bool dirtyGeometry = m_dirty & DirtyFlag::Geometry; - const bool dirtyImage = isVisible() && ((m_dirty & DirtyFlag::Image) || (!m_useNinePatchImage && dirtyGeometry)); - - if (dirtyGeometry) - updateGeometry(); - if (dirtyImage) - paintControlToImage(); -} - -#ifdef QT_DEBUG -void QQuickStyleItem::addDebugInfo() -{ - // Example debug strings: - // "QQC2_NATIVESTYLE_DEBUG="myButton output contentRect" - // "QQC2_NATIVESTYLE_DEBUG="ComboBox ninepatchmargins" - // "QQC2_NATIVESTYLE_DEBUG="All layoutrect" - - static const auto debugString = qEnvironmentVariable("QQC2_NATIVESTYLE_DEBUG"); - static const auto matchAll = debugString.startsWith(QLatin1String("All ")); - static const auto prefix = QStringLiteral("QQuickStyleItem"); - if (debugString.isEmpty()) - return; - - const auto objectName = m_control->objectName(); - const auto typeName = QString::fromUtf8(metaObject()->className()).remove(prefix); - const bool matchName = !objectName.isEmpty() && debugString.startsWith(objectName); - const bool matchType = debugString.startsWith(typeName); - - if (!(matchAll || matchName || matchType)) - return; - -#define QQC2_DEBUG_FLAG(FLAG) \ - if (debugString.contains(QLatin1String(#FLAG), Qt::CaseInsensitive)) m_debugFlags |= FLAG - - QQC2_DEBUG_FLAG(Info); - QQC2_DEBUG_FLAG(ImageRect); - QQC2_DEBUG_FLAG(ContentRect); - QQC2_DEBUG_FLAG(LayoutRect); - QQC2_DEBUG_FLAG(InputContentSize); - QQC2_DEBUG_FLAG(DontUseNinePatchImage); - QQC2_DEBUG_FLAG(NinePatchMargins); - QQC2_DEBUG_FLAG(Unscaled); - QQC2_DEBUG_FLAG(Debug); - QQC2_DEBUG_FLAG(SaveImage); - - if (m_debugFlags & (DontUseNinePatchImage - | InputContentSize - | ContentRect - | LayoutRect - | NinePatchMargins)) { - // Some rects will not fit inside the drawn image unless - // we switch off (nine patch) image scaling. - m_debugFlags |= DontUseNinePatchImage; - m_useNinePatchImage = false; - } - - if (m_debugFlags != NoDebug) - qDebug() << "debug options set for" << typeName << "(" << objectName << "):" << m_debugFlags; - else - qDebug() << "available debug options:" << DebugFlags(0xFFFF); -} -#endif - -void QQuickStyleItem::componentComplete() -{ - Q_ASSERT_X(m_control, Q_FUNC_INFO, "You need to assign a value to property 'control'"); -#ifdef QT_DEBUG - addDebugInfo(); -#endif - QQuickItem::componentComplete(); - connectToControl(); - polish(); -} - -qreal QQuickStyleItem::contentWidth() -{ - return m_contentSize.width(); -} - -void QQuickStyleItem::setContentWidth(qreal contentWidth) -{ - if (qFuzzyCompare(m_contentSize.width(), contentWidth)) - return; - - m_contentSize.setWidth(contentWidth); - markGeometryDirty(); -} - -qreal QQuickStyleItem::contentHeight() -{ - return m_contentSize.height(); -} - -void QQuickStyleItem::setContentHeight(qreal contentHeight) -{ - if (qFuzzyCompare(m_contentSize.height(), contentHeight)) - return; - - m_contentSize.setHeight(contentHeight); - markGeometryDirty(); -} - -QQuickStyleMargins QQuickStyleItem::contentPadding() const -{ - const QRect outerRect(QPoint(0, 0), m_styleItemGeometry.implicitSize); - return QQuickStyleMargins(outerRect, m_styleItemGeometry.contentRect); -} - -QQuickStyleMargins QQuickStyleItem::layoutMargins() const -{ - // ### TODO: layoutRect is currently not being used for anything. But - // eventually this information will be needed by layouts to align the controls - // correctly. This because the images drawn by QStyle are usually a bit bigger - // than the control(frame) itself, to e.g make room for shadow effects - // or focus rects/glow. And this will differ from control to control. The - // layoutRect will then inform where the frame of the control is. - QQuickStyleMargins margins; - if (m_styleItemGeometry.layoutRect.isValid()) { - const QRect outerRect(QPoint(0, 0), m_styleItemGeometry.implicitSize); - margins = QQuickStyleMargins(outerRect, m_styleItemGeometry.layoutRect); - } - return margins; -} - -QSize QQuickStyleItem::minimumSize() const -{ - // The style item should not be scaled below this size. - // Otherwise the image will be truncated. - return m_styleItemGeometry.minimumSize; -} - -QSize QQuickStyleItem::imageSize() const -{ - // Returns the size of the QImage (unscaled) that - // is used to draw the control from QStyle. - return m_useNinePatchImage ? m_styleItemGeometry.minimumSize : size().toSize(); -} - -qreal QQuickStyleItem::focusFrameRadius() const -{ - return m_styleItemGeometry.focusFrameRadius; -} - -QFont QQuickStyleItem::styleFont(QQuickItem *control) const -{ - Q_ASSERT(control); - // Note: This function should be treated as if it was static - // (meaning, don't assume anything in this object to be initialized). - // Resolving the font/font size should be done early on from QML, before we get - // around to calculate geometry and paint. Otherwise we typically need to do it - // all over again when/if the font changes. In practice this means that other - // items in QML that uses a style font, and at the same time, affects our input - // contentSize, cannot wait for this item to be fully constructed before it - // gets the font. So we need to resolve it here and now, even if this - // object might be in a half initialized state (hence also the control - // argument, instead of relying on m_control to be set). - return QGuiApplication::font(); -} - -QT_END_NAMESPACE diff --git a/src/quicknativestyle/items/qquickstyleitem.h b/src/quicknativestyle/items/qquickstyleitem.h deleted file mode 100644 index 3b87faf6..00000000 --- a/src/quicknativestyle/items/qquickstyleitem.h +++ /dev/null @@ -1,311 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEM_H -#define QQUICKSTYLEITEM_H - -#include <QtCore/qdebug.h> -#include <QtQml/qqml.h> -#include <QtQml/qqmlinfo.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -#include "qquicknativestyle.h" -#include "qquickstyle.h" -#include "qquickstyleoption.h" - -// Work-around for now, to avoid creator getting confused -// about missing macros. Should eventually be defined -// in qt declarative somewhere I assume. -#ifndef QML_NAMED_ELEMENT -#define QML_NAMED_ELEMENT(NAME) -#define QML_UNCREATABLE(NAME) -#endif - -#ifdef QT_DEBUG -#define qqc2Debug() if (m_debugFlags.testFlag(Debug)) qDebug() << __FUNCTION__ << ":" -#define qqc2Info() if (m_debugFlags.testFlag(Info)) qDebug() << __FUNCTION__ << ":" -#define qqc2InfoHeading(HEADING) if (m_debugFlags.testFlag(Info)) qDebug() << "--------" << HEADING << "--------" -#else -#define qqc2Debug() if (false) qDebug() -#define qqc2Info() if (false) qDebug() -#define qqc2InfoHeading(HEADING) if (false) qDebug() -#endif - -QT_BEGIN_NAMESPACE - -using namespace QQC2; - -class QQuickStyleMargins -{ - Q_GADGET - - Q_PROPERTY(int left READ left()) - Q_PROPERTY(int top READ top()) - Q_PROPERTY(int right READ right()) - Q_PROPERTY(int bottom READ bottom()) - - QML_NAMED_ELEMENT(stylemargins) - QML_UNCREATABLE("") - -public: - QQuickStyleMargins() {} - QQuickStyleMargins(const QQuickStyleMargins &other) : m_margins(other.m_margins) {} - QQuickStyleMargins(const QMargins &margins) : m_margins(margins) {} - QQuickStyleMargins(const QRect &outer, const QRect &inner) - { - const int left = inner.left() - outer.left(); - const int top = inner.top() - outer.top(); - const int right = outer.right() - inner.right(); - const int bottom = outer.bottom() - inner.bottom(); - m_margins = QMargins(left, top, right, bottom); - } - - inline void operator=(const QQuickStyleMargins &other) { m_margins = other.m_margins; } - inline bool operator==(const QQuickStyleMargins &other) const { return other.m_margins == m_margins; } - inline bool operator!=(const QQuickStyleMargins &other) const { return other.m_margins != m_margins; } - - inline int left() const { return m_margins.left(); } - inline int right() const { return m_margins.right(); } - inline int top() const { return m_margins.top(); } - inline int bottom() const { return m_margins.bottom(); } - - QMargins m_margins; -}; - -QDebug operator<<(QDebug debug, const QQuickStyleMargins &padding); - -struct StyleItemGeometry -{ - /* - A QQuickStyleItem is responsible for drawing a control, or a part of it. - - 'minimumSize' should be the minimum possible size that the item can - have _without_ taking content size into consideration (and still render - correctly). This will also be the size of the image that the item is drawn - to, unless QQuickStyleItem::useNinePatchImage is set to false. In that - case, the size of the image will be set to the size of the item instead - (which is set from QML, and will typically be the same as the size of the control). - The default way to calculate minimumSize is to call style()->sizeFromContents() - with an empty content size. This is not always well supported by the legacy QStyle - implementation, which means that you might e.g get an empty size in return. - For those cases, the correct solution is to go into the specific platform style - and change it so that it returns a valid size also for this special case. - - 'implicitSize' should reflect the preferred size of the item, taking the - given content size (as set from QML) into account. But not all controls - have contents (slider), and for many controls, the content/label is instead - placed outside the item/background image (radiobutton). In both cases, the - size of the item will not include the content size, and implicitSize can - usually be set equal to minimumSize instead. - - 'contentRect' should be the free space where the contents can be placed. Note that - this rect doesn't need to have the same size as the contentSize provided as input - to the style item. Instead, QStyle can typically calculate a rect that is bigger, to - e.g center the contents inside the control. - - 'layoutRect' can be set to shift the position of the whole control so - that aligns correctly with the other controls. This is important for - controls that draws e.g shadows or focus rings. Such adornments should - be painted, but not be included when aligning the controls. - */ - - QSize minimumSize; - QSize implicitSize; - QRect contentRect; - QRect layoutRect; // If invalid, there are no layout margins! - QMargins ninePatchMargins; - qreal focusFrameRadius; -}; - -QDebug operator<<(QDebug debug, const StyleItemGeometry &cg); - -class QQuickStyleItem : public QQuickItem -{ - Q_OBJECT - - // Input - Q_PROPERTY(QQuickItem *control MEMBER m_control NOTIFY controlChanged) - Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth) - Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight) - Q_PROPERTY(bool useNinePatchImage MEMBER m_useNinePatchImage) - Q_PROPERTY(OverrideState overrideState MEMBER m_overrideState) - - // Output - Q_PROPERTY(QQuickStyleMargins contentPadding READ contentPadding() NOTIFY contentPaddingChanged) - Q_PROPERTY(QQuickStyleMargins layoutMargins READ layoutMargins() NOTIFY layoutMarginsChanged) - Q_PROPERTY(QSize minimumSize READ minimumSize() NOTIFY minimumSizeChanged) - Q_PROPERTY(int transitionDuration MEMBER m_transitionDuration CONSTANT) - - QML_NAMED_ELEMENT(StyleItem) - QML_UNCREATABLE("StyleItem is an abstract base class.") - -public: - enum DirtyFlag { - Nothing = 0, - Geometry, - Image, - Everything = 255 - }; - Q_DECLARE_FLAGS(DirtyFlags, DirtyFlag) - - enum OverrideState { - None = 0, - AlwaysHovered, - NeverHovered, - AlwaysSunken - }; - Q_ENUM(OverrideState) - - -#ifdef QT_DEBUG - enum DebugFlag { - NoDebug = 0x000, - Debug = 0x001, - Info = 0x002, - ImageRect = 0x004, - ContentRect = 0x008, - LayoutRect = 0x010, - Unscaled = 0x020, - InputContentSize = 0x040, - DontUseNinePatchImage = 0x080, - NinePatchMargins = 0x100, - SaveImage = 0x200, - }; - Q_FLAG(DebugFlag) - Q_DECLARE_FLAGS(DebugFlags, DebugFlag) -#endif - - explicit QQuickStyleItem(QQuickItem *parent = nullptr); - ~QQuickStyleItem() override; - - qreal contentWidth(); - void setContentWidth(qreal contentWidth); - qreal contentHeight(); - void setContentHeight(qreal contentHeight); - - QQuickStyleMargins contentPadding() const; - QQuickStyleMargins layoutMargins() const; - QSize minimumSize() const; - QSize imageSize() const; - qreal focusFrameRadius() const; - - Q_INVOKABLE virtual QFont styleFont(QQuickItem *control) const; - - void markGeometryDirty(); - void markImageDirty(); - -signals: - void controlChanged(); - void contentPaddingChanged(); - void layoutMarginsChanged(); - void fontChanged(); - void minimumSizeChanged(); - -protected: - void componentComplete() override; - QSGNode *updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *updatePaintNodeData) override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - void itemChange(ItemChange change, const ItemChangeData &data) override; - void updatePolish() override; - - virtual void connectToControl() const; - virtual void paintEvent(QPainter *painter) const = 0; - virtual StyleItemGeometry calculateGeometry() = 0; - - static QStyle::State controlSize(QQuickItem *item); - void initStyleOptionBase(QStyleOption &styleOption) const; - - inline QSize contentSize() const { return QSize(qCeil(m_contentSize.width()), qCeil(m_contentSize.height())); } - inline static QStyle *style() { return QQuickNativeStyle::style(); } - - template <class T> inline const T* control() const { -#ifdef QT_DEBUG - if (!dynamic_cast<T *>(m_control.data())) { - qmlWarning(this) << "control property is not of correct type"; - Q_UNREACHABLE(); - } -#endif - return static_cast<T *>(m_control.data()); - } - -#ifdef QT_DEBUG - DebugFlags m_debugFlags = NoDebug; -#endif - OverrideState m_overrideState = None; - -private: - inline void updateGeometry(); - inline void paintControlToImage(); - - int dprAlignedSize(const int size) const; - -#ifdef QT_DEBUG - void addDebugInfo(); -#endif - -private: - QPointer<QQuickItem> m_control; - QImage m_paintedImage; - StyleItemGeometry m_styleItemGeometry; - QSizeF m_contentSize; - - DirtyFlags m_dirty = Everything; - bool m_useNinePatchImage = true; - bool m_polishing = false; - mutable QQuickWindow *m_connectedWindow = nullptr; - -#ifdef Q_OS_MACOS - int m_transitionDuration = 150; -#else - int m_transitionDuration = 400; -#endif - -private: - friend class QtQuickControls2MacOSStylePlugin; -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickStyleItem::DirtyFlags) - -#ifdef QT_DEBUG -Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickStyleItem::DebugFlags) -#endif - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickStyleItem) - -#endif // QQUICKSTYLEITEM_H diff --git a/src/quicknativestyle/items/qquickstyleitembutton.cpp b/src/quicknativestyle/items/qquickstyleitembutton.cpp deleted file mode 100644 index 5dfe060f..00000000 --- a/src/quicknativestyle/items/qquickstyleitembutton.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitembutton.h" - -QFont QQuickStyleItemButton::styleFont(QQuickItem *control) const -{ - return style()->font(QStyle::CE_PushButtonLabel, controlSize(control)); -} - -void QQuickStyleItemButton::connectToControl() const -{ - QQuickStyleItem::connectToControl(); - auto button = control<QQuickButton>(); - connect(button, &QQuickButton::downChanged, this, &QQuickStyleItem::markImageDirty); -} - -StyleItemGeometry QQuickStyleItemButton::calculateGeometry() -{ - QStyleOptionButton styleOption; - initStyleOption(styleOption); - StyleItemGeometry geometry; - - geometry.minimumSize = style()->sizeFromContents(QStyle::CT_PushButton, &styleOption, QSize(0, 0)); - geometry.implicitSize = style()->sizeFromContents(QStyle::CT_PushButton, &styleOption, contentSize()); - styleOption.rect = QRect(QPoint(0, 0), geometry.implicitSize); - geometry.contentRect = style()->subElementRect(QStyle::SE_PushButtonContents, &styleOption); - geometry.layoutRect = style()->subElementRect(QStyle::SE_PushButtonLayoutItem, &styleOption); - geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CE_PushButtonBevel, &styleOption, geometry.minimumSize); - geometry.focusFrameRadius = style()->pixelMetric(QStyle::PM_PushButtonFocusFrameRadius, &styleOption); - - return geometry; -} - -void QQuickStyleItemButton::paintEvent(QPainter *painter) const -{ - QStyleOptionButton styleOption; - initStyleOption(styleOption); - style()->drawControl(QStyle::CE_PushButtonBevel, &styleOption, painter); -} - -void QQuickStyleItemButton::initStyleOption(QStyleOptionButton &styleOption) const -{ - initStyleOptionBase(styleOption); - auto button = control<QQuickButton>(); - - if (button->isDown()) - styleOption.state |= QStyle::State_Sunken; - if (!button->isFlat() && !button->isDown()) - styleOption.state |= QStyle::State_Raised; - if (button->isHighlighted() || button->isChecked()) - styleOption.state |= QStyle::State_On; - if (button->isFlat()) - styleOption.features |= QStyleOptionButton::Flat; -} diff --git a/src/quicknativestyle/items/qquickstyleitembutton.h b/src/quicknativestyle/items/qquickstyleitembutton.h deleted file mode 100644 index 41ca0cf1..00000000 --- a/src/quicknativestyle/items/qquickstyleitembutton.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMBUTTON_H -#define QQUICKSTYLEITEMBUTTON_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquickbutton_p.h> - -class QQuickStyleItemButton : public QQuickStyleItem -{ - Q_OBJECT - QML_NAMED_ELEMENT(Button) - -public: - QFont styleFont(QQuickItem *control) const override; - -protected: - void connectToControl() const override; - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - void initStyleOption(QStyleOptionButton &styleOption) const; -}; - -#endif // QQUICKSTYLEITEMBUTTON_H diff --git a/src/quicknativestyle/items/qquickstyleitemcheckbox.cpp b/src/quicknativestyle/items/qquickstyleitemcheckbox.cpp deleted file mode 100644 index 6c4ac8ea..00000000 --- a/src/quicknativestyle/items/qquickstyleitemcheckbox.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitemcheckbox.h" - -QFont QQuickStyleItemCheckBox::styleFont(QQuickItem *control) const -{ - return style()->font(QStyle::CE_RadioButtonLabel, controlSize(control)); -} - -void QQuickStyleItemCheckBox::connectToControl() const -{ - QQuickStyleItem::connectToControl(); - auto checkbox = control<QQuickCheckBox>(); - connect(checkbox, &QQuickCheckBox::downChanged, this, &QQuickStyleItem::markImageDirty); - connect(checkbox, &QQuickCheckBox::checkStateChanged, this, &QQuickStyleItem::markImageDirty); -} - -StyleItemGeometry QQuickStyleItemCheckBox::calculateGeometry() -{ - QStyleOptionButton styleOption; - initStyleOption(styleOption); - StyleItemGeometry geometry; - - geometry.minimumSize = style()->sizeFromContents(QStyle::CT_CheckBox, &styleOption, QSize(0, 0)); - geometry.implicitSize = geometry.minimumSize; - styleOption.rect = QRect(QPoint(0, 0), geometry.implicitSize); - geometry.contentRect = style()->subElementRect(QStyle::SE_CheckBoxContents, &styleOption); - geometry.layoutRect = style()->subElementRect(QStyle::SE_CheckBoxLayoutItem, &styleOption); - geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CE_CheckBox, &styleOption, geometry.minimumSize); - geometry.focusFrameRadius = style()->pixelMetric(QStyle::PM_CheckBoxFocusFrameRadius, &styleOption); - - // Spacing seems to already be baked into SE_CheckBoxContents, so ignore until needed - //const int space = style()->pixelMetric(QStyle::PM_CheckBoxLabelSpacing, &styleOption); - - return geometry; -} - -void QQuickStyleItemCheckBox::paintEvent(QPainter *painter) const -{ - QStyleOptionButton styleOption; - initStyleOption(styleOption); - style()->drawControl(QStyle::CE_CheckBox, &styleOption, painter); -} - -void QQuickStyleItemCheckBox::initStyleOption(QStyleOptionButton &styleOption) const -{ - initStyleOptionBase(styleOption); - auto checkbox = control<QQuickCheckBox>(); - - styleOption.state |= checkbox->isDown() ? QStyle::State_Sunken : QStyle::State_Raised; - if (checkbox->isTristate() && checkbox->checkState() == Qt::PartiallyChecked) - styleOption.state |= QStyle::State_NoChange; - else - styleOption.state |= checkbox->isChecked() ? QStyle::State_On : QStyle::State_Off; -} diff --git a/src/quicknativestyle/items/qquickstyleitemcheckbox.h b/src/quicknativestyle/items/qquickstyleitemcheckbox.h deleted file mode 100644 index 03bf34b9..00000000 --- a/src/quicknativestyle/items/qquickstyleitemcheckbox.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMCHECKBOX_H -#define QQUICKSTYLEITEMCHECKBOX_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquickcheckbox_p.h> - -class QQuickStyleItemCheckBox : public QQuickStyleItem -{ - Q_OBJECT - QML_NAMED_ELEMENT(CheckBox) - -public: - QFont styleFont(QQuickItem *control) const override; - -protected: - void connectToControl() const override; - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - void initStyleOption(QStyleOptionButton &styleOption) const; -}; - -#endif // QQUICKSTYLEITEMCHECKBOX_H diff --git a/src/quicknativestyle/items/qquickstyleitemcombobox.cpp b/src/quicknativestyle/items/qquickstyleitemcombobox.cpp deleted file mode 100644 index 0ac3756e..00000000 --- a/src/quicknativestyle/items/qquickstyleitemcombobox.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitemcombobox.h" - -QFont QQuickStyleItemComboBox::styleFont(QQuickItem *control) const -{ - return style()->font(QStyle::CE_PushButtonLabel, controlSize(control)); -} - -void QQuickStyleItemComboBox::connectToControl() const -{ - QQuickStyleItem::connectToControl(); - auto comboBox = control<QQuickComboBox>(); - connect(comboBox, &QQuickComboBox::downChanged, this, &QQuickStyleItem::markImageDirty); -} - -StyleItemGeometry QQuickStyleItemComboBox::calculateGeometry() -{ - QStyleOptionComboBox styleOption; - initStyleOption(styleOption); - StyleItemGeometry geometry; - - geometry.minimumSize = style()->sizeFromContents(QStyle::CT_ComboBox, &styleOption, QSize(0, 0)); - geometry.implicitSize = style()->sizeFromContents(QStyle::CT_ComboBox, &styleOption, contentSize()); - styleOption.rect = QRect(QPoint(0, 0), geometry.implicitSize); - geometry.contentRect = style()->subControlRect(QStyle::CC_ComboBox, &styleOption, QStyle::SC_ComboBoxEditField); - geometry.layoutRect = style()->subElementRect(QStyle::SE_ComboBoxLayoutItem, &styleOption); - geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CC_ComboBox, &styleOption, geometry.minimumSize); - geometry.focusFrameRadius = style()->pixelMetric(QStyle::PM_ComboBoxFocusFrameRadius, &styleOption); - - return geometry; -} - -void QQuickStyleItemComboBox::paintEvent(QPainter *painter) const -{ - QStyleOptionComboBox styleOption; - initStyleOption(styleOption); - style()->drawComplexControl(QStyle::CC_ComboBox, &styleOption, painter); -} - -void QQuickStyleItemComboBox::initStyleOption(QStyleOptionComboBox &styleOption) const -{ - initStyleOptionBase(styleOption); - auto comboBox = control<QQuickComboBox>(); - - styleOption.subControls = QStyle::SC_ComboBoxArrow | QStyle::SC_ComboBoxFrame | QStyle::SC_ComboBoxEditField; - styleOption.frame = true; - styleOption.state |= QStyle::State_Selected; - styleOption.editable = comboBox->isEditable(); - - if (comboBox->isDown()) - styleOption.state |= QStyle::State_Sunken; - if (!comboBox->isFlat() && !comboBox->isDown()) - styleOption.state |= QStyle::State_Raised; -} diff --git a/src/quicknativestyle/items/qquickstyleitemcombobox.h b/src/quicknativestyle/items/qquickstyleitemcombobox.h deleted file mode 100644 index 79f1995e..00000000 --- a/src/quicknativestyle/items/qquickstyleitemcombobox.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMCOMBOBOX_H -#define QQUICKSTYLEITEMCOMBOBOX_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquickcombobox_p.h> - -class QQuickStyleItemComboBox : public QQuickStyleItem -{ - Q_OBJECT - QML_NAMED_ELEMENT(ComboBox) - -public: - QFont styleFont(QQuickItem *control) const override; - -protected: - void connectToControl() const override; - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - void initStyleOption(QStyleOptionComboBox &styleOption) const; -}; - -#endif // QQUICKSTYLEITEMCOMBOBOX_H diff --git a/src/quicknativestyle/items/qquickstyleitemdial.cpp b/src/quicknativestyle/items/qquickstyleitemdial.cpp deleted file mode 100644 index bf5784e1..00000000 --- a/src/quicknativestyle/items/qquickstyleitemdial.cpp +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitemdial.h" - -QFont QQuickStyleItemDial::styleFont(QQuickItem *control) const -{ - return style()->font(QStyle::CE_ProgressBarLabel, controlSize(control)); -} - -void QQuickStyleItemDial::connectToControl() const -{ - QQuickStyleItem::connectToControl(); - auto dial = control<QQuickDial>(); - connect(dial, &QQuickDial::fromChanged, this, &QQuickStyleItem::markImageDirty); - connect(dial, &QQuickDial::toChanged, this, &QQuickStyleItem::markImageDirty); - connect(dial, &QQuickDial::positionChanged, this, &QQuickStyleItem::markImageDirty); - connect(dial, &QQuickDial::valueChanged, this, &QQuickStyleItem::markImageDirty); - connect(dial, &QQuickDial::stepSizeChanged, this, &QQuickStyleItem::markImageDirty); - connect(dial, &QQuickDial::pressedChanged, this, &QQuickStyleItem::markImageDirty); -} - -StyleItemGeometry QQuickStyleItemDial::calculateGeometry() -{ - QStyleOptionSlider styleOption; - initStyleOption(styleOption); - - StyleItemGeometry geometry; - geometry.minimumSize = style()->sizeFromContents(QStyle::CT_Dial, &styleOption, QSize(0, 0)); - geometry.implicitSize = geometry.minimumSize; - geometry.layoutRect = style()->subElementRect(QStyle::SE_SliderLayoutItem, &styleOption); - geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CC_Dial, &styleOption, geometry.minimumSize); - geometry.focusFrameRadius = style()->pixelMetric(QStyle::PM_DialFocusFrameRadius, &styleOption); - - return geometry; -} - -void QQuickStyleItemDial::paintEvent(QPainter *painter) const -{ - QStyleOptionSlider styleOption; - initStyleOption(styleOption); - style()->drawComplexControl(QStyle::CC_Dial, &styleOption, painter); -} - -void QQuickStyleItemDial::initStyleOption(QStyleOptionSlider &styleOption) const -{ - initStyleOptionBase(styleOption); - auto dial = control<QQuickDial>(); - - styleOption.subControls = QStyle::SC_SliderGroove | QStyle::SC_SliderHandle; - styleOption.activeSubControls = QStyle::SC_None; - styleOption.tickInterval = dial->stepSize(); - styleOption.dialWrapping = dial->wrap(); - styleOption.upsideDown = true; - - if (dial->isPressed()) - styleOption.state |= QStyle::State_Sunken; - - if (dial->stepSize() == 0) { - styleOption.minimum = 0; - styleOption.maximum = 10000; - styleOption.sliderPosition = dial->position() * styleOption.maximum; - } else { - styleOption.minimum = dial->from(); - styleOption.maximum = dial->to(); - styleOption.sliderPosition = dial->value(); - } - - // TODO: add proper API for tickmarks - const int index = dial->metaObject()->indexOfProperty("qqc2_style_tickPosition"); - if (index != -1) { - const int tickPosition = dial->metaObject()->property(index).read(dial).toInt(); - styleOption.tickPosition = QStyleOptionSlider::TickPosition(tickPosition); - if (styleOption.tickPosition != QStyleOptionSlider::NoTicks) - styleOption.subControls |= QStyle::SC_DialTickmarks; - } - -} diff --git a/src/quicknativestyle/items/qquickstyleitemdial.h b/src/quicknativestyle/items/qquickstyleitemdial.h deleted file mode 100644 index 569820fe..00000000 --- a/src/quicknativestyle/items/qquickstyleitemdial.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMDIAL_H -#define QQUICKSTYLEITEMDIAL_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquickdial_p.h> - -class QQuickStyleItemDial : public QQuickStyleItem -{ - Q_OBJECT - QML_NAMED_ELEMENT(Dial) - -public: - QFont styleFont(QQuickItem *control) const override; - -protected: - void connectToControl() const override; - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - void initStyleOption(QStyleOptionSlider &styleOption) const; -}; - -#endif // QQUICKSTYLEITEMDIAL_H diff --git a/src/quicknativestyle/items/qquickstyleitemframe.cpp b/src/quicknativestyle/items/qquickstyleitemframe.cpp deleted file mode 100644 index cf060492..00000000 --- a/src/quicknativestyle/items/qquickstyleitemframe.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitemframe.h" - -StyleItemGeometry QQuickStyleItemFrame::calculateGeometry() -{ - QStyleOptionFrame styleOption; - initStyleOption(styleOption); - StyleItemGeometry geometry; - - geometry.minimumSize = style()->sizeFromContents(QStyle::CT_Frame, &styleOption, QSize(0, 0)); - geometry.implicitSize = contentSize(); - styleOption.rect = QRect(QPoint(0, 0), geometry.implicitSize); - geometry.contentRect = style()->subElementRect(QStyle::SE_FrameContents, &styleOption); - geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CE_ShapedFrame, &styleOption, geometry.minimumSize); - - return geometry; -} - -void QQuickStyleItemFrame::paintEvent(QPainter *painter) const -{ - QStyleOptionFrame styleOption; - initStyleOption(styleOption); - style()->drawControl(QStyle::CE_ShapedFrame, &styleOption, painter); -} - -void QQuickStyleItemFrame::initStyleOption(QStyleOptionFrame &styleOption) const -{ - initStyleOptionBase(styleOption); - styleOption.lineWidth = 1; - styleOption.frameShape = QStyleOptionFrame::StyledPanel; - styleOption.features = QStyleOptionFrame::Flat; -} diff --git a/src/quicknativestyle/items/qquickstyleitemframe.h b/src/quicknativestyle/items/qquickstyleitemframe.h deleted file mode 100644 index 8e8da68b..00000000 --- a/src/quicknativestyle/items/qquickstyleitemframe.h +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMFRAME_H -#define QQUICKSTYLEITEMFRAME_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquickframe_p.h> - -class QQuickStyleItemFrame : public QQuickStyleItem -{ - Q_OBJECT - QML_NAMED_ELEMENT(Frame) - -protected: - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - void initStyleOption(QStyleOptionFrame &styleOption) const; -}; - -#endif // QQUICKSTYLEITEMFRAME_H diff --git a/src/quicknativestyle/items/qquickstyleitemgroupbox.cpp b/src/quicknativestyle/items/qquickstyleitemgroupbox.cpp deleted file mode 100644 index a828160d..00000000 --- a/src/quicknativestyle/items/qquickstyleitemgroupbox.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitemgroupbox.h" - -QFont QQuickStyleItemGroupBox::styleFont(QQuickItem *control) const -{ - return style()->font(QStyle::CE_HeaderLabel, controlSize(control)); -} - -StyleItemGeometry QQuickStyleItemGroupBox::calculateGeometry() -{ - QStyleOptionGroupBox styleOption; - initStyleOption(styleOption); - - StyleItemGeometry geometry; - geometry.minimumSize = style()->sizeFromContents(QStyle::CT_GroupBox, &styleOption, QSize(0, 0)); - - if (!control<QQuickGroupBox>()->title().isEmpty()) { - // We don't draw the title, but we need to take - // it into calculation for the control size - styleOption.text = QStringLiteral(" "); - styleOption.subControls |= QStyle::SC_GroupBoxLabel; - } - - geometry.implicitSize = style()->sizeFromContents(QStyle::CT_GroupBox, &styleOption, contentSize()); - styleOption.rect.setSize(geometry.implicitSize); - geometry.contentRect = style()->subControlRect(QStyle::CC_GroupBox, &styleOption, QStyle::SC_GroupBoxContents); - geometry.layoutRect = style()->subElementRect(QStyle::SE_GroupBoxLayoutItem, &styleOption); - geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CC_GroupBox, &styleOption, geometry.minimumSize); - - const QQuickStyleMargins oldGroupBoxPadding = m_groupBoxPadding; - const QRect frame = style()->subControlRect(QStyle::CC_GroupBox, &styleOption, QStyle::SC_GroupBoxFrame); - m_groupBoxPadding = QQuickStyleMargins(QRect(QPoint(), geometry.implicitSize), frame); - if (m_groupBoxPadding != oldGroupBoxPadding) - emit groupBoxPaddingChanged(); - - const QPointF oldLabelPos = m_labelPos; - m_labelPos = style()->subControlRect(QStyle::CC_GroupBox, &styleOption, QStyle::SC_GroupBoxLabel).topLeft(); - if (m_labelPos != oldLabelPos) - emit labelPosChanged(); - return geometry; -} - -void QQuickStyleItemGroupBox::paintEvent(QPainter *painter) const -{ - QStyleOptionGroupBox styleOption; - initStyleOption(styleOption); - style()->drawComplexControl(QStyle::CC_GroupBox, &styleOption, painter); -} - -void QQuickStyleItemGroupBox::initStyleOption(QStyleOptionGroupBox &styleOption) const -{ - initStyleOptionBase(styleOption); - styleOption.subControls = QStyle::SC_GroupBoxFrame; - styleOption.lineWidth = 1; -} - -QQuickStyleMargins QQuickStyleItemGroupBox::groupBoxPadding() const -{ - return m_groupBoxPadding; -} - -QPointF QQuickStyleItemGroupBox::labelPos() const -{ - return m_labelPos; -} diff --git a/src/quicknativestyle/items/qquickstyleitemgroupbox.h b/src/quicknativestyle/items/qquickstyleitemgroupbox.h deleted file mode 100644 index 2b07287f..00000000 --- a/src/quicknativestyle/items/qquickstyleitemgroupbox.h +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMGROUPBOX_H -#define QQUICKSTYLEITEMGROUPBOX_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquickgroupbox_p.h> - -class QQuickStyleItemGroupBox : public QQuickStyleItem -{ - Q_OBJECT - Q_PROPERTY(QQuickStyleMargins groupBoxPadding READ groupBoxPadding NOTIFY groupBoxPaddingChanged) - Q_PROPERTY(QPointF labelPos READ labelPos NOTIFY labelPosChanged) - QML_NAMED_ELEMENT(GroupBox) - -public: - QQuickStyleMargins groupBoxPadding() const; - QPointF labelPos() const; - QFont styleFont(QQuickItem *control) const override; - -signals: - void groupBoxPaddingChanged(); - void labelPosChanged(); - -protected: - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - QQuickStyleMargins m_groupBoxPadding; - QPointF m_labelPos; - - void initStyleOption(QStyleOptionGroupBox &styleOption) const; -}; - -#endif // QQUICKSTYLEITEMGROUPBOX_H diff --git a/src/quicknativestyle/items/qquickstyleitemprogressbar.cpp b/src/quicknativestyle/items/qquickstyleitemprogressbar.cpp deleted file mode 100644 index 480e8981..00000000 --- a/src/quicknativestyle/items/qquickstyleitemprogressbar.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitemprogressbar.h" - -QFont QQuickStyleItemProgressBar::styleFont(QQuickItem *control) const -{ - return style()->font(QStyle::CE_ProgressBarLabel, controlSize(control)); -} - -void QQuickStyleItemProgressBar::connectToControl() const -{ - QQuickStyleItem::connectToControl(); - auto progressBar = control<QQuickProgressBar>(); - connect(progressBar, &QQuickProgressBar::fromChanged, this, &QQuickStyleItem::markImageDirty); - connect(progressBar, &QQuickProgressBar::toChanged, this, &QQuickStyleItem::markImageDirty); - connect(progressBar, &QQuickProgressBar::positionChanged, this, &QQuickStyleItem::markImageDirty); -} - -StyleItemGeometry QQuickStyleItemProgressBar::calculateGeometry() -{ - QStyleOptionProgressBar styleOption; - initStyleOption(styleOption); - - StyleItemGeometry geometry; - geometry.minimumSize = style()->sizeFromContents(QStyle::CT_ProgressBar, &styleOption, QSize(0, 0)); - - // From qprogressbar.cpp in qtbase: - const int cw = style()->pixelMetric(QStyle::PM_ProgressBarChunkWidth, &styleOption); - QFontMetrics fm(control<QQuickProgressBar>()->font()); - QSize size = QSize(qMax(9, cw) * 7 + fm.horizontalAdvance(QLatin1Char('0')) * 4, fm.height() + 8); - if (!(styleOption.state & QStyle::State_Horizontal)) - size = size.transposed(); - - geometry.implicitSize = style()->sizeFromContents(QStyle::CT_ProgressBar, &styleOption, size); - styleOption.rect = QRect(QPoint(0, 0), geometry.implicitSize); - geometry.contentRect = style()->subElementRect(QStyle::SE_ProgressBarContents, &styleOption); - geometry.layoutRect = style()->subElementRect(QStyle::SE_ProgressBarLayoutItem, &styleOption); - geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CE_ProgressBar, &styleOption, geometry.minimumSize); - - return geometry; -} - -void QQuickStyleItemProgressBar::paintEvent(QPainter *painter) const -{ - QStyleOptionProgressBar styleOption; - initStyleOption(styleOption); -#ifndef Q_OS_MACOS - const QRect r = styleOption.rect; -#endif - // Note: on macOS, the groove will paint both the background and the contents - styleOption.rect = style()->subElementRect(QStyle::SE_ProgressBarGroove, &styleOption); - style()->drawControl(QStyle::CE_ProgressBarGroove, &styleOption, painter); -#ifndef Q_OS_MACOS - styleOption.rect = r; - styleOption.rect = style()->subElementRect(QStyle::SE_ProgressBarContents, &styleOption); - style()->drawControl(QStyle::CE_ProgressBarContents, &styleOption, painter); -#endif -} - -void QQuickStyleItemProgressBar::initStyleOption(QStyleOptionProgressBar &styleOption) const -{ - initStyleOptionBase(styleOption); - auto progressBar = control<QQuickProgressBar>(); - - styleOption.state = QStyle::State_Horizontal; - - if (progressBar->isIndeterminate()) { - styleOption.minimum = 0; - styleOption.maximum = 0; - } else if (progressBar->to() - progressBar->from() < 100) { - // Add some range to support float numbers - styleOption.minimum = 0; - styleOption.maximum = (progressBar->to() - progressBar->from()) * 100; - styleOption.progress = (progressBar->value() - progressBar->from()) * 100; - } else { - styleOption.minimum = progressBar->from(); - styleOption.maximum = progressBar->to(); - styleOption.progress = progressBar->value(); - } -} diff --git a/src/quicknativestyle/items/qquickstyleitemprogressbar.h b/src/quicknativestyle/items/qquickstyleitemprogressbar.h deleted file mode 100644 index 53692dbe..00000000 --- a/src/quicknativestyle/items/qquickstyleitemprogressbar.h +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMPROGRESSBAR_H -#define QQUICKSTYLEITEMPROGRESSBAR_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquickprogressbar_p.h> - -class QQuickStyleItemProgressBar : public QQuickStyleItem -{ - Q_OBJECT - - QML_NAMED_ELEMENT(ProgressBar) - -public: - QFont styleFont(QQuickItem *control) const override; - -protected: - void connectToControl() const override; - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - void initStyleOption(QStyleOptionProgressBar &styleOption) const; -}; - -#endif // QQUICKSTYLEITEMPROGRESSBAR_H diff --git a/src/quicknativestyle/items/qquickstyleitemradiobutton.cpp b/src/quicknativestyle/items/qquickstyleitemradiobutton.cpp deleted file mode 100644 index 655bb0b6..00000000 --- a/src/quicknativestyle/items/qquickstyleitemradiobutton.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitemradiobutton.h" - -QFont QQuickStyleItemRadioButton::styleFont(QQuickItem *control) const -{ - return style()->font(QStyle::CE_RadioButtonLabel, controlSize(control)); -} - -void QQuickStyleItemRadioButton::connectToControl() const -{ - QQuickStyleItem::connectToControl(); - auto checkbox = control<QQuickRadioButton>(); - connect(checkbox, &QQuickRadioButton::downChanged, this, &QQuickStyleItem::markImageDirty); - connect(checkbox, &QQuickRadioButton::checkedChanged, this, &QQuickStyleItem::markImageDirty); -} - -StyleItemGeometry QQuickStyleItemRadioButton::calculateGeometry() -{ - QStyleOptionButton styleOption; - initStyleOption(styleOption); - StyleItemGeometry geometry; - - geometry.minimumSize = style()->sizeFromContents(QStyle::CT_RadioButton, &styleOption, QSize(0, 0)); - geometry.implicitSize = geometry.minimumSize; - styleOption.rect = QRect(QPoint(0, 0), geometry.implicitSize); - geometry.contentRect = style()->subElementRect(QStyle::SE_RadioButtonContents, &styleOption); - geometry.layoutRect = style()->subElementRect(QStyle::SE_RadioButtonLayoutItem, &styleOption); - geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CE_RadioButton, &styleOption, geometry.minimumSize); - geometry.focusFrameRadius = style()->pixelMetric(QStyle::PM_RadioButtonFocusFrameRadius, &styleOption); - - return geometry; -} - -void QQuickStyleItemRadioButton::paintEvent(QPainter *painter) const -{ - QStyleOptionButton styleOption; - initStyleOption(styleOption); - style()->drawControl(QStyle::CE_RadioButton, &styleOption, painter); -} - -void QQuickStyleItemRadioButton::initStyleOption(QStyleOptionButton &styleOption) const -{ - initStyleOptionBase(styleOption); - auto checkbox = control<QQuickRadioButton>(); - - styleOption.state |= checkbox->isDown() ? QStyle::State_Sunken : QStyle::State_Raised; - styleOption.state |= checkbox->isChecked() ? QStyle::State_On : QStyle::State_Off; -} diff --git a/src/quicknativestyle/items/qquickstyleitemradiobutton.h b/src/quicknativestyle/items/qquickstyleitemradiobutton.h deleted file mode 100644 index 56073d8f..00000000 --- a/src/quicknativestyle/items/qquickstyleitemradiobutton.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMRADIOBUTTON_H -#define QQUICKSTYLEITEMRADIOBUTTON_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquickradiobutton_p.h> - -class QQuickStyleItemRadioButton : public QQuickStyleItem -{ - Q_OBJECT - QML_NAMED_ELEMENT(RadioButton) - -public: - QFont styleFont(QQuickItem *control) const override; - -protected: - void connectToControl() const override; - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - void initStyleOption(QStyleOptionButton &styleOption) const; -}; - -#endif // QQUICKSTYLEITEMRADIOBUTTON_H diff --git a/src/quicknativestyle/items/qquickstyleitemscrollbar.cpp b/src/quicknativestyle/items/qquickstyleitemscrollbar.cpp deleted file mode 100644 index d6d41d96..00000000 --- a/src/quicknativestyle/items/qquickstyleitemscrollbar.cpp +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitemscrollbar.h" - -QFont QQuickStyleItemScrollBar::styleFont(QQuickItem *control) const -{ - return style()->font(QStyle::CE_ProgressBarLabel, controlSize(control)); -} - -void QQuickStyleItemScrollBar::connectToControl() const -{ - QQuickStyleItem::connectToControl(); - auto scrollBar = control<QQuickScrollBar>(); - connect(scrollBar, &QQuickScrollBar::orientationChanged, this, &QQuickStyleItem::markImageDirty); - connect(scrollBar, &QQuickScrollBar::pressedChanged, this, &QQuickStyleItem::markImageDirty); -} - -StyleItemGeometry QQuickStyleItemScrollBar::calculateGeometry() -{ - QStyleOptionSlider styleOption; - initStyleOption(styleOption); - - StyleItemGeometry geometry; - geometry.minimumSize = style()->sizeFromContents(QStyle::CT_ScrollBar, &styleOption, QSize(0, 0)); - if (m_subControl == SubLine || m_subControl == AddLine) { - // So far, we know that only the windows style uses these subcontrols, - // so we can use hardcoded sizes... - QSize sz(16, 17); - if (styleOption.orientation == Qt::Vertical) - sz.transpose(); - geometry.minimumSize = sz; - } - geometry.implicitSize = geometry.minimumSize; - styleOption.rect = QRect(QPoint(0, 0), geometry.implicitSize); - geometry.layoutRect = style()->subElementRect(QStyle::SE_ScrollBarLayoutItem, &styleOption); - geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CC_ScrollBar, &styleOption, geometry.minimumSize); - - return geometry; -} - -void QQuickStyleItemScrollBar::paintEvent(QPainter *painter) const -{ - QStyleOptionSlider styleOption; - initStyleOption(styleOption); - if (m_subControl == SubLine || m_subControl == AddLine) { - QStyle::SubControl sc = m_subControl == SubLine ? QStyle::SC_ScrollBarSubLine : QStyle::SC_ScrollBarAddLine; - QStyleOptionSlider opt = styleOption; - opt.subControls = QStyle::SC_ScrollBarAddLine - | QStyle::SC_ScrollBarSubLine - | QStyle::SC_ScrollBarGroove; - - const qreal scale = window()->devicePixelRatio(); - const QSize scrollBarMinSize = style()->sizeFromContents(QStyle::CT_ScrollBar, &opt, QSize(0, 0)); - const QSize sz = scrollBarMinSize * scale; - QImage scrollBarImage(sz, QImage::Format_ARGB32_Premultiplied); - scrollBarImage.setDevicePixelRatio(scale); - QPainter p(&scrollBarImage); - opt.rect = QRect(QPoint(0, 0), scrollBarMinSize); - style()->drawComplexControl(QStyle::CC_ScrollBar, &opt, &p); - QRect sourceImageRect = style()->subControlRect(QStyle::CC_ScrollBar, &opt, sc); - sourceImageRect = QRect(sourceImageRect.topLeft() * scale, sourceImageRect.size() * scale); - painter->drawImage(QPoint(0, 0), scrollBarImage, sourceImageRect); - } else { - style()->drawComplexControl(QStyle::CC_ScrollBar, &styleOption, painter); - } -} - -void QQuickStyleItemScrollBar::initStyleOption(QStyleOptionSlider &styleOption) const -{ - initStyleOptionBase(styleOption); - auto scrollBar = control<QQuickScrollBar>(); - - switch (m_subControl) { - case Groove: - styleOption.subControls = QStyle::SC_ScrollBarGroove | QStyle::SC_ScrollBarAddLine | QStyle::SC_ScrollBarSubLine; - break; - case Handle: - styleOption.subControls = QStyle::SC_ScrollBarSlider; - break; - case AddLine: - styleOption.subControls = QStyle::SC_ScrollBarAddLine; - break; - case SubLine: - styleOption.subControls = QStyle::SC_ScrollBarSubLine; - break; - } - - styleOption.activeSubControls = QStyle::SC_None; - styleOption.orientation = scrollBar->orientation(); - if (styleOption.orientation == Qt::Horizontal) - styleOption.state |= QStyle::State_Horizontal; - - if (scrollBar->isPressed()) - styleOption.state |= QStyle::State_Sunken; - - if (m_overrideState != None) { - // In ScrollBar.qml we fade between two versions of - // the handle, depending on if it's hovered or not - - if (m_overrideState == AlwaysHovered) { - styleOption.activeSubControls = (styleOption.subControls & (QStyle::SC_ScrollBarSlider | QStyle::SC_ScrollBarGroove | QStyle::SC_ScrollBarAddLine | QStyle::SC_ScrollBarSubLine)); - } else if (m_overrideState == NeverHovered) { - styleOption.activeSubControls &= ~(styleOption.subControls & (QStyle::SC_ScrollBarSlider | QStyle::SC_ScrollBarGroove | QStyle::SC_ScrollBarAddLine | QStyle::SC_ScrollBarSubLine)); - } else if (m_overrideState == AlwaysSunken) { - styleOption.state |= QStyle::State_Sunken; - styleOption.activeSubControls = (styleOption.subControls & (QStyle::SC_ScrollBarSlider | QStyle::SC_ScrollBarGroove | QStyle::SC_ScrollBarAddLine | QStyle::SC_ScrollBarSubLine)); - } - } - - // The following values will let the handle fill 100% of the - // groove / imageSize. But when the handle is resized by - // QQuickScrollBar, it will end up with the correct size visually. - styleOption.pageStep = 1000; - styleOption.minimum = 0; - styleOption.maximum = 1; - styleOption.sliderValue = 0; -} diff --git a/src/quicknativestyle/items/qquickstyleitemscrollbar.h b/src/quicknativestyle/items/qquickstyleitemscrollbar.h deleted file mode 100644 index f89d8d3e..00000000 --- a/src/quicknativestyle/items/qquickstyleitemscrollbar.h +++ /dev/null @@ -1,74 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMSCROLLBAR_H -#define QQUICKSTYLEITEMSCROLLBAR_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquickscrollbar_p.h> - -class QQuickStyleItemScrollBar : public QQuickStyleItem -{ - Q_OBJECT - - Q_PROPERTY(SubControl subControl MEMBER m_subControl) - - QML_NAMED_ELEMENT(ScrollBar) - -public: - enum SubControl { - Groove = 1, - Handle, - AddLine, - SubLine - }; - Q_ENUM(SubControl) - - QFont styleFont(QQuickItem *control) const override; - -protected: - void connectToControl() const override; - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - void initStyleOption(QStyleOptionSlider &styleOption) const; - -private: - SubControl m_subControl = Groove; -}; - -#endif // QQUICKSTYLEITEMSCROLLBAR_H diff --git a/src/quicknativestyle/items/qquickstyleitemscrollviewcorner.cpp b/src/quicknativestyle/items/qquickstyleitemscrollviewcorner.cpp deleted file mode 100644 index 3a992f2d..00000000 --- a/src/quicknativestyle/items/qquickstyleitemscrollviewcorner.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitemscrollviewcorner.h" - -StyleItemGeometry QQuickStyleItemScrollViewCorner::calculateGeometry() -{ - QStyleOptionSlider styleOption; - initStyleOption(styleOption); - - StyleItemGeometry geometry; - - // The size of the corner should be the width of the vertical - // scrollbar and the height of the horizontal scrollbar. - styleOption.orientation = Qt::Vertical; - const auto vScrollBarWidth = style()->sizeFromContents(QStyle::CT_ScrollBar, &styleOption, QSize(0, 0)).width(); - styleOption.orientation = Qt::Horizontal; - const auto hScrollBarHeight = style()->sizeFromContents(QStyle::CT_ScrollBar, &styleOption, QSize(0, 0)).height(); - - geometry.minimumSize = QSize(vScrollBarWidth, hScrollBarHeight); - geometry.implicitSize = geometry.minimumSize; - - return geometry; -} - -void QQuickStyleItemScrollViewCorner::paintEvent(QPainter *painter) const -{ - QStyleOptionSlider styleOption; - initStyleOption(styleOption); - - // Grab a center piece of a vertical scrollbar groove onto a QImage, and use this - // image to draw a corner. We draw the corner by first drawing the piece as it is, and - // then rotate it 90 degrees, clip it into a triangle, and draw it once more on top. - // The result is that we end up with one vertical and one horizontal triangle that - // together form a filled corner rectangle. - - styleOption.orientation = Qt::Vertical; - - const qreal scale = window()->devicePixelRatio(); - const int grooveWidth = minimumSize().width(); - const int grooveHeight = minimumSize().height(); - const QSize scrollBarMinSize = style()->sizeFromContents(QStyle::CT_ScrollBar, &styleOption, QSize(0, 0)); - const QSize scrollBarSize = scrollBarMinSize + QSize(0, grooveHeight); - const int hStart = scrollBarMinSize.height() / 2; - const QRect targetImageRect(0, hStart * scale, grooveWidth * scale, grooveHeight * scale); - - QImage scrollBarImage(scrollBarSize * scale, QImage::Format_ARGB32_Premultiplied); - scrollBarImage.setDevicePixelRatio(scale); - scrollBarImage.fill(Qt::transparent); - QPainter scrollBarPainter(&scrollBarImage); - styleOption.rect = QRect(QPoint(0, 0), scrollBarSize); - style()->drawComplexControl(QStyle::CC_ScrollBar, &styleOption, &scrollBarPainter); - - // Draw vertical groove - painter->drawImage(QPoint(0, 0), scrollBarImage, targetImageRect); - - QPainterPath path; - path.moveTo(0, 0); - path.lineTo(0, grooveHeight); - path.lineTo(grooveWidth, grooveHeight); - path.closeSubpath(); - - QTransform transform; - transform.translate(grooveWidth, 0); - transform.rotate(90); - - painter->save(); - painter->setCompositionMode(QPainter::CompositionMode_Source); - painter->setClipPath(path); - painter->setTransform(transform); - // Draw horizontal groove, clipped to a triangle - painter->drawImage(QPoint(0, 0), scrollBarImage, targetImageRect); - painter->restore(); -} - -void QQuickStyleItemScrollViewCorner::initStyleOption(QStyleOptionSlider &styleOption) const -{ - initStyleOptionBase(styleOption); - - styleOption.subControls = QStyle::SC_ScrollBarGroove; - styleOption.activeSubControls = QStyle::SC_None; - styleOption.pageStep = 1000; - styleOption.minimum = 0; - styleOption.maximum = 1; - styleOption.sliderValue = 0; -} diff --git a/src/quicknativestyle/items/qquickstyleitemscrollviewcorner.h b/src/quicknativestyle/items/qquickstyleitemscrollviewcorner.h deleted file mode 100644 index 637a8ea8..00000000 --- a/src/quicknativestyle/items/qquickstyleitemscrollviewcorner.h +++ /dev/null @@ -1,56 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMSCROLLVIEWCORNER_H -#define QQUICKSTYLEITEMSCROLLVIEWCORNER_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquickscrollbar_p.h> - -class QQuickStyleItemScrollViewCorner : public QQuickStyleItem -{ - Q_OBJECT - QML_NAMED_ELEMENT(ScrollViewCorner) - -protected: - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - void initStyleOption(QStyleOptionSlider &styleOption) const; -}; - -#endif // QQUICKSTYLEITEMSCROLLVIEWCORNER_H diff --git a/src/quicknativestyle/items/qquickstyleitemslider.cpp b/src/quicknativestyle/items/qquickstyleitemslider.cpp deleted file mode 100644 index 67161ad3..00000000 --- a/src/quicknativestyle/items/qquickstyleitemslider.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitemslider.h" - -QFont QQuickStyleItemSlider::styleFont(QQuickItem *control) const -{ - return style()->font(QStyle::CE_ProgressBarLabel, controlSize(control)); -} - -void QQuickStyleItemSlider::connectToControl() const -{ - QQuickStyleItem::connectToControl(); - auto slider = control<QQuickSlider>(); - connect(slider, &QQuickSlider::fromChanged, this, &QQuickStyleItem::markImageDirty); - connect(slider, &QQuickSlider::toChanged, this, &QQuickStyleItem::markImageDirty); - connect(slider, &QQuickSlider::positionChanged, this, &QQuickStyleItem::markImageDirty); - connect(slider, &QQuickSlider::valueChanged, this, &QQuickStyleItem::markImageDirty); - connect(slider, &QQuickSlider::stepSizeChanged, this, &QQuickStyleItem::markImageDirty); - connect(slider, &QQuickSlider::pressedChanged, this, &QQuickStyleItem::markImageDirty); - connect(slider, &QQuickSlider::orientationChanged, this, &QQuickStyleItem::markImageDirty); -} - -StyleItemGeometry QQuickStyleItemSlider::calculateGeometry() -{ - QStyleOptionSlider styleOption; - initStyleOption(styleOption); - - StyleItemGeometry geometry; - geometry.minimumSize = style()->sizeFromContents(QStyle::CT_Slider, &styleOption, QSize(0, 0)); - geometry.implicitSize = geometry.minimumSize; - styleOption.rect = QRect(QPoint(0, 0), geometry.implicitSize); - geometry.layoutRect = style()->subElementRect(QStyle::SE_SliderLayoutItem, &styleOption); - geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CC_Slider, &styleOption, geometry.minimumSize); - geometry.focusFrameRadius = style()->pixelMetric(QStyle::PM_SliderFocusFrameRadius, &styleOption); - - return geometry; -} - -void QQuickStyleItemSlider::paintEvent(QPainter *painter) const -{ - QStyleOptionSlider styleOption; - initStyleOption(styleOption); - style()->drawComplexControl(QStyle::CC_Slider, &styleOption, painter); -} - -void QQuickStyleItemSlider::initStyleOption(QStyleOptionSlider &styleOption) const -{ - initStyleOptionBase(styleOption); - auto slider = control<QQuickSlider>(); - - styleOption.subControls = QStyle::SC_None; - if (m_subControl & Groove) - styleOption.subControls |= QStyle::SC_SliderGroove; - if (m_subControl & Handle) - styleOption.subControls |= QStyle::SC_SliderHandle; - styleOption.activeSubControls = QStyle::SC_None; - styleOption.orientation = slider->orientation(); - - if (slider->isPressed()) - styleOption.state |= QStyle::State_Sunken; - - qreal min = 0; - qreal max = 1; - if (!qFuzzyIsNull(slider->stepSize())) { - min = slider->from(); - max = slider->to(); - - // TODO: add proper API for tickmarks - const int index = slider->metaObject()->indexOfProperty("qqc2_style_tickPosition"); - if (index != -1) { - const int tickPosition = slider->metaObject()->property(index).read(slider).toInt(); - styleOption.tickPosition = QStyleOptionSlider::TickPosition(tickPosition); - if (styleOption.tickPosition != QStyleOptionSlider::NoTicks) - styleOption.subControls |= QStyle::SC_SliderTickmarks; - } - } - - // Since the [from, to] interval in QQuickSlider is floating point, users can - // specify very small ranges and step sizes, (e.g. [0.., 0.25], step size 0.05). - // Since the style operates on ints, we cannot pass these values directly to the style, - // so we normalize all values to the range [0, 10000] - static const qreal Scale = 10000; - const qreal normalizeMultiplier = Scale/(max - min); - styleOption.tickInterval = int(slider->stepSize() * normalizeMultiplier); - styleOption.minimum = 0; - styleOption.maximum = int(Scale); - styleOption.sliderValue = int((slider->value() - min) * normalizeMultiplier); - styleOption.sliderPosition = int(slider->position() * styleOption.maximum); -} diff --git a/src/quicknativestyle/items/qquickstyleitemslider.h b/src/quicknativestyle/items/qquickstyleitemslider.h deleted file mode 100644 index 9a514207..00000000 --- a/src/quicknativestyle/items/qquickstyleitemslider.h +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMSLIDER_H -#define QQUICKSTYLEITEMSLIDER_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquickslider_p.h> - -class QQuickStyleItemSlider : public QQuickStyleItem -{ - Q_OBJECT - - Q_PROPERTY(SubControl subControl MEMBER m_subControl) - - QML_NAMED_ELEMENT(Slider) - -public: - enum SubControl { - Groove = 1, - Handle, - }; - Q_ENUM(SubControl) - - QFont styleFont(QQuickItem *control) const override; - -protected: - void connectToControl() const override; - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - void initStyleOption(QStyleOptionSlider &styleOption) const; - -private: - SubControl m_subControl = Groove; -}; - -#endif // QQUICKSTYLEITEMSLIDER_H diff --git a/src/quicknativestyle/items/qquickstyleitemspinbox.cpp b/src/quicknativestyle/items/qquickstyleitemspinbox.cpp deleted file mode 100644 index 2a232b8a..00000000 --- a/src/quicknativestyle/items/qquickstyleitemspinbox.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitemspinbox.h" -#include <QtQuickTemplates2/private/qquickindicatorbutton_p.h> - -QFont QQuickStyleItemSpinBox::styleFont(QQuickItem *control) const -{ - return style()->font(QStyle::CE_ComboBoxLabel, controlSize(control)); -} - -void QQuickStyleItemSpinBox::connectToControl() const -{ - QQuickStyleItem::connectToControl(); - auto spinbox = control<QQuickSpinBox>(); - connect(spinbox->up(), &QQuickIndicatorButton::pressedChanged, this, &QQuickStyleItem::markImageDirty); - connect(spinbox->down(), &QQuickIndicatorButton::pressedChanged, this, &QQuickStyleItem::markImageDirty); -} - -StyleItemGeometry QQuickStyleItemSpinBox::calculateGeometry() -{ - QStyleOptionSpinBox styleOption; - initStyleOption(styleOption); - StyleItemGeometry geometry; - - geometry.minimumSize = style()->sizeFromContents(QStyle::CT_SpinBox, &styleOption, QSize(0, 0)); - - if (styleOption.subControls == QStyle::SC_SpinBoxFrame) { - geometry.implicitSize = style()->sizeFromContents(QStyle::CT_SpinBox, &styleOption, contentSize()); - styleOption.rect = QRect(QPoint(0, 0), geometry.implicitSize); - geometry.contentRect = style()->subControlRect(QStyle::CC_SpinBox, &styleOption, QStyle::SC_SpinBoxEditField); - geometry.layoutRect = style()->subElementRect(QStyle::SE_SpinBoxLayoutItem, &styleOption); - geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CC_SpinBox, &styleOption, geometry.minimumSize); - geometry.focusFrameRadius = style()->pixelMetric(QStyle::PM_SpinBoxFocusFrameRadius, &styleOption); - } else { - geometry.implicitSize = geometry.minimumSize; - } - - return geometry; -} - -void QQuickStyleItemSpinBox::paintEvent(QPainter *painter) const -{ - QStyleOptionSpinBox styleOption; - initStyleOption(styleOption); - style()->drawComplexControl(QStyle::CC_SpinBox, &styleOption, painter); -} - -void QQuickStyleItemSpinBox::initStyleOption(QStyleOptionSpinBox &styleOption) const -{ - initStyleOptionBase(styleOption); - auto spinbox = control<QQuickSpinBox>(); - - switch (m_subControl) { - case Frame: - styleOption.subControls = QStyle::SC_SpinBoxFrame; - styleOption.frame = true; - break; - case Up: - styleOption.subControls = (QStyle::SC_SpinBoxUp | QStyle::SC_SpinBoxDown); - break; - case Down: - styleOption.subControls = QStyle::SC_SpinBoxDown; - break; - } - - if (spinbox->up()->isPressed()) { - styleOption.activeSubControls = QStyle::SC_SpinBoxUp; - styleOption.state |= QStyle::State_Sunken; - } else if (spinbox->down()->isPressed()) { - styleOption.activeSubControls = QStyle::SC_SpinBoxDown; - styleOption.state |= QStyle::State_Sunken; - } - - styleOption.buttonSymbols = QStyleOptionSpinBox::UpDownArrows; - styleOption.stepEnabled = QStyleOptionSpinBox::StepEnabled; -} diff --git a/src/quicknativestyle/items/qquickstyleitemspinbox.h b/src/quicknativestyle/items/qquickstyleitemspinbox.h deleted file mode 100644 index d4b9f9fa..00000000 --- a/src/quicknativestyle/items/qquickstyleitemspinbox.h +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMSPINBOX_H -#define QQUICKSTYLEITEMSPINBOX_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquickspinbox_p.h> - -class QQuickStyleItemSpinBox : public QQuickStyleItem -{ - Q_OBJECT - - Q_PROPERTY(SubControl subControl MEMBER m_subControl) - - QML_NAMED_ELEMENT(SpinBox) - -public: - enum SubControl { - Frame = 1, - Up, - Down, - }; - Q_ENUM(SubControl) - - QFont styleFont(QQuickItem *control) const override; - -protected: - void connectToControl() const override; - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - void initStyleOption(QStyleOptionSpinBox &styleOption) const; - -private: - SubControl m_subControl = Frame; -}; - -#endif // QQUICKSTYLEITEMSPINBOX_H diff --git a/src/quicknativestyle/items/qquickstyleitemtextfield.cpp b/src/quicknativestyle/items/qquickstyleitemtextfield.cpp deleted file mode 100644 index cd7d35aa..00000000 --- a/src/quicknativestyle/items/qquickstyleitemtextfield.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleitemtextfield.h" - -QFont QQuickStyleItemTextField::styleFont(QQuickItem *control) const -{ - return style()->font(QStyle::CE_ComboBoxLabel, controlSize(control)); -} - -void QQuickStyleItemTextField::connectToControl() const -{ - QQuickStyleItem::connectToControl(); - auto textField = control<QQuickTextField>(); - connect(textField, &QQuickTextField::readOnlyChanged, this, &QQuickStyleItem::markImageDirty); - connect(textField, &QQuickTextField::focusChanged, this, &QQuickStyleItem::markImageDirty); -} - -StyleItemGeometry QQuickStyleItemTextField::calculateGeometry() -{ - QStyleOptionFrame styleOption; - initStyleOption(styleOption); - StyleItemGeometry geometry; - - geometry.minimumSize = style()->sizeFromContents(QStyle::CT_LineEdit, &styleOption, QSize(0, 0)); - geometry.implicitSize = style()->sizeFromContents(QStyle::CT_LineEdit, &styleOption, contentSize()); - styleOption.rect = QRect(QPoint(0, 0), geometry.implicitSize); - geometry.layoutRect = styleOption.rect; - geometry.contentRect = style()->subElementRect(QStyle::SE_LineEditContents, &styleOption); - geometry.ninePatchMargins = style()->ninePatchMargins(QStyle::CE_ShapedFrame, &styleOption, geometry.minimumSize); - geometry.focusFrameRadius = style()->pixelMetric(QStyle::PM_TextFieldFocusFrameRadius, &styleOption); - - return geometry; -} - -void QQuickStyleItemTextField::paintEvent(QPainter *painter) const -{ - QStyleOptionFrame styleOption; - initStyleOption(styleOption); - style()->drawPrimitive(QStyle::PE_PanelLineEdit, &styleOption, painter); -} - -void QQuickStyleItemTextField::initStyleOption(QStyleOptionFrame &styleOption) const -{ - initStyleOptionBase(styleOption); - auto textField = control<QQuickTextField>(); - - styleOption.lineWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth, &styleOption); - styleOption.midLineWidth = 0; - styleOption.state |= QStyle::State_Sunken; - if (textField->isReadOnly()) - styleOption.state |= QStyle::State_ReadOnly; -} diff --git a/src/quicknativestyle/items/qquickstyleitemtextfield.h b/src/quicknativestyle/items/qquickstyleitemtextfield.h deleted file mode 100644 index 35aaf753..00000000 --- a/src/quicknativestyle/items/qquickstyleitemtextfield.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTYLEITEMTEXTFIELD_H -#define QQUICKSTYLEITEMTEXTFIELD_H - -#include "qquickstyleitem.h" -#include <QtQuickTemplates2/private/qquicktextfield_p.h> - -class QQuickStyleItemTextField : public QQuickStyleItem -{ - Q_OBJECT - QML_NAMED_ELEMENT(TextField) - -public: - QFont styleFont(QQuickItem *control) const override; - -protected: - void connectToControl() const override; - void paintEvent(QPainter *painter) const override; - StyleItemGeometry calculateGeometry() override; - -private: - void initStyleOption(QStyleOptionFrame &styleOption) const; -}; - -#endif // QQUICKSTYLEITEMTEXTFIELD_H diff --git a/src/quicknativestyle/qstyle/mac/mac.pri b/src/quicknativestyle/qstyle/mac/mac.pri deleted file mode 100644 index 2f7ee7d4..00000000 --- a/src/quicknativestyle/qstyle/mac/mac.pri +++ /dev/null @@ -1,12 +0,0 @@ -LIBS_PRIVATE += -framework AppKit - -INCLUDEPATH += $$PWD - -HEADERS += \ - $$PWD/qquickmacstyle_mac_p.h \ - $$PWD/qquickmacstyle_mac_p_p.h - -SOURCES += - -OBJECTIVE_SOURCES += \ - $$PWD/qquickmacstyle_mac.mm diff --git a/src/quicknativestyle/qstyle/mac/qquickmacstyle_mac.mm b/src/quicknativestyle/qstyle/mac/qquickmacstyle_mac.mm deleted file mode 100644 index 5d061667..00000000 --- a/src/quicknativestyle/qstyle/mac/qquickmacstyle_mac.mm +++ /dev/null @@ -1,6072 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/* - Note: The qdoc comments for QMacStyle are contained in - .../doc/src/qstyles.qdoc. -*/ - -#include <AppKit/AppKit.h> - -#include "qquickmacstyle_mac_p.h" -#include "qquickmacstyle_mac_p_p.h" -#include "qquickstylehelper_p.h" - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -#define QMAC_QAQUASTYLE_SIZE_CONSTRAIN -//#define DEBUG_SIZE_CONSTRAINT - -#include <QtCore/qoperatingsystemversion.h> -#include <QtCore/qvariant.h> -#include <QtCore/qvarlengtharray.h> - -#include <QtGui/qpainterpath.h> -#include <QtGui/qpa/qplatformnativeinterface.h> -#include <QtGui/qpa/qplatformfontdatabase.h> -#include <QtGui/qpa/qplatformtheme.h> - -#include <QtCore/private/qcore_mac_p.h> -#include <QtGui/private/qcoregraphics_p.h> -#include <QtGui/private/qguiapplication_p.h> - -#include <cmath> - -QT_USE_NAMESPACE - -// OBS! Changing QT_MANGLE_NAMESPACE and QT_NAMESPACE_ALIAS_OBJC_CLASS to take -// both QT_NAMESPACE and QQC2_NAMESPACE into account (and not only QT_NAMESPACE, which -// would otherwise be the case). This will make it possible to link in both widgets and -// controls in the same application when building statically. -#undef QT_MANGLE_NAMESPACE -#undef QT_NAMESPACE_ALIAS_OBJC_CLASS - -#define QQC2_MANGLE1(a, b) a##_##b -#define QQC2_MANGLE2(a, b) QQC2_MANGLE1(a, b) - -#if defined(QT_NAMESPACE) - #define QT_MANGLE_NAMESPACE(name) QQC2_MANGLE2(QQC2_MANGLE1(name, QQC2_NAMESPACE), QT_NAMESPACE) - #define QT_NAMESPACE_ALIAS_OBJC_CLASS(name) @compatibility_alias name QT_MANGLE_NAMESPACE(name) -#else - #define QT_MANGLE_NAMESPACE(name) QQC2_MANGLE2(name, QQC2_NAMESPACE) - #define QT_NAMESPACE_ALIAS_OBJC_CLASS(name) @compatibility_alias name QT_MANGLE_NAMESPACE(name) -#endif - -@interface QT_MANGLE_NAMESPACE(QIndeterminateProgressIndicator) : NSProgressIndicator - -@property (readonly, nonatomic) NSInteger animators; - -- (instancetype)init; - -- (void)startAnimation; -- (void)stopAnimation; - -- (void)drawWithFrame:(CGRect)rect inView:(NSView *)view; - -@end - -QT_NAMESPACE_ALIAS_OBJC_CLASS(QIndeterminateProgressIndicator); - -@implementation QIndeterminateProgressIndicator - -- (instancetype)init -{ - if ((self = [super init])) { - _animators = 0; - self.indeterminate = YES; - self.usesThreadedAnimation = NO; - self.alphaValue = 0.0; - } - - return self; -} - -- (void)startAnimation -{ - if (_animators == 0) { - self.hidden = NO; - [super startAnimation:self]; - } - ++_animators; -} - -- (void)stopAnimation -{ - --_animators; - if (_animators == 0) { - [super stopAnimation:self]; - self.hidden = YES; - [self removeFromSuperviewWithoutNeedingDisplay]; - } -} - -- (void)drawWithFrame:(CGRect)rect inView:(NSView *)view -{ - // The alphaValue change is not strictly necessary, but feels safer. - self.alphaValue = 1.0; - if (self.superview != view) - [view addSubview:self]; - if (!CGRectEqualToRect(self.frame, rect)) - self.frame = rect; - [self drawRect:rect]; - self.alphaValue = 0.0; -} - -@end - -@interface QT_MANGLE_NAMESPACE(QVerticalSplitView) : NSSplitView -- (BOOL)isVertical; -@end - -QT_NAMESPACE_ALIAS_OBJC_CLASS(QVerticalSplitView); - -@implementation QVerticalSplitView -- (BOOL)isVertical -{ - return YES; -} -@end - -// See render code in drawPrimitive(PE_FrameTabWidget) -@interface QT_MANGLE_NAMESPACE(QDarkNSBox) : NSBox -@end - -QT_NAMESPACE_ALIAS_OBJC_CLASS(QDarkNSBox); - -@implementation QDarkNSBox -- (instancetype)init -{ - if ((self = [super init])) { - self.title = @""; - self.titlePosition = NSNoTitle; - self.boxType = NSBoxCustom; - self.cornerRadius = 3; - self.borderColor = [NSColor.controlColor colorWithAlphaComponent:0.1]; - self.fillColor = [NSColor.darkGrayColor colorWithAlphaComponent:0.2]; - } - - return self; -} - -- (void)drawRect:(NSRect)rect -{ - [super drawRect:rect]; -} -@end - -QT_BEGIN_NAMESPACE - -namespace QQC2_NAMESPACE { - -// The following constants are used for adjusting the size -// of push buttons so that they are drawn inside their bounds. -const int QMacStylePrivate::PushButtonLeftOffset = 6; -const int QMacStylePrivate::PushButtonRightOffset = 12; -const int QMacStylePrivate::PushButtonContentPadding = 6; - -QVector<QPointer<QObject> > QMacStylePrivate::scrollBars; - -// Title bar gradient colors for Lion were determined by inspecting PSDs exported -// using CoreUI's CoreThemeDocument; there is no public API to retrieve them - -static QLinearGradient titlebarGradientActive() -{ - static QLinearGradient darkGradient = [](){ - QLinearGradient gradient; - // FIXME: colors are chosen somewhat arbitrarily and could be fine-tuned, - // or ideally determined by calling a native API. - gradient.setColorAt(0, QColor(47, 47, 47)); - return gradient; - }(); - static QLinearGradient lightGradient = [](){ - QLinearGradient gradient; - gradient.setColorAt(0, QColor(235, 235, 235)); - gradient.setColorAt(0.5, QColor(210, 210, 210)); - gradient.setColorAt(0.75, QColor(195, 195, 195)); - gradient.setColorAt(1, QColor(180, 180, 180)); - return gradient; - }(); - return qt_mac_applicationIsInDarkMode() ? darkGradient : lightGradient; -} - -static QLinearGradient titlebarGradientInactive() -{ - static QLinearGradient darkGradient = [](){ - QLinearGradient gradient; - gradient.setColorAt(1, QColor(42, 42, 42)); - return gradient; - }(); - static QLinearGradient lightGradient = [](){ - QLinearGradient gradient; - gradient.setColorAt(0, QColor(250, 250, 250)); - gradient.setColorAt(1, QColor(225, 225, 225)); - return gradient; - }(); - return qt_mac_applicationIsInDarkMode() ? darkGradient : lightGradient; -} - -/* - Since macOS 10.14 AppKit is using transparency more extensively, especially for the - dark theme. Inactive buttons, for example, are semi-transparent. And we use them to - draw tab widget's tab bar. The combination of NSBox (also a part of tab widget) - and these transparent buttons gives us an undesired side-effect: an outline of - NSBox is visible through transparent buttons. To avoid this, we have this hack below: - we clip the area where the line would be visible through the buttons. The area we - want to clip away can be described as an intersection of the option's rect and - the tab widget's tab bar rect. But some adjustments are required, since those rects - are anyway adjusted during the rendering and they are not exactly what you'll see on - the screen. Thus this switch-statement inside. -*/ -static void clipTabBarFrame(const QStyleOption *option, const QMacStyle *style, CGContextRef ctx) -{ - Q_ASSERT(option); - Q_ASSERT(style); - Q_ASSERT(ctx); - - if (qt_mac_applicationIsInDarkMode()) { -// QTabWidget *tabWidget = qobject_cast<QTabWidget *>(option->styleObject); -// Q_ASSERT(tabWidget); - -// QRect tabBarRect = style->subElementRect(QStyle::SE_TabWidgetTabBar, option, tabWidget).adjusted(2, 0, -3, 0); -// switch (tabWidget->tabPosition()) { -// case QTabWidget::South: -// tabBarRect.setY(tabBarRect.y() + tabBarRect.height() / 2); -// break; -// case QTabWidget::North: -// case QTabWidget::West: -// tabBarRect = tabBarRect.adjusted(0, 2, 0, -2); -// break; -// case QTabWidget::East: -// tabBarRect = tabBarRect.adjusted(tabBarRect.width() / 2, 2, tabBarRect.width() / 2, -2); -// } - -// const QRegion clipPath = QRegion(option->rect) - tabBarRect; -// QVarLengthArray<CGRect, 3> cgRects; -// for (const QRect &qtRect : clipPath) -// cgRects.push_back(qtRect.toCGRect()); -// if (cgRects.size()) -// CGContextClipToRects(ctx, &cgRects[0], size_t(cgRects.size())); - } -} - -static const QColor titlebarSeparatorLineActive(111, 111, 111); -static const QColor titlebarSeparatorLineInactive(131, 131, 131); -static const QColor darkModeSeparatorLine(88, 88, 88); - -// Gradient colors used for the dock widget title bar and -// non-unifed tool bar background. -static const QColor lightMainWindowGradientBegin(240, 240, 240); -static const QColor lightMainWindowGradientEnd(200, 200, 200); -static const QColor darkMainWindowGradientBegin(47, 47, 47); -static const QColor darkMainWindowGradientEnd(47, 47, 47); - -static const int DisclosureOffset = 4; - -static const qreal titleBarIconTitleSpacing = 5; -static const qreal titleBarTitleRightMargin = 12; -static const qreal titleBarButtonSpacing = 8; - -// Tab bar colors -// active: window is active -// selected: tab is selected -// hovered: tab is hovered -bool isDarkMode() { return qt_mac_applicationIsInDarkMode(); } - -static const QColor lightTabBarTabBackgroundActive(190, 190, 190); -static const QColor darkTabBarTabBackgroundActive(38, 38, 38); -static const QColor tabBarTabBackgroundActive() { return isDarkMode() ? darkTabBarTabBackgroundActive : lightTabBarTabBackgroundActive; } - -static const QColor lightTabBarTabBackgroundActiveHovered(178, 178, 178); -static const QColor darkTabBarTabBackgroundActiveHovered(32, 32, 32); -static const QColor tabBarTabBackgroundActiveHovered() { return isDarkMode() ? darkTabBarTabBackgroundActiveHovered : lightTabBarTabBackgroundActiveHovered; } - -static const QColor lightTabBarTabBackgroundActiveSelected(211, 211, 211); -static const QColor darkTabBarTabBackgroundActiveSelected(52, 52, 52); -static const QColor tabBarTabBackgroundActiveSelected() { return isDarkMode() ? darkTabBarTabBackgroundActiveSelected : lightTabBarTabBackgroundActiveSelected; } - -static const QColor lightTabBarTabBackground(227, 227, 227); -static const QColor darkTabBarTabBackground(38, 38, 38); -static const QColor tabBarTabBackground() { return isDarkMode() ? darkTabBarTabBackground : lightTabBarTabBackground; } - -static const QColor lightTabBarTabBackgroundSelected(246, 246, 246); -static const QColor darkTabBarTabBackgroundSelected(52, 52, 52); -static const QColor tabBarTabBackgroundSelected() { return isDarkMode() ? darkTabBarTabBackgroundSelected : lightTabBarTabBackgroundSelected; } - -static const QColor lightTabBarTabLineActive(160, 160, 160); -static const QColor darkTabBarTabLineActive(90, 90, 90); -static const QColor tabBarTabLineActive() { return isDarkMode() ? darkTabBarTabLineActive : lightTabBarTabLineActive; } - -static const QColor lightTabBarTabLineActiveHovered(150, 150, 150); -static const QColor darkTabBarTabLineActiveHovered(90, 90, 90); -static const QColor tabBarTabLineActiveHovered() { return isDarkMode() ? darkTabBarTabLineActiveHovered : lightTabBarTabLineActiveHovered; } - -static const QColor lightTabBarTabLine(210, 210, 210); -static const QColor darkTabBarTabLine(90, 90, 90); -static const QColor tabBarTabLine() { return isDarkMode() ? darkTabBarTabLine : lightTabBarTabLine; } - -static const QColor lightTabBarTabLineSelected(189, 189, 189); -static const QColor darkTabBarTabLineSelected(90, 90, 90); -static const QColor tabBarTabLineSelected() { return isDarkMode() ? darkTabBarTabLineSelected : lightTabBarTabLineSelected; } - -static const QColor tabBarCloseButtonBackgroundHovered(162, 162, 162); -static const QColor tabBarCloseButtonBackgroundPressed(153, 153, 153); -static const QColor tabBarCloseButtonBackgroundSelectedHovered(192, 192, 192); -static const QColor tabBarCloseButtonBackgroundSelectedPressed(181, 181, 181); -static const QColor tabBarCloseButtonCross(100, 100, 100); -static const QColor tabBarCloseButtonCrossSelected(115, 115, 115); - -static const int closeButtonSize = 14; -static const qreal closeButtonCornerRadius = 2.0; - -#ifndef QT_NO_ACCESSIBILITY // This ifdef to avoid "unused function" warning. -QBrush brushForToolButton(bool isOnKeyWindow) -{ - // When a toolbutton in a toolbar is in the 'ON' state, we draw a - // partially transparent background. The colors must be different - // for 'Aqua' and 'DarkAqua' appearances though. - if (isDarkMode()) - return isOnKeyWindow ? QColor(73, 73, 73, 100) : QColor(56, 56, 56, 100); - - return isOnKeyWindow ? QColor(0, 0, 0, 28) : QColor(0, 0, 0, 21); -} -#endif // QT_NO_ACCESSIBILITY - -static const int headerSectionArrowHeight = 6; -static const int headerSectionSeparatorInset = 2; - -// One for each of QStyleHelper::WidgetSizePolicy -static const QMarginsF comboBoxFocusRingMargins[3] = { - { 0.5, 2, 3.5, 4 }, - { 0.5, 1, 2.5, 4 }, - { 0.5, 1.5, 2.5, 3.5 } -}; - -static const QMarginsF pullDownButtonShadowMargins[3] = { - { 0.5, -1, 0.5, 2 }, - { 0.5, -1.5, 0.5, 2.5 }, - { 0.5, 0, 0.5, 1 } -}; - -static const QMarginsF pushButtonShadowMargins[3] = { - { 1.5, -1.5, 1.5, 4.5 }, - { 1.5, -1, 1.5, 4 }, - { 1.5, 0.5, 1.5, 2.5 } -}; - -// These are frame heights as reported by Xcode 9's Interface Builder. -// Alignemnet rectangle's heights match for push and popup buttons -// with respective values 21, 18 and 15. - -static const qreal comboBoxDefaultHeight[3] = { - 26, 22, 19 -}; - -static const qreal pushButtonDefaultHeight[3] = { - 32, 28, 16 -}; - -static const qreal popupButtonDefaultHeight[3] = { - 26, 22, 15 -}; - -static const int toolButtonArrowSize = 7; -static const int toolButtonArrowMargin = 2; - -static const qreal focusRingWidth = 3.5; - -// An application can force 'Aqua' theme while the system theme is one of -// the 'Dark' variants. Since in Qt we sometimes use NSControls and even -// NSCells directly without attaching them to any view hierarchy, we have -// to set NSAppearance.currentAppearance to 'Aqua' manually, to make sure -// the correct rendering path is triggered. Apple recommends us to un-set -// the current appearance back after we finished with drawing. This is what -// AppearanceSync is for. - -class AppearanceSync { -public: - AppearanceSync() - { -#if QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_14) - if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSMojave - && !qt_mac_applicationIsInDarkMode()) { - auto requiredAppearanceName = NSApplication.sharedApplication.effectiveAppearance.name; - if (![NSAppearance.currentAppearance.name isEqualToString:requiredAppearanceName]) { - previous = NSAppearance.currentAppearance; - NSAppearance.currentAppearance = [NSAppearance appearanceNamed:requiredAppearanceName]; - } - } -#endif // QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_14) - } - - ~AppearanceSync() - { - if (previous) - NSAppearance.currentAppearance = previous; - } - -private: - NSAppearance *previous = nil; - - Q_DISABLE_COPY(AppearanceSync) -}; - -static bool setupScroller(NSScroller *scroller, const QStyleOptionSlider *sb) -{ - const qreal length = sb->maximum - sb->minimum + sb->pageStep; - if (qFuzzyIsNull(length)) - return false; - const qreal proportion = sb->pageStep / length; - const qreal range = qreal(sb->maximum - sb->minimum); - qreal value = range ? qreal(sb->sliderValue - sb->minimum) / range : 0; - if (sb->orientation == Qt::Horizontal && sb->direction == Qt::RightToLeft) - value = 1.0 - value; - - scroller.frame = sb->rect.toCGRect(); - scroller.floatValue = value; - scroller.knobProportion = proportion; - return true; -} - -static bool setupSlider(NSSlider *slider, const QStyleOptionSlider *sl) -{ - if (sl->minimum >= sl->maximum) - return false; - - slider.frame = sl->rect.toCGRect(); - slider.minValue = sl->minimum; - slider.maxValue = sl->maximum; - slider.intValue = sl->sliderPosition; - slider.enabled = sl->state & QStyle::State_Enabled; - if (sl->tickPosition != QStyleOptionSlider::NoTicks) { - // Set numberOfTickMarks, but TicksBothSides will be treated differently - int interval = sl->tickInterval; - if (interval == 0) { - interval = sl->pageStep; - if (interval == 0) - interval = sl->singleStep; - if (interval == 0) - interval = 1; // return false? - } - slider.numberOfTickMarks = 1 + ((sl->maximum - sl->minimum) / interval); - - const bool ticksAbove = sl->tickPosition == QStyleOptionSlider::TicksAbove; - if (sl->orientation == Qt::Horizontal) - slider.tickMarkPosition = ticksAbove ? NSTickMarkPositionAbove : NSTickMarkPositionBelow; - else - slider.tickMarkPosition = ticksAbove ? NSTickMarkPositionLeading : NSTickMarkPositionTrailing; - } else { - slider.numberOfTickMarks = 0; - } - - // Ensure the values set above are reflected when asking - // the cell for its metrics and to draw itself. - [slider layoutSubtreeIfNeeded]; - - return true; -} - -static bool isInMacUnifiedToolbarArea(QWindow *window, int windowY) -{ - QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface(); - QPlatformNativeInterface::NativeResourceForIntegrationFunction function = - nativeInterface->nativeResourceFunctionForIntegration("testContentBorderPosition"); - if (!function) - return false; // Not Cocoa platform plugin. - - typedef bool (*TestContentBorderPositionFunction)(QWindow *, int); - return (reinterpret_cast<TestContentBorderPositionFunction>(function))(window, windowY); -} - - -static void drawTabCloseButton(QPainter *p, bool hover, bool selected, bool pressed, bool documentMode) -{ - p->setRenderHints(QPainter::Antialiasing); - QRect rect(0, 0, closeButtonSize, closeButtonSize); - const int width = rect.width(); - const int height = rect.height(); - - if (hover) { - // draw background circle - QColor background; - if (selected) { - if (documentMode) - background = pressed ? tabBarCloseButtonBackgroundSelectedPressed : tabBarCloseButtonBackgroundSelectedHovered; - else - background = QColor(255, 255, 255, pressed ? 150 : 100); // Translucent white - } else { - background = pressed ? tabBarCloseButtonBackgroundPressed : tabBarCloseButtonBackgroundHovered; - if (!documentMode) - background = background.lighter(pressed ? 135 : 140); // Lighter tab background, lighter color - } - - p->setPen(Qt::transparent); - p->setBrush(background); - p->drawRoundedRect(rect, closeButtonCornerRadius, closeButtonCornerRadius); - } - - // draw cross - const int margin = 3; - QPen crossPen; - crossPen.setColor(selected ? (documentMode ? tabBarCloseButtonCrossSelected : Qt::white) : tabBarCloseButtonCross); - crossPen.setWidthF(1.1); - crossPen.setCapStyle(Qt::FlatCap); - p->setPen(crossPen); - p->drawLine(margin, margin, width - margin, height - margin); - p->drawLine(margin, height - margin, width - margin, margin); -} - -QRect rotateTabPainter(QPainter *p, QStyleOptionTab::Shape shape, QRect tabRect) -{ - const auto tabDirection = QMacStylePrivate::tabDirection(shape); - if (QMacStylePrivate::verticalTabs(tabDirection)) { - int newX, newY, newRot; - if (tabDirection == QMacStylePrivate::East) { - newX = tabRect.width(); - newY = tabRect.y(); - newRot = 90; - } else { - newX = 0; - newY = tabRect.y() + tabRect.height(); - newRot = -90; - } - tabRect.setRect(0, 0, tabRect.height(), tabRect.width()); - QTransform transform; - transform.translate(newX, newY); - transform.rotate(newRot); - p->setTransform(transform, true); - } - return tabRect; -} - -void drawTabShape(QPainter *p, const QStyleOptionTab *tabOpt, bool isUnified, int tabOverlap) -{ - QRect rect = tabOpt->rect; - if (QMacStylePrivate::verticalTabs(QMacStylePrivate::tabDirection(tabOpt->shape))) - rect = rect.adjusted(-tabOverlap, 0, 0, 0); - else - rect = rect.adjusted(0, -tabOverlap, 0, 0); - - p->translate(rect.x(), rect.y()); - rect.moveLeft(0); - rect.moveTop(0); - const QRect tabRect = rotateTabPainter(p, tabOpt->shape, rect); - - const int width = tabRect.width(); - const int height = tabRect.height(); - const bool active = (tabOpt->state & QStyle::State_Active); - const bool selected = (tabOpt->state & QStyle::State_Selected); - - const QRect bodyRect(1, 2, width - 2, height - 3); - const QRect topLineRect(1, 0, width - 2, 1); - const QRect bottomLineRect(1, height - 1, width - 2, 1); - if (selected) { - // fill body - if (tabOpt->documentMode && isUnified) { - p->save(); - p->setCompositionMode(QPainter::CompositionMode_Source); - p->fillRect(tabRect, QColor(Qt::transparent)); - p->restore(); - } else if (active) { - p->fillRect(bodyRect, tabBarTabBackgroundActiveSelected()); - // top line - p->fillRect(topLineRect, tabBarTabLineSelected()); - } else { - p->fillRect(bodyRect, tabBarTabBackgroundSelected()); - } - } else { - // when the mouse is over non selected tabs they get a new color - const bool hover = (tabOpt->state & QStyle::State_MouseOver); - if (hover) { - // fill body - p->fillRect(bodyRect, tabBarTabBackgroundActiveHovered()); - // bottom line - p->fillRect(bottomLineRect, isDarkMode() ? QColor(Qt::black) : tabBarTabLineActiveHovered()); - } - } - - // separator lines between tabs - const QRect leftLineRect(0, 1, 1, height - 2); - const QRect rightLineRect(width - 1, 1, 1, height - 2); - const QColor separatorLineColor = active ? tabBarTabLineActive() : tabBarTabLine(); - p->fillRect(leftLineRect, separatorLineColor); - p->fillRect(rightLineRect, separatorLineColor); -} - -void drawTabBase(QPainter *p, const QStyleOptionTabBarBase *tbb) -{ - QRect r = tbb->rect; -// if (QMacStylePrivate::verticalTabs(QMacStylePrivate::tabDirection(tbb->shape))) -// r.setWidth(w->width()); -// else -// r.setHeight(w->height()); - - const QRect tabRect = rotateTabPainter(p, tbb->shape, r); - const int width = tabRect.width(); - const int height = tabRect.height(); - const bool active = (tbb->state & QStyle::State_Active); - - // fill body - const QRect bodyRect(0, 1, width, height - 1); - const QColor bodyColor = active ? tabBarTabBackgroundActive() : tabBarTabBackground(); - p->fillRect(bodyRect, bodyColor); - - // top line - const QRect topLineRect(0, 0, width, 1); - const QColor topLineColor = active ? tabBarTabLineActive() : tabBarTabLine(); - p->fillRect(topLineRect, topLineColor); - - // bottom line - const QRect bottomLineRect(0, height - 1, width, 1); - bool isDocument = false; -// if (const QTabBar *tabBar = qobject_cast<const QTabBar*>(w)) -// isDocument = tabBar->documentMode(); - const QColor bottomLineColor = isDocument && isDarkMode() ? QColor(Qt::black) : active ? tabBarTabLineActive() : tabBarTabLine(); - p->fillRect(bottomLineRect, bottomLineColor); -} - -static QStyleHelper::WidgetSizePolicy getControlSize(const QStyleOption *option) -{ - const auto wsp = QStyleHelper::widgetSizePolicy(option); - if (wsp == QStyleHelper::SizeDefault) - return QStyleHelper::SizeLarge; - - return wsp; -} - -static QString qt_mac_removeMnemonics(const QString &original) -{ - QString returnText(original.size(), QChar()); - int finalDest = 0; - int currPos = 0; - int l = original.length(); - while (l) { - if (original.at(currPos) == QLatin1Char('&')) { - ++currPos; - --l; - if (l == 0) - break; - } else if (original.at(currPos) == QLatin1Char('(') && l >= 4 && - original.at(currPos + 1) == QLatin1Char('&') && - original.at(currPos + 2) != QLatin1Char('&') && - original.at(currPos + 3) == QLatin1Char(')')) { - /* remove mnemonics its format is "\s*(&X)" */ - int n = 0; - while (finalDest > n && returnText.at(finalDest - n - 1).isSpace()) - ++n; - finalDest -= n; - currPos += 4; - l -= 4; - continue; - } - returnText[finalDest] = original.at(currPos); - ++currPos; - ++finalDest; - --l; - } - returnText.truncate(finalDest); - return returnText; -} - -static bool qt_macWindowMainWindow(const QWindow *window) -{ - if (window->handle()) { - if (NSWindow *nswindow = static_cast<NSWindow*>( - QGuiApplication::platformNativeInterface()-> - nativeResourceForWindow(QByteArrayLiteral("nswindow"), - const_cast<QWindow *>(window)))) { - return [nswindow isMainWindow]; - } - } - return false; -} - -#define LargeSmallMini(option, large, small, mini) \ - (option->state & QStyle::State_Small) ? small : ((option->state & QStyle::State_Mini) ? mini : large) - -/***************************************************************************** - QMacCGStyle globals - *****************************************************************************/ -const int macItemFrame = 2; // menu item frame width -const int macItemHMargin = 3; // menu item hor text margin -const int macRightBorder = 12; // right border on mac - -/***************************************************************************** - QMacCGStyle utility functions - *****************************************************************************/ - -enum QAquaMetric { - // Prepend kThemeMetric to get the HIToolBox constant. - // Represents the values already used in QMacStyle. - CheckBoxHeight = 0, - CheckBoxWidth, - EditTextFrameOutset, - FocusRectOutset, - HSliderHeight, - HSliderTickHeight, - LargeProgressBarThickness, - ListHeaderHeight, - MenuSeparatorHeight, // GetThemeMenuSeparatorHeight - MiniCheckBoxHeight, - MiniCheckBoxWidth, - MiniHSliderHeight, - MiniHSliderTickHeight, - MiniPopupButtonHeight, - MiniPushButtonHeight, - MiniRadioButtonHeight, - MiniRadioButtonWidth, - MiniVSliderTickWidth, - MiniVSliderWidth, - NormalProgressBarThickness, - PopupButtonHeight, - ProgressBarShadowOutset, - PushButtonHeight, - RadioButtonHeight, - RadioButtonWidth, - SeparatorSize, - SmallCheckBoxHeight, - SmallCheckBoxWidth, - SmallHSliderHeight, - SmallHSliderTickHeight, - SmallPopupButtonHeight, - SmallProgressBarShadowOutset, - SmallPushButtonHeight, - SmallRadioButtonHeight, - SmallRadioButtonWidth, - SmallVSliderTickWidth, - SmallVSliderWidth, - VSliderTickWidth, - VSliderWidth -}; - -static const int qt_mac_aqua_metrics[] = { - // Values as of macOS 10.12.4 and Xcode 8.3.1 - 18 /* CheckBoxHeight */, - 18 /* CheckBoxWidth */, - 1 /* EditTextFrameOutset */, - 4 /* FocusRectOutset */, - 22 /* HSliderHeight */, - 5 /* HSliderTickHeight */, - 16 /* LargeProgressBarThickness */, - 17 /* ListHeaderHeight */, - 12 /* MenuSeparatorHeight, aka GetThemeMenuSeparatorHeight */, - 11 /* MiniCheckBoxHeight */, - 11 /* MiniCheckBoxWidth */, - 12 /* MiniHSliderHeight */, - 4 /* MiniHSliderTickHeight */, - 15 /* MiniPopupButtonHeight */, - 16 /* MiniPushButtonHeight */, - 11 /* MiniRadioButtonHeight */, - 11 /* MiniRadioButtonWidth */, - 4 /* MiniVSliderTickWidth */, - 12 /* MiniVSliderWidth */, - 12 /* NormalProgressBarThickness */, - 20 /* PopupButtonHeight */, - 4 /* ProgressBarShadowOutset */, - 20 /* PushButtonHeight */, - 18 /* RadioButtonHeight */, - 18 /* RadioButtonWidth */, - 1 /* SeparatorSize */, - 16 /* SmallCheckBoxHeight */, - 14 /* SmallCheckBoxWidth */, - 15 /* SmallHSliderHeight */, - 4 /* SmallHSliderTickHeight */, - 17 /* SmallPopupButtonHeight */, - 2 /* SmallProgressBarShadowOutset */, - 17 /* SmallPushButtonHeight */, - 15 /* SmallRadioButtonHeight */, - 15 /* SmallRadioButtonWidth */, - 4 /* SmallVSliderTickWidth */, - 15 /* SmallVSliderWidth */, - 5 /* VSliderTickWidth */, - 22 /* VSliderWidth */ -}; - -static inline int qt_mac_aqua_get_metric(QAquaMetric m) -{ - return qt_mac_aqua_metrics[m]; -} - -static QSize qt_aqua_get_known_size(QStyle::ContentsType ct, const QStyleOption *opt, - QSize szHint, QStyleHelper::WidgetSizePolicy sz) -{ - QSize ret(-1, -1); - if (sz != QStyleHelper::SizeSmall && sz != QStyleHelper::SizeLarge && sz != QStyleHelper::SizeMini) { - qDebug("Not sure how to return this..."); - return ret; - } -// if ((widget && widget->testAttribute(Qt::WA_SetFont)) || !QApplication::desktopSettingsAware()) { -// // If you're using a custom font and it's bigger than the default font, -// // then no constraints for you. If you are smaller, we can try to help you out -// QFont font = qt_app_fonts_hash()->value(widget->metaObject()->className(), QFont()); -// if (widget->font().pointSize() > font.pointSize()) -// return ret; -// } - - // TODO: investigate how this function is used. 'ct' can/should be - // filled out correctly in the styleoption already from the styleitem? - Q_ASSERT(ct != QStyle::CT_CustomBase); -// if (ct == QStyle::CT_CustomBase && widget) { -//#if QT_CONFIG(pushbutton) -// if (qobject_cast<const QPushButton *>(widg)) -// ct = QStyle::CT_PushButton; -//#endif -// else if (qobject_cast<const QRadioButton *>(widget)) -// ct = QStyle::CT_RadioButton; -//#if QT_CONFIG(checkbox) -// else if (qobject_cast<const QCheckBox *>(widg)) -// ct = QStyle::CT_CheckBox; -//#endif -//#if QT_CONFIG(combobox) -// else if (qobject_cast<const QComboBox *>(widg)) -// ct = QStyle::CT_ComboBox; -//#endif -//#if QT_CONFIG(toolbutton) -// else if (qobject_cast<const QToolButton *>(widg)) -// ct = QStyle::CT_ToolButton; -//#endif -// else if (qobject_cast<const QSlider *>(widget)) -// ct = QStyle::CT_Slider; -//#if QT_CONFIG(progressbar) -// else if (qobject_cast<const QProgressBar *>(widg)) -// ct = QStyle::CT_ProgressBar; -//#endif -//#if QT_CONFIG(lineedit) -// else if (qobject_cast<const QLineEdit *>(widg)) -// ct = QStyle::CT_LineEdit; -//#endif -//#if QT_CONFIG(itemviews) -// else if (qobject_cast<const QHeaderView *>(widg)) -// ct = QStyle::CT_HeaderSection; -//#endif -//#if QT_CONFIG(menubar) -// else if (qobject_cast<const QMenuBar *>(widg)) -// ct = QStyle::CT_MenuBar; -//#endif -//#if QT_CONFIG(sizegrip) -// else if (qobject_cast<const QSizeGrip *>(widg)) -// ct = QStyle::CT_SizeGrip; -//#endif -// else -// return ret; -// } - - switch (ct) { - case QStyle::CT_PushButton: { - const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt); - if (btn) { - QString buttonText = qt_mac_removeMnemonics(btn->text); - if (buttonText.contains(QLatin1Char('\n'))) - ret = QSize(-1, -1); - else if (sz == QStyleHelper::SizeLarge) - ret = QSize(-1, qt_mac_aqua_get_metric(PushButtonHeight)); - else if (sz == QStyleHelper::SizeSmall) - ret = QSize(-1, qt_mac_aqua_get_metric(SmallPushButtonHeight)); - else if (sz == QStyleHelper::SizeMini) - ret = QSize(-1, qt_mac_aqua_get_metric(MiniPushButtonHeight)); - - if (!btn->icon.isNull()){ - // If the button got an icon, and the icon is larger than the - // button, we can't decide on a default size - ret.setWidth(-1); - if (ret.height() < btn->iconSize.height()) - ret.setHeight(-1); - } - else if (buttonText == QLatin1String("OK") || buttonText == QLatin1String("Cancel")){ - // Aqua Style guidelines restrict the size of OK and Cancel buttons to 68 pixels. - // However, this doesn't work for German, therefore only do it for English, - // I suppose it would be better to do some sort of lookups for languages - // that like to have really long words. - // FIXME This is not exactly true. Out of context, OK buttons have their - // implicit size calculated the same way as any other button. Inside a - // QDialogButtonBox, their size should be calculated such that the action - // or accept button (i.e., rightmost) and cancel button have the same width. - ret.setWidth(69); - } - } else { - // The only sensible thing to do is to return whatever the style suggests... - if (sz == QStyleHelper::SizeLarge) - ret = QSize(-1, qt_mac_aqua_get_metric(PushButtonHeight)); - else if (sz == QStyleHelper::SizeSmall) - ret = QSize(-1, qt_mac_aqua_get_metric(SmallPushButtonHeight)); - else if (sz == QStyleHelper::SizeMini) - ret = QSize(-1, qt_mac_aqua_get_metric(MiniPushButtonHeight)); - else - // Since there's no default size we return the large size... - ret = QSize(-1, qt_mac_aqua_get_metric(PushButtonHeight)); - } - break; } - case QStyle::CT_SizeGrip: - // Not HIG kosher: mimic what we were doing earlier until we support 4-edge resizing in MDI subwindows - if (sz == QStyleHelper::SizeLarge || sz == QStyleHelper::SizeSmall) { - int s = sz == QStyleHelper::SizeSmall ? 16 : 22; // large: pixel measured from HITheme, small: from my hat - int width = 0; -//#if QT_CONFIG(mdiarea) -// if (widg && qobject_cast<QMdiSubWindow *>(widg->parentWidget())) -// width = s; -//#endif - ret = QSize(width, s); - } - break; - case QStyle::CT_ComboBox: - switch (sz) { - case QStyleHelper::SizeLarge: - ret = QSize(-1, qt_mac_aqua_get_metric(PopupButtonHeight)); - break; - case QStyleHelper::SizeSmall: - ret = QSize(-1, qt_mac_aqua_get_metric(SmallPopupButtonHeight)); - break; - case QStyleHelper::SizeMini: - ret = QSize(-1, qt_mac_aqua_get_metric(MiniPopupButtonHeight)); - break; - default: - break; - } - break; - case QStyle::CT_ToolButton: - if (sz == QStyleHelper::SizeSmall) { - int width = 0, height = 0; - if (szHint == QSize(-1, -1)) { //just 'guess'.. -//#if QT_CONFIG(toolbutton) -// const QStyleOptionToolButton *bt = qstyleoption_cast<const QStyleOptionToolButton *>(opt); -// // If this conversion fails then the widget was not what it claimed to be. -// if(bt) { -// if (!bt->icon.isNull()) { -// QSize iconSize = bt->iconSize; -// QSize pmSize = bt->icon.actualSize(QSize(32, 32), QIcon::Normal); -// width = qMax(width, qMax(iconSize.width(), pmSize.width())); -// height = qMax(height, qMax(iconSize.height(), pmSize.height())); -// } -// if (!bt->text.isNull() && bt->toolButtonStyle != Qt::ToolButtonIconOnly) { -// int text_width = bt->fontMetrics.horizontalAdvance(bt->text), -// text_height = bt->fontMetrics.height(); -// if (bt->toolButtonStyle == Qt::ToolButtonTextUnderIcon) { -// width = qMax(width, text_width); -// height += text_height; -// } else { -// width += text_width; -// width = qMax(height, text_height); -// } -// } -// } else -//#endif - { - // Let's return the size hint... - width = szHint.width(); - height = szHint.height(); - } - } else { - width = szHint.width(); - height = szHint.height(); - } - width = qMax(20, width + 5); //border - height = qMax(20, height + 5); //border - ret = QSize(width, height); - } - break; - case QStyle::CT_Slider: { - int w = -1; - const QStyleOptionSlider *sld = qstyleoption_cast<const QStyleOptionSlider *>(opt); - // If this conversion fails then the widget was not what it claimed to be. - if(sld) { - if (sz == QStyleHelper::SizeLarge) { - if (sld->orientation == Qt::Horizontal) { - w = qt_mac_aqua_get_metric(HSliderHeight); - if (sld->tickPosition != QStyleOptionSlider::NoTicks) - w += qt_mac_aqua_get_metric(HSliderTickHeight); - } else { - w = qt_mac_aqua_get_metric(VSliderWidth); - if (sld->tickPosition != QStyleOptionSlider::NoTicks) - w += qt_mac_aqua_get_metric(VSliderTickWidth); - } - } else if (sz == QStyleHelper::SizeSmall) { - if (sld->orientation == Qt::Horizontal) { - w = qt_mac_aqua_get_metric(SmallHSliderHeight); - if (sld->tickPosition != QStyleOptionSlider::NoTicks) - w += qt_mac_aqua_get_metric(SmallHSliderTickHeight); - } else { - w = qt_mac_aqua_get_metric(SmallVSliderWidth); - if (sld->tickPosition != QStyleOptionSlider::NoTicks) - w += qt_mac_aqua_get_metric(SmallVSliderTickWidth); - } - } else if (sz == QStyleHelper::SizeMini) { - if (sld->orientation == Qt::Horizontal) { - w = qt_mac_aqua_get_metric(MiniHSliderHeight); - if (sld->tickPosition != QStyleOptionSlider::NoTicks) - w += qt_mac_aqua_get_metric(MiniHSliderTickHeight); - } else { - w = qt_mac_aqua_get_metric(MiniVSliderWidth); - if (sld->tickPosition != QStyleOptionSlider::NoTicks) - w += qt_mac_aqua_get_metric(MiniVSliderTickWidth); - } - } - } else { - // This is tricky, we were requested to find a size for a slider which is not - // a slider. We don't know if this is vertical or horizontal or if we need to - // have tick marks or not. - // For this case we will return an horizontal slider without tick marks. - w = qt_mac_aqua_get_metric(HSliderHeight); - w += qt_mac_aqua_get_metric(HSliderTickHeight); - } - if (sld->orientation == Qt::Horizontal) - ret.setHeight(w); - else - ret.setWidth(w); - break; - } -//#if QT_CONFIG(progressbar) -// case QStyle::CT_ProgressBar: { -// int finalValue = -1; -// Qt::Orientation orient = Qt::Horizontal; -// if (const QProgressBar *pb = qobject_cast<const QProgressBar *>(widg)) -// orient = pb->orientation(); - -// if (sz == QStyleHelper::SizeLarge) -// finalValue = qt_mac_aqua_get_metric(LargeProgressBarThickness) -// + qt_mac_aqua_get_metric(ProgressBarShadowOutset); -// else -// finalValue = qt_mac_aqua_get_metric(NormalProgressBarThickness) -// + qt_mac_aqua_get_metric(SmallProgressBarShadowOutset); -// if (orient == Qt::Horizontal) -// ret.setHeight(finalValue); -// else -// ret.setWidth(finalValue); -// break; -// } -//#endif -//#if QT_CONFIG(combobox) -// case QStyle::CT_LineEdit: -// if (!widg || !qobject_cast<QComboBox *>(widg->parentWidget())) { -// //should I take into account the font dimentions of the lineedit? -Sam -// if (sz == QStyleHelper::SizeLarge) -// ret = QSize(-1, 21); -// else -// ret = QSize(-1, 19); -// } -// break; -//#endif - case QStyle::CT_HeaderSection: -//#if QT_CONFIG(treeview) -// if (isTreeView(widg)) -// ret = QSize(-1, qt_mac_aqua_get_metric(ListHeaderHeight)); -//#endif - break; - case QStyle::CT_MenuBar: - if (sz == QStyleHelper::SizeLarge) { - ret = QSize(-1, [[NSApp mainMenu] menuBarHeight]); - // In the qt_mac_set_native_menubar(false) case, - // we come it here with a zero-height main menu, - // preventing the in-window menu from displaying. - // Use 22 pixels for the height, by observation. - if (ret.height() <= 0) - ret.setHeight(22); - } - break; - default: - break; - } - return ret; -} - -#if defined(QMAC_QAQUASTYLE_SIZE_CONSTRAIN) || defined(DEBUG_SIZE_CONSTRAINT) -static QStyleHelper::WidgetSizePolicy qt_aqua_guess_size( - const QSize &large, - const QSize &small, - const QSize &mini) -{ - if (large == QSize(-1, -1)) { - if (small != QSize(-1, -1)) - return QStyleHelper::SizeSmall; - if (mini != QSize(-1, -1)) - return QStyleHelper::SizeMini; - return QStyleHelper::SizeDefault; - } else if (small == QSize(-1, -1)) { - if (mini != QSize(-1, -1)) - return QStyleHelper::SizeMini; - return QStyleHelper::SizeLarge; - } else if (mini == QSize(-1, -1)) { - return QStyleHelper::SizeLarge; - } - - if (qEnvironmentVariableIsSet("QWIDGET_ALL_SMALL")) - return QStyleHelper::SizeSmall; - else if (qEnvironmentVariableIsSet("QWIDGET_ALL_MINI")) - return QStyleHelper::SizeMini; - - return QStyleHelper::SizeLarge; -} -#endif - -QPainterPath QMacStylePrivate::windowPanelPath(const QRectF &r) const -{ - static const qreal CornerPointOffset = 5.5; - static const qreal CornerControlOffset = 2.1; - - QPainterPath path; - // Top-left corner - path.moveTo(r.left(), r.top() + CornerPointOffset); - path.cubicTo(r.left(), r.top() + CornerControlOffset, - r.left() + CornerControlOffset, r.top(), - r.left() + CornerPointOffset, r.top()); - // Top-right corner - path.lineTo(r.right() - CornerPointOffset, r.top()); - path.cubicTo(r.right() - CornerControlOffset, r.top(), - r.right(), r.top() + CornerControlOffset, - r.right(), r.top() + CornerPointOffset); - // Bottom-right corner - path.lineTo(r.right(), r.bottom() - CornerPointOffset); - path.cubicTo(r.right(), r.bottom() - CornerControlOffset, - r.right() - CornerControlOffset, r.bottom(), - r.right() - CornerPointOffset, r.bottom()); - // Bottom-right corner - path.lineTo(r.left() + CornerPointOffset, r.bottom()); - path.cubicTo(r.left() + CornerControlOffset, r.bottom(), - r.left(), r.bottom() - CornerControlOffset, - r.left(), r.bottom() - CornerPointOffset); - path.lineTo(r.left(), r.top() + CornerPointOffset); - - return path; -} - -QMacStylePrivate::CocoaControlType QMacStylePrivate::windowButtonCocoaControl(QStyle::SubControl sc) const -{ - struct WindowButtons { - QStyle::SubControl sc; - QMacStylePrivate::CocoaControlType ct; - }; - - static const WindowButtons buttons[] = { - { QStyle::SC_TitleBarCloseButton, QMacStylePrivate::Button_WindowClose }, - { QStyle::SC_TitleBarMinButton, QMacStylePrivate::Button_WindowMiniaturize }, - { QStyle::SC_TitleBarMaxButton, QMacStylePrivate::Button_WindowZoom } - }; - - for (const auto &wb : buttons) - if (wb.sc == sc) - return wb.ct; - - return NoControl; -} - - -void QMacStylePrivate::tabLayout(const QStyleOptionTab *opt, QRect *textRect, QRect *iconRect) const -{ - Q_ASSERT(textRect); - Q_ASSERT(iconRect); - QRect tr = opt->rect; - const bool verticalTabs = opt->shape == QStyleOptionTab::RoundedEast - || opt->shape == QStyleOptionTab::RoundedWest - || opt->shape == QStyleOptionTab::TriangularEast - || opt->shape == QStyleOptionTab::TriangularWest; - if (verticalTabs) - tr.setRect(0, 0, tr.height(), tr.width()); // 0, 0 as we will have a translate transform - - int verticalShift = proxyStyle->pixelMetric(QStyle::PM_TabBarTabShiftVertical, opt); - int horizontalShift = proxyStyle->pixelMetric(QStyle::PM_TabBarTabShiftHorizontal, opt); - const int hpadding = 4; - const int vpadding = proxyStyle->pixelMetric(QStyle::PM_TabBarTabVSpace, opt) / 2; - if (opt->shape == QStyleOptionTab::RoundedSouth || opt->shape == QStyleOptionTab::TriangularSouth) - verticalShift = -verticalShift; - tr.adjust(hpadding, verticalShift - vpadding, horizontalShift - hpadding, vpadding); - - // left widget - if (!opt->leftButtonSize.isEmpty()) { - const int buttonSize = verticalTabs ? opt->leftButtonSize.height() : opt->leftButtonSize.width(); - tr.setLeft(tr.left() + 4 + buttonSize); - // make text aligned to center - if (opt->rightButtonSize.isEmpty()) - tr.setRight(tr.right() - 4 - buttonSize); - } - // right widget - if (!opt->rightButtonSize.isEmpty()) { - const int buttonSize = verticalTabs ? opt->rightButtonSize.height() : opt->rightButtonSize.width(); - tr.setRight(tr.right() - 4 - buttonSize); - // make text aligned to center - if (opt->leftButtonSize.isEmpty()) - tr.setLeft(tr.left() + 4 + buttonSize); - } - - // icon - if (!opt->icon.isNull()) { - QSize iconSize = opt->iconSize; - if (!iconSize.isValid()) { - int iconExtent = proxyStyle->pixelMetric(QStyle::PM_SmallIconSize); - iconSize = QSize(iconExtent, iconExtent); - } - QSize tabIconSize = opt->icon.actualSize(iconSize, - (opt->state & QStyle::State_Enabled) ? QIcon::Normal : QIcon::Disabled, - (opt->state & QStyle::State_Selected) ? QIcon::On : QIcon::Off); - // High-dpi icons do not need adjustment; make sure tabIconSize is not larger than iconSize - tabIconSize = QSize(qMin(tabIconSize.width(), iconSize.width()), qMin(tabIconSize.height(), iconSize.height())); - - const int stylePadding = proxyStyle->pixelMetric(QStyle::PM_TabBarTabHSpace, opt) / 2 - hpadding; - - if (opt->documentMode) { - // documents show the icon as part of the the text - const int textWidth = - opt->fontMetrics.boundingRect(tr, Qt::AlignCenter | Qt::TextShowMnemonic, opt->text).width(); - *iconRect = QRect(tr.center().x() - textWidth / 2 - stylePadding - tabIconSize.width(), - tr.center().y() - tabIconSize.height() / 2, - tabIconSize.width(), tabIconSize.height()); - } else { - *iconRect = QRect(tr.left() + stylePadding, tr.center().y() - tabIconSize.height() / 2, - tabIconSize.width(), tabIconSize.height()); - } - if (!verticalTabs) - *iconRect = proxyStyle->visualRect(opt->direction, opt->rect, *iconRect); - - tr.setLeft(tr.left() + stylePadding + tabIconSize.width() + 4); - tr.setRight(tr.right() - stylePadding - tabIconSize.width() - 4); - } - - if (!verticalTabs) - tr = proxyStyle->visualRect(opt->direction, opt->rect, tr); - - *textRect = tr; -} - -QMacStylePrivate::Direction QMacStylePrivate::tabDirection(QStyleOptionTab::Shape shape) -{ - switch (shape) { - case QStyleOptionTab::RoundedSouth: - case QStyleOptionTab::TriangularSouth: - return South; - case QStyleOptionTab::RoundedNorth: - case QStyleOptionTab::TriangularNorth: - return North; - case QStyleOptionTab::RoundedWest: - case QStyleOptionTab::TriangularWest: - return West; - case QStyleOptionTab::RoundedEast: - case QStyleOptionTab::TriangularEast: - return East; - } -} - -bool QMacStylePrivate::verticalTabs(QMacStylePrivate::Direction direction) -{ - return (direction == QMacStylePrivate::East - || direction == QMacStylePrivate::West); -} - -QStyleHelper::WidgetSizePolicy QMacStylePrivate::effectiveAquaSizeConstrain(const QStyleOption *option, - QStyle::ContentsType ct, - QSize szHint, QSize *insz) const -{ - QStyleHelper::WidgetSizePolicy sz = aquaSizeConstrain(option, ct, szHint, insz); - if (sz == QStyleHelper::SizeDefault) - return QStyleHelper::SizeLarge; - return sz; -} - -QStyleHelper::WidgetSizePolicy QMacStylePrivate::aquaSizeConstrain(const QStyleOption *option, - QStyle::ContentsType ct, QSize szHint, QSize *insz) const -{ - if (!option) - return QStyleHelper::SizeLarge; - - if (option->state & QStyle::State_Small) - return QStyleHelper::SizeSmall; - if (option->state & QStyle::State_Mini) - return QStyleHelper::SizeMini; - - return QStyleHelper::SizeLarge; - -} - -uint qHash(const QMacStylePrivate::CocoaControl &cw, uint seed = 0) -{ - return ((cw.type << 2) | cw.size) ^ seed; -} - -QMacStylePrivate::CocoaControl::CocoaControl() - : type(NoControl), size(QStyleHelper::SizeDefault) -{ -} - -QMacStylePrivate::CocoaControl::CocoaControl(CocoaControlType t, QStyleHelper::WidgetSizePolicy s) - : type(t), size(s) -{ -} - -bool QMacStylePrivate::CocoaControl::operator==(const CocoaControl &other) const -{ - return other.type == type && other.size == size; -} - -QSizeF QMacStylePrivate::CocoaControl::defaultFrameSize() const -{ - // We need this because things like NSView.alignmentRectInsets - // or -[NSCell titleRectForBounds:] won't work unless the control - // has a reasonable frame set. IOW, it's a chicken and egg problem. - // These values are as observed in Xcode 9's Interface Builder. - - if (type == Button_PushButton) - return QSizeF(-1, pushButtonDefaultHeight[size]); - - if (type == Button_PopupButton - || type == Button_PullDown) - return QSizeF(-1, popupButtonDefaultHeight[size]); - - if (type == ComboBox) - return QSizeF(-1, comboBoxDefaultHeight[size]); - - return QSizeF(); -} - -QRectF QMacStylePrivate::CocoaControl::adjustedControlFrame(const QRectF &rect) const -{ - QRectF frameRect; - const auto frameSize = defaultFrameSize(); - if (type == QMacStylePrivate::Button_SquareButton) { - frameRect = rect.adjusted(3, 1, -3, -1) - .adjusted(focusRingWidth, focusRingWidth, -focusRingWidth, -focusRingWidth); - } else if (type == QMacStylePrivate::Button_PushButton) { - // Start from the style option's top-left corner. - frameRect = QRectF(rect.topLeft(), - QSizeF(rect.width(), frameSize.height())); - if (size == QStyleHelper::SizeSmall) - frameRect = frameRect.translated(0, 1.5); - else if (size == QStyleHelper::SizeMini) - frameRect = frameRect.adjusted(0, 0, -8, 0).translated(4, 4); - } else { - // Center in the style option's rect. - frameRect = QRectF(QPointF(0, (rect.height() - frameSize.height()) / 2.0), - QSizeF(rect.width(), frameSize.height())); - frameRect = frameRect.translated(rect.topLeft()); - if (type == QMacStylePrivate::Button_PullDown || type == QMacStylePrivate::Button_PopupButton) { - if (size == QStyleHelper::SizeLarge) - frameRect = frameRect.adjusted(0, 0, -6, 0).translated(3, 0); - else if (size == QStyleHelper::SizeSmall) - frameRect = frameRect.adjusted(0, 0, -4, 0).translated(2, 1); - else if (size == QStyleHelper::SizeMini) - frameRect = frameRect.adjusted(0, 0, -9, 0).translated(5, 0); - } else if (type == QMacStylePrivate::ComboBox) { - frameRect = frameRect.adjusted(0, 0, -6, 0).translated(4, 0); - } - } - - return frameRect; -} - -QMarginsF QMacStylePrivate::CocoaControl::titleMargins() const -{ - if (type == QMacStylePrivate::Button_PushButton) { - if (size == QStyleHelper::SizeLarge) - return QMarginsF(12, 5, 12, 9); - if (size == QStyleHelper::SizeSmall) - return QMarginsF(12, 4, 12, 9); - if (size == QStyleHelper::SizeMini) - return QMarginsF(10, 1, 10, 2); - } - - if (type == QMacStylePrivate::Button_PullDown) { - if (size == QStyleHelper::SizeLarge) - return QMarginsF(7.5, 2.5, 22.5, 5.5); - if (size == QStyleHelper::SizeSmall) - return QMarginsF(7.5, 2, 20.5, 4); - if (size == QStyleHelper::SizeMini) - return QMarginsF(4.5, 0, 16.5, 2); - } - - if (type == QMacStylePrivate::Button_SquareButton) - return QMarginsF(6, 1, 6, 2); - - return QMarginsF(); -} - -bool QMacStylePrivate::CocoaControl::getCocoaButtonTypeAndBezelStyle(NSButtonType *buttonType, NSBezelStyle *bezelStyle) const -{ - switch (type) { - case Button_CheckBox: - *buttonType = NSSwitchButton; - *bezelStyle = NSRegularSquareBezelStyle; - break; - case Button_Disclosure: - *buttonType = NSOnOffButton; - *bezelStyle = NSDisclosureBezelStyle; - break; - case Button_RadioButton: - *buttonType = NSRadioButton; - *bezelStyle = NSRegularSquareBezelStyle; - break; - case Button_SquareButton: - *buttonType = NSPushOnPushOffButton; - *bezelStyle = NSShadowlessSquareBezelStyle; - break; - case Button_PushButton: - *buttonType = NSPushOnPushOffButton; - *bezelStyle = NSRoundedBezelStyle; - break; - default: - return false; - } - - return true; -} - -QMacStylePrivate::CocoaControlType cocoaControlType(const QStyleOption *opt) -{ - if (const auto *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - const bool hasMenu = btn->features & QStyleOptionButton::HasMenu; - // When the contents won't fit in a large sized button, - // and WA_MacNormalSize is not set, make the button square. - // Threshold used to be at 34, not 32. - const auto maxNonSquareHeight = pushButtonDefaultHeight[QStyleHelper::SizeLarge]; - const bool isSquare = (btn->features & QStyleOptionButton::Flat) - || (btn->rect.height() > maxNonSquareHeight); -// && !(w && w->testAttribute(Qt::WA_MacNormalSize))); - return (isSquare? QMacStylePrivate::Button_SquareButton : - hasMenu ? QMacStylePrivate::Button_PullDown : - QMacStylePrivate::Button_PushButton); - } - - if (const auto *combo = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - if (combo->editable) - return QMacStylePrivate::ComboBox; - // TODO Me may support square, non-editable combo boxes, but not more than that - return QMacStylePrivate::Button_PopupButton; - } - - return QMacStylePrivate::NoControl; -} - -/** - Carbon draws comboboxes (and other views) outside the rect given as argument. Use this function to obtain - the corresponding inner rect for drawing the same combobox so that it stays inside the given outerBounds. -*/ -CGRect QMacStylePrivate::comboboxInnerBounds(const CGRect &outerBounds, const CocoaControl &cocoaWidget) -{ - CGRect innerBounds = outerBounds; - // Carbon draw parts of the view outside the rect. - // So make the rect a bit smaller to compensate - // (I wish HIThemeGetButtonBackgroundBounds worked) - if (cocoaWidget.type == Button_PopupButton) { - switch (cocoaWidget.size) { - case QStyleHelper::SizeSmall: - innerBounds.origin.x += 3; - innerBounds.origin.y += 3; - innerBounds.size.width -= 6; - innerBounds.size.height -= 7; - break; - case QStyleHelper::SizeMini: - innerBounds.origin.x += 2; - innerBounds.origin.y += 2; - innerBounds.size.width -= 5; - innerBounds.size.height -= 6; - break; - case QStyleHelper::SizeLarge: - case QStyleHelper::SizeDefault: - innerBounds.origin.x += 2; - innerBounds.origin.y += 2; - innerBounds.size.width -= 5; - innerBounds.size.height -= 6; - } - } else if (cocoaWidget.type == ComboBox) { - switch (cocoaWidget.size) { - case QStyleHelper::SizeSmall: - innerBounds.origin.x += 3; - innerBounds.origin.y += 3; - innerBounds.size.width -= 7; - innerBounds.size.height -= 8; - break; - case QStyleHelper::SizeMini: - innerBounds.origin.x += 3; - innerBounds.origin.y += 3; - innerBounds.size.width -= 4; - innerBounds.size.height -= 8; - break; - case QStyleHelper::SizeLarge: - case QStyleHelper::SizeDefault: - innerBounds.origin.x += 3; - innerBounds.origin.y += 2; - innerBounds.size.width -= 6; - innerBounds.size.height -= 8; - } - } - - return innerBounds; -} - -/** - Inside a combobox Qt places a line edit widget. The size of this widget should depend on the kind - of combobox we choose to draw. This function calculates and returns this size. -*/ -QRectF QMacStylePrivate::comboboxEditBounds(const QRectF &outerBounds, const CocoaControl &cw) -{ - QRectF ret = outerBounds; - if (cw.type == ComboBox) { - switch (cw.size) { - case QStyleHelper::SizeLarge: - ret = ret.adjusted(0, 0, -25, 0).translated(2, 4.5); - ret.setHeight(16); - break; - case QStyleHelper::SizeSmall: - ret = ret.adjusted(0, 0, -22, 0).translated(2, 3); - ret.setHeight(14); - break; - case QStyleHelper::SizeMini: - ret = ret.adjusted(0, 0, -19, 0).translated(2, 2.5); - ret.setHeight(10.5); - break; - default: - break; - } - } else if (cw.type == Button_PopupButton) { - switch (cw.size) { - case QStyleHelper::SizeLarge: - ret.adjust(10, 1, -23, -4); - break; - case QStyleHelper::SizeSmall: - ret.adjust(10, 4, -20, -3); - break; - case QStyleHelper::SizeMini: - ret.adjust(9, 0, -19, 0); - ret.setHeight(13); - break; - default: - break; - } - } - return ret; -} - -QMacStylePrivate::QMacStylePrivate() - : backingStoreNSView(nil) -{ - if (auto *ssf = QGuiApplicationPrivate::platformTheme()->font(QPlatformTheme::SmallFont)) - smallSystemFont = *ssf; - if (auto *msf = QGuiApplicationPrivate::platformTheme()->font(QPlatformTheme::MiniFont)) - miniSystemFont = *msf; -} - -QMacStylePrivate::~QMacStylePrivate() -{ - QMacAutoReleasePool pool; - for (NSView *b : cocoaControls) - [b release]; - for (NSCell *cell : cocoaCells) - [cell release]; -} - -NSView *QMacStylePrivate::cocoaControl(CocoaControl cocoaControl) const -{ - if (cocoaControl.type == QMacStylePrivate::NoControl - || cocoaControl.size == QStyleHelper::SizeDefault) - return nil; - - if (cocoaControl.type == Box) { - if (__builtin_available(macOS 10.14, *)) { - if (qt_mac_applicationIsInDarkMode()) { - // See render code in drawPrimitive(PE_FrameTabWidget) - cocoaControl.type = Box_Dark; - } - } - } - - NSView *bv = cocoaControls.value(cocoaControl, nil); - if (!bv) { - switch (cocoaControl.type) { - case Box: { - NSBox *box = [[NSBox alloc] init]; - bv = box; - box.title = @""; - box.titlePosition = NSNoTitle; - break; - } - case Box_Dark: - bv = [[QDarkNSBox alloc] init]; - break; - case Button_CheckBox: - case Button_Disclosure: - case Button_PushButton: - case Button_RadioButton: - case Button_SquareButton: { - NSButton *bc = [[NSButton alloc] init]; - bc.title = @""; - // See below for style and bezel setting. - bv = bc; - break; - } - case Button_PopupButton: - case Button_PullDown: { - NSPopUpButton *bc = [[NSPopUpButton alloc] init]; - bc.title = @""; - if (cocoaControl.type == Button_PullDown) - bc.pullsDown = YES; - bv = bc; - break; - } - case Button_WindowClose: - case Button_WindowMiniaturize: - case Button_WindowZoom: { - const NSWindowButton button = [=] { - switch (cocoaControl.type) { - case Button_WindowClose: - return NSWindowCloseButton; - case Button_WindowMiniaturize: - return NSWindowMiniaturizeButton; - case Button_WindowZoom: - return NSWindowZoomButton; - default: - break; - } - Q_UNREACHABLE(); - } (); - const auto styleMask = NSWindowStyleMaskTitled - | NSWindowStyleMaskClosable - | NSWindowStyleMaskMiniaturizable - | NSWindowStyleMaskResizable; - bv = [NSWindow standardWindowButton:button forStyleMask:styleMask]; - [bv retain]; - break; - } - case ComboBox: - bv = [[NSComboBox alloc] init]; - break; - case ProgressIndicator_Determinate: - bv = [[NSProgressIndicator alloc] init]; - break; - case ProgressIndicator_Indeterminate: - bv = [[QIndeterminateProgressIndicator alloc] init]; - break; - case Scroller_Horizontal: - bv = [[NSScroller alloc] initWithFrame:NSMakeRect(0, 0, 200, 20)]; - break; - case Scroller_Vertical: - // Cocoa sets the orientation from the view's frame - // at construction time, and it cannot be changed later. - bv = [[NSScroller alloc] initWithFrame:NSMakeRect(0, 0, 20, 200)]; - break; - case Slider_Horizontal: - bv = [[NSSlider alloc] initWithFrame:NSMakeRect(0, 0, 200, 20)]; - break; - case Slider_Vertical: - // Cocoa sets the orientation from the view's frame - // at construction time, and it cannot be changed later. - bv = [[NSSlider alloc] initWithFrame:NSMakeRect(0, 0, 20, 200)]; - break; - case SplitView_Horizontal: - bv = [[NSSplitView alloc] init]; - break; - case SplitView_Vertical: - bv = [[QVerticalSplitView alloc] init]; - break; - case TextField: - bv = [[NSTextField alloc] init]; - break; - default: - break; - } - - if ([bv isKindOfClass:[NSControl class]]) { - auto *ctrl = static_cast<NSControl *>(bv); - switch (cocoaControl.size) { - case QStyleHelper::SizeSmall: - ctrl.controlSize = NSControlSizeSmall; - break; - case QStyleHelper::SizeMini: - ctrl.controlSize = NSControlSizeMini; - break; - default: - break; - } - } else if (cocoaControl.type == ProgressIndicator_Determinate || - cocoaControl.type == ProgressIndicator_Indeterminate) { - auto *pi = static_cast<NSProgressIndicator *>(bv); - pi.indeterminate = (cocoaControl.type == ProgressIndicator_Indeterminate); - switch (cocoaControl.size) { - case QStyleHelper::SizeSmall: - pi.controlSize = NSControlSizeSmall; - break; - case QStyleHelper::SizeMini: - pi.controlSize = NSControlSizeMini; - break; - default: - break; - } - } - - cocoaControls.insert(cocoaControl, bv); - } - - NSButtonType buttonType; - NSBezelStyle bezelStyle; - if (cocoaControl.getCocoaButtonTypeAndBezelStyle(&buttonType, &bezelStyle)) { - // FIXME We need to reset the button's type and - // bezel style properties, even when cached. - auto *button = static_cast<NSButton *>(bv); - button.buttonType = buttonType; - button.bezelStyle = bezelStyle; - if (cocoaControl.type == Button_CheckBox) - button.allowsMixedState = YES; - } - - return bv; -} - -NSCell *QMacStylePrivate::cocoaCell(CocoaControl cocoaControl) const -{ - NSCell *cell = cocoaCells[cocoaControl]; - if (!cell) { - switch (cocoaControl.type) { - case Stepper: - cell = [[NSStepperCell alloc] init]; - break; - case Button_Disclosure: { - NSButtonCell *bc = [[NSButtonCell alloc] init]; - bc.buttonType = NSOnOffButton; - bc.bezelStyle = NSDisclosureBezelStyle; - cell = bc; - break; - } - default: - break; - } - - switch (cocoaControl.size) { - case QStyleHelper::SizeSmall: - cell.controlSize = NSControlSizeSmall; - break; - case QStyleHelper::SizeMini: - cell.controlSize = NSControlSizeMini; - break; - default: - break; - } - - cocoaCells.insert(cocoaControl, cell); - } - - return cell; -} - -void QMacStylePrivate::drawNSViewInRect(NSView *view, const QRectF &rect, QPainter *p, DrawRectBlock drawRectBlock) const -{ - QMacAutoReleasePool pool; - QMacCGContext ctx(p); - setupNSGraphicsContext(ctx, YES); - - // FIXME: The rect that we get in is relative to the widget that we're drawing - // style on behalf of, and doesn't take into account the offset of that widget - // to the widget that owns the backingstore, which we are placing the native - // view into below. This means most of the views are placed in the upper left - // corner of backingStoreNSView, which does not map to where the actual widget - // is, and which may cause problems such as triggering a setNeedsDisplay of the - // backingStoreNSView for the wrong rect. We work around this by making the view - // layer-backed, which prevents triggering display of the backingStoreNSView, but - // but there may be other issues lurking here due to the wrong position. QTBUG-68023 - view.wantsLayer = YES; - - // FIXME: We are also setting the frame of the incoming view a lot at the call - // sites of this function, making it unclear who's actually responsible for - // maintaining the size and position of the view. In theory the call sites - // should ensure the _size_ of the view is correct, and then let this code - // take care of _positioning_ the view at the right place inside backingStoreNSView. - // For now we pass on the rect as is, to prevent any regressions until this - // can be investigated properly. - view.frame = rect.toCGRect(); - - [backingStoreNSView addSubview:view]; - - // FIXME: Based on the code below, this method isn't drawing an NSView into - // a rect, it's drawing _part of the NSView_, defined by the incoming clip - // or dirty rect, into the current graphics context. We're doing some manual - // translations at the call sites that would indicate that this relationship - // is a bit fuzzy. - const CGRect dirtyRect = rect.toCGRect(); - - if (drawRectBlock) - drawRectBlock(ctx, dirtyRect); - else - [view drawRect:dirtyRect]; - - [view removeFromSuperviewWithoutNeedingDisplay]; - - restoreNSGraphicsContext(ctx); -} - -void QMacStylePrivate::resolveCurrentNSView(QWindow *window) const -{ - backingStoreNSView = window ? (NSView *)window->winId() : nil; -} - -QMacStyle::QMacStyle() - : QCommonStyle(*new QMacStylePrivate) -{ - QMacAutoReleasePool pool; - - static QMacNotificationObserver scrollbarStyleObserver(nil, - NSPreferredScrollerStyleDidChangeNotification, []() { - // Purge destroyed scroll bars - QMacStylePrivate::scrollBars.removeAll(QPointer<QObject>()); - - QEvent event(QEvent::StyleChange); - for (const auto &o : QMacStylePrivate::scrollBars) - QCoreApplication::sendEvent(o, &event); - }); - -#if QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_14) - Q_D(QMacStyle); - // FIXME: Tie this logic into theme change, or even polish/unpolish - if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSMojave) { - d->appearanceObserver = QMacKeyValueObserver(NSApp, @"effectiveAppearance", [this] { - Q_D(QMacStyle); - for (NSView *b : d->cocoaControls) - [b release]; - d->cocoaControls.clear(); - }); - } -#endif -} - -QMacStyle::~QMacStyle() -{ -} - -int QMacStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt) const -{ - Q_D(const QMacStyle); - const int controlSize = getControlSize(opt); - int ret = 0; - - switch (metric) { - case PM_TabCloseIndicatorWidth: - case PM_TabCloseIndicatorHeight: - ret = closeButtonSize; - break; - case PM_ToolBarIconSize: - ret = proxy()->pixelMetric(PM_LargeIconSize); - break; - case PM_FocusFrameVMargin: - case PM_FocusFrameHMargin: - ret = qt_mac_aqua_get_metric(FocusRectOutset); - break; - case PM_DialogButtonsSeparator: - ret = -5; - break; - case PM_DialogButtonsButtonHeight: { - QSize sz; - ret = d->aquaSizeConstrain(opt, QStyle::CT_PushButton, QSize(-1, -1), &sz); - if (sz == QSize(-1, -1)) - ret = 32; - else - ret = sz.height(); - break; } - case PM_DialogButtonsButtonWidth: { - QSize sz; - ret = d->aquaSizeConstrain(opt, QStyle::CT_PushButton, QSize(-1, -1), &sz); - if (sz == QSize(-1, -1)) - ret = 70; - else - ret = sz.width(); - break; } - - case PM_MenuBarHMargin: - ret = 8; - break; - - case PM_MenuBarVMargin: - ret = 0; - break; - - case PM_MenuBarPanelWidth: - ret = 0; - break; - - case PM_MenuButtonIndicator: - ret = toolButtonArrowSize; - break; - - case QStyle::PM_MenuDesktopFrameWidth: - ret = 5; - break; - - case PM_CheckBoxLabelSpacing: - case PM_RadioButtonLabelSpacing: - ret = [=] { - if (opt) { - if (opt->state & State_Mini) - return 4; - if (opt->state & State_Small) - return 3; - } - return 2; - } (); - break; - case PM_MenuScrollerHeight: - ret = 15; // I hate having magic numbers in here... - break; - case PM_DefaultFrameWidth: -//#if QT_CONFIG(mainwindow) -// if (widget && (widget->isWindow() || !widget->parentWidget() -// || (qobject_cast<const QMainWindow*>(widget->parentWidget()) -// && static_cast<QMainWindow *>(widget->parentWidget())->centralWidget() == widget)) -// && qobject_cast<const QAbstractScrollArea *>(widget)) -// ret = 0; -// else -//#endif - // The combo box popup has no frame. - if (qstyleoption_cast<const QStyleOptionComboBox *>(opt) != 0) - ret = 0; - else - ret = 1; - break; - case PM_MaximumDragDistance: - ret = -1; - break; - case PM_ScrollBarSliderMin: - ret = 24; - break; - case PM_SpinBoxFrameWidth: - ret = qt_mac_aqua_get_metric(EditTextFrameOutset); - break; - case PM_ButtonShiftHorizontal: - case PM_ButtonShiftVertical: - ret = 0; - break; - case PM_SliderLength: - ret = 17; - break; - // Returns the number of pixels to use for the business part of the - // slider (i.e., the non-tickmark portion). The remaining space is shared - // equally between the tickmark regions. - case PM_SliderControlThickness: - if (const QStyleOptionSlider *sl = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - int space = (sl->orientation == Qt::Horizontal) ? sl->rect.height() : sl->rect.width(); - int ticks = sl->tickPosition; - int n = 0; - if (ticks & QStyleOptionSlider::TicksAbove) - ++n; - if (ticks & QStyleOptionSlider::TicksBelow) - ++n; - if (!n) { - ret = space; - break; - } - - int thick = 6; // Magic constant to get 5 + 16 + 5 - if (ticks != QStyleOptionSlider::TicksBothSides && ticks != QStyleOptionSlider::NoTicks) - thick += proxy()->pixelMetric(PM_SliderLength, sl) / 4; - - space -= thick; - if (space > 0) - thick += (space * 2) / (n + 2); - ret = thick; - } else { - ret = 0; - } - break; - case PM_SmallIconSize: - ret = int(QStyleHelper::dpiScaled(16., opt)); - break; - - case PM_LargeIconSize: - ret = int(QStyleHelper::dpiScaled(32., opt)); - break; - - case PM_IconViewIconSize: - ret = proxy()->pixelMetric(PM_LargeIconSize, opt); - break; - - case PM_ButtonDefaultIndicator: - ret = 0; - break; - case PM_TitleBarHeight: { - NSUInteger style = NSWindowStyleMaskTitled; -// if (widget && ((widget->windowFlags() & Qt::Tool) == Qt::Tool)) -// style |= NSWindowStyleMaskUtilityWindow; - ret = int([NSWindow frameRectForContentRect:NSZeroRect - styleMask:style].size.height); - break; } - case QStyle::PM_TabBarTabHSpace: - switch (d->aquaSizeConstrain(opt)) { - case QStyleHelper::SizeLarge: - ret = QCommonStyle::pixelMetric(metric, opt); - break; - case QStyleHelper::SizeSmall: - ret = 20; - break; - case QStyleHelper::SizeMini: - ret = 16; - break; - case QStyleHelper::SizeDefault: - const QStyleOptionTab *tb = qstyleoption_cast<const QStyleOptionTab *>(opt); - if (tb && tb->documentMode) - ret = 30; - else - ret = QCommonStyle::pixelMetric(metric, opt); - break; - } - break; - case PM_TabBarTabVSpace: - ret = 4; - break; - case PM_TabBarTabShiftHorizontal: - case PM_TabBarTabShiftVertical: - ret = 0; - break; - case PM_TabBarBaseHeight: - ret = 0; - break; - case PM_TabBarTabOverlap: - ret = 1; - break; - case PM_TabBarBaseOverlap: - switch (d->aquaSizeConstrain(opt)) { - case QStyleHelper::SizeDefault: - case QStyleHelper::SizeLarge: - ret = 11; - break; - case QStyleHelper::SizeSmall: - ret = 8; - break; - case QStyleHelper::SizeMini: - ret = 7; - break; - } - break; - case PM_ScrollBarExtent: { - const QStyleHelper::WidgetSizePolicy size = d->effectiveAquaSizeConstrain(opt); - ret = static_cast<int>([NSScroller - scrollerWidthForControlSize:static_cast<NSControlSize>(size) - scrollerStyle:[NSScroller preferredScrollerStyle]]); - break; } - case PM_IndicatorHeight: { - switch (d->aquaSizeConstrain(opt)) { - case QStyleHelper::SizeDefault: - case QStyleHelper::SizeLarge: - ret = qt_mac_aqua_get_metric(CheckBoxHeight); - break; - case QStyleHelper::SizeMini: - ret = qt_mac_aqua_get_metric(MiniCheckBoxHeight); - break; - case QStyleHelper::SizeSmall: - ret = qt_mac_aqua_get_metric(SmallCheckBoxHeight); - break; - } - break; } - case PM_IndicatorWidth: { - switch (d->aquaSizeConstrain(opt)) { - case QStyleHelper::SizeDefault: - case QStyleHelper::SizeLarge: - ret = qt_mac_aqua_get_metric(CheckBoxWidth); - break; - case QStyleHelper::SizeMini: - ret = qt_mac_aqua_get_metric(MiniCheckBoxWidth); - break; - case QStyleHelper::SizeSmall: - ret = qt_mac_aqua_get_metric(SmallCheckBoxWidth); - break; - } - ++ret; - break; } - case PM_ExclusiveIndicatorHeight: { - switch (d->aquaSizeConstrain(opt)) { - case QStyleHelper::SizeDefault: - case QStyleHelper::SizeLarge: - ret = qt_mac_aqua_get_metric(RadioButtonHeight); - break; - case QStyleHelper::SizeMini: - ret = qt_mac_aqua_get_metric(MiniRadioButtonHeight); - break; - case QStyleHelper::SizeSmall: - ret = qt_mac_aqua_get_metric(SmallRadioButtonHeight); - break; - } - break; } - case PM_ExclusiveIndicatorWidth: { - switch (d->aquaSizeConstrain(opt)) { - case QStyleHelper::SizeDefault: - case QStyleHelper::SizeLarge: - ret = qt_mac_aqua_get_metric(RadioButtonWidth); - break; - case QStyleHelper::SizeMini: - ret = qt_mac_aqua_get_metric(MiniRadioButtonWidth); - break; - case QStyleHelper::SizeSmall: - ret = qt_mac_aqua_get_metric(SmallRadioButtonWidth); - break; - } - ++ret; - break; } - case PM_MenuVMargin: - ret = 4; - break; - case PM_MenuPanelWidth: - ret = 0; - break; - case PM_ToolTipLabelFrameWidth: - ret = 0; - break; - case PM_SizeGripSize: { - QStyleHelper::WidgetSizePolicy aSize; -// if (widget && widget->window()->windowType() == Qt::Tool) -// aSize = QStyleHelper::SizeSmall; -// else - aSize = QStyleHelper::SizeLarge; - const QSize size = qt_aqua_get_known_size(CT_SizeGrip, opt, QSize(), aSize); - ret = size.width(); - break; } - case PM_MdiSubWindowFrameWidth: - ret = 1; - break; - case PM_DockWidgetFrameWidth: - ret = 0; - break; - case PM_DockWidgetTitleMargin: - ret = 0; - break; - case PM_DockWidgetSeparatorExtent: - ret = 1; - break; - case PM_ToolBarHandleExtent: - ret = 11; - break; - case PM_ToolBarItemMargin: - ret = 0; - break; - case PM_ToolBarItemSpacing: - ret = 4; - break; - case PM_SplitterWidth: - ret = 7; - break; - case PM_LayoutLeftMargin: - case PM_LayoutTopMargin: - case PM_LayoutRightMargin: - case PM_LayoutBottomMargin: - { - if (opt->state & State_Window) { - /* - AHIG would have (20, 8, 10) here but that makes - no sense. It would also have 14 for the top margin - but this contradicts both Builder and most - applications. - */ - return_SIZE(20, 10, 10); // AHIG - } else { - // hack to detect QTabWidget -// if (widget && widget->parentWidget() -// && widget->parentWidget()->sizePolicy().controlType() == QSizePolicy::TabWidget) { -// if (metric == PM_LayoutTopMargin) { -// /* -// Builder would have 14 (= 20 - 6) instead of 12, -// but that makes the tab look disproportionate. -// */ -// return_SIZE(12, 6, 6); // guess -// } else { -// return_SIZE(20 /* Builder */, 8 /* guess */, 8 /* guess */); -// } -// } else { - /* - Child margins are highly inconsistent in AHIG and Builder. - */ - return_SIZE(12, 8, 6); // guess -// } - } - } - case PM_LayoutHorizontalSpacing: - case PM_LayoutVerticalSpacing: - return -1; - case PM_MenuHMargin: - ret = 0; - break; - case PM_ToolBarExtensionExtent: - ret = 21; - break; - case PM_ToolBarFrameWidth: - ret = 1; - break; - case PM_ScrollView_ScrollBarOverlap: - ret = [NSScroller preferredScrollerStyle] == NSScrollerStyleOverlay ? - pixelMetric(PM_ScrollBarExtent, opt) : 0; - break; - case PM_PushButtonFocusFrameRadius: - ret = LargeSmallMini(opt, 8, 7, 5); - break; - case PM_CheckBoxFocusFrameRadius: - ret = LargeSmallMini(opt, 6, 5, 4); - break; - case PM_ComboBoxFocusFrameRadius: - ret = LargeSmallMini(opt, 8, 7, 4); - break; - case PM_RadioButtonFocusFrameRadius: - ret = 10; - break; - case PM_SliderFocusFrameRadius: - // QTBUG-93423: We currently need to skip drawing a focus ring around the handle, since - // the handle drawn by the UIKit is not centered inside the rect we get from calling - // [cell knobRectFlipped:slider.isFlipped]. So we choose to draw the focus as - // a rect instead until we have a better solution available. - ret = 0; - break; - case PM_DialFocusFrameRadius: - case PM_SpinBoxFocusFrameRadius: - case PM_TextAreaFocusFrameRadius: - case PM_TextFieldFocusFrameRadius: - ret = 3; - break; - default: - ret = QCommonStyle::pixelMetric(metric, opt); - break; - } - return ret; -} - -//QPalette QMacStyle::standardPalette() const -//{ -// auto platformTheme = QGuiApplicationPrivate::platformTheme(); -// auto styleNames = platformTheme->themeHint(QPlatformTheme::StyleNames); -// if (styleNames.toStringList().contains("macintosh")) -// return QPalette(); // Inherit everything from theme -// else -// return QStyle::standardPalette(); -//} - -int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, QStyleHintReturn *hret) const -{ - QMacAutoReleasePool pool; - - int ret = 0; - switch (sh) { - case SH_Slider_SnapToValue: - case SH_PrintDialog_RightAlignButtons: - case SH_FontDialog_SelectAssociatedText: - case SH_MenuBar_MouseTracking: - case SH_Menu_MouseTracking: - case SH_ComboBox_ListMouseTracking: - case SH_MainWindow_SpaceBelowMenuBar: - case SH_ItemView_ChangeHighlightOnFocus: - ret = 1; - break; - case SH_ToolBox_SelectedPageTitleBold: - ret = 0; - break; - case SH_DialogButtonBox_ButtonsHaveIcons: - ret = 0; - break; - case SH_Menu_SelectionWrap: - ret = false; - break; - case SH_Menu_KeyboardSearch: - ret = true; - break; - case SH_Menu_SpaceActivatesItem: - ret = true; - break; - case SH_Slider_AbsoluteSetButtons: - ret = Qt::LeftButton|Qt::MiddleButton; - break; - case SH_Slider_PageSetButtons: - ret = 0; - break; - case SH_ScrollBar_ContextMenu: - ret = false; - break; - case SH_TitleBar_AutoRaise: - ret = true; - break; - case SH_Menu_AllowActiveAndDisabled: - ret = false; - break; - case SH_Menu_SubMenuPopupDelay: - ret = 100; - break; - case SH_Menu_SubMenuUniDirection: - ret = true; - break; - case SH_Menu_SubMenuSloppySelectOtherActions: - ret = false; - break; - case SH_Menu_SubMenuResetWhenReenteringParent: - ret = true; - break; - case SH_Menu_SubMenuDontStartSloppyOnLeave: - ret = true; - break; - - case SH_ScrollBar_LeftClickAbsolutePosition: { - NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; - bool result = [defaults boolForKey:@"AppleScrollerPagingBehavior"]; -// if(QApplication::keyboardModifiers() & Qt::AltModifier) -// ret = !result; -// else - ret = result; - break; } - case SH_TabBar_PreferNoArrows: - ret = true; - break; - /* - case SH_DialogButtons_DefaultButton: - ret = QDialogButtons::Reject; - break; - */ - case SH_GroupBox_TextLabelVerticalAlignment: - ret = Qt::AlignTop; - break; - case SH_ScrollView_FrameOnlyAroundContents: - ret = QCommonStyle::styleHint(sh, opt, hret); - break; - case SH_Menu_FillScreenWithScroll: - ret = false; - break; - case SH_Menu_Scrollable: - ret = true; - break; - case SH_RichText_FullWidthSelection: - ret = true; - break; - case SH_BlinkCursorWhenTextSelected: - ret = false; - break; - case SH_Slider_StopMouseOverSlider: - ret = true; - break; - case SH_ListViewExpand_SelectMouseType: - ret = QEvent::MouseButtonRelease; - break; - case SH_TabBar_SelectMouseType: - if (const QStyleOptionTabBarBase *opt2 = qstyleoption_cast<const QStyleOptionTabBarBase *>(opt)) { - ret = opt2->documentMode ? QEvent::MouseButtonPress : QEvent::MouseButtonRelease; - } else { - ret = QEvent::MouseButtonRelease; - } - break; - case SH_ComboBox_Popup: - if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) - ret = !cmb->editable; - else - ret = 0; - break; - case SH_Workspace_FillSpaceOnMaximize: - ret = true; - break; - case SH_Widget_ShareActivation: - ret = true; - break; - case SH_Header_ArrowAlignment: - ret = Qt::AlignRight; - break; - case SH_TabBar_Alignment: { -//#if QT_CONFIG(tabwidget) -// if (const QTabWidget *tab = qobject_cast<const QTabWidget*>(w)) { -// if (tab->documentMode()) { -// ret = Qt::AlignLeft; -// break; -// } -// } -//#endif -//#if QT_CONFIG(tabbar) -// if (const QTabBar *tab = qobject_cast<const QTabBar*>(w)) { -// if (tab->documentMode()) { -// ret = Qt::AlignLeft; -// break; -// } -// } -//#endif - ret = Qt::AlignCenter; - } break; - case SH_UnderlineShortcut: - ret = false; - break; - case SH_ToolTipLabel_Opacity: - ret = 242; // About 95% - break; - case SH_Button_FocusPolicy: - ret = Qt::TabFocus; - break; - case SH_EtchDisabledText: - ret = false; - break; - case SH_FocusFrame_Mask: { - ret = true; - if(QStyleHintReturnMask *mask = qstyleoption_cast<QStyleHintReturnMask*>(hret)) { - const uchar fillR = 192, fillG = 191, fillB = 190; - QImage img; - - QSize pixmapSize = opt->rect.size(); - if (!pixmapSize.isEmpty()) { - QPixmap pix(pixmapSize); - pix.fill(QColor(fillR, fillG, fillB)); - QPainter pix_paint(&pix); - proxy()->drawControl(CE_FocusFrame, opt, &pix_paint); - pix_paint.end(); - img = pix.toImage(); - } - - const QRgb *sptr = (QRgb*)img.bits(), *srow; - const qsizetype sbpl = img.bytesPerLine(); - const int w = sbpl/4, h = img.height(); - - QImage img_mask(img.width(), img.height(), QImage::Format_ARGB32); - QRgb *dptr = (QRgb*)img_mask.bits(), *drow; - const qsizetype dbpl = img_mask.bytesPerLine(); - - for (int y = 0; y < h; ++y) { - srow = sptr+((y*sbpl)/4); - drow = dptr+((y*dbpl)/4); - for (int x = 0; x < w; ++x) { - const int redDiff = qRed(*srow) - fillR; - const int greenDiff = qGreen(*srow) - fillG; - const int blueDiff = qBlue(*srow) - fillB; - const int diff = (redDiff * redDiff) + (greenDiff * greenDiff) + (blueDiff * blueDiff); - (*drow++) = (diff < 10) ? 0xffffffff : 0xff000000; - ++srow; - } - } - QBitmap qmask = QBitmap::fromImage(img_mask); - mask->region = QRegion(qmask); - } - break; } - case SH_TitleBar_NoBorder: - ret = 1; - break; - case SH_RubberBand_Mask: - ret = 0; - break; - case SH_ComboBox_LayoutDirection: - ret = Qt::LeftToRight; - break; - case SH_ItemView_EllipsisLocation: - ret = Qt::AlignHCenter; - break; - case SH_ItemView_ShowDecorationSelected: - ret = true; - break; - case SH_TitleBar_ModifyNotification: - ret = false; - break; - case SH_ScrollBar_RollBetweenButtons: - ret = true; - break; - case SH_WindowFrame_Mask: - ret = false; - break; - case SH_TabBar_ElideMode: - ret = Qt::ElideRight; - break; -// case SH_DialogButtonLayout: -// ret = QDialogButtonBox::MacLayout; -// break; -// case SH_FormLayoutWrapPolicy: -// ret = QFormLayout::DontWrapRows; -// break; -// case SH_FormLayoutFieldGrowthPolicy: -// ret = QFormLayout::FieldsStayAtSizeHint; -// break; - case SH_FormLayoutFormAlignment: - ret = Qt::AlignHCenter | Qt::AlignTop; - break; - case SH_FormLayoutLabelAlignment: - ret = Qt::AlignRight; - break; -// case SH_ComboBox_PopupFrameStyle: -// ret = QFrame::NoFrame; -// break; - case SH_MessageBox_TextInteractionFlags: - ret = Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse | Qt::TextSelectableByKeyboard; - break; - case SH_SpellCheckUnderlineStyle: - ret = QTextCharFormat::DashUnderline; - break; - case SH_MessageBox_CenterButtons: - ret = false; - break; - case SH_MenuBar_AltKeyNavigation: - ret = false; - break; - case SH_ItemView_MovementWithoutUpdatingSelection: - ret = false; - break; - case SH_FocusFrame_AboveWidget: - ret = true; - break; -// case SH_WizardStyle: -// ret = QWizard::MacStyle; -// break; - case SH_ItemView_ArrowKeysNavigateIntoChildren: - ret = false; - break; - case SH_Menu_FlashTriggeredItem: - ret = true; - break; - case SH_Menu_FadeOutOnHide: - ret = true; - break; - case SH_ItemView_PaintAlternatingRowColorsForEmptyArea: - ret = true; - break; - case SH_TabBar_CloseButtonPosition: - ret = QStyleOptionTabBarBase::LeftSide; - break; - case SH_DockWidget_ButtonsHaveFrame: - ret = false; - break; - case SH_ScrollBar_Transient: - // For the initial version in QQC2, we don't support transient scrollbars. When the - // time comes, consider doing all such animations from QML. - // ret = [NSScroller preferredScrollerStyle] == NSScrollerStyleOverlay; - ret = false; - break; - case SH_TitleBar_ShowToolTipsOnButtons: - // min/max/close buttons on windows don't show tool tips - ret = false; - break; - case SH_ComboBox_AllowWheelScrolling: - ret = false; - break; - case SH_SpinBox_ButtonsInsideFrame: - ret = false; - break; - case SH_Table_GridLineColor: - ret = int(qt_mac_toQColor(NSColor.gridColor).rgba()); - break; - default: - ret = QCommonStyle::styleHint(sh, opt, hret); - break; - } - return ret; -} - -QPixmap QMacStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, - const QStyleOption *opt) const -{ - switch (iconMode) { - case QIcon::Disabled: { - QImage img = pixmap.toImage().convertToFormat(QImage::Format_ARGB32); - int imgh = img.height(); - int imgw = img.width(); - QRgb pixel; - for (int y = 0; y < imgh; ++y) { - for (int x = 0; x < imgw; ++x) { - pixel = img.pixel(x, y); - img.setPixel(x, y, qRgba(qRed(pixel), qGreen(pixel), qBlue(pixel), - qAlpha(pixel) / 2)); - } - } - return QPixmap::fromImage(img); - } - default: - ; - } - return QCommonStyle::generatedIconPixmap(iconMode, pixmap, opt); -} - - -QPixmap QMacStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt) const -{ - // The default implementation of QStyle::standardIconImplementation() is to call standardPixmap() - // I don't want infinite recursion so if we do get in that situation, just return the Window's - // standard pixmap instead (since there is no mac-specific icon then). This should be fine until - // someone changes how Windows standard - // pixmap works. - static bool recursionGuard = false; - - if (recursionGuard) - return QCommonStyle::standardPixmap(standardPixmap, opt); - - recursionGuard = true; - QIcon icon = proxy()->standardIcon(standardPixmap, opt); - recursionGuard = false; - int size; - switch (standardPixmap) { - default: - size = 32; - break; - case SP_MessageBoxCritical: - case SP_MessageBoxQuestion: - case SP_MessageBoxInformation: - case SP_MessageBoxWarning: - size = 64; - break; - } - return icon.pixmap(opt->window, QSize(size, size)); -} - -void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p) const -{ - Q_D(const QMacStyle); - - const AppearanceSync appSync; - QMacCGContext cg(p); - d->resolveCurrentNSView(opt->window); - - switch (pe) { - case PE_IndicatorArrowUp: - case PE_IndicatorArrowDown: - case PE_IndicatorArrowRight: - case PE_IndicatorArrowLeft: { - p->save(); - p->setRenderHint(QPainter::Antialiasing); - const int xOffset = 1; // FIXME: opt->direction == Qt::LeftToRight ? 2 : -1; - qreal halfSize = 0.5 * qMin(opt->rect.width(), opt->rect.height()); - const qreal penWidth = qMax(halfSize / 3.0, 1.25); -//#if QT_CONFIG(toolbutton) -// if (const QToolButton *tb = qobject_cast<const QToolButton *>(w)) { -// // When stroking the arrow, make sure it fits in the tool button -// if (tb->arrowType() != Qt::NoArrow -// || tb->popupMode() == QToolButton::MenuButtonPopup) -// halfSize -= penWidth; -// } -//#endif - - QTransform transform; - transform.translate(opt->rect.center().x() + xOffset, opt->rect.center().y() + 2); - QPainterPath path; - switch(pe) { - default: - case PE_IndicatorArrowDown: - break; - case PE_IndicatorArrowUp: - transform.rotate(180); - break; - case PE_IndicatorArrowLeft: - transform.rotate(90); - break; - case PE_IndicatorArrowRight: - transform.rotate(-90); - break; - } - p->setTransform(transform); - - path.moveTo(-halfSize, -halfSize * 0.5); - path.lineTo(0.0, halfSize * 0.5); - path.lineTo(halfSize, -halfSize * 0.5); - - const QPen arrowPen(opt->palette.text(), penWidth, - Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin); - p->strokePath(path, arrowPen); - p->restore(); - break; } - case PE_FrameTabBarBase: - if (const QStyleOptionTabBarBase *tbb - = qstyleoption_cast<const QStyleOptionTabBarBase *>(opt)) { - if (tbb->documentMode) { - p->save(); - drawTabBase(p, tbb); - p->restore(); - return; - } - QRegion region(tbb->rect); - region -= tbb->tabBarRect; - p->save(); - p->setClipRegion(region); - QStyleOptionTabWidgetFrame twf; - twf.QStyleOption::operator=(*tbb); - twf.shape = tbb->shape; - switch (QMacStylePrivate::tabDirection(twf.shape)) { - case QMacStylePrivate::North: - twf.rect = twf.rect.adjusted(0, 0, 0, 10); - break; - case QMacStylePrivate::South: - twf.rect = twf.rect.adjusted(0, -10, 0, 0); - break; - case QMacStylePrivate::West: - twf.rect = twf.rect.adjusted(0, 0, 10, 0); - break; - case QMacStylePrivate::East: - twf.rect = twf.rect.adjusted(0, -10, 0, 0); - break; - } - proxy()->drawPrimitive(PE_FrameTabWidget, &twf, p); - p->restore(); - } - break; - case PE_PanelTipLabel: - p->fillRect(opt->rect, opt->palette.brush(QPalette::ToolTipBase)); - break; - case PE_FrameGroupBox: - if (const auto *groupBox = qstyleoption_cast<const QStyleOptionFrame *>(opt)) - if (groupBox->features & QStyleOptionFrame::Flat) { - QCommonStyle::drawPrimitive(pe, groupBox, p); - break; - } - Q_FALLTHROUGH(); - case PE_FrameTabWidget: - { - const auto cw = QMacStylePrivate::CocoaControl(QMacStylePrivate::Box, QStyleHelper::SizeLarge); - auto *box = static_cast<NSBox *>(d->cocoaControl(cw)); - // FIXME Since macOS 10.14, simply calling drawRect: won't display anything anymore. - // The AppKit team is aware of this and has proposed a couple of solutions. - // The first solution was to call displayRectIgnoringOpacity:inContext: instead. - // However, it doesn't seem to work on 10.13. More importantly, dark mode on 10.14 - // is extremely slow. Light mode works fine. - // The second solution is to subclass NSBox and reimplement a trivial drawRect: which - // would only call super. This works without any issue on 10.13, but a double border - // shows on 10.14 in both light and dark modes. - // The code below picks what works on each version and mode. On 10.13 and earlier, we - // simply call drawRect: on a regular NSBox. On 10.14, we call displayRectIgnoringOpacity: - // inContext:, but only in light mode. In dark mode, we use a custom NSBox subclass, - // QDarkNSBox, of type NSBoxCustom. Its appearance is close enough to the real thing so - // we can use this for now. - auto adjustedRect = opt->rect; - bool needTranslation = false; - if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSMojave - && !qt_mac_applicationIsInDarkMode()) { - // In Aqua theme we have to use the 'default' NSBox (as opposite - // to the 'custom' QDarkNSBox we use in dark theme). Since -drawRect: - // does nothing in default NSBox, we call -displayRectIgnoringOpaticty:. - // Unfortunately, the resulting box is smaller then the actual rect we - // wanted. This can be seen, e.g. because tabs (buttons) are misaligned - // vertically and even worse, if QTabWidget has autoFillBackground - // set, this background overpaints NSBox making it to disappear. - // We trick our NSBox to render in a larger rectangle, so that - // the actuall result (which is again smaller than requested), - // more or less is what we really want. We'll have to adjust CTM - // and translate accordingly. - adjustedRect.adjust(0, 0, 6, 6); - needTranslation = true; - } - d->drawNSViewInRect(box, adjustedRect, p, ^(CGContextRef ctx, const CGRect &rect) { -//#if QT_CONFIG(tabwidget) -// if (QTabWidget *tabWidget = qobject_cast<QTabWidget *>(opt->styleObject)) -// clipTabBarFrame(opt, this, ctx); -//#endif - QMacAutoReleasePool pool; - CGContextTranslateCTM(ctx, 0, rect.origin.y + rect.size.height); - CGContextScaleCTM(ctx, 1, -1); - if (QOperatingSystemVersion::current() < QOperatingSystemVersion::MacOSMojave - || [box isMemberOfClass:QDarkNSBox.class]) { - [box drawRect:rect]; - } else { - if (needTranslation) - CGContextTranslateCTM(ctx, -3.0, 5.0); - [box displayRectIgnoringOpacity:box.bounds inContext:NSGraphicsContext.currentContext]; - } - }); - break; - } - case PE_IndicatorToolBarSeparator: { - QPainterPath path; - if (opt->state & State_Horizontal) { - int xpoint = opt->rect.center().x(); - path.moveTo(xpoint + 0.5, opt->rect.top() + 1); - path.lineTo(xpoint + 0.5, opt->rect.bottom()); - } else { - int ypoint = opt->rect.center().y(); - path.moveTo(opt->rect.left() + 2 , ypoint + 0.5); - path.lineTo(opt->rect.right() + 1, ypoint + 0.5); - } - QPainterPathStroker theStroker; - theStroker.setCapStyle(Qt::FlatCap); - theStroker.setDashPattern(QVector<qreal>() << 1 << 2); - path = theStroker.createStroke(path); - const auto dark = qt_mac_applicationIsInDarkMode() ? opt->palette.dark().color().darker() - : QColor(0, 0, 0, 119); - p->fillPath(path, dark); - } - break; - case PE_FrameWindow: - if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { -// if (w && w->inherits("QMdiSubWindow")) { -// p->save(); -// p->setPen(QPen(frame->palette.dark().color(), frame->lineWidth)); -// p->setBrush(frame->palette.window()); -// p->drawRect(frame->rect); -// p->restore(); -// } - } - break; - case PE_IndicatorDockWidgetResizeHandle: { - // The docwidget resize handle is drawn as a one-pixel wide line. - p->save(); - if (opt->state & State_Horizontal) { - p->setPen(QColor(160, 160, 160)); - p->drawLine(opt->rect.topLeft(), opt->rect.topRight()); - } else { - p->setPen(QColor(145, 145, 145)); - p->drawLine(opt->rect.topRight(), opt->rect.bottomRight()); - } - p->restore(); - } break; - case PE_IndicatorToolBarHandle: { - p->save(); - QPainterPath path; - int x = opt->rect.x() + 6; - int y = opt->rect.y() + 7; - static const int RectHeight = 2; - if (opt->state & State_Horizontal) { - while (y < opt->rect.height() - RectHeight - 5) { - path.moveTo(x, y); - path.addEllipse(x, y, RectHeight, RectHeight); - y += 6; - } - } else { - while (x < opt->rect.width() - RectHeight - 5) { - path.moveTo(x, y); - path.addEllipse(x, y, RectHeight, RectHeight); - x += 6; - } - } - p->setPen(Qt::NoPen); - QColor dark = opt->palette.dark().color().darker(); - dark.setAlphaF(0.50); - p->fillPath(path, dark); - p->restore(); - - break; - } - case PE_IndicatorHeaderArrow: - if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) { - // In HITheme, up is down, down is up and hamburgers eat people. - if (header->sortIndicator != QStyleOptionHeader::None) - proxy()->drawPrimitive( - (header->sortIndicator == QStyleOptionHeader::SortDown) ? - PE_IndicatorArrowUp : PE_IndicatorArrowDown, header, p); - } - break; - case PE_IndicatorMenuCheckMark: { - QColor pc; - if (opt->state & State_On) - pc = opt->palette.highlightedText().color(); - else - pc = opt->palette.text().color(); - - QCFType<CGColorRef> checkmarkColor = CGColorCreateGenericRGB(static_cast<CGFloat>(pc.redF()), - static_cast<CGFloat>(pc.greenF()), - static_cast<CGFloat>(pc.blueF()), - static_cast<CGFloat>(pc.alphaF())); - // kCTFontUIFontSystem and others give the same result - // as kCTFontUIFontMenuItemMark. However, the latter is - // more reminiscent to HITheme's kThemeMenuItemMarkFont. - // See also the font for small- and mini-sized widgets, - // where we end up using the generic system font type. - const CTFontUIFontType fontType = (opt->state & State_Mini) ? kCTFontUIFontMiniSystem : - (opt->state & State_Small) ? kCTFontUIFontSmallSystem : - kCTFontUIFontMenuItemMark; - // Similarly for the font size, where there is a small difference - // between regular combobox and item view items, and and menu items. - // However, we ignore any difference for small- and mini-sized widgets. - const CGFloat fontSize = fontType == kCTFontUIFontMenuItemMark ? opt->fontMetrics.height() : 0.0; - QCFType<CTFontRef> checkmarkFont = CTFontCreateUIFontForLanguage(fontType, fontSize, NULL); - - CGContextSaveGState(cg); - CGContextSetShouldSmoothFonts(cg, NO); // Same as HITheme and Cocoa menu checkmarks - - // Baseline alignment tweaks for QComboBox and QMenu - const CGFloat vOffset = (opt->state & State_Mini) ? 0.0 : - (opt->state & State_Small) ? 1.0 : - 0.75; - - CGContextTranslateCTM(cg, 0, opt->rect.bottom()); - CGContextScaleCTM(cg, 1, -1); - // Translate back to the original position and add rect origin and offset - CGContextTranslateCTM(cg, opt->rect.x(), vOffset); - - // CTFont has severe difficulties finding the checkmark character among its - // glyphs. Fortunately, CTLine knows its ways inside the Cocoa labyrinth. - static const CFStringRef keys[] = { kCTFontAttributeName, kCTForegroundColorAttributeName }; - static const int numValues = sizeof(keys) / sizeof(keys[0]); - const CFTypeRef values[] = { (CFTypeRef)checkmarkFont, (CFTypeRef)checkmarkColor }; - Q_STATIC_ASSERT((sizeof(values) / sizeof(values[0])) == numValues); - QCFType<CFDictionaryRef> attributes = CFDictionaryCreate(kCFAllocatorDefault, (const void **)keys, (const void **)values, - numValues, NULL, NULL); - // U+2713: CHECK MARK - QCFType<CFAttributedStringRef> checkmarkString = CFAttributedStringCreate(kCFAllocatorDefault, (CFStringRef)@"\u2713", attributes); - QCFType<CTLineRef> line = CTLineCreateWithAttributedString(checkmarkString); - - CTLineDraw((CTLineRef)line, cg); - CGContextFlush(cg); // CTLineDraw's documentation says it doesn't flush - - CGContextRestoreGState(cg); - break; } - case PE_IndicatorItemViewItemCheck: - case PE_IndicatorRadioButton: - case PE_IndicatorCheckBox: { - const bool isEnabled = opt->state & State_Enabled; - const bool isPressed = opt->state & State_Sunken; - const bool isRadioButton = (pe == PE_IndicatorRadioButton); - const auto ct = isRadioButton ? QMacStylePrivate::Button_RadioButton : QMacStylePrivate::Button_CheckBox; - const auto cs = d->effectiveAquaSizeConstrain(opt); - const auto cw = QMacStylePrivate::CocoaControl(ct, cs); - auto *tb = static_cast<NSButton *>(d->cocoaControl(cw)); - tb.enabled = isEnabled; - tb.state = (opt->state & State_NoChange) ? NSMixedState : - (opt->state & State_On) ? NSOnState : NSOffState; - [tb highlight:isPressed]; - const auto vOffset = [=] { - // As measured - if (cs == QStyleHelper::SizeMini) - return ct == QMacStylePrivate::Button_CheckBox ? -0.5 : 0.5; - - return cs == QStyleHelper::SizeSmall ? 0.5 : 0.0; - } (); - d->drawNSViewInRect(tb, opt->rect, p, ^(CGContextRef ctx, const CGRect &rect) { - QMacAutoReleasePool pool; - CGContextTranslateCTM(ctx, 0, vOffset); - [tb.cell drawInteriorWithFrame:rect inView:tb]; - }); - break; } - case PE_FrameFocusRect: - // Use the our own focus widget stuff. - break; - case PE_IndicatorBranch: { - if (!(opt->state & State_Children)) - break; - const auto cw = QMacStylePrivate::CocoaControl(QMacStylePrivate::Button_Disclosure, QStyleHelper::SizeLarge); - NSButtonCell *triangleCell = static_cast<NSButtonCell *>(d->cocoaCell(cw)); - [triangleCell setState:(opt->state & State_Open) ? NSOnState : NSOffState]; -// bool viewHasFocus = (w && w->hasFocus()) || (opt->state & State_HasFocus); - bool viewHasFocus = false; - [triangleCell setBackgroundStyle:((opt->state & State_Selected) && viewHasFocus) ? NSBackgroundStyleDark : NSBackgroundStyleLight]; - - d->setupNSGraphicsContext(cg, NO); - - QRect qtRect = opt->rect.adjusted(DisclosureOffset, 0, -DisclosureOffset, 0); - CGRect rect = CGRectMake(qtRect.x() + 1, qtRect.y(), qtRect.width(), qtRect.height()); - CGContextTranslateCTM(cg, rect.origin.x, rect.origin.y + rect.size.height); - CGContextScaleCTM(cg, 1, -1); - CGContextTranslateCTM(cg, -rect.origin.x, -rect.origin.y); - - [triangleCell drawBezelWithFrame:NSRectFromCGRect(rect) inView:[triangleCell controlView]]; - - d->restoreNSGraphicsContext(cg); - break; } - - case PE_Frame: { - const QPen oldPen = p->pen(); - QPen penCpy = p->pen(); - penCpy.setWidth(2); - penCpy.setColor(opt->palette.dark().color()); - p->setPen(penCpy); - p->drawRect(opt->rect); - p->setPen(oldPen); - break; } - case PE_PanelLineEdit: - case PE_FrameLineEdit: - if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - if (frame->state & State_Sunken) { - const bool isEnabled = opt->state & State_Enabled; - const bool isReadOnly = opt->state & State_ReadOnly; - const bool isRounded = frame->features & QStyleOptionFrame::Rounded; - const auto cs = d->effectiveAquaSizeConstrain(opt, CT_LineEdit); - const auto cw = QMacStylePrivate::CocoaControl(QMacStylePrivate::TextField, cs); - auto *tf = static_cast<NSTextField *>(d->cocoaControl(cw)); - tf.enabled = isEnabled; - tf.editable = !isReadOnly; - tf.bezeled = YES; - static_cast<NSTextFieldCell *>(tf.cell).bezelStyle = isRounded ? NSTextFieldRoundedBezel : NSTextFieldSquareBezel; - tf.frame = opt->rect.toCGRect(); - d->drawNSViewInRect(tf, opt->rect, p, ^(CGContextRef, const CGRect &rect) { - QMacAutoReleasePool pool; - if (!qt_mac_applicationIsInDarkMode()) { - // In 'Dark' mode controls are transparent, so we do not - // over-paint the (potentially custom) color in the background. - // In 'Light' mode we have to care about the correct - // background color. See the comments below for PE_PanelLineEdit. - CGContextRef cgContext = NSGraphicsContext.currentContext.CGContext; - // See QMacCGContext, here we expect bitmap context created with - // color space 'kCGColorSpaceSRGB', if it's something else - we - // give up. - if (cgContext ? bool(CGBitmapContextGetColorSpace(cgContext)) : false) { - tf.drawsBackground = YES; - const QColor bgColor = frame->palette.brush(QPalette::Base).color(); - tf.backgroundColor = [NSColor colorWithSRGBRed:bgColor.redF() - green:bgColor.greenF() - blue:bgColor.blueF() - alpha:bgColor.alphaF()]; - if (bgColor.alpha() != 255) { - // No way we can have it bezeled and transparent ... - tf.bordered = YES; - } - } - } - - [tf.cell drawWithFrame:rect inView:tf]; - }); - } else { - QCommonStyle::drawPrimitive(pe, opt, p); - } - } - break; - case PE_PanelScrollAreaCorner: { - const QBrush brush(opt->palette.brush(QPalette::Base)); - p->fillRect(opt->rect, brush); - p->setPen(QPen(QColor(217, 217, 217))); - p->drawLine(opt->rect.topLeft(), opt->rect.topRight()); - p->drawLine(opt->rect.topLeft(), opt->rect.bottomLeft()); - } break; - case PE_FrameStatusBarItem: - break; -//#if QT_CONFIG(tabbar) -// case PE_IndicatorTabClose: { -// // Make close button visible only on the hovered tab. -// QTabBar *tabBar = qobject_cast<QTabBar*>(w->parentWidget()); -// const QWidget *closeBtn = w; -// if (!tabBar) { -// // QStyleSheetStyle instead of CloseButton (which has -// // a QTabBar as a parent widget) uses the QTabBar itself: -// tabBar = qobject_cast<QTabBar *>(const_cast<QWidget*>(w)); -// closeBtn = decltype(closeBtn)(property("_q_styleSheetRealCloseButton").value<void *>()); -// } -// if (tabBar) { -// const bool documentMode = tabBar->documentMode(); -// const QTabBarPrivate *tabBarPrivate = static_cast<QTabBarPrivate *>(QObjectPrivate::get(tabBar)); -// const int hoveredTabIndex = tabBarPrivate->hoveredTabIndex(); -// if (!documentMode || -// (hoveredTabIndex != -1 && ((closeBtn == tabBar->tabButton(hoveredTabIndex, QTabBar::LeftSide)) || -// (closeBtn == tabBar->tabButton(hoveredTabIndex, QTabBar::RightSide))))) { -// const bool hover = (opt->state & State_MouseOver); -// const bool selected = (opt->state & State_Selected); -// const bool pressed = (opt->state & State_Sunken); -// drawTabCloseButton(p, hover, selected, pressed, documentMode); -// } -// } -// } break; -//#endif // QT_CONFIG(tabbar) - case PE_PanelStatusBar: { - // Fill the status bar with the titlebar gradient. - QLinearGradient linearGrad; - const bool isMainWindow = qt_macWindowMainWindow(opt->window); - if (isMainWindow) - linearGrad = titlebarGradientActive(); - else - linearGrad = titlebarGradientInactive(); - - linearGrad.setStart(0, opt->rect.top()); - linearGrad.setFinalStop(0, opt->rect.bottom()); - p->fillRect(opt->rect, linearGrad); - - // Draw the black separator line at the top of the status bar. - if (isMainWindow) - p->setPen(titlebarSeparatorLineActive); - else - p->setPen(titlebarSeparatorLineInactive); - p->drawLine(opt->rect.left(), opt->rect.top(), opt->rect.right(), opt->rect.top()); - - break; - } - case PE_PanelMenu: { - p->save(); - p->fillRect(opt->rect, Qt::transparent); - p->setPen(Qt::transparent); - p->setBrush(opt->palette.window()); - p->setRenderHint(QPainter::Antialiasing, true); - const QPainterPath path = d->windowPanelPath(opt->rect); - p->drawPath(path); - p->restore(); - } break; - - default: - QCommonStyle::drawPrimitive(pe, opt, p); - break; - } -} - -static QPixmap darkenPixmap(const QPixmap &pixmap) -{ - QImage img = pixmap.toImage().convertToFormat(QImage::Format_ARGB32); - int imgh = img.height(); - int imgw = img.width(); - int h, s, v, a; - QRgb pixel; - for (int y = 0; y < imgh; ++y) { - for (int x = 0; x < imgw; ++x) { - pixel = img.pixel(x, y); - a = qAlpha(pixel); - QColor hsvColor(pixel); - hsvColor.getHsv(&h, &s, &v); - s = qMin(100, s * 2); - v = v / 2; - hsvColor.setHsv(h, s, v); - pixel = hsvColor.rgb(); - img.setPixel(x, y, qRgba(qRed(pixel), qGreen(pixel), qBlue(pixel), a)); - } - } - return QPixmap::fromImage(img); -} - -void QMacStylePrivate::setupVerticalInvertedXform(CGContextRef cg, bool reverse, bool vertical, const CGRect &rect) const -{ - if (vertical) { - CGContextTranslateCTM(cg, rect.size.height, 0); - CGContextRotateCTM(cg, M_PI_2); - } - if (vertical != reverse) { - CGContextTranslateCTM(cg, rect.size.width, 0); - CGContextScaleCTM(cg, -1, 1); - } -} - -void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter *p) const -{ - Q_D(const QMacStyle); - - const AppearanceSync sync; - const QMacAutoReleasePool pool; - - QMacCGContext cg(p); - d->resolveCurrentNSView(opt->window); - - switch (ce) { - case CE_HeaderSection: - if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) { - State flags = header->state; - QRect ir = header->rect; - const bool pressed = (flags & State_Sunken) && !(flags & State_On); - p->fillRect(ir, pressed ? header->palette.dark() : header->palette.button()); - p->setPen(QPen(header->palette.dark(), 1.0)); - if (header->orientation == Qt::Horizontal) - p->drawLine(QLineF(ir.right() + 0.5, ir.top() + headerSectionSeparatorInset, - ir.right() + 0.5, ir.bottom() - headerSectionSeparatorInset)); - else - p->drawLine(QLineF(ir.left() + headerSectionSeparatorInset, ir.bottom(), - ir.right() - headerSectionSeparatorInset, ir.bottom())); - } - - break; - case CE_HeaderLabel: - if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) { - p->save(); - QRect textr = header->rect; - if (!header->icon.isNull()) { - QIcon::Mode mode = QIcon::Disabled; - if (opt->state & State_Enabled) - mode = QIcon::Normal; - int iconExtent = proxy()->pixelMetric(PM_SmallIconSize); - QPixmap pixmap = header->icon.pixmap(opt->window, QSize(iconExtent, iconExtent), mode); - - QRect pixr = header->rect; - pixr.setY(header->rect.center().y() - (pixmap.height() / pixmap.devicePixelRatio() - 1) / 2); - proxy()->drawItemPixmap(p, pixr, Qt::AlignVCenter, pixmap); - textr.translate(pixmap.width() / pixmap.devicePixelRatio() + 2, 0); - } - - proxy()->drawItemText(p, textr, header->textAlignment | Qt::AlignVCenter, header->palette, - header->state & State_Enabled, header->text, QPalette::ButtonText); - p->restore(); - } - break; - case CE_ToolButtonLabel: - if (const QStyleOptionToolButton *tb = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) { - QStyleOptionToolButton myTb = *tb; - myTb.state &= ~State_AutoRaise; -#ifndef QT_NO_ACCESSIBILITY - if (QStyleHelper::hasAncestor(opt->styleObject, QAccessible::ToolBar)) { - QRect cr = tb->rect; - int shiftX = 0; - int shiftY = 0; - bool needText = false; - int alignment = 0; - bool down = tb->state & (State_Sunken | State_On); - if (down) { - shiftX = proxy()->pixelMetric(PM_ButtonShiftHorizontal, tb); - shiftY = proxy()->pixelMetric(PM_ButtonShiftVertical, tb); - } - // The down state is special for QToolButtons in a toolbar on the Mac - // The text is a bit bolder and gets a drop shadow and the icons are also darkened. - // This doesn't really fit into any particular case in QIcon, so we - // do the majority of the work ourselves. - if (!(tb->features & QStyleOptionToolButton::Arrow)) { - Qt::ToolButtonStyle tbstyle = tb->toolButtonStyle; - if (tb->icon.isNull() && !tb->text.isEmpty()) - tbstyle = Qt::ToolButtonTextOnly; - - switch (tbstyle) { - case Qt::ToolButtonTextOnly: { - needText = true; - alignment = Qt::AlignCenter; - break; } - case Qt::ToolButtonIconOnly: - case Qt::ToolButtonTextBesideIcon: - case Qt::ToolButtonTextUnderIcon: { - QRect pr = cr; - QIcon::Mode iconMode = (tb->state & State_Enabled) ? QIcon::Normal - : QIcon::Disabled; - QIcon::State iconState = (tb->state & State_On) ? QIcon::On - : QIcon::Off; - QPixmap pixmap = tb->icon.pixmap(opt->window, - tb->rect.size().boundedTo(tb->iconSize), - iconMode, iconState); - - // Draw the text if it's needed. - if (tb->toolButtonStyle != Qt::ToolButtonIconOnly) { - needText = true; - if (tb->toolButtonStyle == Qt::ToolButtonTextUnderIcon) { - pr.setHeight(pixmap.size().height() / pixmap.devicePixelRatio() + 6); - cr.adjust(0, pr.bottom(), 0, -3); - alignment |= Qt::AlignCenter; - } else { - pr.setWidth(pixmap.width() / pixmap.devicePixelRatio() + 8); - cr.adjust(pr.right(), 0, 0, 0); - alignment |= Qt::AlignLeft | Qt::AlignVCenter; - } - } - if (opt->state & State_Sunken) { - pr.translate(shiftX, shiftY); - pixmap = darkenPixmap(pixmap); - } - proxy()->drawItemPixmap(p, pr, Qt::AlignCenter, pixmap); - break; } - default: - Q_ASSERT(false); - break; - } - - if (needText) { - QPalette pal = tb->palette; - QPalette::ColorRole role = QPalette::NoRole; - if (!proxy()->styleHint(SH_UnderlineShortcut, tb)) - alignment |= Qt::TextHideMnemonic; - if (down) - cr.translate(shiftX, shiftY); - if (tbstyle == Qt::ToolButtonTextOnly - || (tbstyle != Qt::ToolButtonTextOnly && !down)) { - QPen pen = p->pen(); - QColor light = down || isDarkMode() ? Qt::black : Qt::white; - light.setAlphaF(0.375f); - p->setPen(light); - p->drawText(cr.adjusted(0, 1, 0, 1), alignment, tb->text); - p->setPen(pen); - if (down && tbstyle == Qt::ToolButtonTextOnly) { -// pal = QApplication::palette("QMenu"); - pal.setCurrentColorGroup(tb->palette.currentColorGroup()); - role = QPalette::HighlightedText; - } - } - proxy()->drawItemText(p, cr, alignment, pal, - tb->state & State_Enabled, tb->text, role); - } - } else { - QCommonStyle::drawControl(ce, &myTb, p); - } - } else -#endif // QT_NO_ACCESSIBILITY - { - QCommonStyle::drawControl(ce, &myTb, p); - } - } - break; - case CE_ToolBoxTabShape: - QCommonStyle::drawControl(ce, opt, p); - break; - case CE_PushButtonBevel: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - if (!(btn->state & (State_Raised | State_Sunken | State_On))) - break; - - if (btn->features & QStyleOptionButton::CommandLinkButton) { - QCommonStyle::drawControl(ce, opt, p); - break; - } - - const bool hasFocus = btn->state & State_HasFocus; - const bool isActive = btn->state & State_Active; - - // a focused auto-default button within an active window - // takes precedence over a normal default button - if ((btn->features & QStyleOptionButton::AutoDefaultButton) - && isActive && hasFocus) - d->autoDefaultButton = btn->styleObject; - else if (d->autoDefaultButton == btn->styleObject) - d->autoDefaultButton = nullptr; - - const bool isEnabled = btn->state & State_Enabled; - const bool isPressed = btn->state & State_Sunken; - const bool isHighlighted = isActive && - ((btn->state & State_On) - || (btn->features & QStyleOptionButton::DefaultButton) - || (btn->features & QStyleOptionButton::AutoDefaultButton - && d->autoDefaultButton == btn->styleObject)); - const bool hasMenu = btn->features & QStyleOptionButton::HasMenu; - const auto ct = cocoaControlType(btn); - const auto cs = d->effectiveAquaSizeConstrain(btn); - const auto cw = QMacStylePrivate::CocoaControl(ct, cs); - auto *pb = static_cast<NSButton *>(d->cocoaControl(cw)); - // Ensure same size and location as we used to have with HITheme. - // This is more convoluted than we initialy thought. See for example - // differences between plain and menu button frames. - const QRectF frameRect = cw.adjustedControlFrame(btn->rect); - pb.frame = frameRect.toCGRect(); - - pb.enabled = isEnabled; - [pb highlight:isPressed]; - pb.state = isHighlighted && !isPressed ? NSOnState : NSOffState; - d->drawNSViewInRect(pb, frameRect, p, ^(CGContextRef, const CGRect &r) { - QMacAutoReleasePool pool; - [pb.cell drawBezelWithFrame:r inView:pb.superview]; - }); - [pb highlight:NO]; - - if (hasMenu && cw.type == QMacStylePrivate::Button_SquareButton) { - // Using -[NSPopuButtonCell drawWithFrame:inView:] above won't do - // it right because we don't set the text in the native button. - const int mbi = proxy()->pixelMetric(QStyle::PM_MenuButtonIndicator, btn); - const auto ir = frameRect.toRect(); - int arrowYOffset = 0; - const auto ar = visualRect(btn->direction, ir, QRect(ir.right() - mbi - 6, ir.height() / 2 - arrowYOffset, mbi, mbi)); - - QStyleOption arrowOpt = *opt; - arrowOpt.rect = ar; - proxy()->drawPrimitive(PE_IndicatorArrowDown, &arrowOpt, p); - } - } - break; - case CE_PushButtonLabel: - if (const QStyleOptionButton *b = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - QStyleOptionButton btn(*b); - // We really don't want the label to be drawn the same as on - // windows style if it has an icon and text, then it should be more like a - // tab. So, cheat a little here. However, if it *is* only an icon - // the windows style works great, so just use that implementation. - const bool isEnabled = btn.state & State_Enabled; - const bool hasMenu = btn.features & QStyleOptionButton::HasMenu; - const bool hasIcon = !btn.icon.isNull(); - const bool hasText = !btn.text.isEmpty(); - const bool isActive = btn.state & State_Active; - const bool isPressed = btn.state & State_Sunken; - - const auto ct = cocoaControlType(&btn); - - if (!hasMenu && ct != QMacStylePrivate::Button_SquareButton) { - if (isPressed - || (isActive && isEnabled - && ((btn.state & State_On) - || ((btn.features & QStyleOptionButton::DefaultButton) && !d->autoDefaultButton) - || d->autoDefaultButton == btn.styleObject))) - btn.palette.setColor(QPalette::ButtonText, Qt::white); - } - - if ((!hasIcon && !hasMenu) || (hasIcon && !hasText)) { - QCommonStyle::drawControl(ce, &btn, p); - } else { - QRect freeContentRect = btn.rect; - QRect textRect = itemTextRect( - btn.fontMetrics, freeContentRect, Qt::AlignCenter, isEnabled, btn.text); - if (hasMenu) { - textRect.moveTo(11, textRect.top()); - } - // Draw the icon: - if (hasIcon) { - int contentW = textRect.width(); - if (hasMenu) - contentW += proxy()->pixelMetric(PM_MenuButtonIndicator) + 4; - QIcon::Mode mode = isEnabled ? QIcon::Normal : QIcon::Disabled; - if (mode == QIcon::Normal && btn.state & State_HasFocus) - mode = QIcon::Active; - // Decide if the icon is should be on or off: - QIcon::State state = QIcon::Off; - if (btn.state & State_On) - state = QIcon::On; - QPixmap pixmap = btn.icon.pixmap(opt->window, btn.iconSize, mode, state); - int pixmapWidth = pixmap.width() / pixmap.devicePixelRatio(); - int pixmapHeight = pixmap.height() / pixmap.devicePixelRatio(); - contentW += pixmapWidth + QMacStylePrivate::PushButtonContentPadding; - int iconLeftOffset = freeContentRect.x() + (freeContentRect.width() - contentW) / 2; - int iconTopOffset = freeContentRect.y() + (freeContentRect.height() - pixmapHeight) / 2; - QRect iconDestRect(iconLeftOffset, iconTopOffset, pixmapWidth, pixmapHeight); - QRect visualIconDestRect = visualRect(btn.direction, freeContentRect, iconDestRect); - proxy()->drawItemPixmap(p, visualIconDestRect, Qt::AlignLeft | Qt::AlignVCenter, pixmap); - int newOffset = iconDestRect.x() + iconDestRect.width() - + QMacStylePrivate::PushButtonContentPadding - textRect.x(); - textRect.adjust(newOffset, 0, newOffset, 0); - } - // Draw the text: - if (hasText) { - textRect = visualRect(btn.direction, freeContentRect, textRect); - proxy()->drawItemText(p, textRect, Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic, btn.palette, - isEnabled, btn.text, QPalette::ButtonText); - } - } - } - break; - case CE_ComboBoxLabel: - if (const auto *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - auto comboCopy = *cb; - comboCopy.direction = Qt::LeftToRight; - // The rectangle will be adjusted to SC_ComboBoxEditField with comboboxEditBounds() - QCommonStyle::drawControl(CE_ComboBoxLabel, &comboCopy, p); - } - break; - case CE_TabBarTabShape: - if (const auto *tabOpt = qstyleoption_cast<const QStyleOptionTab *>(opt)) { - if (tabOpt->documentMode) { - p->save(); - bool isUnified = false; -// if (w) { -// QRect tabRect = tabOpt->rect; -// QPoint windowTabStart = w->mapTo(w->window(), tabRect.topLeft()); -// isUnified = isInMacUnifiedToolbarArea(w->window()->windowHandle(), windowTabStart.y()); -// } - - const int tabOverlap = proxy()->pixelMetric(PM_TabBarTabOverlap, opt); - drawTabShape(p, tabOpt, isUnified, tabOverlap); - - p->restore(); - return; - } - - const bool isActive = tabOpt->state & State_Active; - const bool isEnabled = tabOpt->state & State_Enabled; - const bool isPressed = tabOpt->state & State_Sunken; - const bool isSelected = tabOpt->state & State_Selected; - const auto tabDirection = QMacStylePrivate::tabDirection(tabOpt->shape); - const bool verticalTabs = tabDirection == QMacStylePrivate::East - || tabDirection == QMacStylePrivate::West; - - QStyleOptionTab::TabPosition tp = tabOpt->position; - QStyleOptionTab::SelectedPosition sp = tabOpt->selectedPosition; - if (tabOpt->direction == Qt::RightToLeft && !verticalTabs) { - if (tp == QStyleOptionTab::Beginning) - tp = QStyleOptionTab::End; - else if (tp == QStyleOptionTab::End) - tp = QStyleOptionTab::Beginning; - - if (sp == QStyleOptionTab::NextIsSelected) - sp = QStyleOptionTab::PreviousIsSelected; - else if (sp == QStyleOptionTab::PreviousIsSelected) - sp = QStyleOptionTab::NextIsSelected; - } - - // Alas, NSSegmentedControl and NSSegmentedCell are letting us down. - // We're not able to draw it at will, either calling -[drawSegment: - // inFrame:withView:], -[drawRect:] or anything in between. Besides, - // there's no public API do draw the pressed state, AFAICS. We'll use - // a push NSButton instead and clip the CGContext. - // NOTE/TODO: this is not true. On 10.13 NSSegmentedControl works with - // some (black?) magic/magic dances, on 10.14 it simply works (was - // it fixed in AppKit?). But, indeed, we cannot make a tab 'pressed' - // with NSSegmentedControl (only selected), so we stay with buttons - // (mixing buttons and NSSegmentedControl for such a simple thing - // is too much work). - - const auto cs = d->effectiveAquaSizeConstrain(opt); - // Extra hacks to get the proper pressed appreance when not selected or selected and inactive - const bool needsInactiveHack = (!isActive && isSelected); - const auto ct = !needsInactiveHack && (isSelected || tp == QStyleOptionTab::OnlyOneTab) ? - QMacStylePrivate::Button_PushButton : - QMacStylePrivate::Button_PopupButton; - const bool isPopupButton = ct == QMacStylePrivate::Button_PopupButton; - const auto cw = QMacStylePrivate::CocoaControl(ct, cs); - auto *pb = static_cast<NSButton *>(d->cocoaControl(cw)); - - auto vOffset = isPopupButton ? 1 : 2; - if (tabDirection == QMacStylePrivate::East) - vOffset -= 1; - const auto outerAdjust = isPopupButton ? 1 : 4; - const auto innerAdjust = isPopupButton ? 20 : 10; - QRectF frameRect = tabOpt->rect; - if (verticalTabs) - frameRect = QRectF(frameRect.y(), frameRect.x(), frameRect.height(), frameRect.width()); - // Adjust before clipping - frameRect = frameRect.translated(0, vOffset); - switch (tp) { - case QStyleOptionTab::Beginning: - // Pressed state hack: tweak adjustments in preparation for flip below - if (!isSelected && tabDirection == QMacStylePrivate::West) - frameRect = frameRect.adjusted(-innerAdjust, 0, outerAdjust, 0); - else - frameRect = frameRect.adjusted(-outerAdjust, 0, innerAdjust, 0); - break; - case QStyleOptionTab::Middle: - frameRect = frameRect.adjusted(-innerAdjust, 0, innerAdjust, 0); - break; - case QStyleOptionTab::End: - // Pressed state hack: tweak adjustments in preparation for flip below - if (isSelected || tabDirection == QMacStylePrivate::West) - frameRect = frameRect.adjusted(-innerAdjust, 0, outerAdjust, 0); - else - frameRect = frameRect.adjusted(-outerAdjust, 0, innerAdjust, 0); - break; - case QStyleOptionTab::OnlyOneTab: - frameRect = frameRect.adjusted(-outerAdjust, 0, outerAdjust, 0); - break; - } - pb.frame = frameRect.toCGRect(); - - pb.enabled = isEnabled; - [pb highlight:isPressed]; - // Set off state when inactive. See needsInactiveHack for when it's selected - pb.state = (isActive && isSelected && !isPressed) ? NSOnState : NSOffState; - - const auto drawBezelBlock = ^(CGContextRef ctx, const CGRect &r) { - QMacAutoReleasePool pool; - CGContextClipToRect(ctx, opt->rect.toCGRect()); - if (!isSelected || needsInactiveHack) { - // Final stage of the pressed state hack: flip NSPopupButton rendering - if (!verticalTabs && tp == QStyleOptionTab::End) { - CGContextTranslateCTM(ctx, opt->rect.right(), 0); - CGContextScaleCTM(ctx, -1, 1); - CGContextTranslateCTM(ctx, -frameRect.left(), 0); - } else if (tabDirection == QMacStylePrivate::West && tp == QStyleOptionTab::Beginning) { - CGContextTranslateCTM(ctx, 0, opt->rect.top()); - CGContextScaleCTM(ctx, 1, -1); - CGContextTranslateCTM(ctx, 0, -frameRect.right()); - } else if (tabDirection == QMacStylePrivate::East && tp == QStyleOptionTab::End) { - CGContextTranslateCTM(ctx, 0, opt->rect.bottom()); - CGContextScaleCTM(ctx, 1, -1); - CGContextTranslateCTM(ctx, 0, -frameRect.left()); - } - } - - // Rotate and translate CTM when vertical - // On macOS: positive angle is CW, negative is CCW - if (tabDirection == QMacStylePrivate::West) { - CGContextTranslateCTM(ctx, 0, frameRect.right()); - CGContextRotateCTM(ctx, -M_PI_2); - CGContextTranslateCTM(ctx, -frameRect.left(), 0); - } else if (tabDirection == QMacStylePrivate::East) { - CGContextTranslateCTM(ctx, opt->rect.right(), 0); - CGContextRotateCTM(ctx, M_PI_2); - } - - // Now, if it's a trick with a popup button, it has an arrow - // which makes no sense on tabs. - NSPopUpArrowPosition oldPosition = NSPopUpArrowAtCenter; - NSPopUpButtonCell *pbCell = nil; - if (isPopupButton) { - pbCell = static_cast<NSPopUpButtonCell *>(pb.cell); - oldPosition = pbCell.arrowPosition; - pbCell.arrowPosition = NSPopUpNoArrow; - } - - [pb.cell drawBezelWithFrame:r inView:pb.superview]; - - if (pbCell) // Restore, we may reuse it for a ComboBox. - pbCell.arrowPosition = oldPosition; - }; - - if (needsInactiveHack) { - // First, render tab as non-selected tab on a pixamp - const qreal pixelRatio = p->device()->devicePixelRatioF(); - QImage tabPixmap(opt->rect.size() * pixelRatio, QImage::Format_ARGB32_Premultiplied); - tabPixmap.setDevicePixelRatio(pixelRatio); - tabPixmap.fill(Qt::transparent); - QPainter tabPainter(&tabPixmap); - d->drawNSViewInRect(pb, frameRect, &tabPainter, ^(CGContextRef ctx, const CGRect &r) { - QMacAutoReleasePool pool; - CGContextTranslateCTM(ctx, -opt->rect.left(), -opt->rect.top()); - drawBezelBlock(ctx, r); - }); - tabPainter.end(); - - // Then, darken it with the proper shade of gray - const qreal inactiveGray = 0.898; // As measured - const int inactiveGray8 = qRound(inactiveGray * 255.0); - const QRgb inactiveGrayRGB = qRgb(inactiveGray8, inactiveGray8, inactiveGray8); - for (int l = 0; l < tabPixmap.height(); ++l) { - auto *line = reinterpret_cast<QRgb*>(tabPixmap.scanLine(l)); - for (int i = 0; i < tabPixmap.width(); ++i) { - if (qAlpha(line[i]) == 255) { - line[i] = inactiveGrayRGB; - } else if (qAlpha(line[i]) > 128) { - const int g = qRound(inactiveGray * qRed(line[i])); - line[i] = qRgba(g, g, g, qAlpha(line[i])); - } - } - } - - // Finally, draw the tab pixmap on the current painter - p->drawImage(opt->rect, tabPixmap); - } else { - d->drawNSViewInRect(pb, frameRect, p, drawBezelBlock); - } - - if (!isSelected && sp != QStyleOptionTab::NextIsSelected - && tp != QStyleOptionTab::End - && tp != QStyleOptionTab::OnlyOneTab) { - static const QPen separatorPen(Qt::black, 1.0); - p->save(); - p->setOpacity(isEnabled ? 0.105 : 0.06); // As measured - p->setPen(separatorPen); - if (tabDirection == QMacStylePrivate::West) { - p->drawLine(QLineF(opt->rect.left() + 1.5, opt->rect.bottom(), - opt->rect.right() - 0.5, opt->rect.bottom())); - } else if (tabDirection == QMacStylePrivate::East) { - p->drawLine(QLineF(opt->rect.left(), opt->rect.bottom(), - opt->rect.right() - 0.5, opt->rect.bottom())); - } else { - p->drawLine(QLineF(opt->rect.right(), opt->rect.top() + 1.0, - opt->rect.right(), opt->rect.bottom() - 0.5)); - } - p->restore(); - } - - // TODO Needs size adjustment to fit the focus ring - if (tabOpt->state & State_HasFocus) { - QMacStylePrivate::CocoaControlType focusRingType; - switch (tp) { - case QStyleOptionTab::Beginning: - focusRingType = verticalTabs ? QMacStylePrivate::SegmentedControl_Last - : QMacStylePrivate::SegmentedControl_First; - break; - case QStyleOptionTab::Middle: - focusRingType = QMacStylePrivate::SegmentedControl_Middle; - break; - case QStyleOptionTab::End: - focusRingType = verticalTabs ? QMacStylePrivate::SegmentedControl_First - : QMacStylePrivate::SegmentedControl_Last; - break; - case QStyleOptionTab::OnlyOneTab: - focusRingType = QMacStylePrivate::SegmentedControl_Single; - break; - } - } - } - break; - case CE_TabBarTabLabel: - if (const auto *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { - QStyleOptionTab myTab = *tab; - const auto tabDirection = QMacStylePrivate::tabDirection(tab->shape); - const bool verticalTabs = tabDirection == QMacStylePrivate::East - || tabDirection == QMacStylePrivate::West; - - // Check to see if we use have the same as the system font - // (QComboMenuItem is internal and should never be seen by the - // outside world, unless they read the source, in which case, it's - // their own fault). -// const bool nonDefaultFont = p->font() != qt_app_fonts_hash()->value("QComboMenuItem"); - const bool nonDefaultFont = false; - -// if (!myTab.documentMode && (myTab.state & State_Selected) && (myTab.state & State_Active)) -// if (const auto *tabBar = qobject_cast<const QTabBar *>(w)) -// if (!tabBar->tabTextColor(tabBar->currentIndex()).isValid()) -// myTab.palette.setColor(QPalette::WindowText, Qt::white); - - if (myTab.documentMode && isDarkMode()) { - bool active = (myTab.state & State_Selected) && (myTab.state & State_Active); - myTab.palette.setColor(QPalette::WindowText, active ? Qt::white : Qt::gray); - } - - int heightOffset = 0; - if (verticalTabs) { - heightOffset = -1; - } else if (nonDefaultFont) { - if (p->fontMetrics().height() == myTab.rect.height()) - heightOffset = 2; - } - myTab.rect.setHeight(myTab.rect.height() + heightOffset); - - QCommonStyle::drawControl(ce, &myTab, p); - } - break; - case CE_DockWidgetTitle: - if (const auto *dwOpt = qstyleoption_cast<const QStyleOptionDockWidget *>(opt)) { - const bool isVertical = dwOpt->verticalTitleBar; - const auto effectiveRect = isVertical ? opt->rect.transposed() : opt->rect; - p->save(); - if (isVertical) { - p->translate(effectiveRect.left(), effectiveRect.top() + effectiveRect.width()); - p->rotate(-90); - p->translate(-effectiveRect.left(), -effectiveRect.top()); - } - - // fill title bar background - QLinearGradient linearGrad; - linearGrad.setStart(QPointF(0, 0)); - linearGrad.setFinalStop(QPointF(0, 2 * effectiveRect.height())); - linearGrad.setColorAt(0, opt->palette.button().color()); - linearGrad.setColorAt(1, opt->palette.dark().color()); - p->fillRect(effectiveRect, linearGrad); - - // draw horizontal line at bottom - p->setPen(opt->palette.dark().color()); - p->drawLine(effectiveRect.bottomLeft(), effectiveRect.bottomRight()); - - if (!dwOpt->title.isEmpty()) { - auto titleRect = proxy()->subElementRect(SE_DockWidgetTitleBarText, opt); - if (isVertical) - titleRect = QRect(effectiveRect.left() + opt->rect.bottom() - titleRect.bottom(), - effectiveRect.top() + titleRect.left() - opt->rect.left(), - titleRect.height(), - titleRect.width()); - - const auto text = p->fontMetrics().elidedText(dwOpt->title, Qt::ElideRight, titleRect.width()); - proxy()->drawItemText(p, titleRect, Qt::AlignCenter, dwOpt->palette, - dwOpt->state & State_Enabled, text, QPalette::WindowText); - } - p->restore(); - } - break; - case CE_FocusFrame: { -// const auto *ff = qobject_cast<const QFocusFrame *>(w); -// const auto *ffw = ff ? ff->widget() : nullptr; -// const auto ct = [=] { -// if (ffw) { -// if (ffw->inherits("QCheckBox")) -// return QMacStylePrivate::Button_CheckBox; -// if (ffw->inherits("QRadioButton")) -// return QMacStylePrivate::Button_RadioButton; -// if (ffw->inherits("QLineEdit") || ffw->inherits("QTextEdit")) -// return QMacStylePrivate::TextField; -// } -// -// return QMacStylePrivate::Box; // Not really, just make it the default -// } (); -// const auto cs = ffw ? (ffw->testAttribute(Qt::WA_MacMiniSize) ? QStyleHelper::SizeMini : -// ffw->testAttribute(Qt::WA_MacSmallSize) ? QStyleHelper::SizeSmall : -// QStyleHelper::SizeLarge) : -// QStyleHelper::SizeLarge; -// const int hMargin = proxy()->pixelMetric(QStyle::PM_FocusFrameHMargin, opt); -// const int vMargin = proxy()->pixelMetric(QStyle::PM_FocusFrameVMargin, opt); -// d->drawFocusRing(p, opt->rect, hMargin, vMargin, QMacStylePrivate::CocoaControl(ct, cs)); - break; } - case CE_MenuEmptyArea: - // Skip: PE_PanelMenu fills in everything - break; - case CE_MenuItem: - case CE_MenuHMargin: - case CE_MenuVMargin: - case CE_MenuTearoff: - case CE_MenuScroller: - if (const QStyleOptionMenuItem *mi = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) { - const bool active = mi->state & State_Selected; - if (active) - p->fillRect(mi->rect, mi->palette.highlight()); - - const QStyleHelper::WidgetSizePolicy widgetSize = d->aquaSizeConstrain(opt); - - if (ce == CE_MenuTearoff) { - p->setPen(QPen(mi->palette.dark().color(), 1, Qt::DashLine)); - p->drawLine(mi->rect.x() + 2, mi->rect.y() + mi->rect.height() / 2 - 1, - mi->rect.x() + mi->rect.width() - 4, - mi->rect.y() + mi->rect.height() / 2 - 1); - p->setPen(QPen(mi->palette.light().color(), 1, Qt::DashLine)); - p->drawLine(mi->rect.x() + 2, mi->rect.y() + mi->rect.height() / 2, - mi->rect.x() + mi->rect.width() - 4, - mi->rect.y() + mi->rect.height() / 2); - } else if (ce == CE_MenuScroller) { - const QSize scrollerSize = QSize(10, 8); - const int scrollerVOffset = 5; - const int left = mi->rect.x() + (mi->rect.width() - scrollerSize.width()) / 2; - const int right = left + scrollerSize.width(); - int top; - int bottom; - if (opt->state & State_DownArrow) { - bottom = mi->rect.y() + scrollerVOffset; - top = bottom + scrollerSize.height(); - } else { - bottom = mi->rect.bottom() - scrollerVOffset; - top = bottom - scrollerSize.height(); - } - p->save(); - p->setRenderHint(QPainter::Antialiasing); - QPainterPath path; - path.moveTo(left, bottom); - path.lineTo(right, bottom); - path.lineTo((left + right) / 2, top); - p->fillPath(path, opt->palette.buttonText()); - p->restore(); - } else if (ce != CE_MenuItem) { - break; - } - - if (mi->menuItemType == QStyleOptionMenuItem::Separator) { - CGColorRef separatorColor = [NSColor quaternaryLabelColor].CGColor; - const QRect separatorRect = QRect(mi->rect.left(), mi->rect.center().y(), mi->rect.width(), 2); - p->fillRect(separatorRect, qt_mac_toQColor(separatorColor)); - break; - } - - const int maxpmw = mi->maxIconWidth; - const bool enabled = mi->state & State_Enabled; - - int xpos = mi->rect.x() + 18; - int checkcol = maxpmw; - if (!enabled) - p->setPen(mi->palette.text().color()); - else if (active) - p->setPen(mi->palette.highlightedText().color()); - else - p->setPen(mi->palette.buttonText().color()); - - if (mi->checked) { - QStyleOption checkmarkOpt; -// checkmarkOpt.initFrom(w); - - const int mw = checkcol + macItemFrame; - const int mh = mi->rect.height() + macItemFrame; - const int xp = mi->rect.x() + macItemFrame; - checkmarkOpt.rect = QRect(xp, mi->rect.y() - checkmarkOpt.fontMetrics.descent(), mw, mh); - - checkmarkOpt.state.setFlag(State_On, active); - checkmarkOpt.state.setFlag(State_Enabled, enabled); - if (widgetSize == QStyleHelper::SizeMini) - checkmarkOpt.state |= State_Mini; - else if (widgetSize == QStyleHelper::SizeSmall) - checkmarkOpt.state |= State_Small; - - // We let drawPrimitive(PE_IndicatorMenuCheckMark) pick the right color - checkmarkOpt.palette.setColor(QPalette::HighlightedText, p->pen().color()); - checkmarkOpt.palette.setColor(QPalette::Text, p->pen().color()); - - proxy()->drawPrimitive(PE_IndicatorMenuCheckMark, &checkmarkOpt, p); - } - if (!mi->icon.isNull()) { - QIcon::Mode mode = (mi->state & State_Enabled) ? QIcon::Normal - : QIcon::Disabled; - // Always be normal or disabled to follow the Mac style. - int smallIconSize = proxy()->pixelMetric(PM_SmallIconSize); - QSize iconSize(smallIconSize, smallIconSize); -//#if QT_CONFIG(combobox) -// if (const QComboBox *comboBox = qobject_cast<const QComboBox *>(w)) { -// iconSize = comboBox->iconSize(); -// } -//#endif - QPixmap pixmap = mi->icon.pixmap(opt->window, iconSize, mode); - int pixw = pixmap.width() / pixmap.devicePixelRatio(); - int pixh = pixmap.height() / pixmap.devicePixelRatio(); - QRect cr(xpos, mi->rect.y(), checkcol, mi->rect.height()); - QRect pmr(0, 0, pixw, pixh); - pmr.moveCenter(cr.center()); - p->drawPixmap(pmr.topLeft(), pixmap); - xpos += pixw + 6; - } - - QString s = mi->text; - const auto text_flags = Qt::AlignVCenter | Qt::TextHideMnemonic - | Qt::TextSingleLine | Qt::AlignAbsolute; - int yPos = mi->rect.y(); - if (widgetSize == QStyleHelper::SizeMini) - yPos += 1; - - const bool isSubMenu = mi->menuItemType == QStyleOptionMenuItem::SubMenu; - const int tabwidth = isSubMenu ? 9 : mi->tabWidth; - - QString rightMarginText; - if (isSubMenu) - rightMarginText = QStringLiteral("\u25b6\ufe0e"); // U+25B6 U+FE0E: BLACK RIGHT-POINTING TRIANGLE - - // If present, save and remove embedded shorcut from text - const int tabIndex = s.indexOf(QLatin1Char('\t')); - if (tabIndex >= 0) { - if (!isSubMenu) // ... but ignore it if it's a submenu. - rightMarginText = s.mid(tabIndex + 1); - s = s.left(tabIndex); - } - - p->save(); - if (!rightMarginText.isEmpty()) { -// p->setFont(qt_app_fonts_hash()->value("QMenuItem", p->font())); - int xp = mi->rect.right() - tabwidth - macRightBorder + 2; - if (!isSubMenu) - xp -= macItemHMargin + macItemFrame + 3; // Adjust for shortcut - p->drawText(xp, yPos, tabwidth, mi->rect.height(), text_flags | Qt::AlignRight, rightMarginText); - } - - if (!s.isEmpty()) { - const int xm = macItemFrame + maxpmw + macItemHMargin; - QFont myFont = mi->font; - // myFont may not have any "hard" flags set. We override - // the point size so that when it is resolved against the device, this font will win. - // This is mainly to handle cases where someone sets the font on the window - // and then the combo inherits it and passes it onward. At that point the resolve mask - // is very, very weak. This makes it stonger. - myFont.setPointSizeF(QFontInfo(mi->font).pointSizeF()); - - // QTBUG-65653: Our own text rendering doesn't look good enough, especially on non-retina - // displays. Worked around here while waiting for a proper fix in QCoreTextFontEngine. - // Only if we're not using QCoreTextFontEngine we do fallback to our own text rendering. - const auto *fontEngine = QFontPrivate::get(myFont)->engineForScript(QChar::Script_Common); - Q_ASSERT(fontEngine); - if (fontEngine->type() == QFontEngine::Multi) { - fontEngine = static_cast<const QFontEngineMulti *>(fontEngine)->engine(0); - Q_ASSERT(fontEngine); - } - if (fontEngine->type() == QFontEngine::Mac) { - NSFont *f = (NSFont *)(CTFontRef)fontEngine->handle(); - - // Respect the menu item palette as set in the style option. - const auto pc = p->pen().color(); - NSColor *c = [NSColor colorWithSRGBRed:pc.redF() - green:pc.greenF() - blue:pc.blueF() - alpha:pc.alphaF()]; - - s = qt_mac_removeMnemonics(s); - - QMacCGContext cgCtx(p); - d->setupNSGraphicsContext(cgCtx, YES); - - // Draw at point instead of in rect, as the rect we've computed for the menu item - // is based on the font metrics we got from HarfBuzz, so we may risk having CoreText - // line-break the string if it doesn't fit the given rect. It's better to draw outside - // the rect and possibly overlap something than to have part of the text disappear. - [s.toNSString() drawAtPoint:CGPointMake(xpos, yPos) - withAttributes:@{ NSFontAttributeName:f, NSForegroundColorAttributeName:c, - NSObliquenessAttributeName: [NSNumber numberWithDouble: myFont.italic() ? 0.3 : 0.0]}]; - - d->restoreNSGraphicsContext(cgCtx); - } else { - p->setFont(myFont); - p->drawText(xpos, yPos, mi->rect.width() - xm - tabwidth + 1, - mi->rect.height(), text_flags, s); - } - } - p->restore(); - } - break; - case CE_MenuBarItem: - case CE_MenuBarEmptyArea: - if (const QStyleOptionMenuItem *mi = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) { - const bool selected = (opt->state & State_Selected) && (opt->state & State_Enabled) && (opt->state & State_Sunken); - const QBrush bg = selected ? mi->palette.highlight() : mi->palette.window(); - p->fillRect(mi->rect, bg); - - if (ce != CE_MenuBarItem) - break; - - if (!mi->icon.isNull()) { - int iconExtent = proxy()->pixelMetric(PM_SmallIconSize); - drawItemPixmap(p, mi->rect, - Qt::AlignCenter | Qt::TextHideMnemonic | Qt::TextDontClip - | Qt::TextSingleLine, - mi->icon.pixmap(opt->window, QSize(iconExtent, iconExtent), - (mi->state & State_Enabled) ? QIcon::Normal : QIcon::Disabled)); - } else { - drawItemText(p, mi->rect, - Qt::AlignCenter | Qt::TextHideMnemonic | Qt::TextDontClip - | Qt::TextSingleLine, - mi->palette, mi->state & State_Enabled, - mi->text, selected ? QPalette::HighlightedText : QPalette::ButtonText); - } - } - break; - case CE_ProgressBarLabel: - case CE_ProgressBarContents: - break; - case CE_ProgressBarGroove: - if (const QStyleOptionProgressBar *pb = qstyleoption_cast<const QStyleOptionProgressBar *>(opt)) { - const bool isIndeterminate = (pb->minimum == 0 && pb->maximum == 0); - const bool inverted = pb->invertedAppearance; - bool reverse = pb->direction == Qt::RightToLeft; - if (inverted) - reverse = !reverse; - - QRect rect = pb->rect; - const CGRect cgRect = rect.toCGRect(); - - const auto aquaSize = d->aquaSizeConstrain(opt); - -// const QProgressStyleAnimation *animation = qobject_cast<QProgressStyleAnimation*>(d->animation(opt->styleObject)); - QIndeterminateProgressIndicator *ipi = nil; -// if (isIndeterminate || animation) - ipi = static_cast<QIndeterminateProgressIndicator *>(d->cocoaControl({ QMacStylePrivate::ProgressIndicator_Indeterminate, aquaSize })); - if (isIndeterminate) { - // QIndeterminateProgressIndicator derives from NSProgressIndicator. We use a single - // instance that we start animating as soon as one of the progress bars is indeterminate. - // Since they will be in sync (as it's the case in Cocoa), we just need to draw it with - // the right geometry when the animation triggers an update. However, we can't hide it - // entirely between frames since that would stop the animation, so we just set its alpha - // value to 0. Same if we remove it from its superview. See QIndeterminateProgressIndicator - // implementation for details. - // - // Quick: consider implementing this animation by using Quick/QML instead. - // -// if (!animation && opt->styleObject) { -// auto *animation = new QProgressStyleAnimation(d->animateSpeed(QMacStylePrivate::AquaProgressBar), opt->styleObject); -// // NSProgressIndicator is heavier to draw than the HITheme API, so we reduce the frame rate a couple notches. -// animation->setFrameRate(QStyleAnimation::FifteenFps); -// d->startAnimation(animation); -// [ipi startAnimation]; -// } - - d->setupNSGraphicsContext(cg, NO); - d->setupVerticalInvertedXform(cg, reverse, false, cgRect); - [ipi drawWithFrame:cgRect inView:d->backingStoreNSView]; - d->restoreNSGraphicsContext(cg); - } else { -// if (animation) { -// d->stopAnimation(opt->styleObject); -// [ipi stopAnimation]; -// } - - const auto cw = QMacStylePrivate::CocoaControl(QMacStylePrivate::ProgressIndicator_Determinate, aquaSize); - auto *pi = static_cast<NSProgressIndicator *>(d->cocoaControl(cw)); - d->drawNSViewInRect(pi, rect, p, ^(CGContextRef ctx, const CGRect &rect) { - QMacAutoReleasePool pool; - d->setupVerticalInvertedXform(ctx, reverse, false, rect); - pi.minValue = pb->minimum; - pi.maxValue = pb->maximum; - pi.doubleValue = pb->progress; - [pi drawRect:rect]; - }); - } - } - break; - case CE_SizeGrip: { - // This is not HIG kosher: Fall back to the old stuff until we decide what to do. -//#ifndef QT_NO_MDIAREA -// if (!w || !qobject_cast<QMdiSubWindow *>(w->parentWidget())) -//#endif -// break; - -// if (w->testAttribute(Qt::WA_MacOpaqueSizeGrip)) -// p->fillRect(opt->rect, opt->palette.window()); - -// QPen lineColor = QColor(82, 82, 82, 192); -// lineColor.setWidth(1); -// p->save(); -// p->setRenderHint(QPainter::Antialiasing); -// p->setPen(lineColor); -// const Qt::LayoutDirection layoutDirection = w ? w->layoutDirection() : qApp->layoutDirection(); -// const int NumLines = 3; -// for (int l = 0; l < NumLines; ++l) { -// const int offset = (l * 4 + 3); -// QPoint start, end; -// if (layoutDirection == Qt::LeftToRight) { -// start = QPoint(opt->rect.width() - offset, opt->rect.height() - 1); -// end = QPoint(opt->rect.width() - 1, opt->rect.height() - offset); -// } else { -// start = QPoint(offset, opt->rect.height() - 1); -// end = QPoint(1, opt->rect.height() - offset); -// } -// p->drawLine(start, end); -// } -// p->restore(); - break; - } - case CE_Splitter: - if (opt->rect.width() > 1 && opt->rect.height() > 1) { - const bool isVertical = !(opt->state & QStyle::State_Horizontal); - // Qt refers to the layout orientation, while Cocoa refers to the divider's. - const auto ct = isVertical ? QMacStylePrivate::SplitView_Horizontal : QMacStylePrivate::SplitView_Vertical; - const auto cw = QMacStylePrivate::CocoaControl(ct, QStyleHelper::SizeLarge); - auto *sv = static_cast<NSSplitView *>(d->cocoaControl(cw)); - sv.frame = opt->rect.toCGRect(); - d->drawNSViewInRect(sv, opt->rect, p, ^(CGContextRef, const CGRect &rect) { - QMacAutoReleasePool pool; - [sv drawDividerInRect:rect]; - }); - } else { - QPen oldPen = p->pen(); - p->setPen(opt->palette.dark().color()); - if (opt->state & QStyle::State_Horizontal) - p->drawLine(opt->rect.topLeft(), opt->rect.bottomLeft()); - else - p->drawLine(opt->rect.topLeft(), opt->rect.topRight()); - p->setPen(oldPen); - } - break; - case CE_RubberBand: - if (const QStyleOptionRubberBand *rubber = qstyleoption_cast<const QStyleOptionRubberBand *>(opt)) { - QColor fillColor(opt->palette.color(QPalette::Disabled, QPalette::Highlight)); - if (!rubber->opaque) { - QColor strokeColor; - // I retrieved these colors from the Carbon-Dev mailing list - strokeColor.setHsvF(0, 0, 0.86, 1.0); - fillColor.setHsvF(0, 0, 0.53, 0.25); - if (opt->rect.width() * opt->rect.height() <= 3) { - p->fillRect(opt->rect, strokeColor); - } else { - QPen oldPen = p->pen(); - QBrush oldBrush = p->brush(); - QPen pen(strokeColor); - p->setPen(pen); - p->setBrush(fillColor); - QRect adjusted = opt->rect.adjusted(1, 1, -1, -1); - if (adjusted.isValid()) - p->drawRect(adjusted); - p->setPen(oldPen); - p->setBrush(oldBrush); - } - } else { - p->fillRect(opt->rect, fillColor); - } - } - break; - case CE_ToolBar: { - const QStyleOptionToolBar *toolBar = qstyleoption_cast<const QStyleOptionToolBar *>(opt); - const bool isDarkMode = qt_mac_applicationIsInDarkMode(); - - // Unified title and toolbar drawing. In this mode the cocoa platform plugin will - // fill the top toolbar area part with a background gradient that "unifies" with - // the title bar. The following code fills the toolBar area with transparent pixels - // to make that gradient visible. -// if (w) { -//#if QT_CONFIG(mainwindow) -// if (QMainWindow * mainWindow = qobject_cast<QMainWindow *>(w->window())) { -// if (toolBar && toolBar->toolBarArea == Qt::TopToolBarArea && mainWindow->unifiedTitleAndToolBarOnMac()) { -// // fill with transparent pixels. -// p->save(); -// p->setCompositionMode(QPainter::CompositionMode_Source); -// p->fillRect(opt->rect, Qt::transparent); -// p->restore(); - -// // Draw a horizontal separator line at the toolBar bottom if the "unified" area ends here. -// // There might be additional toolbars or other widgets such as tab bars in document -// // mode below. Determine this by making a unified toolbar area test for the row below -// // this toolbar. -// const QPoint windowToolbarEnd = w->mapTo(w->window(), opt->rect.bottomLeft()); -// const bool isEndOfUnifiedArea = !isInMacUnifiedToolbarArea(w->window()->windowHandle(), windowToolbarEnd.y() + 1); -// if (isEndOfUnifiedArea) { -// const int margin = qt_mac_aqua_get_metric(SeparatorSize); -// const auto separatorRect = QRect(opt->rect.left(), opt->rect.bottom(), opt->rect.width(), margin); -// p->fillRect(separatorRect, isDarkMode ? darkModeSeparatorLine : opt->palette.dark().color()); -// } -// break; -// } -// } -//#endif -// } - - // draw background gradient - QLinearGradient linearGrad; - if (opt->state & State_Horizontal) - linearGrad = QLinearGradient(0, opt->rect.top(), 0, opt->rect.bottom()); - else - linearGrad = QLinearGradient(opt->rect.left(), 0, opt->rect.right(), 0); - - QColor mainWindowGradientBegin = isDarkMode ? darkMainWindowGradientBegin : lightMainWindowGradientBegin; - QColor mainWindowGradientEnd = isDarkMode ? darkMainWindowGradientEnd : lightMainWindowGradientEnd; - - linearGrad.setColorAt(0, mainWindowGradientBegin); - linearGrad.setColorAt(1, mainWindowGradientEnd); - p->fillRect(opt->rect, linearGrad); - - p->save(); - QRect toolbarRect = isDarkMode ? opt->rect.adjusted(0, 0, 0, 1) : opt->rect; - if (opt->state & State_Horizontal) { - p->setPen(isDarkMode ? darkModeSeparatorLine : mainWindowGradientBegin.lighter(114)); - p->drawLine(toolbarRect.topLeft(), toolbarRect.topRight()); - p->setPen(isDarkMode ? darkModeSeparatorLine :mainWindowGradientEnd.darker(114)); - p->drawLine(toolbarRect.bottomLeft(), toolbarRect.bottomRight()); - } else { - p->setPen(isDarkMode ? darkModeSeparatorLine : mainWindowGradientBegin.lighter(114)); - p->drawLine(toolbarRect.topLeft(), toolbarRect.bottomLeft()); - p->setPen(isDarkMode ? darkModeSeparatorLine : mainWindowGradientEnd.darker(114)); - p->drawLine(toolbarRect.topRight(), toolbarRect.bottomRight()); - } - p->restore(); - - break; } - default: - QCommonStyle::drawControl(ce, opt, p); - break; - } -} - -static void setLayoutItemMargins(int left, int top, int right, int bottom, QRect *rect, Qt::LayoutDirection dir) -{ - if (dir == Qt::RightToLeft) { - rect->adjust(-right, top, -left, bottom); - } else { - rect->adjust(left, top, right, bottom); - } -} - -QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt) const -{ - Q_D(const QMacStyle); - QRect rect; - const int controlSize = getControlSize(opt); - - switch (sr) { - case SE_ItemViewItemText: - if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) { - int fw = proxy()->pixelMetric(PM_FocusFrameHMargin, opt); - // We add the focusframeargin between icon and text in commonstyle - rect = QCommonStyle::subElementRect(sr, opt); - if (vopt->features & QStyleOptionViewItem::HasDecoration) - rect.adjust(-fw, 0, 0, 0); - } - break; - case SE_ToolBoxTabContents: - rect = QCommonStyle::subElementRect(sr, opt); - break; - case SE_PushButtonContents: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - // Comment from the old HITheme days: - // "Unlike Carbon, we want the button to always be drawn inside its bounds. - // Therefore, the button is a bit smaller, so that even if it got focus, - // the focus 'shadow' will be inside. Adjust the content rect likewise." - // In the future, we should consider using -[NSCell titleRectForBounds:]. - // Since it requires configuring the NSButton fully, i.e. frame, image, - // title and font, we keep things more manual until we are more familiar - // with side effects when changing NSButton state. - const auto ct = cocoaControlType(btn); - const auto cs = d->effectiveAquaSizeConstrain(btn); - const auto cw = QMacStylePrivate::CocoaControl(ct, cs); - auto frameRect = cw.adjustedControlFrame(btn->rect); - frameRect -= cw.titleMargins(); - rect = frameRect.toRect(); - } - break; - case SE_HeaderLabel: { - int margin = proxy()->pixelMetric(QStyle::PM_HeaderMargin, opt); - rect.setRect(opt->rect.x() + margin, opt->rect.y(), - opt->rect.width() - margin * 2, opt->rect.height() - 2); - if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) { - // Subtract width needed for arrow, if there is one - if (header->sortIndicator != QStyleOptionHeader::None) { - if (opt->state & State_Horizontal) - rect.setWidth(rect.width() - (headerSectionArrowHeight) - (margin * 2)); - else - rect.setHeight(rect.height() - (headerSectionArrowHeight) - (margin * 2)); - } - } - rect = visualRect(opt->direction, opt->rect, rect); - break; - } - case SE_HeaderArrow: { - int h = opt->rect.height(); - int w = opt->rect.width(); - int x = opt->rect.x(); - int y = opt->rect.y(); - int margin = proxy()->pixelMetric(QStyle::PM_HeaderMargin, opt); - - if (opt->state & State_Horizontal) { - rect.setRect(x + w - margin * 2 - headerSectionArrowHeight, y + 5, - headerSectionArrowHeight, h - margin * 2 - 5); - } else { - rect.setRect(x + 5, y + h - margin * 2 - headerSectionArrowHeight, - w - margin * 2 - 5, headerSectionArrowHeight); - } - rect = visualRect(opt->direction, opt->rect, rect); - break; - } - case SE_ProgressBarGroove: - // Wrong in the secondary dimension, but accurate enough in the main dimension. - rect = opt->rect; - break; - case SE_ProgressBarLabel: - break; - case SE_ProgressBarContents: - rect = opt->rect; - break; - case SE_TreeViewDisclosureItem: { - rect = opt->rect; - // As previously returned by HIThemeGetButtonContentBounds - rect.setLeft(rect.left() + 2 + DisclosureOffset); - break; - } - case SE_TabWidgetLeftCorner: - if (const QStyleOptionTabWidgetFrame *twf - = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) { - switch (twf->shape) { - case QStyleOptionTab::RoundedNorth: - case QStyleOptionTab::TriangularNorth: - rect = QRect(QPoint(0, 0), twf->leftCornerWidgetSize); - break; - case QStyleOptionTab::RoundedSouth: - case QStyleOptionTab::TriangularSouth: - rect = QRect(QPoint(0, twf->rect.height() - twf->leftCornerWidgetSize.height()), - twf->leftCornerWidgetSize); - break; - default: - break; - } - rect = visualRect(twf->direction, twf->rect, rect); - } - break; - case SE_TabWidgetRightCorner: - if (const QStyleOptionTabWidgetFrame *twf - = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) { - switch (twf->shape) { - case QStyleOptionTab::RoundedNorth: - case QStyleOptionTab::TriangularNorth: - rect = QRect(QPoint(twf->rect.width() - twf->rightCornerWidgetSize.width(), 0), - twf->rightCornerWidgetSize); - break; - case QStyleOptionTab::RoundedSouth: - case QStyleOptionTab::TriangularSouth: - rect = QRect(QPoint(twf->rect.width() - twf->rightCornerWidgetSize.width(), - twf->rect.height() - twf->rightCornerWidgetSize.height()), - twf->rightCornerWidgetSize); - break; - default: - break; - } - rect = visualRect(twf->direction, twf->rect, rect); - } - break; - case SE_TabWidgetTabContents: - rect = QCommonStyle::subElementRect(sr, opt); - if (const auto *twf = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) { - if (twf->lineWidth != 0) { - switch (QMacStylePrivate::tabDirection(twf->shape)) { - case QMacStylePrivate::North: - rect.adjust(+1, +14, -1, -1); - break; - case QMacStylePrivate::South: - rect.adjust(+1, +1, -1, -14); - break; - case QMacStylePrivate::West: - rect.adjust(+14, +1, -1, -1); - break; - case QMacStylePrivate::East: - rect.adjust(+1, +1, -14, -1); - } - } - } - break; - case SE_TabBarTabText: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { - QRect dummyIconRect; - d->tabLayout(tab, &rect, &dummyIconRect); - } - break; - case SE_TabBarTabLeftButton: - case SE_TabBarTabRightButton: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { - bool selected = tab->state & State_Selected; - int verticalShift = proxy()->pixelMetric(QStyle::PM_TabBarTabShiftVertical, tab); - int horizontalShift = proxy()->pixelMetric(QStyle::PM_TabBarTabShiftHorizontal, tab); - int hpadding = 5; - - bool verticalTabs = tab->shape == QStyleOptionTab::RoundedEast - || tab->shape == QStyleOptionTab::RoundedWest - || tab->shape == QStyleOptionTab::TriangularEast - || tab->shape == QStyleOptionTab::TriangularWest; - - QRect tr = tab->rect; - if (tab->shape == QStyleOptionTab::RoundedSouth || tab->shape == QStyleOptionTab::TriangularSouth) - verticalShift = -verticalShift; - if (verticalTabs) { - qSwap(horizontalShift, verticalShift); - horizontalShift *= -1; - verticalShift *= -1; - } - if (tab->shape == QStyleOptionTab::RoundedWest || tab->shape == QStyleOptionTab::TriangularWest) - horizontalShift = -horizontalShift; - - tr.adjust(0, 0, horizontalShift, verticalShift); - if (selected) - { - tr.setBottom(tr.bottom() - verticalShift); - tr.setRight(tr.right() - horizontalShift); - } - - QSize size = (sr == SE_TabBarTabLeftButton) ? tab->leftButtonSize : tab->rightButtonSize; - int w = size.width(); - int h = size.height(); - int midHeight = static_cast<int>(qCeil(float(tr.height() - h) / 2)); - int midWidth = ((tr.width() - w) / 2); - - bool atTheTop = true; - switch (tab->shape) { - case QStyleOptionTab::RoundedWest: - case QStyleOptionTab::TriangularWest: - atTheTop = (sr == SE_TabBarTabLeftButton); - break; - case QStyleOptionTab::RoundedEast: - case QStyleOptionTab::TriangularEast: - atTheTop = (sr == SE_TabBarTabRightButton); - break; - default: - if (sr == SE_TabBarTabLeftButton) - rect = QRect(tab->rect.x() + hpadding, midHeight, w, h); - else - rect = QRect(tab->rect.right() - w - hpadding, midHeight, w, h); - rect = visualRect(tab->direction, tab->rect, rect); - } - if (verticalTabs) { - if (atTheTop) - rect = QRect(midWidth, tr.y() + tab->rect.height() - hpadding - h, w, h); - else - rect = QRect(midWidth, tr.y() + hpadding, w, h); - } - } - break; - case SE_LineEditContents: { - // From using pixelTool with XCode/NSTextTextField - int leftPadding = 4; - int rightPadding = 4; - int topPadding = 4; - int bottomPadding = 0; - - if (opt->state & QStyle::State_Small) { - topPadding = 3; - } else if (opt->state & QStyle::State_Mini) { - topPadding = 2; - } - - rect = QRect(leftPadding, topPadding, opt->rect.width() - leftPadding - rightPadding, - opt->rect.height() - topPadding - bottomPadding); - break; } - case SE_CheckBoxLayoutItem: - rect = opt->rect; - if (controlSize == QStyleHelper::SizeLarge) { - setLayoutItemMargins(+2, +2, -3, -2, &rect, opt->direction); - } else if (controlSize == QStyleHelper::SizeSmall) { - setLayoutItemMargins(+1, +2, -2, -1, &rect, opt->direction); - } else { - setLayoutItemMargins(-0, +0, -1, -0, &rect, opt->direction); - } - break; - case SE_ComboBoxLayoutItem: - if (const auto *combo = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - //#ifndef QT_NO_TOOLBAR - // if (widget && qobject_cast<QToolBar *>(widget->parentWidget())) { - // // Do nothing, because QToolbar needs the entire widget rect. - // // Otherwise it will be clipped. Equivalent to - // // widget->setAttribute(Qt::WA_LayoutUsesWidgetRect), but without - // // all the hassle. - // } else - //#endif - if (combo->editable) - rect = LargeSmallMini(opt, - opt->rect.adjusted(5, 6, -6, -7), - opt->rect.adjusted(4, 4, -5, -7), - opt->rect.adjusted(5, 4, -4, -6)); - else - rect = LargeSmallMini(opt, - opt->rect.adjusted(6, 4, -7, -7), - opt->rect.adjusted(6, 7, -6, -5), - opt->rect.adjusted(9, 5, -5, -7)); - } - break; - case SE_LabelLayoutItem: - rect = opt->rect; - setLayoutItemMargins(+1, 0 /* SHOULD be -1, done for alignment */, 0, 0 /* SHOULD be -1, done for alignment */, &rect, opt->direction); - break; - case SE_ProgressBarLayoutItem: - if (const QStyleOptionProgressBar *pb = qstyleoption_cast<const QStyleOptionProgressBar *>(opt)) { - const bool isIndeterminate = (pb->minimum == 0 && pb->maximum == 0); - rect = opt->rect; - - if (isIndeterminate) { - rect.adjust(1, 2, -1, -2); - } else { - rect.adjust(1, 1, -1, -2); - } - } - break; - case SE_PushButtonLayoutItem: - rect = opt->rect; - if (const QStyleOptionButton *buttonOpt = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - if ((buttonOpt->features & QStyleOptionButton::Flat)) - break; - } - rect = LargeSmallMini(opt, - opt->rect.adjusted(7, 5, -7, -7), - opt->rect.adjusted(6, 6, -6, -6), - opt->rect.adjusted(6, 5, -6, -6)); - break; - case SE_SpinBoxLayoutItem: - rect = LargeSmallMini(opt, - opt->rect.adjusted(2, 3, -2, -2), - opt->rect.adjusted(2, 3, -2, -2), - opt->rect.adjusted(2, 3, -2, -2)); - break; - case SE_RadioButtonLayoutItem: - rect = LargeSmallMini(opt, - opt->rect.adjusted(2, 2, -3, -2), - opt->rect.adjusted(2, 2, -3, -2), - opt->rect.adjusted(1, 2, -3, -2)); - break; - case SE_SliderLayoutItem: - if (const QStyleOptionSlider *sliderOpt - = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - rect = opt->rect; - if (sliderOpt->subControls & QStyle::SC_SliderHandle) { - if (sliderOpt->tickPosition == QStyleOptionSlider::NoTicks) - rect.adjust(3, 3, -3, -3); - } else { - rect.adjust(3, 0, -3, 0); - } - } - break; - case SE_ScrollBarLayoutItem: - if (const QStyleOptionSlider *sliderOpt = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - rect = opt->rect; - } - case SE_FrameLayoutItem: - // hack because QStyleOptionFrame doesn't have a frameStyle member -// if (const QFrame *frame = qobject_cast<const QFrame *>(widget)) { -// rect = opt->rect; -// switch (frame->frameStyle() & QFrame::Shape_Mask) { -// case QFrame::HLine: -// rect.adjust(0, +1, 0, -1); -// break; -// case QFrame::VLine: -// rect.adjust(+1, 0, -1, 0); -// break; -// default: -// ; -// } -// } - break; - case SE_GroupBoxLayoutItem: - rect = opt->rect; - if (const QStyleOptionGroupBox *groupBoxOpt = - qstyleoption_cast<const QStyleOptionGroupBox *>(opt)) { - /* - AHIG is very inconsistent when it comes to group boxes. - Basically, we make sure that (non-checkable) group boxes - and tab widgets look good when laid out side by side. - */ - if (groupBoxOpt->subControls & (QStyle::SC_GroupBoxCheckBox - | QStyle::SC_GroupBoxLabel)) { - int delta; - if (groupBoxOpt->subControls & QStyle::SC_GroupBoxCheckBox) { - delta = SIZE(8, 4, 4); // guess - } else { - delta = SIZE(15, 12, 12); // guess - } - rect.setTop(rect.top() + delta); - } - } - rect.setBottom(rect.bottom() - 1); - break; - case SE_TabWidgetLayoutItem: - if (const QStyleOptionTabWidgetFrame *tabWidgetOpt = - qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) { - /* - AHIG specifies "12 or 14" as the distance from the window - edge. We choose 14 and since the default top margin is 20, - the overlap is 6. - */ - rect = tabWidgetOpt->rect; - if (tabWidgetOpt->shape == QStyleOptionTab::RoundedNorth) - rect.setTop(rect.top() + SIZE(6 /* AHIG */, 3 /* guess */, 2 /* AHIG */)); - } - break; - case SE_DockWidgetCloseButton: - case SE_DockWidgetFloatButton: - case SE_DockWidgetTitleBarText: - case SE_DockWidgetIcon: { - int iconSize = proxy()->pixelMetric(PM_SmallIconSize, opt); - int buttonMargin = proxy()->pixelMetric(PM_DockWidgetTitleBarButtonMargin, opt); - QRect srect = opt->rect; - - const QStyleOptionDockWidget *dwOpt - = qstyleoption_cast<const QStyleOptionDockWidget*>(opt); - bool canClose = dwOpt == 0 ? true : dwOpt->closable; - bool canFloat = dwOpt == 0 ? false : dwOpt->floatable; - - const bool verticalTitleBar = dwOpt->verticalTitleBar; - - // If this is a vertical titlebar, we transpose and work as if it was - // horizontal, then transpose again. - if (verticalTitleBar) - srect = srect.transposed(); - - do { - int right = srect.right(); - int left = srect.left(); - - QRect closeRect; - if (canClose) { - QSize sz = proxy()->standardIcon(QStyle::SP_TitleBarCloseButton, - opt).actualSize(QSize(iconSize, iconSize)); - sz += QSize(buttonMargin, buttonMargin); - if (verticalTitleBar) - sz = sz.transposed(); - closeRect = QRect(left, - srect.center().y() - sz.height()/2, - sz.width(), sz.height()); - left = closeRect.right() + 1; - } - if (sr == SE_DockWidgetCloseButton) { - rect = closeRect; - break; - } - - QRect floatRect; - if (canFloat) { - QSize sz = proxy()->standardIcon(QStyle::SP_TitleBarNormalButton, - opt).actualSize(QSize(iconSize, iconSize)); - sz += QSize(buttonMargin, buttonMargin); - if (verticalTitleBar) - sz = sz.transposed(); - floatRect = QRect(left, - srect.center().y() - sz.height()/2, - sz.width(), sz.height()); - left = floatRect.right() + 1; - } - if (sr == SE_DockWidgetFloatButton) { - rect = floatRect; - break; - } - - QRect iconRect; -// if (const QDockWidget *dw = qobject_cast<const QDockWidget*>(widget)) { -// QIcon icon; -// if (dw->isFloating()) -// icon = dw->windowIcon(); -// if (!icon.isNull() -// && icon.cacheKey() != QApplication::windowIcon().cacheKey()) { -// QSize sz = icon.actualSize(QSize(rect.height(), rect.height())); -// if (verticalTitleBar) -// sz = sz.transposed(); -// iconRect = QRect(right - sz.width(), srect.center().y() - sz.height()/2, -// sz.width(), sz.height()); -// right = iconRect.left() - 1; -// } -// } - if (sr == SE_DockWidgetIcon) { - rect = iconRect; - break; - } - - QRect textRect = QRect(left, srect.top(), - right - left, srect.height()); - if (sr == SE_DockWidgetTitleBarText) { - rect = textRect; - break; - } - } while (false); - - if (verticalTitleBar) { - rect = QRect(srect.left() + rect.top() - srect.top(), - srect.top() + srect.right() - rect.right(), - rect.height(), rect.width()); - } else { - rect = visualRect(opt->direction, srect, rect); - } - break; - } - default: - rect = QCommonStyle::subElementRect(sr, opt); - break; - } - return rect; -} - -void QMacStylePrivate::drawToolbarButtonArrow(const QStyleOption *opt, QPainter *p) const -{ - Q_Q(const QMacStyle); - QStyleOption arrowOpt = *opt; - arrowOpt.rect = QRect(opt->rect.right() - (toolButtonArrowSize + toolButtonArrowMargin), - opt->rect.bottom() - (toolButtonArrowSize + toolButtonArrowMargin), - toolButtonArrowSize, - toolButtonArrowSize); - q->proxy()->drawPrimitive(QStyle::PE_IndicatorArrowDown, &arrowOpt, p); -} - -void QMacStylePrivate::setupNSGraphicsContext(CGContextRef cg, bool flipped) const -{ - CGContextSaveGState(cg); - [NSGraphicsContext saveGraphicsState]; - - [NSGraphicsContext setCurrentContext: - [NSGraphicsContext graphicsContextWithCGContext:cg flipped:flipped]]; -} - -void QMacStylePrivate::restoreNSGraphicsContext(CGContextRef cg) const -{ - [NSGraphicsContext restoreGraphicsState]; - CGContextRestoreGState(cg); -} - -void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p) const -{ - Q_D(const QMacStyle); - const AppearanceSync sync; - - QMacCGContext cg(p); - d->resolveCurrentNSView(opt->window); - - switch (cc) { - case CC_ScrollBar: - if (const QStyleOptionSlider *sb = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - - const bool drawTrack = sb->subControls & SC_ScrollBarGroove; - const bool drawKnob = sb->subControls & SC_ScrollBarSlider; - if (!drawTrack && !drawKnob) - break; - - const bool isHorizontal = sb->orientation == Qt::Horizontal; - - if (opt && opt->styleObject && !QMacStylePrivate::scrollBars.contains(opt->styleObject)) - QMacStylePrivate::scrollBars.append(QPointer<QObject>(opt->styleObject)); - - static const CGFloat knobWidths[] = { 7.0, 5.0, 5.0 }; - static const CGFloat expandedKnobWidths[] = { 11.0, 9.0, 9.0 }; - const auto cocoaSize = d->effectiveAquaSizeConstrain(opt); - const CGFloat maxExpandScale = expandedKnobWidths[cocoaSize] / knobWidths[cocoaSize]; - - const bool isTransient = proxy()->styleHint(SH_ScrollBar_Transient, opt); -// if (!isTransient) -// d->stopAnimation(opt->styleObject); - bool wasActive = false; - CGFloat opacity = 0.0; - CGFloat expandScale = 1.0; - CGFloat expandOffset = 0.0; - bool shouldExpand = false; - - if (QObject *styleObject = opt->styleObject) { - const int oldPos = styleObject->property("_q_stylepos").toInt(); - const int oldMin = styleObject->property("_q_stylemin").toInt(); - const int oldMax = styleObject->property("_q_stylemax").toInt(); - const QRect oldRect = styleObject->property("_q_stylerect").toRect(); - const QStyle::State oldState = static_cast<QStyle::State>(styleObject->property("_q_stylestate").value<QStyle::State::Int>()); - const uint oldActiveControls = styleObject->property("_q_stylecontrols").toUInt(); - - // a scrollbar is transient when the scrollbar itself and - // its sibling are both inactive (ie. not pressed/hovered/moved) - const bool transient = isTransient && !opt->activeSubControls && !(sb->state & State_On); - - if (!transient || - oldPos != sb->sliderPosition || - oldMin != sb->minimum || - oldMax != sb->maximum || - oldRect != sb->rect || - oldState != sb->state || - oldActiveControls != sb->activeSubControls) { - - // if the scrollbar is transient or its attributes, geometry or - // state has changed, the opacity is reset back to 100% opaque - opacity = 1.0; - - styleObject->setProperty("_q_stylepos", sb->sliderPosition); - styleObject->setProperty("_q_stylemin", sb->minimum); - styleObject->setProperty("_q_stylemax", sb->maximum); - styleObject->setProperty("_q_stylerect", sb->rect); - styleObject->setProperty("_q_stylestate", static_cast<QStyle::State::Int>(sb->state)); - styleObject->setProperty("_q_stylecontrols", static_cast<uint>(sb->activeSubControls)); - -// QScrollbarStyleAnimation *anim = qobject_cast<QScrollbarStyleAnimation *>(d->animation(styleObject)); -// if (transient) { -// if (!anim) { -// anim = new QScrollbarStyleAnimation(QScrollbarStyleAnimation::Deactivating, styleObject); -// d->startAnimation(anim); -// } else if (anim->mode() == QScrollbarStyleAnimation::Deactivating) { -// // the scrollbar was already fading out while the -// // state changed -> restart the fade out animation -// anim->setCurrentTime(0); -// } -// } else if (anim && anim->mode() == QScrollbarStyleAnimation::Deactivating) { -// d->stopAnimation(styleObject); -// } - } - -// QScrollbarStyleAnimation *anim = qobject_cast<QScrollbarStyleAnimation *>(d->animation(styleObject)); -// if (anim && anim->mode() == QScrollbarStyleAnimation::Deactivating) { -// // once a scrollbar was active (hovered/pressed), it retains -// // the active look even if it's no longer active while fading out -// if (oldActiveControls) -// anim->setActive(true); - -// wasActive = anim->wasActive(); -// opacity = anim->currentValue(); -// } - - shouldExpand = isTransient && (opt->activeSubControls || wasActive); - if (shouldExpand) { -// if (!anim && !oldActiveControls) { -// // Start expand animation only once and when entering -// anim = new QScrollbarStyleAnimation(QScrollbarStyleAnimation::Activating, styleObject); -// d->startAnimation(anim); -// } -// if (anim && anim->mode() == QScrollbarStyleAnimation::Activating) { -// expandScale = 1.0 + (maxExpandScale - 1.0) * anim->currentValue(); -// expandOffset = 5.5 * (1.0 - anim->currentValue()); -// } else { -// // Keep expanded state after the animation ends, and when fading out -// expandScale = maxExpandScale; -// expandOffset = 0.0; -// } - } - } - - d->setupNSGraphicsContext(cg, NO /* flipped */); - - const auto controlType = isHorizontal ? QMacStylePrivate::Scroller_Horizontal : QMacStylePrivate::Scroller_Vertical; - const auto cw = QMacStylePrivate::CocoaControl(controlType, cocoaSize); - NSScroller *scroller = static_cast<NSScroller *>(d->cocoaControl(cw)); - - const QColor bgColor = QStyleHelper::backgroundColor(opt->palette); - const bool hasDarkBg = bgColor.red() < 128 && bgColor.green() < 128 && bgColor.blue() < 128; - if (isTransient) { - // macOS behavior: as soon as one color channel is >= 128, - // the background is considered bright, scroller is dark. - scroller.knobStyle = hasDarkBg? NSScrollerKnobStyleLight : NSScrollerKnobStyleDark; - } else { - scroller.knobStyle = NSScrollerKnobStyleDefault; - } - - scroller.scrollerStyle = isTransient ? NSScrollerStyleOverlay : NSScrollerStyleLegacy; - - if (!setupScroller(scroller, sb)) - break; - - if (isTransient) { - CGContextBeginTransparencyLayerWithRect(cg, scroller.frame, nullptr); - CGContextSetAlpha(cg, opacity); - } - - if (drawTrack) { - // Draw the track when hovering. Expand by shifting the track rect. - if (!isTransient || opt->activeSubControls || wasActive) { - CGRect trackRect = scroller.bounds; - if (isHorizontal) - trackRect.origin.y += expandOffset; - else - trackRect.origin.x += expandOffset; - [scroller drawKnobSlotInRect:trackRect highlight:NO]; - } - } - - if (drawKnob) { - if (shouldExpand) { - // -[NSScroller drawKnob] is not useful here because any scaling applied - // will only be used to draw the hi-DPI artwork. And even if did scale, - // the stretched knob would look wrong, actually. So we need to draw the - // scroller manually when it's being hovered. - const CGFloat scrollerWidth = [NSScroller scrollerWidthForControlSize:scroller.controlSize scrollerStyle:scroller.scrollerStyle]; - const CGFloat knobWidth = knobWidths[cocoaSize] * expandScale; - // Cocoa can help get the exact knob length in the current orientation - const CGRect scrollerKnobRect = CGRectInset([scroller rectForPart:NSScrollerKnob], 1, 1); - const CGFloat knobLength = isHorizontal ? scrollerKnobRect.size.width : scrollerKnobRect.size.height; - const CGFloat knobPos = isHorizontal ? scrollerKnobRect.origin.x : scrollerKnobRect.origin.y; - const CGFloat knobOffset = qRound((scrollerWidth + expandOffset - knobWidth) / 2.0); - const CGFloat knobRadius = knobWidth / 2.0; - CGRect knobRect; - if (isHorizontal) - knobRect = CGRectMake(knobPos, knobOffset, knobLength, knobWidth); - else - knobRect = CGRectMake(knobOffset, knobPos, knobWidth, knobLength); - QCFType<CGPathRef> knobPath = CGPathCreateWithRoundedRect(knobRect, knobRadius, knobRadius, nullptr); - CGContextAddPath(cg, knobPath); - CGContextSetAlpha(cg, 0.5); - CGColorRef knobColor = hasDarkBg ? NSColor.whiteColor.CGColor : NSColor.blackColor.CGColor; - CGContextSetFillColorWithColor(cg, knobColor); - CGContextFillPath(cg); - } else { - [scroller drawKnob]; - - if (!isTransient && opt->state & State_Sunken) { - // The knob should appear darker (going from 0.76 down to 0.49). - // But no blending mode can help darken enough in a single pass, - // so we resort to drawing the knob twice with a small help from - // blending. This brings the gray level to a close enough 0.53. - CGContextSetBlendMode(cg, kCGBlendModePlusDarker); - [scroller drawKnob]; - } - } - } - - if (isTransient) - CGContextEndTransparencyLayer(cg); - - d->restoreNSGraphicsContext(cg); - } - break; - case CC_Slider: - if (const QStyleOptionSlider *sl = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - const bool isHorizontal = sl->orientation == Qt::Horizontal; - const auto ct = isHorizontal ? QMacStylePrivate::Slider_Horizontal : QMacStylePrivate::Slider_Vertical; - const auto cs = d->effectiveAquaSizeConstrain(opt); - const auto cw = QMacStylePrivate::CocoaControl(ct, cs); - auto *slider = static_cast<NSSlider *>(d->cocoaControl(cw)); - if (!setupSlider(slider, sl)) - break; - - const bool hasTicks = sl->tickPosition != QStyleOptionSlider::NoTicks; - const bool hasDoubleTicks = sl->tickPosition == QStyleOptionSlider::TicksBothSides; - const bool drawKnob = sl->subControls & SC_SliderHandle; - const bool drawBar = sl->subControls & SC_SliderGroove; - const bool drawTicks = sl->subControls & SC_SliderTickmarks; - const bool isPressed = sl->state & State_Sunken; - - CGPoint pressPoint; - if (isPressed && drawKnob) { - const CGRect knobRect = [slider.cell knobRectFlipped:slider.isFlipped]; - pressPoint.x = CGRectGetMidX(knobRect); - pressPoint.y = CGRectGetMidY(knobRect); - [slider.cell startTrackingAt:pressPoint inView:slider]; - } - - d->drawNSViewInRect(slider, opt->rect, p, ^(CGContextRef, const CGRect &) { - // Note that we don't support drawing the slider upside down. When this - // is needed, simply set scale = -1 on the QML control / style item instead. - NSSliderCell *cell = slider.cell; - - if (drawBar) { - const CGRect barRect = [cell barRectFlipped:slider.isFlipped]; - // "flipped" will only make a difference when NSSliderCell is vertical. And then - // flipped means fill the groove from bottom-to-top instead of top-to-bottom. - // Bottom-to-top is QSlider's normal mode, which means that we always need to flip - // in vertical mode. (In case NSSlider can also be flipped horizontally in the future, - // we stay on the safe side, and only flip when in vertical mode). - [cell drawBarInside:barRect flipped:!isHorizontal]; - } - - if (drawBar && hasTicks && drawTicks) { - if (!hasDoubleTicks) { - [cell drawTickMarks]; - } else { - if (sl->orientation == Qt::Horizontal) { - slider.tickMarkPosition = NSTickMarkPositionAbove; - [slider layoutSubtreeIfNeeded]; - [cell drawTickMarks]; - slider.tickMarkPosition = NSTickMarkPositionBelow; - [slider layoutSubtreeIfNeeded]; - [cell drawTickMarks]; - } else { - slider.tickMarkPosition = NSTickMarkPositionLeading; - [slider layoutSubtreeIfNeeded]; - [cell drawTickMarks]; - slider.tickMarkPosition = NSTickMarkPositionTrailing; - [slider layoutSubtreeIfNeeded]; - [cell drawTickMarks]; - } - } - } - - if (drawKnob) - [cell drawKnob]; - }); - - if (isPressed && drawKnob) - [slider.cell stopTracking:pressPoint at:pressPoint inView:slider mouseIsUp:NO]; - } - break; - case CC_SpinBox: - if (const QStyleOptionSpinBox *sb = qstyleoption_cast<const QStyleOptionSpinBox *>(opt)) { - if (sb->frame && (sb->subControls & SC_SpinBoxFrame)) { - const auto lineEditRect = proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxEditField); - QStyleOptionFrame frame; - static_cast<QStyleOption &>(frame) = *opt; - frame.rect = lineEditRect; - frame.state |= State_Sunken; - frame.lineWidth = 1; - frame.midLineWidth = 0; - frame.features = QStyleOptionFrame::None; - frame.frameShape = QStyleOptionFrame::Box; - drawPrimitive(PE_FrameLineEdit, &frame, p); - } - if (sb->subControls & (SC_SpinBoxUp | SC_SpinBoxDown)) { - const QRect updown = proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxUp) - | proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxDown); - - d->setupNSGraphicsContext(cg, NO); - - const auto aquaSize = d->effectiveAquaSizeConstrain(opt); - const auto cw = QMacStylePrivate::CocoaControl(QMacStylePrivate::Stepper, aquaSize); - NSStepperCell *cell = static_cast<NSStepperCell *>(d->cocoaCell(cw)); - cell.enabled = (sb->state & State_Enabled); - - const CGRect newRect = [cell drawingRectForBounds:updown.toCGRect()]; - - const bool upPressed = sb->activeSubControls == SC_SpinBoxUp && (sb->state & State_Sunken); - const bool downPressed = sb->activeSubControls == SC_SpinBoxDown && (sb->state & State_Sunken); - const CGFloat x = CGRectGetMidX(newRect); - const CGFloat y = upPressed ? -3 : 3; // Weird coordinate shift going on. Verified with Hopper - const CGPoint pressPoint = CGPointMake(x, y); - // Pretend we're pressing the mouse on the right button. Unfortunately, NSStepperCell has no - // API to highlight a specific button. The highlighted property works only on the down button. - if (upPressed || downPressed) - [cell startTrackingAt:pressPoint inView:d->backingStoreNSView]; - - [cell drawWithFrame:newRect inView:d->backingStoreNSView]; - - if (upPressed || downPressed) - [cell stopTracking:pressPoint at:pressPoint inView:d->backingStoreNSView mouseIsUp:NO]; - - d->restoreNSGraphicsContext(cg); - } - } - break; - case CC_ComboBox: - if (const auto *combo = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - const bool isEnabled = combo->state & State_Enabled; - const bool isPressed = combo->state & State_Sunken; - - const auto ct = cocoaControlType(combo); - const auto cs = d->effectiveAquaSizeConstrain(combo); - const auto cw = QMacStylePrivate::CocoaControl(ct, cs); - auto *cc = static_cast<NSControl *>(d->cocoaControl(cw)); - cc.enabled = isEnabled; - QRectF frameRect = cw.adjustedControlFrame(combo->rect);; - if (cw.type == QMacStylePrivate::Button_PopupButton) { - // Non-editable QComboBox - auto *pb = static_cast<NSPopUpButton *>(cc); - // FIXME Old offsets. Try to move to adjustedControlFrame() - if (cw.size == QStyleHelper::SizeSmall) { - frameRect = frameRect.translated(0, 1); - } else if (cw.size == QStyleHelper::SizeMini) { - // Same 0.5 pt misalignment as AppKit and fit the focus ring - frameRect = frameRect.translated(2, -0.5); - } - pb.frame = frameRect.toCGRect(); - [pb highlight:isPressed]; - d->drawNSViewInRect(pb, frameRect, p, ^(CGContextRef, const CGRect &r) { - QMacAutoReleasePool pool; - [pb.cell drawBezelWithFrame:r inView:pb.superview]; - }); - } else if (cw.type == QMacStylePrivate::ComboBox) { - // Editable QComboBox - auto *cb = static_cast<NSComboBox *>(cc); - const auto frameRect = cw.adjustedControlFrame(combo->rect); - cb.frame = frameRect.toCGRect(); - - // This API was requested to Apple in rdar #36197888. We know it's safe to use up to macOS 10.13.3 - if (NSButtonCell *cell = static_cast<NSButtonCell *>([cc.cell qt_valueForPrivateKey:@"_buttonCell"])) { - cell.highlighted = isPressed; - } else { - // TODO Render to pixmap and darken the button manually - } - - d->drawNSViewInRect(cb, frameRect, p, ^(CGContextRef, const CGRect &r) { - // FIXME This is usually drawn in the control's superview, but we wouldn't get inactive look in this case - QMacAutoReleasePool pool; - [cb.cell drawWithFrame:r inView:cb]; - }); - } - } - break; - case CC_TitleBar: - if (const auto *titlebar = qstyleoption_cast<const QStyleOptionTitleBar *>(opt)) { - const bool isActive = (titlebar->state & State_Active) - && (titlebar->titleBarState & State_Active); - - p->fillRect(opt->rect, Qt::transparent); - p->setRenderHint(QPainter::Antialiasing); - p->setClipRect(opt->rect, Qt::IntersectClip); - - // FIXME A single drawPath() with 0-sized pen - // doesn't look as good as this double fillPath(). - const auto outerFrameRect = QRectF(opt->rect.adjusted(0, 0, 0, opt->rect.height())); - QPainterPath outerFramePath = d->windowPanelPath(outerFrameRect); - p->fillPath(outerFramePath, opt->palette.dark()); - - const auto frameAdjust = 1.0 / p->device()->devicePixelRatioF(); - const auto innerFrameRect = outerFrameRect.adjusted(frameAdjust, frameAdjust, -frameAdjust, 0); - QPainterPath innerFramePath = d->windowPanelPath(innerFrameRect); - if (isActive) { - QLinearGradient g; - g.setStart(QPointF(0, 0)); - g.setFinalStop(QPointF(0, 2 * opt->rect.height())); - g.setColorAt(0, opt->palette.button().color()); - g.setColorAt(1, opt->palette.dark().color()); - p->fillPath(innerFramePath, g); - } else { - p->fillPath(innerFramePath, opt->palette.button()); - } - - if (titlebar->subControls & (SC_TitleBarCloseButton - | SC_TitleBarMaxButton - | SC_TitleBarMinButton - | SC_TitleBarNormalButton)) { - const bool isHovered = (titlebar->state & State_MouseOver); - static const SubControl buttons[] = { - SC_TitleBarCloseButton, SC_TitleBarMinButton, SC_TitleBarMaxButton - }; - for (const auto sc : buttons) { - const auto ct = d->windowButtonCocoaControl(sc); - const auto cw = QMacStylePrivate::CocoaControl(ct, QStyleHelper::SizeLarge); - auto *wb = static_cast<NSButton *>(d->cocoaControl(cw)); - wb.enabled = (sc & titlebar->subControls) && isActive; - [wb highlight:(titlebar->state & State_Sunken) && (sc & titlebar->activeSubControls)]; - Q_UNUSED(isHovered); // FIXME No public API for this - - const auto buttonRect = proxy()->subControlRect(CC_TitleBar, titlebar, sc); - d->drawNSViewInRect(wb, buttonRect, p, ^(CGContextRef, const CGRect &rect) { - QMacAutoReleasePool pool; - auto *wbCell = static_cast<NSButtonCell *>(wb.cell); - [wbCell drawWithFrame:rect inView:wb]; - }); - } - } - - if (titlebar->subControls & SC_TitleBarLabel) { - const auto tr = proxy()->subControlRect(CC_TitleBar, titlebar, SC_TitleBarLabel); - if (!titlebar->icon.isNull()) { - const auto iconExtent = proxy()->pixelMetric(PM_SmallIconSize); - const auto iconSize = QSize(iconExtent, iconExtent); - const auto iconPos = tr.x() - titlebar->icon.actualSize(iconSize).width() - qRound(titleBarIconTitleSpacing); - // Only render the icon if it'll be fully visible - if (iconPos < tr.right() - titleBarIconTitleSpacing) - p->drawPixmap(iconPos, tr.y(), titlebar->icon.pixmap(opt->window, iconSize, QIcon::Normal)); - } - - if (!titlebar->text.isEmpty()) - drawItemText(p, tr, Qt::AlignCenter, opt->palette, isActive, titlebar->text, QPalette::Text); - } - } - break; - case CC_GroupBox: - if (const QStyleOptionGroupBox *gb - = qstyleoption_cast<const QStyleOptionGroupBox *>(opt)) { - - QStyleOptionGroupBox groupBox(*gb); - const bool flat = groupBox.features & QStyleOptionFrame::Flat; - if (!flat) - groupBox.state |= QStyle::State_Mini; // Force mini-sized checkbox to go with small-sized label - else - groupBox.subControls = groupBox.subControls & ~SC_GroupBoxFrame; // We don't like frames and ugly lines - -// const bool didSetFont = widget && widget->testAttribute(Qt::WA_SetFont); -// const bool didModifySubControls = !didSetFont && QApplication::desktopSettingsAware(); -// if (didModifySubControls) -// groupBox.subControls = groupBox.subControls & ~SC_GroupBoxLabel; - QCommonStyle::drawComplexControl(cc, &groupBox, p); -// if (didModifySubControls) { -// const QRect rect = proxy()->subControlRect(CC_GroupBox, &groupBox, SC_GroupBoxLabel); -// const bool rtl = groupBox.direction == Qt::RightToLeft; -// const int alignment = Qt::TextHideMnemonic | (rtl ? Qt::AlignRight : Qt::AlignLeft); -// const QFont savedFont = p->font(); -// if (!flat) -// p->setFont(d->smallSystemFont); -// proxy()->drawItemText(p, rect, alignment, groupBox.palette, groupBox.state & State_Enabled, groupBox.text, QPalette::WindowText); -// if (!flat) -// p->setFont(savedFont); -// } - } - break; - case CC_ToolButton: - if (const QStyleOptionToolButton *tb - = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) { -#ifndef QT_NO_ACCESSIBILITY - if (QStyleHelper::hasAncestor(opt->styleObject, QAccessible::ToolBar)) { - if (tb->subControls & SC_ToolButtonMenu) { - QStyleOption arrowOpt = *tb; - arrowOpt.rect = proxy()->subControlRect(cc, tb, SC_ToolButtonMenu); - arrowOpt.rect.setY(arrowOpt.rect.y() + arrowOpt.rect.height() / 2); - arrowOpt.rect.setHeight(arrowOpt.rect.height() / 2); - proxy()->drawPrimitive(PE_IndicatorArrowDown, &arrowOpt, p); - } else if ((tb->features & QStyleOptionToolButton::HasMenu) - && (tb->toolButtonStyle != Qt::ToolButtonTextOnly && !tb->icon.isNull())) { - d->drawToolbarButtonArrow(tb, p); - } - if (tb->state & State_On) { - NSView *view = reinterpret_cast<NSView *>(opt->window->winId()); - bool isKey = false; - if (view) - isKey = [view.window isKeyWindow]; - - QBrush brush(brushForToolButton(isKey)); - QPainterPath path; - path.addRoundedRect(QRectF(tb->rect.x(), tb->rect.y(), tb->rect.width(), tb->rect.height() + 4), 4, 4); - p->setRenderHint(QPainter::Antialiasing); - p->fillPath(path, brush); - } - proxy()->drawControl(CE_ToolButtonLabel, opt, p); - } else -#endif // QT_NO_ACCESSIBILITY - { - auto bflags = tb->state; - if (tb->subControls & SC_ToolButton) - bflags |= State_Sunken; - auto mflags = tb->state; - if (tb->subControls & SC_ToolButtonMenu) - mflags |= State_Sunken; - - if (tb->subControls & SC_ToolButton) { - if (bflags & (State_Sunken | State_On | State_Raised)) { - const bool isEnabled = tb->state & State_Enabled; - const bool isPressed = tb->state & State_Sunken; - const bool isHighlighted = (tb->state & State_Active) && (tb->state & State_On); - const auto ct = QMacStylePrivate::Button_PushButton; - const auto cs = d->effectiveAquaSizeConstrain(opt); - const auto cw = QMacStylePrivate::CocoaControl(ct, cs); - auto *pb = static_cast<NSButton *>(d->cocoaControl(cw)); - pb.bezelStyle = NSShadowlessSquareBezelStyle; // TODO Use NSTexturedRoundedBezelStyle in the future. - pb.frame = opt->rect.toCGRect(); - pb.buttonType = NSPushOnPushOffButton; - pb.enabled = isEnabled; - [pb highlight:isPressed]; - pb.state = isHighlighted && !isPressed ? NSOnState : NSOffState; - const auto buttonRect = proxy()->subControlRect(cc, tb, SC_ToolButton); - d->drawNSViewInRect(pb, buttonRect, p, ^(CGContextRef, const CGRect &rect) { - QMacAutoReleasePool pool; - [pb.cell drawBezelWithFrame:rect inView:pb]; - }); - } - } - - if (tb->subControls & SC_ToolButtonMenu) { - const auto menuRect = proxy()->subControlRect(cc, tb, SC_ToolButtonMenu); - QStyleOption arrowOpt = *tb; - arrowOpt.rect = QRect(menuRect.x() + ((menuRect.width() - toolButtonArrowSize) / 2), - menuRect.height() - (toolButtonArrowSize + toolButtonArrowMargin), - toolButtonArrowSize, - toolButtonArrowSize); - proxy()->drawPrimitive(PE_IndicatorArrowDown, &arrowOpt, p); - } else if (tb->features & QStyleOptionToolButton::HasMenu) { - d->drawToolbarButtonArrow(tb, p); - } - QRect buttonRect = proxy()->subControlRect(CC_ToolButton, tb, SC_ToolButton); - int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, opt); - QStyleOptionToolButton label = *tb; - label.rect = buttonRect.adjusted(fw, fw, -fw, -fw); - proxy()->drawControl(CE_ToolButtonLabel, &label, p); - } - } - break; - case CC_Dial: - if (const QStyleOptionSlider *dial = qstyleoption_cast<const QStyleOptionSlider *>(opt)) - QStyleHelper::drawDial(dial, p); - break; - default: - QCommonStyle::drawComplexControl(cc, opt, p); - break; - } -} - -QStyle::SubControl QMacStyle::hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt) const -{ - Q_D(const QMacStyle); - - SubControl sc = QStyle::SC_None; - - switch (cc) { - case CC_ComboBox: - if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - sc = QCommonStyle::hitTestComplexControl(cc, cmb, pt); - if (!cmb->editable && sc != QStyle::SC_None) - sc = SC_ComboBoxArrow; // A bit of a lie, but what we want - } - break; - case CC_Slider: - if (const QStyleOptionSlider *sl = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - if (!sl->rect.contains(pt)) - break; - - const bool hasTicks = sl->tickPosition != QStyleOptionSlider::NoTicks; - const bool isHorizontal = sl->orientation == Qt::Horizontal; - const auto ct = isHorizontal ? QMacStylePrivate::Slider_Horizontal : QMacStylePrivate::Slider_Vertical; - const auto cs = d->effectiveAquaSizeConstrain(opt); - const auto cw = QMacStylePrivate::CocoaControl(ct, cs); - auto *slider = static_cast<NSSlider *>(d->cocoaControl(cw)); - if (!setupSlider(slider, sl)) - break; - - NSSliderCell *cell = slider.cell; - const auto barRect = QRectF::fromCGRect([cell barRectFlipped:slider.isFlipped]); - const auto knobRect = QRectF::fromCGRect([cell knobRectFlipped:slider.isFlipped]); - if (knobRect.contains(pt)) { - sc = SC_SliderHandle; - } else if (barRect.contains(pt)) { - sc = SC_SliderGroove; - } else if (hasTicks) { - sc = SC_SliderTickmarks; - } - } - break; - case CC_ScrollBar: - if (const QStyleOptionSlider *sb = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - if (!sb->rect.contains(pt)) { - sc = SC_None; - break; - } - - const bool isHorizontal = sb->orientation == Qt::Horizontal; - const auto ct = isHorizontal ? QMacStylePrivate::Scroller_Horizontal : QMacStylePrivate::Scroller_Vertical; - const auto cs = d->effectiveAquaSizeConstrain(opt); - const auto cw = QMacStylePrivate::CocoaControl(ct, cs); - auto *scroller = static_cast<NSScroller *>(d->cocoaControl(cw)); - if (!setupScroller(scroller, sb)) { - sc = SC_None; - break; - } - - // Since -[NSScroller testPart:] doesn't want to cooperate, we do it the - // straightforward way. In any case, macOS doesn't return line-sized changes - // with NSScroller since 10.7, according to the aforementioned method's doc. - const auto knobRect = QRectF::fromCGRect([scroller rectForPart:NSScrollerKnob]); - if (isHorizontal) { - const bool isReverse = sb->direction == Qt::RightToLeft; - if (pt.x() < knobRect.left()) - sc = isReverse ? SC_ScrollBarAddPage : SC_ScrollBarSubPage; - else if (pt.x() > knobRect.right()) - sc = isReverse ? SC_ScrollBarSubPage : SC_ScrollBarAddPage; - else - sc = SC_ScrollBarSlider; - } else { - if (pt.y() < knobRect.top()) - sc = SC_ScrollBarSubPage; - else if (pt.y() > knobRect.bottom()) - sc = SC_ScrollBarAddPage; - else - sc = SC_ScrollBarSlider; - } - } - break; - default: - sc = QCommonStyle::hitTestComplexControl(cc, opt, pt); - break; - } - return sc; -} - -QRect QMacStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc) const -{ - Q_D(const QMacStyle); - - QRect ret; - - switch (cc) { - case CC_ScrollBar: - if (const QStyleOptionSlider *sb = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - const bool isHorizontal = sb->orientation == Qt::Horizontal; - const bool isReverseHorizontal = isHorizontal && (sb->direction == Qt::RightToLeft); - - NSScrollerPart part = NSScrollerNoPart; - if (sc == SC_ScrollBarSlider) { - part = NSScrollerKnob; - } else if (sc == SC_ScrollBarGroove) { - part = NSScrollerKnobSlot; - } else if (sc == SC_ScrollBarSubPage || sc == SC_ScrollBarAddPage) { - if ((!isReverseHorizontal && sc == SC_ScrollBarSubPage) - || (isReverseHorizontal && sc == SC_ScrollBarAddPage)) - part = NSScrollerDecrementPage; - else - part = NSScrollerIncrementPage; - } - // And nothing else since 10.7 - - if (part != NSScrollerNoPart) { - const auto ct = isHorizontal ? QMacStylePrivate::Scroller_Horizontal : QMacStylePrivate::Scroller_Vertical; - const auto cs = d->effectiveAquaSizeConstrain(opt); - const auto cw = QMacStylePrivate::CocoaControl(ct, cs); - auto *scroller = static_cast<NSScroller *>(d->cocoaControl(cw)); - if (setupScroller(scroller, sb)) - ret = QRectF::fromCGRect([scroller rectForPart:part]).toRect(); - } - } - break; - case CC_Slider: - if (const QStyleOptionSlider *sl = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - const bool hasTicks = sl->tickPosition != QStyleOptionSlider::NoTicks; - const bool isHorizontal = sl->orientation == Qt::Horizontal; - const auto ct = isHorizontal ? QMacStylePrivate::Slider_Horizontal : QMacStylePrivate::Slider_Vertical; - const auto cs = d->effectiveAquaSizeConstrain(opt); - const auto cw = QMacStylePrivate::CocoaControl(ct, cs); - auto *slider = static_cast<NSSlider *>(d->cocoaControl(cw)); - if (!setupSlider(slider, sl)) - break; - - NSSliderCell *cell = slider.cell; - if (sc == SC_SliderHandle) { - ret = QRectF::fromCGRect([cell knobRectFlipped:slider.isFlipped]).toRect(); - } else if (sc == SC_SliderGroove) { - ret = QRectF::fromCGRect([cell barRectFlipped:slider.isFlipped]).toRect(); - } else if (hasTicks && sc == SC_SliderTickmarks) { - const auto tickMarkRect = QRectF::fromCGRect([cell rectOfTickMarkAtIndex:0]); - if (isHorizontal) - ret = QRect(sl->rect.left(), tickMarkRect.top(), sl->rect.width(), tickMarkRect.height()); - else - ret = QRect(tickMarkRect.left(), sl->rect.top(), tickMarkRect.width(), sl->rect.height()); - } - -// if (sl->upsideDown) { -// if isHorizontal) { -// } else { -// } -// } - } - break; - case CC_TitleBar: - if (const auto *titlebar = qstyleoption_cast<const QStyleOptionTitleBar *>(opt)) { - // The title bar layout is as follows: close, min, zoom, icon, title - // [ x _ + @ Window Title ] - // Center the icon and title until it starts to overlap with the buttons. - // The icon doesn't count towards SC_TitleBarLabel, but it's still rendered - // next to the title text. See drawComplexControl(). - if (sc == SC_TitleBarLabel) { - qreal labelWidth = titlebar->fontMetrics.horizontalAdvance(titlebar->text) + 1; // FIXME Rounding error? - qreal labelHeight = titlebar->fontMetrics.height(); - - const auto lastButtonRect = proxy()->subControlRect(CC_TitleBar, titlebar, SC_TitleBarMaxButton); - qreal controlsSpacing = lastButtonRect.right() + titleBarButtonSpacing; - if (!titlebar->icon.isNull()) { - const auto iconSize = proxy()->pixelMetric(PM_SmallIconSize); - const auto actualIconSize = titlebar->icon.actualSize(QSize(iconSize, iconSize)).width();; - controlsSpacing += actualIconSize + titleBarIconTitleSpacing; - } - - const qreal labelPos = qMax(controlsSpacing, (opt->rect.width() - labelWidth) / 2.0); - labelWidth = qMin(labelWidth, opt->rect.width() - (labelPos + titleBarTitleRightMargin)); - ret = QRect(labelPos, (opt->rect.height() - labelHeight) / 2, - labelWidth, labelHeight); - } else { - const auto currentButton = d->windowButtonCocoaControl(sc); - if (currentButton == QMacStylePrivate::NoControl) - break; - - QPointF buttonPos = titlebar->rect.topLeft() + QPointF(titleBarButtonSpacing, 0); - QSizeF buttonSize; - for (int ct = QMacStylePrivate::Button_WindowClose; ct <= currentButton; ct++) { - const auto cw = QMacStylePrivate::CocoaControl(QMacStylePrivate::CocoaControlType(ct), - QStyleHelper::SizeLarge); - auto *wb = static_cast<NSButton *>(d->cocoaControl(cw)); - if (ct == currentButton) - buttonSize = QSizeF::fromCGSize(wb.frame.size); - else - buttonPos.rx() += wb.frame.size.width + titleBarButtonSpacing; - } - - const auto vOffset = (opt->rect.height() - buttonSize.height()) / 2.0; - ret = QRectF(buttonPos, buttonSize).translated(0, vOffset).toRect(); - } - } - break; - case CC_ComboBox: - if (const QStyleOptionComboBox *combo = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - const auto ct = cocoaControlType(combo); - const auto cs = d->effectiveAquaSizeConstrain(combo); - const auto cw = QMacStylePrivate::CocoaControl(ct, cs); - - // Old widget path. Current not understood why it's needed: - //const auto editRect = QMacStylePrivate::comboboxEditBounds(cw.adjustedControlFrame(combo->rect), cw); - - // New path: - QRectF editRect; - switch (cs) { - case QStyleHelper::SizeLarge: - editRect = combo->rect.adjusted(15, 7, -25, -9); - break; - case QStyleHelper::SizeSmall: - if (combo->editable) - editRect = combo->rect.adjusted(15, 6, -22, -9); - else - editRect = combo->rect.adjusted(15, 8, -22, -6); - break; - default: - if (combo->editable) - editRect = combo->rect.adjusted(15, 6, -20, -7); - else - editRect = combo->rect.adjusted(15, 5, -22, -6); - break; - } - - switch (sc) { - case SC_ComboBoxEditField:{ - ret = editRect.toAlignedRect(); - break; } - case SC_ComboBoxArrow:{ - ret = editRect.toAlignedRect(); - ret.setX(ret.x() + ret.width()); - ret.setWidth(combo->rect.right() - ret.right()); - break; } - case SC_ComboBoxListBoxPopup:{ - if (combo->editable) { - const CGRect inner = QMacStylePrivate::comboboxInnerBounds(combo->rect.toCGRect(), cw); - const int comboTop = combo->rect.top(); - ret = QRect(qRound(inner.origin.x), - comboTop, - qRound(inner.origin.x - combo->rect.left() + inner.size.width), - editRect.bottom() - comboTop + 2); - } else { - ret = QRect(combo->rect.x() + 4 - 11, - combo->rect.y() + 1, - editRect.width() + 10 + 11, - 1); - } - break; } - default: - break; - } - } - break; - case CC_GroupBox: - if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(opt)) { - bool checkable = groupBox->subControls & SC_GroupBoxCheckBox; - const bool flat = groupBox->features & QStyleOptionFrame::Flat; - bool hasNoText = !checkable && groupBox->text.isEmpty(); - switch (sc) { - case SC_GroupBoxLabel: - case SC_GroupBoxCheckBox: { - // Cheat and use the smaller font if we need to - const bool checkable = groupBox->subControls & SC_GroupBoxCheckBox; - const bool fontIsSet = false; -// const bool fontIsSet = (widget && widget->testAttribute(Qt::WA_SetFont)) -// || !QApplication::desktopSettingsAware(); - const int margin = flat || hasNoText ? 0 : 9; - ret = groupBox->rect.adjusted(margin, 0, -margin, 0); - - const QFontMetricsF fm = flat || fontIsSet ? QFontMetricsF(groupBox->fontMetrics) : QFontMetricsF(d->smallSystemFont); - const QSizeF s = fm.size(Qt::AlignHCenter | Qt::AlignVCenter, qt_mac_removeMnemonics(groupBox->text), 0, nullptr); - const int tw = qCeil(s.width()); - const int h = qCeil(fm.height()); - ret.setHeight(h); - - QRect labelRect = alignedRect(groupBox->direction, groupBox->textAlignment, - QSize(tw, h), ret); - if (flat && checkable) - labelRect.moveLeft(labelRect.left() + 4); - int indicatorWidth = proxy()->pixelMetric(PM_IndicatorWidth, opt); - bool rtl = groupBox->direction == Qt::RightToLeft; - if (sc == SC_GroupBoxLabel) { - if (checkable) { - int newSum = indicatorWidth + 1; - int newLeft = labelRect.left() + (rtl ? -newSum : newSum); - labelRect.moveLeft(newLeft); - if (flat) - labelRect.moveTop(labelRect.top() + 3); - else - labelRect.moveTop(labelRect.top() + 4); - } else if (flat) { - int newLeft = labelRect.left() - (rtl ? 3 : -3); - labelRect.moveLeft(newLeft); - labelRect.moveTop(labelRect.top() + 3); - } else { - int newLeft = labelRect.left() - (rtl ? 3 : 2); - labelRect.moveLeft(newLeft); - labelRect.moveTop(labelRect.top() + 4); - } - ret = labelRect; - } - - if (sc == SC_GroupBoxCheckBox) { - int left = rtl ? labelRect.right() - indicatorWidth : labelRect.left() - 1; - int top = flat ? ret.top() + 1 : ret.top() + 5; - ret.setRect(left, top, - indicatorWidth, proxy()->pixelMetric(PM_IndicatorHeight, opt)); - } - break; - } - case SC_GroupBoxContents: - case SC_GroupBoxFrame: { - QFontMetrics fm = groupBox->fontMetrics; - int yOffset = 3; - if (!flat) - yOffset = 5; - - if (hasNoText) - yOffset = -qCeil(QFontMetricsF(fm).height()); - ret = opt->rect.adjusted(0, qCeil(QFontMetricsF(fm).height()) + yOffset, 0, 0); - if (sc == SC_GroupBoxContents) { - if (flat) - ret.adjust(3, -5, -3, -4); // guess too - else - ret.adjust(3, 3, -3, -4); // guess - } - } - break; - default: - ret = QCommonStyle::subControlRect(cc, groupBox, sc); - break; - } - } - break; - case CC_SpinBox: - if (const QStyleOptionSpinBox *spin = qstyleoption_cast<const QStyleOptionSpinBox *>(opt)) { - QStyleHelper::WidgetSizePolicy aquaSize = d->effectiveAquaSizeConstrain(spin); - const auto fw = proxy()->pixelMetric(PM_SpinBoxFrameWidth, spin); - int spinner_w; - int spinner_h; - int adjust_y; - int spinBoxSep; - switch (aquaSize) { - case QStyleHelper::SizeLarge: - spinner_w = 14; - spinner_h = 24; - adjust_y = -1; - spinBoxSep = 2; - break; - case QStyleHelper::SizeSmall: - spinner_w = 12; - spinner_h = 20; - adjust_y = -1; - spinBoxSep = 2; - break; - case QStyleHelper::SizeMini: - spinner_w = 10; - spinner_h = 16; - adjust_y = -1; - spinBoxSep = 1; - break; - default: - Q_UNREACHABLE(); - } - - switch (sc) { - case SC_SpinBoxUp: - case SC_SpinBoxDown: { - if (spin->buttonSymbols == QStyleOptionSpinBox::NoButtons) - break; - - const int y = fw; - const int x = spin->rect.width() - spinner_w; - ret.setRect(x + spin->rect.x(), y + spin->rect.y(), spinner_w, spinner_h); - - const auto cw = QMacStylePrivate::CocoaControl(QMacStylePrivate::Stepper, aquaSize); - NSStepperCell *cell = static_cast<NSStepperCell *>(d->cocoaCell(cw)); - const CGRect outRect = [cell drawingRectForBounds:ret.toCGRect()]; - ret = QRectF::fromCGRect(outRect).toRect(); - - switch (sc) { - case SC_SpinBoxUp: - ret.setHeight(ret.height() / 2); - break; - case SC_SpinBoxDown: - ret.setY(ret.y() + ret.height() / 2); - break; - default: - Q_ASSERT(0); - break; - } - // The buttons are drawn with a top-margin (for some reason) into - // the rect. So undo that margin here: - ret.translate(0, adjust_y); - ret = visualRect(spin->direction, spin->rect, ret); - break; - } - case SC_SpinBoxEditField: - ret = spin->rect.adjusted(fw, fw, -fw, -fw); - if (spin->subControls & SC_SpinBoxUp || spin->subControls & SC_SpinBoxDown) { - ret.setWidth(spin->rect.width() - spinBoxSep - spinner_w); - ret = visualRect(spin->direction, spin->rect, ret); - } - break; - default: - ret = QCommonStyle::subControlRect(cc, spin, sc); - break; - } - } - break; - case CC_ToolButton: - ret = QCommonStyle::subControlRect(cc, opt, sc); - if (sc == SC_ToolButtonMenu) { -#ifndef QT_NO_ACCESSIBILITY - if (QStyleHelper::hasAncestor(opt->styleObject, QAccessible::ToolBar)) - ret.adjust(-toolButtonArrowMargin, 0, 0, 0); -#endif - ret.adjust(-1, 0, 0, 0); - } - break; - default: - ret = QCommonStyle::subControlRect(cc, opt, sc); - break; - } - return ret; -} - -QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &csz) const -{ - Q_D(const QMacStyle); - - QSize sz(csz); - bool useAquaGuideline = true; - - switch (ct) { - case CT_SpinBox: - if (const QStyleOptionSpinBox *vopt = qstyleoption_cast<const QStyleOptionSpinBox *>(opt)) { - if (vopt->subControls == SC_SpinBoxFrame) { - const QSize minimumSize(20, 24); - if (sz.width() < minimumSize.width()) - sz.setWidth(minimumSize.width()); - if (sz.height() < minimumSize.height()) - sz.setHeight(minimumSize.height()); - } else { - const QSize buttonSize = proxy()->subControlRect(CC_SpinBox, vopt, SC_SpinBoxUp).size(); - const int upAndDownTogetherHeight = buttonSize.height() * 2; - sz += QSize(buttonSize.width(), upAndDownTogetherHeight); - } - } - break; - case QStyle::CT_TabWidget: - // the size between the pane and the "contentsRect" (+4,+4) - // (the "contentsRect" is on the inside of the pane) - sz = QCommonStyle::sizeFromContents(ct, opt, csz); - /** - This is supposed to show the relationship between the tabBar and - the stack widget of a QTabWidget. - Unfortunately ascii is not a good way of representing graphics..... - PS: The '=' line is the painted frame. - - top ---+ - | - | - | - | vvv just outside the painted frame is the "pane" - - -|- - - - - - - - - - <-+ - TAB BAR +=====^============ | +2 pixels - - - -|- - -|- - - - - - - <-+ - | | ^ ^^^ just inside the painted frame is the "contentsRect" - | | | - | overlap | - | | | - bottom ------+ <-+ +14 pixels - | - v - ------------------------------ <- top of stack widget - - - To summarize: - * 2 is the distance between the pane and the contentsRect - * The 14 and the 1's are the distance from the contentsRect to the stack widget. - (same value as used in SE_TabWidgetTabContents) - * overlap is how much the pane should overlap the tab bar - */ - // then add the size between the stackwidget and the "contentsRect" - if (const QStyleOptionTabWidgetFrame *twf - = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) { - QSize extra(0,0); - const int overlap = pixelMetric(PM_TabBarBaseOverlap, opt); - const int gapBetweenTabbarAndStackWidget = 2 + 14 - overlap; - - const auto tabDirection = QMacStylePrivate::tabDirection(twf->shape); - if (tabDirection == QMacStylePrivate::North - || tabDirection == QMacStylePrivate::South) { - extra = QSize(2, gapBetweenTabbarAndStackWidget + 1); - } else { - extra = QSize(gapBetweenTabbarAndStackWidget + 1, 2); - } - sz+= extra; - } - break; - case QStyle::CT_TabBarTab: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { -// const bool differentFont = (widget && widget->testAttribute(Qt::WA_SetFont)) -// || !QApplication::desktopSettingsAware(); - const bool differentFont = false; - const auto tabDirection = QMacStylePrivate::tabDirection(tab->shape); - const bool verticalTabs = tabDirection == QMacStylePrivate::East - || tabDirection == QMacStylePrivate::West; - if (verticalTabs) - sz = sz.transposed(); - - int defaultTabHeight; - const auto cs = d->effectiveAquaSizeConstrain(opt); - switch (cs) { - case QStyleHelper::SizeLarge: - if (tab->documentMode) - defaultTabHeight = 24; - else - defaultTabHeight = 21; - break; - case QStyleHelper::SizeSmall: - defaultTabHeight = 18; - break; - case QStyleHelper::SizeMini: - defaultTabHeight = 16; - break; - default: - break; - } - - const bool widthSet = !differentFont && tab->icon.isNull(); - if (widthSet) { - const auto textSize = opt->fontMetrics.size(Qt::TextShowMnemonic, tab->text); - sz.rwidth() = textSize.width(); - sz.rheight() = qMax(defaultTabHeight, textSize.height()); - } else { - sz.rheight() = qMax(defaultTabHeight, sz.height()); - } - sz.rwidth() += proxy()->pixelMetric(PM_TabBarTabHSpace, tab); - - if (verticalTabs) - sz = sz.transposed(); - - int maxWidgetHeight = qMax(tab->leftButtonSize.height(), tab->rightButtonSize.height()); - int maxWidgetWidth = qMax(tab->leftButtonSize.width(), tab->rightButtonSize.width()); - - int widgetWidth = 0; - int widgetHeight = 0; - int padding = 0; - if (tab->leftButtonSize.isValid()) { - padding += 8; - widgetWidth += tab->leftButtonSize.width(); - widgetHeight += tab->leftButtonSize.height(); - } - if (tab->rightButtonSize.isValid()) { - padding += 8; - widgetWidth += tab->rightButtonSize.width(); - widgetHeight += tab->rightButtonSize.height(); - } - - if (verticalTabs) { - sz.setWidth(qMax(sz.width(), maxWidgetWidth)); - sz.setHeight(sz.height() + widgetHeight + padding); - } else { - if (widthSet) - sz.setWidth(sz.width() + widgetWidth + padding); - sz.setHeight(qMax(sz.height(), maxWidgetHeight)); - } - } - break; - case CT_LineEdit: - if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - if (sz.isEmpty()) { - // Minimum size (with padding: 18x24) - sz.rwidth() = 10; - sz.rheight() = 20; - } - // From using pixelTool with XCode/NSTextTextField - int leftPadding = 4; - int rightPadding = 4; - int topPadding = 4; - int bottomPadding = 0; - - if (opt->state & QStyle::State_Small) { - topPadding = 3; - } else if (opt->state & QStyle::State_Mini) { - topPadding = 2; - } - - sz.rwidth() += leftPadding + rightPadding; - sz.rheight() += topPadding + bottomPadding; - } - break; - case QStyle::CT_PushButton: { - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) - if (btn->features & QStyleOptionButton::CommandLinkButton) - return QCommonStyle::sizeFromContents(ct, opt, sz); - - // By default, we fit the contents inside a normal rounded push button. - // Do this by add enough space around the contents so that rounded - // borders (including highlighting when active) will show. - // TODO Use QFocusFrame and get rid of these horrors. - QSize macsz; - const auto controlSize = d->effectiveAquaSizeConstrain(opt, CT_PushButton, sz, &macsz); - // FIXME See comment in CT_PushButton case in qt_aqua_get_known_size(). - if (macsz.width() != -1) - sz.setWidth(macsz.width()); - else - sz.rwidth() += QMacStylePrivate::PushButtonLeftOffset + QMacStylePrivate::PushButtonRightOffset + 12; - // All values as measured from HIThemeGetButtonBackgroundBounds() - if (controlSize != QStyleHelper::SizeMini) - sz.rwidth() += 12; // We like 12 over here. - if (controlSize == QStyleHelper::SizeLarge && sz.height() > 16) - sz.rheight() += pushButtonDefaultHeight[QStyleHelper::SizeLarge] - 16; - else if (controlSize == QStyleHelper::SizeMini) - sz.setHeight(24); // FIXME Our previous HITheme-based logic returned this. - else - sz.setHeight(pushButtonDefaultHeight[controlSize]); - break; - } - case QStyle::CT_MenuItem: - if (const QStyleOptionMenuItem *mi = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) { - int maxpmw = mi->maxIconWidth; - int w = sz.width(); - int h = sz.height(); - -//#if QT_CONFIG(combobox) -// const QComboBox *comboBox = qobject_cast<const QComboBox *>(widget); -//#endif - - if (mi->menuItemType == QStyleOptionMenuItem::Separator) { - w = 10; - h = qt_mac_aqua_get_metric(MenuSeparatorHeight); - } else { - h = mi->fontMetrics.height() + 2; - if (!mi->icon.isNull()) { -//#if QT_CONFIG(combobox) -// if (comboBox) { -// const QSize &iconSize = comboBox->iconSize(); -// h = qMax(h, iconSize.height() + 4); -// maxpmw = qMax(maxpmw, iconSize.width()); -// } else -//#endif - { - int iconExtent = proxy()->pixelMetric(PM_SmallIconSize); - h = qMax(h, mi->icon.actualSize(QSize(iconExtent, iconExtent)).height() + 4); - } - } - } - if (mi->text.contains(QLatin1Char('\t'))) - w += 12; - else if (mi->menuItemType == QStyleOptionMenuItem::SubMenu) - w += 35; // Not quite exactly as it seems to depend on other factors - if (maxpmw) - w += maxpmw + 6; - // add space for a check. All items have place for a check too. - w += 20; -// if (comboBox && comboBox->isVisible()) { -// QStyleOptionComboBox cmb; -// cmb.initFrom(comboBox); -// cmb.editable = false; -// cmb.subControls = QStyle::SC_ComboBoxEditField; -// cmb.activeSubControls = QStyle::SC_None; -// w = qMax(w, subControlRect(QStyle::CC_ComboBox, &cmb, -// QStyle::SC_ComboBoxEditField, -// comboBox).width()); -// } else { -// w += 12; - sz = QSize(w, h); - } break; - case CT_MenuBarItem: - if (!sz.isEmpty()) - sz += QSize(12, 4); // Constants from QWindowsStyle - break; - case CT_ToolButton: - sz.rwidth() += 10; - sz.rheight() += 10; - if (const auto *tb = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) - if (tb->features & QStyleOptionToolButton::Menu) - sz.rwidth() += toolButtonArrowMargin; - return sz; - case CT_ComboBox: - if (const auto *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - const int controlSize = getControlSize(opt); - - if (!cb->editable) { - if (sz.width() < 10) { - // minimumSize (to ensure a nice nine patch image) - sz.rwidth() += 10; - } - // Same as CT_PushButton, because we have to fit the focus - // ring and a non-editable combo box is a NSPopUpButton. - sz.rwidth() += QMacStylePrivate::PushButtonLeftOffset + QMacStylePrivate::PushButtonRightOffset; - - if (controlSize == QStyleHelper::SizeLarge) { - sz.rwidth() += 30; - } else if (controlSize == QStyleHelper::SizeSmall) { - sz.rwidth() += 26; - } else { - sz.rwidth() += 21; - } - } else { - sz.rwidth() += 50; // FIXME Double check this - } - - // This should be enough to fit the focus ring - if (controlSize == QStyleHelper::SizeMini) - sz.setHeight(24); // FIXME Our previous HITheme-based logic returned this for CT_PushButton. - else - sz.setHeight(pushButtonDefaultHeight[controlSize]); - - return sz; - } - break; - case CT_Menu: { - if (proxy() == this) { - sz = csz; - } else { - QStyleHintReturnMask menuMask; - QStyleOption myOption = *opt; - myOption.rect.setSize(sz); - if (proxy()->styleHint(SH_Menu_Mask, &myOption, &menuMask)) - sz = menuMask.region.boundingRect().size(); - } - break; } - case CT_HeaderSection:{ - const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt); - sz = QCommonStyle::sizeFromContents(ct, opt, csz); - if (header->text.contains(QLatin1Char('\n'))) - useAquaGuideline = false; - break; } - case CT_ScrollBar : - // Make sure that the scroll bar is large enough to display the thumb indicator. - if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - const int minimumWidth = 24; - const int absoluteHeight = 14; - if (slider->orientation == Qt::Horizontal) { - sz = sz.expandedTo(QSize(minimumWidth, sz.height())); - sz.setHeight(absoluteHeight); - } else { - sz = sz.expandedTo(QSize(sz.width(), minimumWidth)); - sz.setWidth(absoluteHeight); - } - } - break; - case CT_ItemViewItem: - if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) { - sz = QCommonStyle::sizeFromContents(ct, vopt, csz); - sz.setHeight(sz.height() + 2); - } - break; - default: - sz = QCommonStyle::sizeFromContents(ct, opt, csz); - } - - if (useAquaGuideline && ct != CT_PushButton) { - // TODO Probably going away at some point - QSize macsz; - if (d->aquaSizeConstrain(opt, ct, sz, &macsz) != QStyleHelper::SizeDefault) { - if (macsz.width() != -1) - sz.setWidth(macsz.width()); - if (macsz.height() != -1) - sz.setHeight(macsz.height()); - } - } - - // The sizes that Carbon and the guidelines gives us excludes the focus frame. - // We compensate for this by adding some extra space here to make room for the frame when drawing: - if (const QStyleOptionComboBox *combo = qstyleoption_cast<const QStyleOptionComboBox *>(opt)){ - if (combo->editable) { - const auto widgetSize = d->aquaSizeConstrain(opt); - QMacStylePrivate::CocoaControl cw; - cw.type = combo->editable ? QMacStylePrivate::ComboBox : QMacStylePrivate::Button_PopupButton; - cw.size = widgetSize; - const CGRect diffRect = QMacStylePrivate::comboboxInnerBounds(CGRectZero, cw); - sz.rwidth() -= qRound(diffRect.size.width); - sz.rheight() -= qRound(diffRect.size.height); - } - } - return sz; -} - -QFont QMacStyle::font(QStyle::ControlElement element, const QStyle::State state) const -{ - QFont font = QCommonStyle::font(element, state); - - if (state & QStyle::State_Small) { - font.setPixelSize(11); - } else if (state & QStyle::State_Mini) { - font.setPixelSize(9); - } - - return font; -} - -QMargins QMacStyle::ninePatchMargins(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QSize &imageSize) const -{ - QMargins margins; - - switch (cc) { - case CC_ComboBox: { - const QRect arrow = subControlRect(CC_ComboBox, opt, SC_ComboBoxArrow); - margins = QMargins(10, 0, arrow.width() + 1, -1); - break; } - default: - margins = QCommonStyle::ninePatchMargins(cc, opt, imageSize); - break; - } - - return margins; -} - -void QMacStyle::drawItemText(QPainter *p, const QRect &r, int flags, const QPalette &pal, - bool enabled, const QString &text, QPalette::ColorRole textRole) const -{ - if(flags & Qt::TextShowMnemonic) - flags |= Qt::TextHideMnemonic; - QCommonStyle::drawItemText(p, r, flags, pal, enabled, text, textRole); -} - -QIcon QMacStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption *opt) const -{ - switch (standardIcon) { - default: - return QCommonStyle::standardIcon(standardIcon, opt); - case SP_ToolBarHorizontalExtensionButton: - case SP_ToolBarVerticalExtensionButton: { - QPixmap pixmap(QLatin1String(":/qt-project.org/styles/macstyle/images/toolbar-ext.png")); - if (standardIcon == SP_ToolBarVerticalExtensionButton) { - QPixmap pix2(pixmap.height(), pixmap.width()); - pix2.setDevicePixelRatio(pixmap.devicePixelRatio()); - pix2.fill(Qt::transparent); - QPainter p(&pix2); - p.translate(pix2.width(), 0); - p.rotate(90); - p.drawPixmap(0, 0, pixmap); - return pix2; - } - return pixmap; - } - } -} - -} // QQC2_NAMESPACE - -QT_END_NAMESPACE diff --git a/src/quicknativestyle/qstyle/mac/qquickmacstyle_mac_p.h b/src/quicknativestyle/qstyle/mac/qquickmacstyle_mac_p.h deleted file mode 100644 index b9e1c5f3..00000000 --- a/src/quicknativestyle/qstyle/mac/qquickmacstyle_mac_p.h +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QMACSTYLE_MAC_P_H -#define QMACSTYLE_MAC_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qquickcommonstyle.h" - -#define QQC2_NAMESPACE QQC2 - -QT_BEGIN_NAMESPACE - -class QPalette; - -namespace QQC2_NAMESPACE { - -class QStyleOptionButton; -class QMacStylePrivate; - -class QMacStyle : public QCommonStyle -{ - Q_OBJECT -public: - QMacStyle(); - ~QMacStyle(); - - void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p) const override; - void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p) const override; - void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p) const override; - - QRect subElementRect(SubElement r, const QStyleOption *opt) const override; - QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc) const override; - SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt) const override; - - QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize) const override; - QFont font(ControlElement element, const QStyle::State state) const override; - QMargins ninePatchMargins(ComplexControl cc, const QStyleOptionComplex *opt, const QSize &imageSize) const override; - - int pixelMetric(PixelMetric pm, const QStyleOption *opt = 0) const override; - int styleHint(StyleHint sh, const QStyleOption *opt = 0, QStyleHintReturn *shret = 0) const override; - - QPixmap standardPixmap(StandardPixmap sp, const QStyleOption *opt) const override; - QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const override; - - void drawItemText(QPainter *p, const QRect &r, int flags, const QPalette &pal, - bool enabled, const QString &text, - QPalette::ColorRole textRole = QPalette::NoRole) const override; - - QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *opt = 0) const override; - -private: - Q_DISABLE_COPY_MOVE(QMacStyle) - Q_DECLARE_PRIVATE(QMacStyle) -}; - -} // QQC2_NAMESPACE - -QT_END_NAMESPACE - -#endif // QMACSTYLE_MAC_P_H diff --git a/src/quicknativestyle/qstyle/mac/qquickmacstyle_mac_p_p.h b/src/quicknativestyle/qstyle/mac/qquickmacstyle_mac_p_p.h deleted file mode 100644 index a0c67bfb..00000000 --- a/src/quicknativestyle/qstyle/mac/qquickmacstyle_mac_p_p.h +++ /dev/null @@ -1,230 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#ifndef QMACSTYLE_MAC_P_P_H -#define QMACSTYLE_MAC_P_P_H - -#include "qquickmacstyle_mac_p.h" -#include "qquickcommonstyle_p.h" -#include "qquickstylehelper_p.h" - -#include <QtCore/qdebug.h> -#include <QtCore/qhash.h> -#include <QtCore/qmap.h> -#include <QtCore/qmath.h> -#include <QtCore/qpair.h> -#include <QtCore/qpointer.h> -#include <QtCore/qtextstream.h> -#include <QtCore/qvector.h> - -#include <QtGui/qbitmap.h> -#include <QtGui/qevent.h> -#include <QtGui/qpaintdevice.h> -#include <QtGui/qpainter.h> -#include <QtGui/qpixmapcache.h> - -#include <QtQuick/qquickitem.h> - -#include <QtCore/private/qcore_mac_p.h> -#include <QtGui/private/qpainter_p.h> - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -Q_FORWARD_DECLARE_MUTABLE_CG_TYPE(CGContext); - -Q_FORWARD_DECLARE_OBJC_CLASS(NSView); -Q_FORWARD_DECLARE_OBJC_CLASS(NSCell); - -QT_BEGIN_NAMESPACE - -namespace QQC2 { - -/* - AHIG: - macOS Human Interface Guidelines - https://developer.apple.com/macos/human-interface-guidelines/overview/themes/ - - Builder: - Interface Builder in Xcode 8 or later -*/ - -// this works as long as we have at most 16 different control types -#define CT1(c) CT2(c, c) -#define CT2(c1, c2) ((uint(c1) << 16) | uint(c2)) - -#define SIZE(large, small, mini) \ - (controlSize == QStyleHelper::SizeLarge ? (large) : controlSize == QStyleHelper::SizeSmall ? (small) : (mini)) - -// same as return SIZE(...) but optimized -#define return_SIZE(large, small, mini) \ - do { \ - static const int sizes[] = { (large), (small), (mini) }; \ - return sizes[controlSize]; \ - } while (false) - -class QMacStylePrivate : public QCommonStylePrivate -{ - Q_DECLARE_PUBLIC(QMacStyle) - -public: - enum Direction { - North, South, East, West - }; - - enum CocoaControlType { - NoControl, // For when there's no such a control in Cocoa - Box, // QGroupBox - Box_Dark, // FIXME See render code in drawPrimitive(PE_FrameTabWidget) - Button_CheckBox, - Button_Disclosure, // Disclosure triangle, like in QTreeView - Button_PopupButton, // Non-editable QComboBox - Button_PullDown, // QPushButton with menu - Button_PushButton, // Plain QPushButton and QTabBar buttons - Button_RadioButton, - Button_SquareButton, // Oversized QPushButton - Button_WindowClose, - Button_WindowMiniaturize, - Button_WindowZoom, - ComboBox, // Editable QComboBox - ProgressIndicator_Determinate, - ProgressIndicator_Indeterminate, - Scroller_Horizontal, - Scroller_Vertical, - SegmentedControl_First, // QTabBar buttons focus ring - SegmentedControl_Middle, - SegmentedControl_Last, - SegmentedControl_Single, - Slider_Horizontal, - Slider_Vertical, - SplitView_Horizontal, - SplitView_Vertical, - Stepper, // QSpinBox buttons - TextField - }; - - struct CocoaControl { - CocoaControl(); - CocoaControl(CocoaControlType t, QStyleHelper::WidgetSizePolicy s); - - CocoaControlType type; - QStyleHelper::WidgetSizePolicy size; - - bool operator==(const CocoaControl &other) const; - - QSizeF defaultFrameSize() const; - QRectF adjustedControlFrame(const QRectF &rect) const; - QMarginsF titleMargins() const; - - bool getCocoaButtonTypeAndBezelStyle(NSButtonType *buttonType, NSBezelStyle *bezelStyle) const; - }; - - typedef void (^DrawRectBlock)(CGContextRef, const CGRect &); - - QMacStylePrivate(); - ~QMacStylePrivate(); - - // Ideally these wouldn't exist, but since they already exist we need some accessors. - static const int PushButtonLeftOffset; - static const int PushButtonRightOffset; - static const int PushButtonContentPadding; - - enum Animates { AquaPushButton, AquaProgressBar, AquaListViewItemOpen, AquaScrollBar }; - QStyleHelper::WidgetSizePolicy aquaSizeConstrain(const QStyleOption *option, - QStyle::ContentsType ct = QStyle::CT_CustomBase, - QSize szHint=QSize(-1, -1), QSize *insz = 0) const; - QStyleHelper::WidgetSizePolicy effectiveAquaSizeConstrain(const QStyleOption *option, - QStyle::ContentsType ct = QStyle::CT_CustomBase, - QSize szHint=QSize(-1, -1), QSize *insz = 0) const; - inline int animateSpeed(Animates) const { return 33; } - - // Utility functions - static CGRect comboboxInnerBounds(const CGRect &outterBounds, const CocoaControl &cocoaWidget); - - static QRectF comboboxEditBounds(const QRectF &outterBounds, const CocoaControl &cw); - - void setAutoDefaultButton(QObject *button) const; - - NSView *cocoaControl(CocoaControl cocoaControl) const; - NSCell *cocoaCell(CocoaControl cocoaControl) const; - - void setupNSGraphicsContext(CGContextRef cg, bool flipped) const; - void restoreNSGraphicsContext(CGContextRef cg) const; - - void setupVerticalInvertedXform(CGContextRef cg, bool reverse, bool vertical, const CGRect &rect) const; - - void drawNSViewInRect(NSView *view, const QRectF &rect, QPainter *p, DrawRectBlock drawRectBlock = nil) const; - void resolveCurrentNSView(QWindow *window) const; - - void drawToolbarButtonArrow(const QStyleOption *opt, QPainter *p) const; - - QPainterPath windowPanelPath(const QRectF &r) const; - - CocoaControlType windowButtonCocoaControl(QStyle::SubControl sc) const; - - void tabLayout(const QStyleOptionTab *opt, QRect *textRect, QRect *iconRect) const override; - static Direction tabDirection(QStyleOptionTab::Shape shape); - static bool verticalTabs(QMacStylePrivate::Direction tabDirection); - -public: - mutable QPointer<QObject> autoDefaultButton; - static QVector<QPointer<QObject> > scrollBars; - - mutable QPointer<QQuickItem> focusWidget; // TODO: rename to focusItem - mutable NSView *backingStoreNSView; - mutable QHash<CocoaControl, NSView *> cocoaControls; - mutable QHash<CocoaControl, NSCell *> cocoaCells; - - QFont smallSystemFont; - QFont miniSystemFont; - - QMacKeyValueObserver appearanceObserver; -}; - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif // QMACSTYLE_MAC_P_P_H diff --git a/src/quicknativestyle/qstyle/qquickcommonstyle.cpp b/src/quicknativestyle/qstyle/qquickcommonstyle.cpp deleted file mode 100644 index c5797009..00000000 --- a/src/quicknativestyle/qstyle/qquickcommonstyle.cpp +++ /dev/null @@ -1,6082 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickcommonstyle.h" -#include "qquickcommonstyle_p.h" -#include "qquickcommonstylepixmaps_p.h" - -#include "qquickstyleoption.h" -#include "qquickdrawutil.h" -#include "qquickstylehelper_p.h" - -#include <QtGui/QWindow> -#include <qfile.h> -#include <private/qguiapplication_p.h> -#include <qpa/qplatformtheme.h> -#include <qbitmap.h> -#include <qcache.h> -#include <qmath.h> -#include <qpainter.h> -#include <qpaintengine.h> -#include <qpainterpath.h> -#include <private/qmath_p.h> -#include <qdebug.h> -#include <qtextformat.h> -#include <qfileinfo.h> -#include <qdir.h> -#include <qsettings.h> -#include <qvariant.h> -#include <qpixmapcache.h> -#include <qmatrix4x4.h> - -#include <limits.h> - -#include <private/qtextengine_p.h> -#include <QtGui/private/qhexstring_p.h> - -QT_BEGIN_NAMESPACE - -static inline qreal dpr(const QWindow *w) -{ - return w != nullptr ? w->devicePixelRatio() : qApp->devicePixelRatio(); -} - -/*! - \class QCommonStyle - \brief The QCommonStyle class encapsulates the common Look and Feel of a GUI. - - \ingroup appearance - \inmodule QtWidgets - - This abstract class implements some of the widget's look and feel - that is common to all GUI styles provided and shipped as part of - Qt. - - Since QCommonStyle inherits QStyle, all of its functions are fully documented - in the QStyle documentation. - \omit - , although the - extra functions that QCommonStyle provides, e.g. - drawComplexControl(), drawControl(), drawPrimitive(), - hitTestComplexControl(), subControlRect(), sizeFromContents(), and - subElementRect() are documented here. - \endomit - - \sa QStyle, QProxyStyle -*/ - -namespace QQC2 { - -QCommonStyle::QCommonStyle() - : QStyle(*new QCommonStylePrivate) -{ } - -QCommonStyle::QCommonStyle(QCommonStylePrivate &dd) - : QStyle(dd) -{ } - -QCommonStyle::~QCommonStyle() -{ } - -void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p) const -{ - Q_D(const QCommonStyle); - switch (pe) { - case PE_FrameButtonBevel: - case PE_FrameButtonTool: - qDrawShadeRect(p, opt->rect, opt->palette, - opt->state & (State_Sunken | State_On), 1, 0); - break; - case PE_PanelButtonCommand: - case PE_PanelButtonBevel: - case PE_PanelButtonTool: - case PE_IndicatorButtonDropDown: - qDrawShadePanel(p, opt->rect, opt->palette, - opt->state & (State_Sunken | State_On), 1, - &opt->palette.brush(QPalette::Button)); - break; - case PE_IndicatorItemViewItemCheck: - proxy()->drawPrimitive(PE_IndicatorCheckBox, opt, p); - break; - case PE_IndicatorCheckBox: - if (opt->state & State_NoChange) { - p->setPen(opt->palette.windowText().color()); - p->fillRect(opt->rect, opt->palette.brush(QPalette::Button)); - p->drawRect(opt->rect); - p->drawLine(opt->rect.topLeft(), opt->rect.bottomRight()); - } else { - qDrawShadePanel(p, opt->rect.x(), opt->rect.y(), opt->rect.width(), opt->rect.height(), - opt->palette, opt->state & (State_Sunken | State_On), 1, - &opt->palette.brush(QPalette::Button)); - } - break; - case PE_IndicatorRadioButton: { - QRect ir = opt->rect; - p->setPen(opt->palette.dark().color()); - p->drawArc(opt->rect, 0, 5760); - if (opt->state & (State_Sunken | State_On)) { - ir.adjust(2, 2, -2, -2); - p->setBrush(opt->palette.windowText()); - p->drawEllipse(ir); - } - break; } - case PE_FrameFocusRect: - if (const QStyleOptionFocusRect *fropt = qstyleoption_cast<const QStyleOptionFocusRect *>(opt)) { - QColor bg = fropt->backgroundColor; - QPen oldPen = p->pen(); - if (bg.isValid()) { - int h, s, v; - bg.getHsv(&h, &s, &v); - if (v >= 128) - p->setPen(Qt::black); - else - p->setPen(Qt::white); - } else { - p->setPen(opt->palette.windowText().color()); - } - QRect focusRect = opt->rect.adjusted(1, 1, -1, -1); - p->drawRect(focusRect.adjusted(0, 0, -1, -1)); //draw pen inclusive - p->setPen(oldPen); - } - break; - case PE_IndicatorMenuCheckMark: { - const int markW = opt->rect.width() > 7 ? 7 : opt->rect.width(); - const int markH = markW; - int posX = opt->rect.x() + (opt->rect.width() - markW)/2 + 1; - int posY = opt->rect.y() + (opt->rect.height() - markH)/2; - - QVector<QLineF> a; - a.reserve(markH); - - int i, xx, yy; - xx = posX; - yy = 3 + posY; - for (i = 0; i < markW/2; ++i) { - a << QLineF(xx, yy, xx, yy + 2); - ++xx; - ++yy; - } - yy -= 2; - for (; i < markH; ++i) { - a << QLineF(xx, yy, xx, yy + 2); - ++xx; - --yy; - } - if (!(opt->state & State_Enabled) && !(opt->state & State_On)) { - p->save(); - p->translate(1, 1); - p->setPen(opt->palette.light().color()); - p->drawLines(a); - p->restore(); - } - p->setPen((opt->state & State_On) ? opt->palette.highlightedText().color() : opt->palette.text().color()); - p->drawLines(a); - break; } - case PE_Frame: - case PE_FrameMenu: - if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - if (pe == PE_FrameMenu || (frame->state & State_Sunken) || (frame->state & State_Raised)) { - qDrawShadePanel(p, frame->rect, frame->palette, frame->state & State_Sunken, - frame->lineWidth); - } else { - qDrawPlainRect(p, frame->rect, frame->palette.windowText().color(), frame->lineWidth); - } - } - break; - case PE_PanelMenuBar: - if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(opt)){ - qDrawShadePanel(p, frame->rect, frame->palette, false, frame->lineWidth, - &frame->palette.brush(QPalette::Button)); - - } - else if (const QStyleOptionToolBar *frame = qstyleoption_cast<const QStyleOptionToolBar *>(opt)){ - qDrawShadePanel(p, frame->rect, frame->palette, false, frame->lineWidth, - &frame->palette.brush(QPalette::Button)); - } - - break; - case PE_PanelMenu: - break; - case PE_PanelToolBar: - break; - case PE_IndicatorProgressChunk: - { - p->fillRect(opt->rect.x(), opt->rect.y() + 3, opt->rect.width() -2, opt->rect.height() - 6, - opt->palette.brush(QPalette::Highlight)); - } - break; - case PE_IndicatorBranch: { - static const int decoration_size = 9; - int mid_h = opt->rect.x() + opt->rect.width() / 2; - int mid_v = opt->rect.y() + opt->rect.height() / 2; - int bef_h = mid_h; - int bef_v = mid_v; - int aft_h = mid_h; - int aft_v = mid_v; - if (opt->state & State_Children) { - int delta = decoration_size / 2; - bef_h -= delta; - bef_v -= delta; - aft_h += delta; - aft_v += delta; - p->drawLine(bef_h + 2, bef_v + 4, bef_h + 6, bef_v + 4); - if (!(opt->state & State_Open)) - p->drawLine(bef_h + 4, bef_v + 2, bef_h + 4, bef_v + 6); - QPen oldPen = p->pen(); - p->setPen(opt->palette.dark().color()); - p->drawRect(bef_h, bef_v, decoration_size - 1, decoration_size - 1); - p->setPen(oldPen); - } - QBrush brush(opt->palette.dark().color(), Qt::Dense4Pattern); - if (opt->state & State_Item) { - if (opt->direction == Qt::RightToLeft) - p->fillRect(opt->rect.left(), mid_v, bef_h - opt->rect.left(), 1, brush); - else - p->fillRect(aft_h, mid_v, opt->rect.right() - aft_h + 1, 1, brush); - } - if (opt->state & State_Sibling) - p->fillRect(mid_h, aft_v, 1, opt->rect.bottom() - aft_v + 1, brush); - if (opt->state & (State_Open | State_Children | State_Item | State_Sibling)) - p->fillRect(mid_h, opt->rect.y(), 1, bef_v - opt->rect.y(), brush); - break; } - case PE_FrameStatusBarItem: - qDrawShadeRect(p, opt->rect, opt->palette, true, 1, 0, nullptr); - break; - case PE_IndicatorHeaderArrow: - if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) { - QPen oldPen = p->pen(); - if (header->sortIndicator & QStyleOptionHeader::SortUp) { - p->setPen(QPen(opt->palette.light(), 0)); - p->drawLine(opt->rect.x() + opt->rect.width(), opt->rect.y(), - opt->rect.x() + opt->rect.width() / 2, opt->rect.y() + opt->rect.height()); - p->setPen(QPen(opt->palette.dark(), 0)); - const QPoint points[] = { - QPoint(opt->rect.x() + opt->rect.width() / 2, opt->rect.y() + opt->rect.height()), - QPoint(opt->rect.x(), opt->rect.y()), - QPoint(opt->rect.x() + opt->rect.width(), opt->rect.y()), - }; - p->drawPolyline(points, sizeof points / sizeof *points); - } else if (header->sortIndicator & QStyleOptionHeader::SortDown) { - p->setPen(QPen(opt->palette.light(), 0)); - const QPoint points[] = { - QPoint(opt->rect.x(), opt->rect.y() + opt->rect.height()), - QPoint(opt->rect.x() + opt->rect.width(), opt->rect.y() + opt->rect.height()), - QPoint(opt->rect.x() + opt->rect.width() / 2, opt->rect.y()), - }; - p->drawPolyline(points, sizeof points / sizeof *points); - p->setPen(QPen(opt->palette.dark(), 0)); - p->drawLine(opt->rect.x(), opt->rect.y() + opt->rect.height(), - opt->rect.x() + opt->rect.width() / 2, opt->rect.y()); - } - p->setPen(oldPen); - } - break; - case PE_FrameTabBarBase: - if (const QStyleOptionTabBarBase *tbb - = qstyleoption_cast<const QStyleOptionTabBarBase *>(opt)) { - p->save(); - switch (tbb->shape) { - case QStyleOptionTab::RoundedNorth: - case QStyleOptionTab::TriangularNorth: - p->setPen(QPen(tbb->palette.light(), 0)); - p->drawLine(tbb->rect.topLeft(), tbb->rect.topRight()); - break; - case QStyleOptionTab::RoundedWest: - case QStyleOptionTab::TriangularWest: - p->setPen(QPen(tbb->palette.light(), 0)); - p->drawLine(tbb->rect.topLeft(), tbb->rect.bottomLeft()); - break; - case QStyleOptionTab::RoundedSouth: - case QStyleOptionTab::TriangularSouth: - p->setPen(QPen(tbb->palette.shadow(), 0)); - p->drawLine(tbb->rect.left(), tbb->rect.bottom(), - tbb->rect.right(), tbb->rect.bottom()); - p->setPen(QPen(tbb->palette.dark(), 0)); - p->drawLine(tbb->rect.left(), tbb->rect.bottom() - 1, - tbb->rect.right() - 1, tbb->rect.bottom() - 1); - break; - case QStyleOptionTab::RoundedEast: - case QStyleOptionTab::TriangularEast: - p->setPen(QPen(tbb->palette.dark(), 0)); - p->drawLine(tbb->rect.topRight(), tbb->rect.bottomRight()); - break; - } - p->restore(); - } - break; - case PE_IndicatorTabClose: { - if (d->tabBarcloseButtonIcon.isNull()) { - d->tabBarcloseButtonIcon.addPixmap(QPixmap( - QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-closetab-16.png")), - QIcon::Normal, QIcon::Off); - d->tabBarcloseButtonIcon.addPixmap(QPixmap( - QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-closetab-down-16.png")), - QIcon::Normal, QIcon::On); - d->tabBarcloseButtonIcon.addPixmap(QPixmap( - QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-closetab-hover-16.png")), - QIcon::Active, QIcon::Off); - } - - int size = proxy()->pixelMetric(QStyle::PM_SmallIconSize); - QIcon::Mode mode = opt->state & State_Enabled ? - (opt->state & State_Raised ? QIcon::Active : QIcon::Normal) - : QIcon::Disabled; - if (!(opt->state & State_Raised) - && !(opt->state & State_Sunken) - && !(opt->state & QStyle::State_Selected)) - mode = QIcon::Disabled; - - QIcon::State state = opt->state & State_Sunken ? QIcon::On : QIcon::Off; - QPixmap pixmap = d->tabBarcloseButtonIcon.pixmap(QSize(size, size), dpr(opt->window), mode, state); - proxy()->drawItemPixmap(p, opt->rect, Qt::AlignCenter, pixmap); - break; - } - case PE_FrameTabWidget: - case PE_FrameWindow: - qDrawWinPanel(p, opt->rect, opt->palette, false, nullptr); - break; - case PE_FrameLineEdit: - proxy()->drawPrimitive(PE_Frame, opt, p); - break; - case PE_FrameGroupBox: - if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - if (frame->features & QStyleOptionFrame::Flat) { - QRect fr = frame->rect; - QPoint p1(fr.x(), fr.y() + 1); - QPoint p2(fr.x() + fr.width(), p1.y()); - qDrawShadeLine(p, p1, p2, frame->palette, true, - frame->lineWidth, frame->midLineWidth); - } else { - qDrawShadeRect(p, frame->rect.x(), frame->rect.y(), frame->rect.width(), - frame->rect.height(), frame->palette, true, - frame->lineWidth, frame->midLineWidth); - } - } - break; - case PE_FrameDockWidget: - if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - int lw = frame->lineWidth; - if (lw <= 0) - lw = proxy()->pixelMetric(PM_DockWidgetFrameWidth); - - qDrawShadePanel(p, frame->rect, frame->palette, false, lw); - } - break; - case PE_IndicatorToolBarHandle: - p->save(); - p->translate(opt->rect.x(), opt->rect.y()); - if (opt->state & State_Horizontal) { - int x = opt->rect.width() / 3; - if (opt->direction == Qt::RightToLeft) - x -= 2; - if (opt->rect.height() > 4) { - qDrawShadePanel(p, x, 2, 3, opt->rect.height() - 4, - opt->palette, false, 1, nullptr); - qDrawShadePanel(p, x+3, 2, 3, opt->rect.height() - 4, - opt->palette, false, 1, nullptr); - } - } else { - if (opt->rect.width() > 4) { - int y = opt->rect.height() / 3; - qDrawShadePanel(p, 2, y, opt->rect.width() - 4, 3, - opt->palette, false, 1, nullptr); - qDrawShadePanel(p, 2, y+3, opt->rect.width() - 4, 3, - opt->palette, false, 1, nullptr); - } - } - p->restore(); - break; - case PE_IndicatorToolBarSeparator: - { - QPoint p1, p2; - if (opt->state & State_Horizontal) { - p1 = QPoint(opt->rect.width()/2, 0); - p2 = QPoint(p1.x(), opt->rect.height()); - } else { - p1 = QPoint(0, opt->rect.height()/2); - p2 = QPoint(opt->rect.width(), p1.y()); - } - qDrawShadeLine(p, p1, p2, opt->palette, 1, 1, 0); - break; - } - case PE_IndicatorSpinPlus: - case PE_IndicatorSpinMinus: { - QRect r = opt->rect; - int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, opt); - QRect br = r.adjusted(fw, fw, -fw, -fw); - - int offset = (opt->state & State_Sunken) ? 1 : 0; - int step = (br.width() + 4) / 5; - p->fillRect(br.x() + offset, br.y() + offset +br.height() / 2 - step / 2, - br.width(), step, - opt->palette.buttonText()); - if (pe == PE_IndicatorSpinPlus) - p->fillRect(br.x() + br.width() / 2 - step / 2 + offset, br.y() + offset, - step, br.height(), - opt->palette.buttonText()); - - break; } - case PE_IndicatorSpinUp: - case PE_IndicatorSpinDown: { - QRect r = opt->rect; - int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, opt); - // QRect br = r.adjusted(fw, fw, -fw, -fw); - int x = r.x(), y = r.y(), w = r.width(), h = r.height(); - int sw = w-4; - if (sw < 3) - break; - else if (!(sw & 1)) - sw--; - sw -= (sw / 7) * 2; // Empty border - int sh = sw/2 + 2; // Must have empty row at foot of arrow - - int sx = x + w / 2 - sw / 2; - int sy = y + h / 2 - sh / 2; - - if (pe == PE_IndicatorSpinUp && fw) - --sy; - - int bsx = 0; - int bsy = 0; - if (opt->state & State_Sunken) { - bsx = proxy()->pixelMetric(PM_ButtonShiftHorizontal); - bsy = proxy()->pixelMetric(PM_ButtonShiftVertical); - } - p->save(); - p->translate(sx + bsx, sy + bsy); - p->setPen(opt->palette.buttonText().color()); - p->setBrush(opt->palette.buttonText()); - if (pe == PE_IndicatorSpinDown) { - const QPoint points[] = { QPoint(0, 1), QPoint(sw-1, 1), QPoint(sh-2, sh-1) }; - p->drawPolygon(points, sizeof points / sizeof *points); - } else { - const QPoint points[] = { QPoint(0, sh-1), QPoint(sw-1, sh-1), QPoint(sh-2, 1) }; - p->drawPolygon(points, sizeof points / sizeof *points); - } - p->restore(); - break; } - case PE_PanelTipLabel: { - const QBrush brush(opt->palette.toolTipBase()); - qDrawPlainRect(p, opt->rect, opt->palette.toolTipText().color(), 1, &brush); - break; - } - case PE_IndicatorTabTear: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { - bool rtl = tab->direction == Qt::RightToLeft; - const bool horizontal = tab->rect.height() > tab->rect.width(); - const int margin = 4; - QPainterPath path; - - if (horizontal) { - QRect rect = tab->rect.adjusted(rtl ? margin : 0, 0, rtl ? 1 : -margin, 0); - rect.setTop(rect.top() + ((tab->state & State_Selected) ? 1 : 3)); - rect.setBottom(rect.bottom() - ((tab->state & State_Selected) ? 0 : 2)); - - path.moveTo(QPoint(rtl ? rect.right() : rect.left(), rect.top())); - int count = 4; - for (int jags = 1; jags <= count; ++jags, rtl = !rtl) - path.lineTo(QPoint(rtl ? rect.left() : rect.right(), rect.top() + jags * rect.height()/count)); - } else { - QRect rect = tab->rect.adjusted(0, 0, 0, -margin); - rect.setLeft(rect.left() + ((tab->state & State_Selected) ? 1 : 3)); - rect.setRight(rect.right() - ((tab->state & State_Selected) ? 0 : 2)); - - path.moveTo(QPoint(rect.left(), rect.top())); - int count = 4; - for (int jags = 1; jags <= count; ++jags, rtl = !rtl) - path.lineTo(QPoint(rect.left() + jags * rect.width()/count, rtl ? rect.top() : rect.bottom())); - } - - p->setPen(QPen(tab->palette.dark(), qreal(.8))); - p->setBrush(tab->palette.window()); - p->setRenderHint(QPainter::Antialiasing); - p->drawPath(path); - } - break; - case PE_PanelLineEdit: - if (const QStyleOptionFrame *panel = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - p->fillRect(panel->rect.adjusted(panel->lineWidth, panel->lineWidth, -panel->lineWidth, -panel->lineWidth), - panel->palette.brush(QPalette::Base)); - - if (panel->lineWidth > 0) - proxy()->drawPrimitive(PE_FrameLineEdit, panel, p); - } - break; - case PE_IndicatorColumnViewArrow: { - if (const QStyleOptionViewItem *viewOpt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) { - bool reverse = (viewOpt->direction == Qt::RightToLeft); - p->save(); - QPainterPath path; - int x = viewOpt->rect.x() + 1; - int offset = (viewOpt->rect.height() / 3); - int height = (viewOpt->rect.height()) - offset * 2; - if (height % 2 == 1) - --height; - int x2 = x + height - 1; - if (reverse) { - x = viewOpt->rect.x() + viewOpt->rect.width() - 1; - x2 = x - height + 1; - } - path.moveTo(x, viewOpt->rect.y() + offset); - path.lineTo(x, viewOpt->rect.y() + offset + height); - path.lineTo(x2, viewOpt->rect.y() + offset+height/2); - path.closeSubpath(); - if (viewOpt->state & QStyle::State_Selected ) { - if (viewOpt->showDecorationSelected) { - QColor color = viewOpt->palette.color(QPalette::Active, QPalette::HighlightedText); - p->setPen(color); - p->setBrush(color); - } else { - QColor color = viewOpt->palette.color(QPalette::Active, QPalette::WindowText); - p->setPen(color); - p->setBrush(color); - } - - } else { - QColor color = viewOpt->palette.color(QPalette::Active, QPalette::Mid); - p->setPen(color); - p->setBrush(color); - } - p->drawPath(path); - - // draw the vertical and top triangle line - if (!(viewOpt->state & QStyle::State_Selected)) { - QPainterPath lines; - lines.moveTo(x, viewOpt->rect.y() + offset); - lines.lineTo(x, viewOpt->rect.y() + offset + height); - lines.moveTo(x, viewOpt->rect.y() + offset); - lines.lineTo(x2, viewOpt->rect.y() + offset+height/2); - QColor color = viewOpt->palette.color(QPalette::Active, QPalette::Dark); - p->setPen(color); - p->drawPath(lines); - } - p->restore(); - } - break; } - case PE_IndicatorItemViewItemDrop: { - QRect rect = opt->rect; - if (opt->rect.height() == 0) - p->drawLine(rect.topLeft(), rect.topRight()); - else - p->drawRect(rect); - break; } - case PE_PanelItemViewRow: - if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) { - QPalette::ColorGroup cg = vopt->state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled; - if (cg == QPalette::Normal && !(vopt->state & QStyle::State_Active)) - cg = QPalette::Inactive; - - if ((vopt->state & QStyle::State_Selected) && proxy()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, opt)) - p->fillRect(vopt->rect, vopt->palette.brush(cg, QPalette::Highlight)); - else if (vopt->features & QStyleOptionViewItem::Alternate) - p->fillRect(vopt->rect, vopt->palette.brush(cg, QPalette::AlternateBase)); - } - break; - case PE_PanelItemViewItem: - if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) { - QPalette::ColorGroup cg = vopt->state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled; - if (cg == QPalette::Normal && !(vopt->state & QStyle::State_Active)) - cg = QPalette::Inactive; - - if (vopt->showDecorationSelected && (vopt->state & QStyle::State_Selected)) { - p->fillRect(vopt->rect, vopt->palette.brush(cg, QPalette::Highlight)); - } else { - if (vopt->backgroundBrush.style() != Qt::NoBrush) { - QPointF oldBO = p->brushOrigin(); - p->setBrushOrigin(vopt->rect.topLeft()); - p->fillRect(vopt->rect, vopt->backgroundBrush); - p->setBrushOrigin(oldBO); - } - - if (vopt->state & QStyle::State_Selected) { - QRect textRect = subElementRect(QStyle::SE_ItemViewItemText, opt); - p->fillRect(textRect, vopt->palette.brush(cg, QPalette::Highlight)); - } - } - } - break; - case PE_PanelScrollAreaCorner: { - const QBrush brush(opt->palette.brush(QPalette::Window)); - p->fillRect(opt->rect, brush); - } break; - case PE_IndicatorArrowUp: - case PE_IndicatorArrowDown: - case PE_IndicatorArrowRight: - case PE_IndicatorArrowLeft: - { - if (opt->rect.width() <= 1 || opt->rect.height() <= 1) - break; - QRect r = opt->rect; - int size = qMin(r.height(), r.width()); - QPixmap pixmap; - QString pixmapName = QStyleHelper::uniqueName(QLatin1String("$qt_ia-") - % QLatin1String(metaObject()->className()), opt, QSize(size, size)) - % HexString<uint>(pe); - if (!QPixmapCache::find(pixmapName, &pixmap)) { - qreal pixelRatio = p->device()->devicePixelRatioF(); - int border = qRound(pixelRatio*(size/5)); - int sqsize = qRound(pixelRatio*(2*(size/2))); - QImage image(sqsize, sqsize, QImage::Format_ARGB32_Premultiplied); - image.fill(0); - QPainter imagePainter(&image); - - QPolygon a; - switch (pe) { - case PE_IndicatorArrowUp: - a.setPoints(3, border, sqsize/2, sqsize/2, border, sqsize - border, sqsize/2); - break; - case PE_IndicatorArrowDown: - a.setPoints(3, border, sqsize/2, sqsize/2, sqsize - border, sqsize - border, sqsize/2); - break; - case PE_IndicatorArrowRight: - a.setPoints(3, sqsize - border, sqsize/2, sqsize/2, border, sqsize/2, sqsize - border); - break; - case PE_IndicatorArrowLeft: - a.setPoints(3, border, sqsize/2, sqsize/2, border, sqsize/2, sqsize - border); - break; - default: - break; - } - - int bsx = 0; - int bsy = 0; - - if (opt->state & State_Sunken) { - bsx = proxy()->pixelMetric(PM_ButtonShiftHorizontal, opt); - bsy = proxy()->pixelMetric(PM_ButtonShiftVertical, opt); - } - - QRect bounds = a.boundingRect(); - int sx = sqsize / 2 - bounds.center().x() - 1; - int sy = sqsize / 2 - bounds.center().y() - 1; - imagePainter.translate(sx + bsx, sy + bsy); - imagePainter.setPen(opt->palette.buttonText().color()); - imagePainter.setBrush(opt->palette.buttonText()); - - if (!(opt->state & State_Enabled)) { - imagePainter.translate(1, 1); - imagePainter.setBrush(opt->palette.light().color()); - imagePainter.setPen(opt->palette.light().color()); - imagePainter.drawPolygon(a); - imagePainter.translate(-1, -1); - imagePainter.setBrush(opt->palette.mid().color()); - imagePainter.setPen(opt->palette.mid().color()); - } - - imagePainter.drawPolygon(a); - imagePainter.end(); - pixmap = QPixmap::fromImage(image); - pixmap.setDevicePixelRatio(pixelRatio); - QPixmapCache::insert(pixmapName, pixmap); - } - int xOffset = r.x() + (r.width() - size)/2; - int yOffset = r.y() + (r.height() - size)/2; - p->drawPixmap(xOffset, yOffset, pixmap); - } - break; - default: - break; - } -} - -static void drawArrow(const QStyle *style, const QStyleOptionToolButton *toolbutton, - const QRect &rect, QPainter *painter) -{ - QStyle::PrimitiveElement pe; - switch (toolbutton->arrowType) { - case Qt::LeftArrow: - pe = QStyle::PE_IndicatorArrowLeft; - break; - case Qt::RightArrow: - pe = QStyle::PE_IndicatorArrowRight; - break; - case Qt::UpArrow: - pe = QStyle::PE_IndicatorArrowUp; - break; - case Qt::DownArrow: - pe = QStyle::PE_IndicatorArrowDown; - break; - default: - return; - } - QStyleOption arrowOpt = *toolbutton; - arrowOpt.rect = rect; - style->drawPrimitive(pe, &arrowOpt, painter); -} - -static QSizeF viewItemTextLayout(QTextLayout &textLayout, int lineWidth, int maxHeight = -1, int *lastVisibleLine = nullptr) -{ - if (lastVisibleLine) - *lastVisibleLine = -1; - qreal height = 0; - qreal widthUsed = 0; - textLayout.beginLayout(); - int i = 0; - while (true) { - QTextLine line = textLayout.createLine(); - if (!line.isValid()) - break; - line.setLineWidth(lineWidth); - line.setPosition(QPointF(0, height)); - height += line.height(); - widthUsed = qMax(widthUsed, line.naturalTextWidth()); - // we assume that the height of the next line is the same as the current one - if (maxHeight > 0 && lastVisibleLine && height + line.height() > maxHeight) { - const QTextLine nextLine = textLayout.createLine(); - *lastVisibleLine = nextLine.isValid() ? i : -1; - break; - } - ++i; - } - textLayout.endLayout(); - return QSizeF(widthUsed, height); -} - -QString QCommonStylePrivate::calculateElidedText(const QString &text, const QTextOption &textOption, - const QFont &font, const QRect &textRect, const Qt::Alignment valign, - Qt::TextElideMode textElideMode, int flags, - bool lastVisibleLineShouldBeElided, QPointF *paintStartPosition) const -{ - QTextLayout textLayout(text, font); - textLayout.setTextOption(textOption); - - // In AlignVCenter mode when more than one line is displayed and the height only allows - // some of the lines it makes no sense to display those. From a users perspective it makes - // more sense to see the start of the text instead something inbetween. - const bool vAlignmentOptimization = paintStartPosition && valign.testFlag(Qt::AlignVCenter); - - int lastVisibleLine = -1; - viewItemTextLayout(textLayout, textRect.width(), vAlignmentOptimization ? textRect.height() : -1, &lastVisibleLine); - - const QRectF boundingRect = textLayout.boundingRect(); - // don't care about LTR/RTL here, only need the height - const QRect layoutRect = QStyle::alignedRect(Qt::LayoutDirectionAuto, valign, - boundingRect.size().toSize(), textRect); - - if (paintStartPosition) - *paintStartPosition = QPointF(textRect.x(), layoutRect.top()); - - QString ret; - qreal height = 0; - const int lineCount = textLayout.lineCount(); - for (int i = 0; i < lineCount; ++i) { - const QTextLine line = textLayout.lineAt(i); - height += line.height(); - - // above visible rect - if (height + layoutRect.top() <= textRect.top()) { - if (paintStartPosition) - paintStartPosition->ry() += line.height(); - continue; - } - - const int start = line.textStart(); - const int length = line.textLength(); - const bool drawElided = line.naturalTextWidth() > textRect.width(); - bool elideLastVisibleLine = lastVisibleLine == i; - if (!drawElided && i + 1 < lineCount && lastVisibleLineShouldBeElided) { - const QTextLine nextLine = textLayout.lineAt(i + 1); - const int nextHeight = height + nextLine.height() / 2; - // elide when less than the next half line is visible - if (nextHeight + layoutRect.top() > textRect.height() + textRect.top()) - elideLastVisibleLine = true; - } - - QString text = textLayout.text().mid(start, length); - if (drawElided || elideLastVisibleLine) { - if (elideLastVisibleLine) { - if (text.endsWith(QChar::LineSeparator)) - text.chop(1); - text += QChar(0x2026); - } - const QStackTextEngine engine(text, font); - ret += engine.elidedText(textElideMode, textRect.width(), flags); - - // no newline for the last line (last visible or real) - // sometimes drawElided is true but no eliding is done so the text ends - // with QChar::LineSeparator - don't add another one. This happened with - // arabic text in the testcase for QTBUG-72805 - if (i < lineCount - 1 && - !ret.endsWith(QChar::LineSeparator)) - ret += QChar::LineSeparator; - } else { - ret += text; - } - - // below visible text, can stop - if ((height + layoutRect.top() >= textRect.bottom()) || - (lastVisibleLine >= 0 && lastVisibleLine == i)) - break; - } - return ret; -} - -QSize QCommonStylePrivate::viewItemSize(const QStyleOptionViewItem *option, int role) const -{ - switch (role) { - case Qt::CheckStateRole: - if (option->features & QStyleOptionViewItem::HasCheckIndicator) - return QSize(proxyStyle->pixelMetric(QStyle::PM_IndicatorWidth, option), - proxyStyle->pixelMetric(QStyle::PM_IndicatorHeight, option)); - break; - case Qt::DisplayRole: - if (option->features & QStyleOptionViewItem::HasDisplay) { - QTextOption textOption; - textOption.setWrapMode(QTextOption::WordWrap); - QTextLayout textLayout(option->text, option->font); - textLayout.setTextOption(textOption); - const bool wrapText = option->features & QStyleOptionViewItem::WrapText; - const int textMargin = proxyStyle->pixelMetric(QStyle::PM_FocusFrameHMargin, option) + 1; - QRect bounds = option->rect; - switch (option->decorationPosition) { - case QStyleOptionViewItem::Left: - case QStyleOptionViewItem::Right: { - if (wrapText && bounds.isValid()) { - int width = bounds.width() - 2 * textMargin; - if (option->features & QStyleOptionViewItem::HasDecoration) - width -= option->decorationSize.width() + 2 * textMargin; - bounds.setWidth(width); - } else - bounds.setWidth(QFIXED_MAX); - break; - } - case QStyleOptionViewItem::Top: - case QStyleOptionViewItem::Bottom: - if (wrapText) - bounds.setWidth(bounds.isValid() ? bounds.width() - 2 * textMargin : option->decorationSize.width()); - else - bounds.setWidth(QFIXED_MAX); - break; - default: - break; - } - - if (wrapText && option->features & QStyleOptionViewItem::HasCheckIndicator) - bounds.setWidth(bounds.width() - proxyStyle->pixelMetric(QStyle::PM_IndicatorWidth) - 2 * textMargin); - - const int lineWidth = bounds.width(); - const QSizeF size = viewItemTextLayout(textLayout, lineWidth); - return QSize(qCeil(size.width()) + 2 * textMargin, qCeil(size.height())); - } - break; - case Qt::DecorationRole: - if (option->features & QStyleOptionViewItem::HasDecoration) { - return option->decorationSize; - } - break; - default: - break; - } - - return QSize(0, 0); -} - -void QCommonStylePrivate::viewItemDrawText(QPainter *p, const QStyleOptionViewItem *option, const QRect &rect) const -{ - const int textMargin = proxyStyle->pixelMetric(QStyle::PM_FocusFrameHMargin, nullptr) + 1; - - QRect textRect = rect.adjusted(textMargin, 0, -textMargin, 0); // remove width padding - const bool wrapText = option->features & QStyleOptionViewItem::WrapText; - QTextOption textOption; - textOption.setWrapMode(wrapText ? QTextOption::WordWrap : QTextOption::ManualWrap); - textOption.setTextDirection(option->direction); - textOption.setAlignment(QStyle::visualAlignment(option->direction, option->displayAlignment)); - - QPointF paintPosition; - const QString newText = calculateElidedText(option->text, textOption, - option->font, textRect, option->displayAlignment, - option->textElideMode, 0, - true, &paintPosition); - - QTextLayout textLayout(newText, option->font); - textLayout.setTextOption(textOption); - viewItemTextLayout(textLayout, textRect.width()); - textLayout.draw(p, paintPosition); -} - -/*! \internal - compute the position for the different component of an item (pixmap, text, checkbox) - - Set sizehint to false to layout the elements inside opt->rect. Set sizehint to true to ignore - opt->rect and return rectangles in infinite space - - Code duplicated in QItemDelegate::doLayout -*/ -void QCommonStylePrivate::viewItemLayout(const QStyleOptionViewItem *opt, QRect *checkRect, - QRect *pixmapRect, QRect *textRect, bool sizehint) const -{ - Q_ASSERT(checkRect && pixmapRect && textRect); - *pixmapRect = QRect(QPoint(0, 0), viewItemSize(opt, Qt::DecorationRole)); - *textRect = QRect(QPoint(0, 0), viewItemSize(opt, Qt::DisplayRole)); - *checkRect = QRect(QPoint(0, 0), viewItemSize(opt, Qt::CheckStateRole)); - - const bool hasCheck = checkRect->isValid(); - const bool hasPixmap = pixmapRect->isValid(); - const bool hasText = textRect->isValid(); - const bool hasMargin = (hasText | hasPixmap | hasCheck); - const int frameHMargin = hasMargin ? - proxyStyle->pixelMetric(QStyle::PM_FocusFrameHMargin, opt) + 1 : 0; - const int textMargin = hasText ? frameHMargin : 0; - const int pixmapMargin = hasPixmap ? frameHMargin : 0; - const int checkMargin = hasCheck ? frameHMargin : 0; - const int x = opt->rect.left(); - const int y = opt->rect.top(); - int w, h; - - if (textRect->height() == 0 && (!hasPixmap || !sizehint)) { - //if there is no text, we still want to have a decent height for the item sizeHint and the editor size - textRect->setHeight(opt->fontMetrics.height()); - } - - QSize pm(0, 0); - if (hasPixmap) { - pm = pixmapRect->size(); - pm.rwidth() += 2 * pixmapMargin; - } - if (sizehint) { - h = qMax(checkRect->height(), qMax(textRect->height(), pm.height())); - if (opt->decorationPosition == QStyleOptionViewItem::Left - || opt->decorationPosition == QStyleOptionViewItem::Right) { - w = textRect->width() + pm.width(); - } else { - w = qMax(textRect->width(), pm.width()); - } - } else { - w = opt->rect.width(); - h = opt->rect.height(); - } - - int cw = 0; - QRect check; - if (hasCheck) { - cw = checkRect->width() + 2 * checkMargin; - if (sizehint) w += cw; - if (opt->direction == Qt::RightToLeft) { - check.setRect(x + w - cw, y, cw, h); - } else { - check.setRect(x, y, cw, h); - } - } - - QRect display; - QRect decoration; - switch (opt->decorationPosition) { - case QStyleOptionViewItem::Top: { - if (hasPixmap) - pm.setHeight(pm.height() + pixmapMargin); // add space - h = sizehint ? textRect->height() : h - pm.height(); - - if (opt->direction == Qt::RightToLeft) { - decoration.setRect(x, y, w - cw, pm.height()); - display.setRect(x, y + pm.height(), w - cw, h); - } else { - decoration.setRect(x + cw, y, w - cw, pm.height()); - display.setRect(x + cw, y + pm.height(), w - cw, h); - } - break; } - case QStyleOptionViewItem::Bottom: { - if (hasText) - textRect->setHeight(textRect->height() + textMargin); // add space - h = sizehint ? textRect->height() + pm.height() : h; - - if (opt->direction == Qt::RightToLeft) { - display.setRect(x, y, w - cw, textRect->height()); - decoration.setRect(x, y + textRect->height(), w - cw, h - textRect->height()); - } else { - display.setRect(x + cw, y, w - cw, textRect->height()); - decoration.setRect(x + cw, y + textRect->height(), w - cw, h - textRect->height()); - } - break; } - case QStyleOptionViewItem::Left: { - if (opt->direction == Qt::LeftToRight) { - decoration.setRect(x + cw, y, pm.width(), h); - display.setRect(decoration.right() + 1, y, w - pm.width() - cw, h); - } else { - display.setRect(x, y, w - pm.width() - cw, h); - decoration.setRect(display.right() + 1, y, pm.width(), h); - } - break; } - case QStyleOptionViewItem::Right: { - if (opt->direction == Qt::LeftToRight) { - display.setRect(x + cw, y, w - pm.width() - cw, h); - decoration.setRect(display.right() + 1, y, pm.width(), h); - } else { - decoration.setRect(x, y, pm.width(), h); - display.setRect(decoration.right() + 1, y, w - pm.width() - cw, h); - } - break; } - default: - qWarning("doLayout: decoration position is invalid"); - decoration = *pixmapRect; - break; - } - - if (!sizehint) { // we only need to do the internal layout if we are going to paint - *checkRect = QStyle::alignedRect(opt->direction, Qt::AlignCenter, - checkRect->size(), check); - *pixmapRect = QStyle::alignedRect(opt->direction, opt->decorationAlignment, - pixmapRect->size(), decoration); - // the text takes up all available space, unless the decoration is not shown as selected - if (opt->showDecorationSelected) - *textRect = display; - else - *textRect = QStyle::alignedRect(opt->direction, opt->displayAlignment, - textRect->size().boundedTo(display.size()), display); - } else { - *checkRect = check; - *pixmapRect = decoration; - *textRect = display; - } -} - -QString QCommonStylePrivate::toolButtonElideText(const QStyleOptionToolButton *option, - const QRect &textRect, int flags) const -{ - if (option->fontMetrics.horizontalAdvance(option->text) <= textRect.width()) - return option->text; - - QString text = option->text; - text.replace(QLatin1Char('\n'), QChar::LineSeparator); - QTextOption textOption; - textOption.setWrapMode(QTextOption::ManualWrap); - textOption.setTextDirection(option->direction); - - return calculateElidedText(text, textOption, - option->font, textRect, Qt::AlignTop, - Qt::ElideMiddle, flags, - false, nullptr); -} - -/*! \internal - Compute the textRect and the pixmapRect from the opt rect - - Uses the same computation than in QTabBar::tabSizeHint - */ -void QCommonStylePrivate::tabLayout(const QStyleOptionTab *opt, QRect *textRect, QRect *iconRect) const -{ - Q_ASSERT(textRect); - Q_ASSERT(iconRect); - QRect tr = opt->rect; - bool verticalTabs = opt->shape == QStyleOptionTab::RoundedEast - || opt->shape == QStyleOptionTab::RoundedWest - || opt->shape == QStyleOptionTab::TriangularEast - || opt->shape == QStyleOptionTab::TriangularWest; - if (verticalTabs) - tr.setRect(0, 0, tr.height(), tr.width()); // 0, 0 as we will have a translate transform - - int verticalShift = proxyStyle->pixelMetric(QStyle::PM_TabBarTabShiftVertical, opt); - int horizontalShift = proxyStyle->pixelMetric(QStyle::PM_TabBarTabShiftHorizontal, opt); - int hpadding = proxyStyle->pixelMetric(QStyle::PM_TabBarTabHSpace, opt) / 2; - int vpadding = proxyStyle->pixelMetric(QStyle::PM_TabBarTabVSpace, opt) / 2; - if (opt->shape == QStyleOptionTab::RoundedSouth || opt->shape == QStyleOptionTab::TriangularSouth) - verticalShift = -verticalShift; - tr.adjust(hpadding, verticalShift - vpadding, horizontalShift - hpadding, vpadding); - bool selected = opt->state & QStyle::State_Selected; - if (selected) { - tr.setTop(tr.top() - verticalShift); - tr.setRight(tr.right() - horizontalShift); - } - - // left widget - if (!opt->leftButtonSize.isEmpty()) { - tr.setLeft(tr.left() + 4 + - (verticalTabs ? opt->leftButtonSize.height() : opt->leftButtonSize.width())); - } - // right widget - if (!opt->rightButtonSize.isEmpty()) { - tr.setRight(tr.right() - 4 - - (verticalTabs ? opt->rightButtonSize.height() : opt->rightButtonSize.width())); - } - - // icon - if (!opt->icon.isNull()) { - QSize iconSize = opt->iconSize; - if (!iconSize.isValid()) { - int iconExtent = proxyStyle->pixelMetric(QStyle::PM_SmallIconSize); - iconSize = QSize(iconExtent, iconExtent); - } - QSize tabIconSize = opt->icon.actualSize(iconSize, - (opt->state & QStyle::State_Enabled) ? QIcon::Normal : QIcon::Disabled, - (opt->state & QStyle::State_Selected) ? QIcon::On : QIcon::Off); - // High-dpi icons do not need adjustment; make sure tabIconSize is not larger than iconSize - tabIconSize = QSize(qMin(tabIconSize.width(), iconSize.width()), qMin(tabIconSize.height(), iconSize.height())); - - const int offsetX = (iconSize.width() - tabIconSize.width()) / 2; - *iconRect = QRect(tr.left() + offsetX, tr.center().y() - tabIconSize.height() / 2, - tabIconSize.width(), tabIconSize.height()); - if (!verticalTabs) - *iconRect = QStyle::visualRect(opt->direction, opt->rect, *iconRect); - tr.setLeft(tr.left() + tabIconSize.width() + 4); - } - - if (!verticalTabs) - tr = QStyle::visualRect(opt->direction, opt->rect, tr); - - *textRect = tr; -} - -/*! - \reimp -*/ -void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt, QPainter *p) const -{ - Q_D(const QCommonStyle); - - // TODO: Set opt->window manually for now before calling any of the drawing functions. opt->window is - // pulled of the widget is QStyle. But now that we have no widget, we need some other - // solution. - Q_ASSERT(opt->window); - - switch (element) { - - case CE_PushButton: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - proxy()->drawControl(CE_PushButtonBevel, btn, p); - QStyleOptionButton subopt = *btn; - subopt.rect = subElementRect(SE_PushButtonContents, btn); - proxy()->drawControl(CE_PushButtonLabel, &subopt, p); - } - break; - case CE_PushButtonBevel: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - QRect br = btn->rect; - int dbi = proxy()->pixelMetric(PM_ButtonDefaultIndicator, btn); - if (btn->features & QStyleOptionButton::DefaultButton) - proxy()->drawPrimitive(PE_FrameDefaultButton, opt, p); - if (btn->features & QStyleOptionButton::AutoDefaultButton) - br.setCoords(br.left() + dbi, br.top() + dbi, br.right() - dbi, br.bottom() - dbi); - if (!(btn->features & (QStyleOptionButton::Flat | QStyleOptionButton::CommandLinkButton)) - || btn->state & (State_Sunken | State_On) - || (btn->features & QStyleOptionButton::CommandLinkButton && btn->state & State_MouseOver)) { - QStyleOptionButton tmpBtn = *btn; - tmpBtn.rect = br; - proxy()->drawPrimitive(PE_PanelButtonCommand, &tmpBtn, p); - } - if (btn->features & QStyleOptionButton::HasMenu) { - int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, btn); - QRect ir = btn->rect; - QStyleOptionButton newBtn = *btn; - newBtn.rect = QRect(ir.right() - mbi + 2, ir.height()/2 - mbi/2 + 3, mbi - 6, mbi - 6); - proxy()->drawPrimitive(PE_IndicatorArrowDown, &newBtn, p); - } - if (btn->state & State_HasFocus) { - QStyleOptionFocusRect fropt; - fropt.QStyleOption::operator=(*btn); - fropt.rect = subElementRect(SE_PushButtonFocusRect, btn); - proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, p); - } - } - break; - case CE_PushButtonLabel: - if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - QRect textRect = button->rect; - uint tf = Qt::AlignVCenter | Qt::TextShowMnemonic; - if (!proxy()->styleHint(SH_UnderlineShortcut, button)) - tf |= Qt::TextHideMnemonic; - - if (!button->icon.isNull()) { - //Center both icon and text - QIcon::Mode mode = button->state & State_Enabled ? QIcon::Normal : QIcon::Disabled; - if (mode == QIcon::Normal && button->state & State_HasFocus) - mode = QIcon::Active; - QIcon::State state = QIcon::Off; - if (button->state & State_On) - state = QIcon::On; - - QPixmap pixmap = button->icon.pixmap(button->iconSize, dpr(opt->window), mode, state); - int pixmapWidth = pixmap.width() / pixmap.devicePixelRatio(); - int pixmapHeight = pixmap.height() / pixmap.devicePixelRatio(); - int labelWidth = pixmapWidth; - int labelHeight = pixmapHeight; - int iconSpacing = 4;//### 4 is currently hardcoded in QPushButton::sizeHint() - if (!button->text.isEmpty()) { - int textWidth = button->fontMetrics.boundingRect(opt->rect, tf, button->text).width(); - labelWidth += (textWidth + iconSpacing); - } - - QRect iconRect = QRect(textRect.x() + (textRect.width() - labelWidth) / 2, - textRect.y() + (textRect.height() - labelHeight) / 2, - pixmapWidth, pixmapHeight); - - iconRect = visualRect(button->direction, textRect, iconRect); - - if (button->direction == Qt::RightToLeft) { - tf |= Qt::AlignRight; - textRect.setRight(iconRect.left() - iconSpacing); - } else { - tf |= Qt::AlignLeft; //left align, we adjust the text-rect instead - textRect.setLeft(iconRect.left() + iconRect.width() + iconSpacing); - } - - if (button->state & (State_On | State_Sunken)) - iconRect.translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal, opt), - proxy()->pixelMetric(PM_ButtonShiftVertical, opt)); - p->drawPixmap(iconRect, pixmap); - } else { - tf |= Qt::AlignHCenter; - } - if (button->state & (State_On | State_Sunken)) - textRect.translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal, opt), - proxy()->pixelMetric(PM_ButtonShiftVertical, opt)); - - if (button->features & QStyleOptionButton::HasMenu) { - int indicatorSize = proxy()->pixelMetric(PM_MenuButtonIndicator, button); - if (button->direction == Qt::LeftToRight) - textRect = textRect.adjusted(0, 0, -indicatorSize, 0); - else - textRect = textRect.adjusted(indicatorSize, 0, 0, 0); - } - proxy()->drawItemText(p, textRect, tf, button->palette, (button->state & State_Enabled), - button->text, QPalette::ButtonText); - } - break; - case CE_RadioButton: - case CE_CheckBox: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - bool isRadio = (element == CE_RadioButton); - QStyleOptionButton subopt = *btn; - subopt.rect = subElementRect(isRadio ? SE_RadioButtonIndicator - : SE_CheckBoxIndicator, btn); - proxy()->drawPrimitive(isRadio ? PE_IndicatorRadioButton : PE_IndicatorCheckBox, - &subopt, p); - subopt.rect = subElementRect(isRadio ? SE_RadioButtonContents - : SE_CheckBoxContents, btn); - proxy()->drawControl(isRadio ? CE_RadioButtonLabel : CE_CheckBoxLabel, &subopt, p); - if (btn->state & State_HasFocus) { - QStyleOptionFocusRect fropt; - fropt.QStyleOption::operator=(*btn); - fropt.rect = subElementRect(isRadio ? SE_RadioButtonFocusRect - : SE_CheckBoxFocusRect, btn); - proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, p); - } - } - break; - case CE_RadioButtonLabel: - case CE_CheckBoxLabel: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - uint alignment = visualAlignment(btn->direction, Qt::AlignLeft | Qt::AlignVCenter); - - if (!proxy()->styleHint(SH_UnderlineShortcut, btn)) - alignment |= Qt::TextHideMnemonic; - QPixmap pix; - QRect textRect = btn->rect; - if (!btn->icon.isNull()) { - pix = btn->icon.pixmap(btn->iconSize, dpr(opt->window), btn->state & State_Enabled ? QIcon::Normal : QIcon::Disabled); - proxy()->drawItemPixmap(p, btn->rect, alignment, pix); - if (btn->direction == Qt::RightToLeft) - textRect.setRight(textRect.right() - btn->iconSize.width() - 4); - else - textRect.setLeft(textRect.left() + btn->iconSize.width() + 4); - } - if (!btn->text.isEmpty()){ - proxy()->drawItemText(p, textRect, alignment | Qt::TextShowMnemonic, - btn->palette, btn->state & State_Enabled, btn->text, QPalette::WindowText); - } - } - break; - case CE_MenuScroller: { - QStyleOption arrowOpt = *opt; - arrowOpt.state |= State_Enabled; - proxy()->drawPrimitive(((opt->state & State_DownArrow) ? PE_IndicatorArrowDown : PE_IndicatorArrowUp), &arrowOpt, p); - break; } - case CE_MenuTearoff: - if (opt->state & State_Selected) - p->fillRect(opt->rect, opt->palette.brush(QPalette::Highlight)); - else - p->fillRect(opt->rect, opt->palette.brush(QPalette::Button)); - p->setPen(QPen(opt->palette.dark().color(), 1, Qt::DashLine)); - p->drawLine(opt->rect.x() + 2, opt->rect.y() + opt->rect.height() / 2 - 1, - opt->rect.x() + opt->rect.width() - 4, - opt->rect.y() + opt->rect.height() / 2 - 1); - p->setPen(QPen(opt->palette.light().color(), 1, Qt::DashLine)); - p->drawLine(opt->rect.x() + 2, opt->rect.y() + opt->rect.height() / 2, - opt->rect.x() + opt->rect.width() - 4, opt->rect.y() + opt->rect.height() / 2); - break; - case CE_MenuBarItem: - if (const QStyleOptionMenuItem *mbi = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) { - uint alignment = Qt::AlignCenter | Qt::TextShowMnemonic | Qt::TextDontClip - | Qt::TextSingleLine; - if (!proxy()->styleHint(SH_UnderlineShortcut, mbi)) - alignment |= Qt::TextHideMnemonic; - int iconExtent = proxy()->pixelMetric(PM_SmallIconSize); - QPixmap pix = mbi->icon.pixmap(QSize(iconExtent, iconExtent), dpr(opt->window), - mbi->state.testFlag(State_Enabled) ? QIcon::Normal : QIcon::Disabled); - if (!pix.isNull()) - proxy()->drawItemPixmap(p,mbi->rect, alignment, pix); - else - proxy()->drawItemText(p, mbi->rect, alignment, mbi->palette, mbi->state & State_Enabled, - mbi->text, QPalette::ButtonText); - } - break; - case CE_MenuBarEmptyArea: - break; - case CE_ProgressBar: - if (const QStyleOptionProgressBar *pb - = qstyleoption_cast<const QStyleOptionProgressBar *>(opt)) { - QStyleOptionProgressBar subopt = *pb; - subopt.rect = subElementRect(SE_ProgressBarGroove, pb); - proxy()->drawControl(CE_ProgressBarGroove, &subopt, p); - subopt.rect = subElementRect(SE_ProgressBarContents, pb); - proxy()->drawControl(CE_ProgressBarContents, &subopt, p); - if (pb->textVisible) { - subopt.rect = subElementRect(SE_ProgressBarLabel, pb); - proxy()->drawControl(CE_ProgressBarLabel, &subopt, p); - } - } - break; - case CE_ProgressBarGroove: - if (opt->rect.isValid()) - qDrawShadePanel(p, opt->rect, opt->palette, true, 1, - &opt->palette.brush(QPalette::Window)); - break; - case CE_ProgressBarLabel: - if (const QStyleOptionProgressBar *pb = qstyleoption_cast<const QStyleOptionProgressBar *>(opt)) { - QPalette::ColorRole textRole = QPalette::NoRole; - if ((pb->textAlignment & Qt::AlignCenter) && pb->textVisible - && ((qint64(pb->progress) - qint64(pb->minimum)) * 2 >= (qint64(pb->maximum) - qint64(pb->minimum)))) { - textRole = QPalette::HighlightedText; - //Draw text shadow, This will increase readability when the background of same color - QRect shadowRect(pb->rect); - shadowRect.translate(1,1); - QColor shadowColor = (pb->palette.color(textRole).value() <= 128) - ? QColor(255,255,255,160) : QColor(0,0,0,160); - QPalette shadowPalette = pb->palette; - shadowPalette.setColor(textRole, shadowColor); - proxy()->drawItemText(p, shadowRect, Qt::AlignCenter | Qt::TextSingleLine, shadowPalette, - pb->state & State_Enabled, pb->text, textRole); - } - proxy()->drawItemText(p, pb->rect, Qt::AlignCenter | Qt::TextSingleLine, pb->palette, - pb->state & State_Enabled, pb->text, textRole); - } - break; - case CE_ProgressBarContents: - if (const QStyleOptionProgressBar *pb = qstyleoption_cast<const QStyleOptionProgressBar *>(opt)) { - - QRect rect = pb->rect; - const bool inverted = pb->invertedAppearance; - qint64 minimum = qint64(pb->minimum); - qint64 maximum = qint64(pb->maximum); - qint64 progress = qint64(pb->progress); - - QPalette pal2 = pb->palette; - // Correct the highlight color if it is the same as the background - if (pal2.highlight() == pal2.window()) - pal2.setColor(QPalette::Highlight, pb->palette.color(QPalette::Active, - QPalette::Highlight)); - bool reverse = pb->direction == Qt::RightToLeft; - if (inverted) - reverse = !reverse; - int w = rect.width(); - if (pb->minimum == 0 && pb->maximum == 0) { - // draw busy indicator - int x = (progress - minimum) % (w * 2); - if (x > w) - x = 2 * w - x; - x = reverse ? rect.right() - x : x + rect.x(); - p->setPen(QPen(pal2.highlight().color(), 4)); - p->drawLine(x, rect.y(), x, rect.height()); - } else { - const int unit_width = proxy()->pixelMetric(PM_ProgressBarChunkWidth, pb); - if (!unit_width) - return; - - int u; - if (unit_width > 1) - u = ((rect.width() + unit_width) / unit_width); - else - u = w / unit_width; - qint64 p_v = progress - minimum; - qint64 t_s = (maximum - minimum) ? (maximum - minimum) : qint64(1); - - if (u > 0 && p_v >= INT_MAX / u && t_s >= u) { - // scale down to something usable. - p_v /= u; - t_s /= u; - } - - // nu < tnu, if last chunk is only a partial chunk - int tnu, nu; - tnu = nu = p_v * u / t_s; - - if (nu * unit_width > w) - --nu; - - // Draw nu units out of a possible u of unit_width - // width, each a rectangle bordered by background - // color, all in a sunken panel with a percentage text - // display at the end. - int x = 0; - int x0 = reverse ? rect.right() - ((unit_width > 1) ? unit_width : 0) - : rect.x(); - - QStyleOptionProgressBar pbBits = *pb; - pbBits.rect = rect; - pbBits.palette = pal2; - int myY = pbBits.rect.y(); - int myHeight = pbBits.rect.height(); - pbBits.state = State_Horizontal; - for (int i = 0; i < nu; ++i) { - pbBits.rect.setRect(x0 + x, myY, unit_width, myHeight); - proxy()->drawPrimitive(PE_IndicatorProgressChunk, &pbBits, p); - x += reverse ? -unit_width : unit_width; - } - - // Draw the last partial chunk to fill up the - // progress bar entirely - if (nu < tnu) { - int pixels_left = w - (nu * unit_width); - int offset = reverse ? x0 + x + unit_width-pixels_left : x0 + x; - pbBits.rect.setRect(offset, myY, pixels_left, myHeight); - proxy()->drawPrimitive(PE_IndicatorProgressChunk, &pbBits, p); - } - } - } - break; - case CE_HeaderLabel: - if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) { - QRect rect = header->rect; - if (!header->icon.isNull()) { - int iconExtent = proxy()->pixelMetric(PM_SmallIconSize); - QPixmap pixmap - = header->icon.pixmap(QSize(iconExtent, iconExtent), dpr(opt->window), - header->state.testFlag(State_Enabled) ? QIcon::Normal : QIcon::Disabled); - int pixw = pixmap.width() / pixmap.devicePixelRatio(); - - QRect aligned = alignedRect(header->direction, QFlag(header->iconAlignment), pixmap.size() / pixmap.devicePixelRatio(), rect); - QRect inter = aligned.intersected(rect); - p->drawPixmap(inter.x(), inter.y(), pixmap, - inter.x() - aligned.x(), inter.y() - aligned.y(), - aligned.width() * pixmap.devicePixelRatio(), - pixmap.height() * pixmap.devicePixelRatio()); - - const int margin = proxy()->pixelMetric(QStyle::PM_HeaderMargin, opt); - if (header->direction == Qt::LeftToRight) - rect.setLeft(rect.left() + pixw + margin); - else - rect.setRight(rect.right() - pixw - margin); - } - if (header->state & QStyle::State_On) { - QFont fnt = p->font(); - fnt.setBold(true); - p->setFont(fnt); - } - proxy()->drawItemText(p, rect, header->textAlignment, header->palette, - (header->state & State_Enabled), header->text, QPalette::ButtonText); - } - break; - case CE_ToolButtonLabel: - if (const QStyleOptionToolButton *toolbutton - = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) { - QRect rect = toolbutton->rect; - int shiftX = 0; - int shiftY = 0; - if (toolbutton->state & (State_Sunken | State_On)) { - shiftX = proxy()->pixelMetric(PM_ButtonShiftHorizontal, toolbutton); - shiftY = proxy()->pixelMetric(PM_ButtonShiftVertical, toolbutton); - } - // Arrow type always overrules and is always shown - bool hasArrow = toolbutton->features & QStyleOptionToolButton::Arrow; - if (((!hasArrow && toolbutton->icon.isNull()) && !toolbutton->text.isEmpty()) - || toolbutton->toolButtonStyle == Qt::ToolButtonTextOnly) { - int alignment = Qt::AlignCenter | Qt::TextShowMnemonic; - if (!proxy()->styleHint(SH_UnderlineShortcut, opt)) - alignment |= Qt::TextHideMnemonic; - rect.translate(shiftX, shiftY); - p->setFont(toolbutton->font); - proxy()->drawItemText(p, rect, alignment, toolbutton->palette, - opt->state & State_Enabled, toolbutton->text, - QPalette::ButtonText); - } else { - QPixmap pm; - QSize pmSize = toolbutton->iconSize; - if (!toolbutton->icon.isNull()) { - QIcon::State state = toolbutton->state & State_On ? QIcon::On : QIcon::Off; - QIcon::Mode mode; - if (!(toolbutton->state & State_Enabled)) - mode = QIcon::Disabled; - else if ((opt->state & State_MouseOver) && (opt->state & State_AutoRaise)) - mode = QIcon::Active; - else - mode = QIcon::Normal; - pm = toolbutton->icon.pixmap(toolbutton->rect.size().boundedTo(toolbutton->iconSize), - dpr(opt->window), mode, state); - pmSize = pm.size() / pm.devicePixelRatio(); - } - - if (toolbutton->toolButtonStyle != Qt::ToolButtonIconOnly) { - p->setFont(toolbutton->font); - QRect pr = rect, - tr = rect; - int alignment = Qt::TextShowMnemonic; - if (!proxy()->styleHint(SH_UnderlineShortcut, opt)) - alignment |= Qt::TextHideMnemonic; - - if (toolbutton->toolButtonStyle == Qt::ToolButtonTextUnderIcon) { - pr.setHeight(pmSize.height() + 4); //### 4 is currently hardcoded in QToolButton::sizeHint() - tr.adjust(0, pr.height() - 1, 0, -1); - pr.translate(shiftX, shiftY); - if (!hasArrow) { - proxy()->drawItemPixmap(p, pr, Qt::AlignCenter, pm); - } else { - drawArrow(proxy(), toolbutton, pr, p); - } - alignment |= Qt::AlignCenter; - } else { - pr.setWidth(pmSize.width() + 4); //### 4 is currently hardcoded in QToolButton::sizeHint() - tr.adjust(pr.width(), 0, 0, 0); - pr.translate(shiftX, shiftY); - if (!hasArrow) { - proxy()->drawItemPixmap(p, QStyle::visualRect(opt->direction, rect, pr), Qt::AlignCenter, pm); - } else { - drawArrow(proxy(), toolbutton, pr, p); - } - alignment |= Qt::AlignLeft | Qt::AlignVCenter; - } - tr.translate(shiftX, shiftY); - const QString text = d->toolButtonElideText(toolbutton, tr, alignment); - proxy()->drawItemText(p, QStyle::visualRect(opt->direction, rect, tr), alignment, toolbutton->palette, - toolbutton->state & State_Enabled, text, - QPalette::ButtonText); - } else { - rect.translate(shiftX, shiftY); - if (hasArrow) { - drawArrow(proxy(), toolbutton, rect, p); - } else { - proxy()->drawItemPixmap(p, rect, Qt::AlignCenter, pm); - } - } - } - } - break; - case CE_ToolBoxTab: - if (const QStyleOptionToolBox *tb = qstyleoption_cast<const QStyleOptionToolBox *>(opt)) { - proxy()->drawControl(CE_ToolBoxTabShape, tb, p); - proxy()->drawControl(CE_ToolBoxTabLabel, tb, p); - } - break; - case CE_ToolBoxTabShape: - if (const QStyleOptionToolBox *tb = qstyleoption_cast<const QStyleOptionToolBox *>(opt)) { - p->setPen(tb->palette.mid().color().darker(150)); - int d = 20 + tb->rect.height() - 3; - if (tb->direction != Qt::RightToLeft) { - const QPoint points[] = { - QPoint(-1, tb->rect.height() + 1), - QPoint(-1, 1), - QPoint(tb->rect.width() - d, 1), - QPoint(tb->rect.width() - 20, tb->rect.height() - 2), - QPoint(tb->rect.width() - 1, tb->rect.height() - 2), - QPoint(tb->rect.width() - 1, tb->rect.height() + 1), - QPoint(-1, tb->rect.height() + 1), - }; - p->drawPolygon(points, sizeof points / sizeof *points); - } else { - const QPoint points[] = { - QPoint(tb->rect.width(), tb->rect.height() + 1), - QPoint(tb->rect.width(), 1), - QPoint(d - 1, 1), - QPoint(20 - 1, tb->rect.height() - 2), - QPoint(0, tb->rect.height() - 2), - QPoint(0, tb->rect.height() + 1), - QPoint(tb->rect.width(), tb->rect.height() + 1), - }; - p->drawPolygon(points, sizeof points / sizeof *points); - } - p->setPen(tb->palette.light().color()); - if (tb->direction != Qt::RightToLeft) { - p->drawLine(0, 2, tb->rect.width() - d, 2); - p->drawLine(tb->rect.width() - d - 1, 2, tb->rect.width() - 21, tb->rect.height() - 1); - p->drawLine(tb->rect.width() - 20, tb->rect.height() - 1, - tb->rect.width(), tb->rect.height() - 1); - } else { - p->drawLine(tb->rect.width() - 1, 2, d - 1, 2); - p->drawLine(d, 2, 20, tb->rect.height() - 1); - p->drawLine(19, tb->rect.height() - 1, - -1, tb->rect.height() - 1); - } - p->setBrush(Qt::NoBrush); - } - break; - case CE_TabBarTab: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { - proxy()->drawControl(CE_TabBarTabShape, tab, p); - proxy()->drawControl(CE_TabBarTabLabel, tab, p); - } - break; - case CE_TabBarTabShape: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { - p->save(); - - QRect rect(tab->rect); - bool selected = tab->state & State_Selected; - bool onlyOne = tab->position == QStyleOptionTab::OnlyOneTab; - int tabOverlap = onlyOne ? 0 : proxy()->pixelMetric(PM_TabBarTabOverlap, opt); - - if (!selected) { - switch (tab->shape) { - case QStyleOptionTab::TriangularNorth: - rect.adjust(0, 0, 0, -tabOverlap); - if(!selected) - rect.adjust(1, 1, -1, 0); - break; - case QStyleOptionTab::TriangularSouth: - rect.adjust(0, tabOverlap, 0, 0); - if(!selected) - rect.adjust(1, 0, -1, -1); - break; - case QStyleOptionTab::TriangularEast: - rect.adjust(tabOverlap, 0, 0, 0); - if(!selected) - rect.adjust(0, 1, -1, -1); - break; - case QStyleOptionTab::TriangularWest: - rect.adjust(0, 0, -tabOverlap, 0); - if(!selected) - rect.adjust(1, 1, 0, -1); - break; - default: - break; - } - } - - p->setPen(QPen(tab->palette.windowText(), 0)); - if (selected) { - p->setBrush(tab->palette.base()); - } else { - p->setBrush(tab->palette.window()); - } - - int y; - int x; - QPolygon a(10); - switch (tab->shape) { - case QStyleOptionTab::TriangularNorth: - case QStyleOptionTab::TriangularSouth: { - a.setPoint(0, 0, -1); - a.setPoint(1, 0, 0); - y = rect.height() - 2; - x = y / 3; - a.setPoint(2, x++, y - 1); - ++x; - a.setPoint(3, x++, y++); - a.setPoint(4, x, y); - - int i; - int right = rect.width() - 1; - for (i = 0; i < 5; ++i) - a.setPoint(9 - i, right - a.point(i).x(), a.point(i).y()); - if (tab->shape == QStyleOptionTab::TriangularNorth) - for (i = 0; i < 10; ++i) - a.setPoint(i, a.point(i).x(), rect.height() - 1 - a.point(i).y()); - - a.translate(rect.left(), rect.top()); - p->setRenderHint(QPainter::Antialiasing); - p->translate(0, 0.5); - - QPainterPath path; - path.addPolygon(a); - p->drawPath(path); - break; } - case QStyleOptionTab::TriangularEast: - case QStyleOptionTab::TriangularWest: { - a.setPoint(0, -1, 0); - a.setPoint(1, 0, 0); - x = rect.width() - 2; - y = x / 3; - a.setPoint(2, x - 1, y++); - ++y; - a.setPoint(3, x++, y++); - a.setPoint(4, x, y); - int i; - int bottom = rect.height() - 1; - for (i = 0; i < 5; ++i) - a.setPoint(9 - i, a.point(i).x(), bottom - a.point(i).y()); - if (tab->shape == QStyleOptionTab::TriangularWest) - for (i = 0; i < 10; ++i) - a.setPoint(i, rect.width() - 1 - a.point(i).x(), a.point(i).y()); - a.translate(rect.left(), rect.top()); - p->setRenderHint(QPainter::Antialiasing); - p->translate(0.5, 0); - QPainterPath path; - path.addPolygon(a); - p->drawPath(path); - break; } - default: - break; - } - p->restore(); - } - break; - case CE_ToolBoxTabLabel: - if (const QStyleOptionToolBox *tb = qstyleoption_cast<const QStyleOptionToolBox *>(opt)) { - bool enabled = tb->state & State_Enabled; - bool selected = tb->state & State_Selected; - int iconExtent = proxy()->pixelMetric(QStyle::PM_SmallIconSize, tb); - QPixmap pm = tb->icon.pixmap(QSize(iconExtent, iconExtent), dpr(opt->window), - enabled ? QIcon::Normal : QIcon::Disabled); - - QRect cr = subElementRect(QStyle::SE_ToolBoxTabContents, tb); - QRect tr, ir; - int ih = 0; - if (pm.isNull()) { - tr = cr; - tr.adjust(4, 0, -8, 0); - } else { - int iw = pm.width() / pm.devicePixelRatio() + 4; - ih = pm.height()/ pm.devicePixelRatio(); - ir = QRect(cr.left() + 4, cr.top(), iw + 2, ih); - tr = QRect(ir.right(), cr.top(), cr.width() - ir.right() - 4, cr.height()); - } - - if (selected && proxy()->styleHint(QStyle::SH_ToolBox_SelectedPageTitleBold, tb)) { - QFont f(p->font()); - f.setBold(true); - p->setFont(f); - } - - QString txt = tb->fontMetrics.elidedText(tb->text, Qt::ElideRight, tr.width()); - - if (ih) - p->drawPixmap(ir.left(), (tb->rect.height() - ih) / 2, pm); - - int alignment = Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic; - if (!proxy()->styleHint(QStyle::SH_UnderlineShortcut, tb)) - alignment |= Qt::TextHideMnemonic; - proxy()->drawItemText(p, tr, alignment, tb->palette, enabled, txt, QPalette::ButtonText); - - if (!txt.isEmpty() && opt->state & State_HasFocus) { - QStyleOptionFocusRect opt; - opt.rect = tr; - opt.palette = tb->palette; - opt.state = QStyle::State_None; - proxy()->drawPrimitive(QStyle::PE_FrameFocusRect, &opt, p); - } - } - break; - case CE_TabBarTabLabel: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { - QRect tr = tab->rect; - bool verticalTabs = tab->shape == QStyleOptionTab::RoundedEast - || tab->shape == QStyleOptionTab::RoundedWest - || tab->shape == QStyleOptionTab::TriangularEast - || tab->shape == QStyleOptionTab::TriangularWest; - - int alignment = Qt::AlignCenter | Qt::TextShowMnemonic; - if (!proxy()->styleHint(SH_UnderlineShortcut, opt)) - alignment |= Qt::TextHideMnemonic; - - if (verticalTabs) { - p->save(); - int newX, newY, newRot; - if (tab->shape == QStyleOptionTab::RoundedEast || tab->shape == QStyleOptionTab::TriangularEast) { - newX = tr.width() + tr.x(); - newY = tr.y(); - newRot = 90; - } else { - newX = tr.x(); - newY = tr.y() + tr.height(); - newRot = -90; - } - QTransform m = QTransform::fromTranslate(newX, newY); - m.rotate(newRot); - p->setTransform(m, true); - } - QRect iconRect; - d->tabLayout(tab, &tr, &iconRect); - tr = proxy()->subElementRect(SE_TabBarTabText, opt); //we compute tr twice because the style may override subElementRect - - if (!tab->icon.isNull()) { - QPixmap tabIcon = tab->icon.pixmap(tab->iconSize, dpr(opt->window), - (tab->state & State_Enabled) ? QIcon::Normal - : QIcon::Disabled, - (tab->state & State_Selected) ? QIcon::On - : QIcon::Off); - p->drawPixmap(iconRect.x(), iconRect.y(), tabIcon); - } - - proxy()->drawItemText(p, tr, alignment, tab->palette, tab->state & State_Enabled, tab->text, QPalette::WindowText); - if (verticalTabs) - p->restore(); - - if (tab->state & State_HasFocus) { - const int OFFSET = 1 + pixelMetric(PM_DefaultFrameWidth); - - int x1, x2; - x1 = tab->rect.left(); - x2 = tab->rect.right() - 1; - - QStyleOptionFocusRect fropt; - fropt.QStyleOption::operator=(*tab); - fropt.rect.setRect(x1 + 1 + OFFSET, tab->rect.y() + OFFSET, - x2 - x1 - 2*OFFSET, tab->rect.height() - 2*OFFSET); - drawPrimitive(PE_FrameFocusRect, &fropt, p); - } - } - break; - case CE_SizeGrip: { - p->save(); - int x, y, w, h; - opt->rect.getRect(&x, &y, &w, &h); - - int sw = qMin(h, w); - if (h > w) - p->translate(0, h - w); - else - p->translate(w - h, 0); - - int sx = x; - int sy = y; - int s = sw / 3; - - Qt::Corner corner; - if (const QStyleOptionSizeGrip *sgOpt = qstyleoption_cast<const QStyleOptionSizeGrip *>(opt)) - corner = sgOpt->corner; - else if (opt->direction == Qt::RightToLeft) - corner = Qt::BottomLeftCorner; - else - corner = Qt::BottomRightCorner; - - if (corner == Qt::BottomLeftCorner) { - sx = x + sw; - for (int i = 0; i < 4; ++i) { - p->setPen(QPen(opt->palette.light().color(), 1)); - p->drawLine(x, sy - 1 , sx + 1, sw); - p->setPen(QPen(opt->palette.dark().color(), 1)); - p->drawLine(x, sy, sx, sw); - p->setPen(QPen(opt->palette.dark().color(), 1)); - p->drawLine(x, sy + 1, sx - 1, sw); - sx -= s; - sy += s; - } - } else if (corner == Qt::BottomRightCorner) { - for (int i = 0; i < 4; ++i) { - p->setPen(QPen(opt->palette.light().color(), 1)); - p->drawLine(sx - 1, sw, sw, sy - 1); - p->setPen(QPen(opt->palette.dark().color(), 1)); - p->drawLine(sx, sw, sw, sy); - p->setPen(QPen(opt->palette.dark().color(), 1)); - p->drawLine(sx + 1, sw, sw, sy + 1); - sx += s; - sy += s; - } - } else if (corner == Qt::TopRightCorner) { - sy = y + sw; - for (int i = 0; i < 4; ++i) { - p->setPen(QPen(opt->palette.light().color(), 1)); - p->drawLine(sx - 1, y, sw, sy + 1); - p->setPen(QPen(opt->palette.dark().color(), 1)); - p->drawLine(sx, y, sw, sy); - p->setPen(QPen(opt->palette.dark().color(), 1)); - p->drawLine(sx + 1, y, sw, sy - 1); - sx += s; - sy -= s; - } - } else if (corner == Qt::TopLeftCorner) { - for (int i = 0; i < 4; ++i) { - p->setPen(QPen(opt->palette.light().color(), 1)); - p->drawLine(x, sy - 1, sx - 1, y); - p->setPen(QPen(opt->palette.dark().color(), 1)); - p->drawLine(x, sy, sx, y); - p->setPen(QPen(opt->palette.dark().color(), 1)); - p->drawLine(x, sy + 1, sx + 1, y); - sx += s; - sy += s; - } - } - p->restore(); - break; } - case CE_RubberBand: { - if (const QStyleOptionRubberBand *rbOpt = qstyleoption_cast<const QStyleOptionRubberBand *>(opt)) { - QPixmap tiledPixmap(16, 16); - QPainter pixmapPainter(&tiledPixmap); - pixmapPainter.setPen(Qt::NoPen); - pixmapPainter.setBrush(Qt::Dense4Pattern); - pixmapPainter.setBackground(QBrush(opt->palette.base())); - pixmapPainter.setBackgroundMode(Qt::OpaqueMode); - pixmapPainter.drawRect(0, 0, tiledPixmap.width(), tiledPixmap.height()); - pixmapPainter.end(); - // ### workaround for borked XRENDER - tiledPixmap = QPixmap::fromImage(tiledPixmap.toImage()); - - p->save(); - QRect r = opt->rect; - QStyleHintReturnMask mask; - if (proxy()->styleHint(QStyle::SH_RubberBand_Mask, opt, &mask)) - p->setClipRegion(mask.region); - p->drawTiledPixmap(r.x(), r.y(), r.width(), r.height(), tiledPixmap); - p->setPen(opt->palette.color(QPalette::Active, QPalette::WindowText)); - p->setBrush(Qt::NoBrush); - p->drawRect(r.adjusted(0, 0, -1, -1)); - if (rbOpt->shape == QStyleOptionRubberBand::Rectangle) - p->drawRect(r.adjusted(3, 3, -4, -4)); - p->restore(); - } - break; } - case CE_DockWidgetTitle: - if (const QStyleOptionDockWidget *dwOpt = qstyleoption_cast<const QStyleOptionDockWidget *>(opt)) { - QRect r = dwOpt->rect.adjusted(0, 0, -1, -1); - if (dwOpt->movable) { - p->setPen(dwOpt->palette.color(QPalette::Dark)); - p->drawRect(r); - } - - if (!dwOpt->title.isEmpty()) { - const bool verticalTitleBar = dwOpt->verticalTitleBar; - - if (verticalTitleBar) { - r = r.transposed(); - - p->save(); - p->translate(r.left(), r.top() + r.width()); - p->rotate(-90); - p->translate(-r.left(), -r.top()); - } - - const int indent = p->fontMetrics().descent(); - proxy()->drawItemText(p, r.adjusted(indent + 1, 1, -indent - 1, -1), - Qt::AlignLeft | Qt::AlignVCenter, dwOpt->palette, - dwOpt->state & State_Enabled, dwOpt->title, - QPalette::WindowText); - - if (verticalTitleBar) - p->restore(); - } - } - break; - case CE_Header: - if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) { - QRegion clipRegion = p->clipRegion(); - p->setClipRect(opt->rect); - proxy()->drawControl(CE_HeaderSection, header, p); - QStyleOptionHeader subopt = *header; - subopt.rect = subElementRect(SE_HeaderLabel, header); - if (subopt.rect.isValid()) - proxy()->drawControl(CE_HeaderLabel, &subopt, p); - if (header->sortIndicator != QStyleOptionHeader::None) { - subopt.rect = subElementRect(SE_HeaderArrow, opt); - proxy()->drawPrimitive(PE_IndicatorHeaderArrow, &subopt, p); - } - p->setClipRegion(clipRegion); - } - break; - case CE_FocusFrame: - p->fillRect(opt->rect, opt->palette.windowText()); - break; - case CE_HeaderSection: - qDrawShadePanel(p, opt->rect, opt->palette, - opt->state & State_Sunken, 1, - &opt->palette.brush(QPalette::Button)); - break; - case CE_HeaderEmptyArea: - p->fillRect(opt->rect, opt->palette.window()); - break; - case CE_ComboBoxLabel: - if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - QRect editRect = proxy()->subControlRect(CC_ComboBox, cb, SC_ComboBoxEditField); - p->save(); - p->setClipRect(editRect); - if (!cb->currentIcon.isNull()) { - QIcon::Mode mode = cb->state & State_Enabled ? QIcon::Normal - : QIcon::Disabled; - QPixmap pixmap = cb->currentIcon.pixmap(cb->iconSize, dpr(opt->window), mode); - QRect iconRect(editRect); - iconRect.setWidth(cb->iconSize.width() + 4); - iconRect = alignedRect(cb->direction, - Qt::AlignLeft | Qt::AlignVCenter, - iconRect.size(), editRect); - if (cb->editable) - p->fillRect(iconRect, opt->palette.brush(QPalette::Base)); - proxy()->drawItemPixmap(p, iconRect, Qt::AlignCenter, pixmap); - - if (cb->direction == Qt::RightToLeft) - editRect.translate(-4 - cb->iconSize.width(), 0); - else - editRect.translate(cb->iconSize.width() + 4, 0); - } - if (!cb->currentText.isEmpty() && !cb->editable) { - proxy()->drawItemText(p, editRect.adjusted(1, 0, -1, 0), - visualAlignment(cb->direction, Qt::AlignLeft | Qt::AlignVCenter), - cb->palette, cb->state & State_Enabled, cb->currentText); - } - p->restore(); - } - break; - case CE_ToolBar: - if (const QStyleOptionToolBar *toolBar = qstyleoption_cast<const QStyleOptionToolBar *>(opt)) { - // Compatibility with styles that use PE_PanelToolBar - QStyleOptionFrame frame; - frame.QStyleOption::operator=(*toolBar); - frame.lineWidth = toolBar->lineWidth; - frame.midLineWidth = toolBar->midLineWidth; - proxy()->drawPrimitive(PE_PanelToolBar, opt, p); - - qDrawShadePanel(p, toolBar->rect, toolBar->palette, false, toolBar->lineWidth, - &toolBar->palette.brush(QPalette::Button)); - } - break; - case CE_ColumnViewGrip: { - // draw background gradients - QLinearGradient g(0, 0, opt->rect.width(), 0); - g.setColorAt(0, opt->palette.color(QPalette::Active, QPalette::Mid)); - g.setColorAt(0.5, Qt::white); - p->fillRect(QRect(0, 0, opt->rect.width(), opt->rect.height()), g); - - // draw the two lines - QPen pen(p->pen()); - pen.setWidth(opt->rect.width()/20); - pen.setColor(opt->palette.color(QPalette::Active, QPalette::Dark)); - p->setPen(pen); - - int line1starting = opt->rect.width()*8 / 20; - int line2starting = opt->rect.width()*13 / 20; - int top = opt->rect.height()*20/75; - int bottom = opt->rect.height() - 1 - top; - p->drawLine(line1starting, top, line1starting, bottom); - p->drawLine(line2starting, top, line2starting, bottom); - } - break; - case CE_ItemViewItem: - if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) { - p->save(); - p->setClipRect(opt->rect); - - QRect checkRect = proxy()->subElementRect(SE_ItemViewItemCheckIndicator, vopt); - QRect iconRect = proxy()->subElementRect(SE_ItemViewItemDecoration, vopt); - QRect textRect = proxy()->subElementRect(SE_ItemViewItemText, vopt); - - // draw the background - proxy()->drawPrimitive(PE_PanelItemViewItem, opt, p); - - // draw the check mark - if (vopt->features & QStyleOptionViewItem::HasCheckIndicator) { - QStyleOptionViewItem option(*vopt); - option.rect = checkRect; - option.state = option.state & ~QStyle::State_HasFocus; - - switch (vopt->checkState) { - case Qt::Unchecked: - option.state |= QStyle::State_Off; - break; - case Qt::PartiallyChecked: - option.state |= QStyle::State_NoChange; - break; - case Qt::Checked: - option.state |= QStyle::State_On; - break; - } - proxy()->drawPrimitive(QStyle::PE_IndicatorItemViewItemCheck, &option, p); - } - - // draw the icon - QIcon::Mode mode = QIcon::Normal; - if (!(vopt->state & QStyle::State_Enabled)) - mode = QIcon::Disabled; - else if (vopt->state & QStyle::State_Selected) - mode = QIcon::Selected; - QIcon::State state = vopt->state & QStyle::State_Open ? QIcon::On : QIcon::Off; - vopt->icon.paint(p, iconRect, vopt->decorationAlignment, mode, state); - - // draw the text - if (!vopt->text.isEmpty()) { - QPalette::ColorGroup cg = vopt->state & QStyle::State_Enabled - ? QPalette::Normal : QPalette::Disabled; - if (cg == QPalette::Normal && !(vopt->state & QStyle::State_Active)) - cg = QPalette::Inactive; - - if (vopt->state & QStyle::State_Selected) { - p->setPen(vopt->palette.color(cg, QPalette::HighlightedText)); - } else { - p->setPen(vopt->palette.color(cg, QPalette::Text)); - } - if (vopt->state & QStyle::State_Editing) { - p->setPen(vopt->palette.color(cg, QPalette::Text)); - p->drawRect(textRect.adjusted(0, 0, -1, -1)); - } - - d->viewItemDrawText(p, vopt, textRect); - } - - // draw the focus rect - if (vopt->state & QStyle::State_HasFocus) { - QStyleOptionFocusRect o; - o.QStyleOption::operator=(*vopt); - o.rect = proxy()->subElementRect(SE_ItemViewItemFocusRect, vopt); - o.state |= QStyle::State_KeyboardFocusChange; - o.state |= QStyle::State_Item; - QPalette::ColorGroup cg = (vopt->state & QStyle::State_Enabled) - ? QPalette::Normal : QPalette::Disabled; - o.backgroundColor = vopt->palette.color(cg, (vopt->state & QStyle::State_Selected) - ? QPalette::Highlight : QPalette::Window); - proxy()->drawPrimitive(QStyle::PE_FrameFocusRect, &o, p); - } - - p->restore(); - } - break; - case CE_ShapedFrame: - if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - int frameShape = f->frameShape; - int frameShadow = QStyleOptionFrame::Plain; - if (f->state & QStyle::State_Sunken) { - frameShadow = QStyleOptionFrame::Sunken; - } else if (f->state & QStyle::State_Raised) { - frameShadow = QStyleOptionFrame::Raised; - } - - int lw = f->lineWidth; - int mlw = f->midLineWidth; - QPalette::ColorRole foregroundRole = QPalette::WindowText; - - switch (frameShape) { - case QStyleOptionFrame::Box: - if (frameShadow == QStyleOptionFrame::Plain) { - qDrawPlainRect(p, f->rect, f->palette.color(foregroundRole), lw); - } else { - qDrawShadeRect(p, f->rect, f->palette, frameShadow == QStyleOptionFrame::Sunken, lw, mlw); - } - break; - case QStyleOptionFrame::StyledPanel: - proxy()->drawPrimitive(QStyle::PE_Frame, opt, p); - break; - case QStyleOptionFrame::Panel: - if (frameShadow == QStyleOptionFrame::Plain) { - qDrawPlainRect(p, f->rect, f->palette.color(foregroundRole), lw); - } else { - qDrawShadePanel(p, f->rect, f->palette, frameShadow == QStyleOptionFrame::Sunken, lw); - } - break; - case QStyleOptionFrame::WinPanel: - if (frameShadow == QStyleOptionFrame::Plain) { - qDrawPlainRect(p, f->rect, f->palette.color(foregroundRole), lw); - } else { - qDrawWinPanel(p, f->rect, f->palette, frameShadow == QStyleOptionFrame::Sunken); - } - break; - case QStyleOptionFrame::HLine: - case QStyleOptionFrame::VLine: { - QPoint p1, p2; - if (frameShape == QStyleOptionFrame::HLine) { - p1 = QPoint(opt->rect.x(), opt->rect.y() + opt->rect.height() / 2); - p2 = QPoint(opt->rect.x() + opt->rect.width(), p1.y()); - } else { - p1 = QPoint(opt->rect.x() + opt->rect.width() / 2, opt->rect.y()); - p2 = QPoint(p1.x(), p1.y() + opt->rect.height()); - } - if (frameShadow == QStyleOptionFrame::Plain) { - QPen oldPen = p->pen(); - p->setPen(QPen(opt->palette.brush(foregroundRole), lw)); - p->drawLine(p1, p2); - p->setPen(oldPen); - } else { - qDrawShadeLine(p, p1, p2, f->palette, frameShadow == QStyleOptionFrame::Sunken, lw, mlw); - } - break; - } - } - } - break; - default: - break; - } -} - -QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt) const -{ - Q_D(const QCommonStyle); - QRect r; - switch (sr) { - case SE_PushButtonContents: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - int dx1, dx2; - dx1 = proxy()->pixelMetric(PM_DefaultFrameWidth, btn); - if (btn->features & QStyleOptionButton::AutoDefaultButton) - dx1 += proxy()->pixelMetric(PM_ButtonDefaultIndicator, btn); - dx2 = dx1 * 2; - r.setRect(opt->rect.x() + dx1, opt->rect.y() + dx1, opt->rect.width() - dx2, - opt->rect.height() - dx2); - r = visualRect(opt->direction, opt->rect, r); - } - break; - case SE_PushButtonFocusRect: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - int dbw1 = 0, dbw2 = 0; - if (btn->features & QStyleOptionButton::AutoDefaultButton){ - dbw1 = proxy()->pixelMetric(PM_ButtonDefaultIndicator, btn); - dbw2 = dbw1 * 2; - } - - int dfw1 = proxy()->pixelMetric(PM_DefaultFrameWidth, btn) + 1, - dfw2 = dfw1 * 2; - - r.setRect(btn->rect.x() + dfw1 + dbw1, btn->rect.y() + dfw1 + dbw1, - btn->rect.width() - dfw2 - dbw2, btn->rect.height()- dfw2 - dbw2); - r = visualRect(opt->direction, opt->rect, r); - } - break; - case SE_CheckBoxIndicator: - { - int h = proxy()->pixelMetric(PM_IndicatorHeight, opt); - r.setRect(opt->rect.x(), opt->rect.y() + ((opt->rect.height() - h) / 2), - proxy()->pixelMetric(PM_IndicatorWidth, opt), h); - r = visualRect(opt->direction, opt->rect, r); - } - break; - - case SE_CheckBoxContents: - { - // Deal with the logical first, then convert it back to screen coords. - QRect ir = visualRect(opt->direction, opt->rect, - subElementRect(SE_CheckBoxIndicator, opt)); - int spacing = proxy()->pixelMetric(PM_CheckBoxLabelSpacing, opt); - r.setRect(ir.right() + spacing, opt->rect.y(), opt->rect.width() - ir.width() - spacing, - opt->rect.height()); - r = visualRect(opt->direction, opt->rect, r); - } - break; - - case SE_CheckBoxFocusRect: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - if (btn->icon.isNull() && btn->text.isEmpty()) { - r = subElementRect(SE_CheckBoxIndicator, opt); - r.adjust(1, 1, -1, -1); - break; - } - // As above, deal with the logical first, then convert it back to screen coords. - QRect cr = visualRect(btn->direction, btn->rect, subElementRect(SE_CheckBoxContents, btn)); - - QRect iconRect, textRect; - if (!btn->text.isEmpty()) { - textRect = itemTextRect(opt->fontMetrics, cr, Qt::AlignAbsolute | Qt::AlignLeft - | Qt::AlignVCenter | Qt::TextShowMnemonic, - btn->state & State_Enabled, btn->text); - } - if (!btn->icon.isNull()) { - iconRect = itemPixmapRect(cr, Qt::AlignAbsolute | Qt::AlignLeft | Qt::AlignVCenter - | Qt::TextShowMnemonic, - btn->icon.pixmap(btn->iconSize, dpr(opt->window), QIcon::Normal)); - if (!textRect.isEmpty()) - textRect.translate(iconRect.right() + 4, 0); - } - r = iconRect | textRect; - r.adjust(-3, -2, 3, 2); - r = r.intersected(btn->rect); - r = visualRect(btn->direction, btn->rect, r); - } - break; - - case SE_RadioButtonIndicator: - { - int h = proxy()->pixelMetric(PM_ExclusiveIndicatorHeight, opt); - r.setRect(opt->rect.x(), opt->rect.y() + ((opt->rect.height() - h) / 2), - proxy()->pixelMetric(PM_ExclusiveIndicatorWidth, opt), h); - r = visualRect(opt->direction, opt->rect, r); - } - break; - - case SE_RadioButtonContents: - { - QRect ir = visualRect(opt->direction, opt->rect, - subElementRect(SE_RadioButtonIndicator, opt)); - int spacing = proxy()->pixelMetric(PM_RadioButtonLabelSpacing, opt); - r.setRect(ir.left() + ir.width() + spacing, opt->rect.y(), opt->rect.width() - ir.width() - spacing, - opt->rect.height()); - r = visualRect(opt->direction, opt->rect, r); - break; - } - - case SE_RadioButtonFocusRect: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - if (btn->icon.isNull() && btn->text.isEmpty()) { - r = subElementRect(SE_RadioButtonIndicator, opt); - r.adjust(1, 1, -1, -1); - break; - } - QRect cr = visualRect(btn->direction, btn->rect, subElementRect(SE_RadioButtonContents, opt)); - - QRect iconRect, textRect; - if (!btn->text.isEmpty()){ - textRect = itemTextRect(opt->fontMetrics, cr, Qt::AlignAbsolute | Qt::AlignLeft | Qt::AlignVCenter - | Qt::TextShowMnemonic, btn->state & State_Enabled, btn->text); - } - if (!btn->icon.isNull()) { - iconRect = itemPixmapRect(cr, Qt::AlignAbsolute | Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic, - btn->icon.pixmap(btn->iconSize, dpr(opt->window), QIcon::Normal)); - if (!textRect.isEmpty()) - textRect.translate(iconRect.right() + 4, 0); - } - r = iconRect | textRect; - r.adjust(-3, -2, 3, 2); - r = r.intersected(btn->rect); - r = visualRect(btn->direction, btn->rect, r); - } - break; - case SE_SliderFocusRect: - if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - int tickOffset = proxy()->pixelMetric(PM_SliderTickmarkOffset, slider); - int thickness = proxy()->pixelMetric(PM_SliderControlThickness, slider); - if (slider->orientation == Qt::Horizontal) - r.setRect(0, tickOffset - 1, slider->rect.width(), thickness + 2); - else - r.setRect(tickOffset - 1, 0, thickness + 2, slider->rect.height()); - r = r.intersected(slider->rect); - r = visualRect(opt->direction, opt->rect, r); - } - break; - case SE_ProgressBarGroove: - case SE_ProgressBarContents: - case SE_ProgressBarLabel: - if (const QStyleOptionProgressBar *pb = qstyleoption_cast<const QStyleOptionProgressBar *>(opt)) { - int textw = 0; - if (pb->textVisible) - textw = qMax(pb->fontMetrics.horizontalAdvance(pb->text), pb->fontMetrics.horizontalAdvance(QLatin1String("100%"))) + 6; - - if ((pb->textAlignment & Qt::AlignCenter) == 0) { - if (sr != SE_ProgressBarLabel) - r.setCoords(pb->rect.left(), pb->rect.top(), - pb->rect.right() - textw, pb->rect.bottom()); - else - r.setCoords(pb->rect.right() - textw, pb->rect.top(), - pb->rect.right(), pb->rect.bottom()); - } else { - r = pb->rect; - } - r = visualRect(pb->direction, pb->rect, r); - } - break; - case SE_ComboBoxFocusRect: - if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - int margin = cb->frame ? 3 : 0; - r.setRect(opt->rect.left() + margin, opt->rect.top() + margin, - opt->rect.width() - 2*margin - 16, opt->rect.height() - 2*margin); - r = visualRect(opt->direction, opt->rect, r); - } - break; - case SE_ToolBoxTabContents: - r = opt->rect; - r.adjust(0, 0, -30, 0); - break; - case SE_HeaderLabel: { - int margin = proxy()->pixelMetric(QStyle::PM_HeaderMargin, opt); - r.setRect(opt->rect.x() + margin, opt->rect.y() + margin, - opt->rect.width() - margin * 2, opt->rect.height() - margin * 2); - - if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) { - // Subtract width needed for arrow, if there is one - if (header->sortIndicator != QStyleOptionHeader::None) { - if (opt->state & State_Horizontal) - r.setWidth(r.width() - (opt->rect.height() / 2) - (margin * 2)); - else - r.setHeight(r.height() - (opt->rect.width() / 2) - (margin * 2)); - } - } - r = visualRect(opt->direction, opt->rect, r); - break; } - case SE_HeaderArrow: { - int h = opt->rect.height(); - int w = opt->rect.width(); - int x = opt->rect.x(); - int y = opt->rect.y(); - int margin = proxy()->pixelMetric(QStyle::PM_HeaderMargin, opt); - - if (opt->state & State_Horizontal) { - int horiz_size = h / 2; - r.setRect(x + w - margin * 2 - horiz_size, y + 5, - horiz_size, h - margin * 2 - 5); - } else { - int vert_size = w / 2; - r.setRect(x + 5, y + h - margin * 2 - vert_size, - w - margin * 2 - 5, vert_size); - } - r = visualRect(opt->direction, opt->rect, r); - break; } - - case SE_RadioButtonClickRect: - r = subElementRect(SE_RadioButtonFocusRect, opt); - r |= subElementRect(SE_RadioButtonIndicator, opt); - break; - case SE_CheckBoxClickRect: - r = subElementRect(SE_CheckBoxFocusRect, opt); - r |= subElementRect(SE_CheckBoxIndicator, opt); - break; - case SE_TabWidgetTabBar: - if (const QStyleOptionTabWidgetFrame *twf - = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) { - r.setSize(twf->tabBarSize); - const uint alingMask = Qt::AlignLeft | Qt::AlignRight | Qt::AlignHCenter; - switch (twf->shape) { - case QStyleOptionTab::RoundedNorth: - case QStyleOptionTab::TriangularNorth: - // Constrain the size now, otherwise, center could get off the page - // This of course repeated for all the other directions - r.setWidth(qMin(r.width(), twf->rect.width() - - twf->leftCornerWidgetSize.width() - - twf->rightCornerWidgetSize.width())); - switch (proxy()->styleHint(SH_TabBar_Alignment, twf) & alingMask) { - default: - case Qt::AlignLeft: - r.moveTopLeft(QPoint(twf->leftCornerWidgetSize.width(), 0)); - break; - case Qt::AlignHCenter: - r.moveTopLeft(QPoint(twf->rect.center().x() - qRound(r.width() / 2.0f) - + (twf->leftCornerWidgetSize.width() / 2) - - (twf->rightCornerWidgetSize.width() / 2), 0)); - break; - case Qt::AlignRight: - r.moveTopLeft(QPoint(twf->rect.width() - twf->tabBarSize.width() - - twf->rightCornerWidgetSize.width(), 0)); - break; - } - r = visualRect(twf->direction, twf->rect, r); - break; - case QStyleOptionTab::RoundedSouth: - case QStyleOptionTab::TriangularSouth: - r.setWidth(qMin(r.width(), twf->rect.width() - - twf->leftCornerWidgetSize.width() - - twf->rightCornerWidgetSize.width())); - switch (proxy()->styleHint(SH_TabBar_Alignment, twf) & alingMask) { - default: - case Qt::AlignLeft: - r.moveTopLeft(QPoint(twf->leftCornerWidgetSize.width(), - twf->rect.height() - twf->tabBarSize.height())); - break; - case Qt::AlignHCenter: - r.moveTopLeft(QPoint(twf->rect.center().x() - qRound(r.width() / 2.0f) - + (twf->leftCornerWidgetSize.width() / 2) - - (twf->rightCornerWidgetSize.width() / 2), - twf->rect.height() - twf->tabBarSize.height())); - break; - case Qt::AlignRight: - r.moveTopLeft(QPoint(twf->rect.width() - twf->tabBarSize.width() - - twf->rightCornerWidgetSize.width(), - twf->rect.height() - twf->tabBarSize.height())); - break; - } - r = visualRect(twf->direction, twf->rect, r); - break; - case QStyleOptionTab::RoundedEast: - case QStyleOptionTab::TriangularEast: - r.setHeight(qMin(r.height(), twf->rect.height() - - twf->leftCornerWidgetSize.height() - - twf->rightCornerWidgetSize.height())); - switch (proxy()->styleHint(SH_TabBar_Alignment, twf) & alingMask) { - default: - case Qt::AlignLeft: - r.moveTopLeft(QPoint(twf->rect.width() - twf->tabBarSize.width(), - twf->leftCornerWidgetSize.height())); - break; - case Qt::AlignHCenter: - r.moveTopLeft(QPoint(twf->rect.width() - twf->tabBarSize.width(), - twf->rect.center().y() - r.height() / 2)); - break; - case Qt::AlignRight: - r.moveTopLeft(QPoint(twf->rect.width() - twf->tabBarSize.width(), - twf->rect.height() - twf->tabBarSize.height() - - twf->rightCornerWidgetSize.height())); - break; - } - break; - case QStyleOptionTab::RoundedWest: - case QStyleOptionTab::TriangularWest: - r.setHeight(qMin(r.height(), twf->rect.height() - - twf->leftCornerWidgetSize.height() - - twf->rightCornerWidgetSize.height())); - switch (proxy()->styleHint(SH_TabBar_Alignment, twf) & alingMask) { - default: - case Qt::AlignLeft: - r.moveTopLeft(QPoint(0, twf->leftCornerWidgetSize.height())); - break; - case Qt::AlignHCenter: - r.moveTopLeft(QPoint(0, twf->rect.center().y() - r.height() / 2)); - break; - case Qt::AlignRight: - r.moveTopLeft(QPoint(0, twf->rect.height() - twf->tabBarSize.height() - - twf->rightCornerWidgetSize.height())); - break; - } - break; - } - } - break; - case SE_TabWidgetTabPane: - case SE_TabWidgetTabContents: - if (const QStyleOptionTabWidgetFrame *twf = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) { - QStyleOptionTab tabopt; - tabopt.shape = twf->shape; - int overlap = proxy()->pixelMetric(PM_TabBarBaseOverlap, &tabopt); - if (twf->lineWidth == 0) - overlap = 0; - switch (twf->shape) { - case QStyleOptionTab::RoundedNorth: - case QStyleOptionTab::TriangularNorth: - r = QRect(QPoint(0,qMax(twf->tabBarSize.height() - overlap, 0)), - QSize(twf->rect.width(), qMin(twf->rect.height() - twf->tabBarSize.height() + overlap, twf->rect.height()))); - break; - case QStyleOptionTab::RoundedSouth: - case QStyleOptionTab::TriangularSouth: - r = QRect(QPoint(0,0), QSize(twf->rect.width(), qMin(twf->rect.height() - twf->tabBarSize.height() + overlap, twf->rect.height()))); - break; - case QStyleOptionTab::RoundedEast: - case QStyleOptionTab::TriangularEast: - r = QRect(QPoint(0, 0), QSize(qMin(twf->rect.width() - twf->tabBarSize.width() + overlap, twf->rect.width()), twf->rect.height())); - break; - case QStyleOptionTab::RoundedWest: - case QStyleOptionTab::TriangularWest: - r = QRect(QPoint(qMax(twf->tabBarSize.width() - overlap, 0), 0), - QSize(qMin(twf->rect.width() - twf->tabBarSize.width() + overlap, twf->rect.width()), twf->rect.height())); - break; - } - if (sr == SE_TabWidgetTabContents && twf->lineWidth > 0) - r.adjust(2, 2, -2, -2); - } - break; - case SE_TabWidgetLeftCorner: - if (const QStyleOptionTabWidgetFrame *twf = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) { - QRect paneRect = subElementRect(SE_TabWidgetTabPane, twf); - switch (twf->shape) { - case QStyleOptionTab::RoundedNorth: - case QStyleOptionTab::TriangularNorth: - r = QRect(QPoint(paneRect.x(), paneRect.y() - twf->leftCornerWidgetSize.height()), - twf->leftCornerWidgetSize); - break; - case QStyleOptionTab::RoundedSouth: - case QStyleOptionTab::TriangularSouth: - r = QRect(QPoint(paneRect.x(), paneRect.height()), twf->leftCornerWidgetSize); - break; - default: - break; - } - r = visualRect(twf->direction, twf->rect, r); - } - break; - case SE_TabWidgetRightCorner: - if (const QStyleOptionTabWidgetFrame *twf = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) { - QRect paneRect = subElementRect(SE_TabWidgetTabPane, twf); - switch (twf->shape) { - case QStyleOptionTab::RoundedNorth: - case QStyleOptionTab::TriangularNorth: - r = QRect(QPoint(paneRect.width() - twf->rightCornerWidgetSize.width(), - paneRect.y() - twf->rightCornerWidgetSize.height()), - twf->rightCornerWidgetSize); - break; - case QStyleOptionTab::RoundedSouth: - case QStyleOptionTab::TriangularSouth: - r = QRect(QPoint(paneRect.width() - twf->rightCornerWidgetSize.width(), - paneRect.height()), twf->rightCornerWidgetSize); - break; - default: - break; - } - r = visualRect(twf->direction, twf->rect, r); - } - break; - case SE_TabBarTabText: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { - QRect dummyIconRect; - d->tabLayout(tab, &r, &dummyIconRect); - } - break; - case SE_TabBarTabLeftButton: - case SE_TabBarTabRightButton: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { - bool selected = tab->state & State_Selected; - int verticalShift = proxy()->pixelMetric(QStyle::PM_TabBarTabShiftVertical, tab); - int horizontalShift = proxy()->pixelMetric(QStyle::PM_TabBarTabShiftHorizontal, tab); - int hpadding = proxy()->pixelMetric(QStyle::PM_TabBarTabHSpace, opt) / 2; - hpadding = qMax(hpadding, 4); //workaround KStyle returning 0 because they workaround an old bug in Qt - - bool verticalTabs = tab->shape == QStyleOptionTab::RoundedEast - || tab->shape == QStyleOptionTab::RoundedWest - || tab->shape == QStyleOptionTab::TriangularEast - || tab->shape == QStyleOptionTab::TriangularWest; - - QRect tr = tab->rect; - if (tab->shape == QStyleOptionTab::RoundedSouth || tab->shape == QStyleOptionTab::TriangularSouth) - verticalShift = -verticalShift; - if (verticalTabs) { - qSwap(horizontalShift, verticalShift); - horizontalShift *= -1; - verticalShift *= -1; - } - if (tab->shape == QStyleOptionTab::RoundedWest || tab->shape == QStyleOptionTab::TriangularWest) - horizontalShift = -horizontalShift; - - tr.adjust(0, 0, horizontalShift, verticalShift); - if (selected) - { - tr.setBottom(tr.bottom() - verticalShift); - tr.setRight(tr.right() - horizontalShift); - } - - QSize size = (sr == SE_TabBarTabLeftButton) ? tab->leftButtonSize : tab->rightButtonSize; - int w = size.width(); - int h = size.height(); - int midHeight = static_cast<int>(qCeil(float(tr.height() - h) / 2)); - int midWidth = ((tr.width() - w) / 2); - - bool atTheTop = true; - switch (tab->shape) { - case QStyleOptionTab::RoundedWest: - case QStyleOptionTab::TriangularWest: - atTheTop = (sr == SE_TabBarTabLeftButton); - break; - case QStyleOptionTab::RoundedEast: - case QStyleOptionTab::TriangularEast: - atTheTop = (sr == SE_TabBarTabRightButton); - break; - default: - if (sr == SE_TabBarTabLeftButton) - r = QRect(tab->rect.x() + hpadding, midHeight, w, h); - else - r = QRect(tab->rect.right() - w - hpadding, midHeight, w, h); - r = visualRect(tab->direction, tab->rect, r); - } - if (verticalTabs) { - if (atTheTop) - r = QRect(midWidth, tr.y() + tab->rect.height() - hpadding - h, w, h); - else - r = QRect(midWidth, tr.y() + hpadding, w, h); - } - } - - break; - case SE_TabBarTearIndicator: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { - switch (tab->shape) { - case QStyleOptionTab::RoundedNorth: - case QStyleOptionTab::TriangularNorth: - case QStyleOptionTab::RoundedSouth: - case QStyleOptionTab::TriangularSouth: - r.setRect(tab->rect.left(), tab->rect.top(), 8, opt->rect.height()); - break; - case QStyleOptionTab::RoundedWest: - case QStyleOptionTab::TriangularWest: - case QStyleOptionTab::RoundedEast: - case QStyleOptionTab::TriangularEast: - r.setRect(tab->rect.left(), tab->rect.top(), opt->rect.width(), 8); - break; - default: - break; - } - r = visualRect(opt->direction, opt->rect, r); - } - break; - case SE_TabBarScrollLeftButton: { - const bool vertical = opt->rect.width() < opt->rect.height(); - const Qt::LayoutDirection ld = opt->direction; - const int buttonWidth = proxy()->pixelMetric(QStyle::PM_TabBarScrollButtonWidth, nullptr); - const int buttonOverlap = proxy()->pixelMetric(QStyle::PM_TabBar_ScrollButtonOverlap, nullptr); - - r = vertical ? QRect(0, opt->rect.height() - (buttonWidth * 2) + buttonOverlap, opt->rect.width(), buttonWidth) - : QStyle::visualRect(ld, opt->rect, QRect(opt->rect.width() - (buttonWidth * 2) + buttonOverlap, 0, buttonWidth, opt->rect.height())); - break; } - case SE_TabBarScrollRightButton: { - const bool vertical = opt->rect.width() < opt->rect.height(); - const Qt::LayoutDirection ld = opt->direction; - const int buttonWidth = proxy()->pixelMetric(QStyle::PM_TabBarScrollButtonWidth, nullptr); - - r = vertical ? QRect(0, opt->rect.height() - buttonWidth, opt->rect.width(), buttonWidth) - : QStyle::visualRect(ld, opt->rect, QRect(opt->rect.width() - buttonWidth, 0, buttonWidth, opt->rect.height())); - break; } - case SE_TreeViewDisclosureItem: - r = opt->rect; - break; - case SE_LineEditContents: - if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - r = f->rect.adjusted(f->lineWidth, f->lineWidth, -f->lineWidth, -f->lineWidth); - r = visualRect(opt->direction, opt->rect, r); - } - break; - case SE_FrameContents: - if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, f); - r = opt->rect.adjusted(fw, fw, -fw, -fw); - r = visualRect(opt->direction, opt->rect, r); - } - break; - case SE_ShapedFrameContents: - if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - int frameShape = f->frameShape; - int frameShadow = QStyleOptionFrame::Plain; - if (f->state & QStyle::State_Sunken) { - frameShadow = QStyleOptionFrame::Sunken; - } else if (f->state & QStyle::State_Raised) { - frameShadow = QStyleOptionFrame::Raised; - } - - int frameWidth = 0; - - switch (frameShape) { - case QStyleOptionFrame::NoFrame: - frameWidth = 0; - break; - - case QStyleOptionFrame::Box: - case QStyleOptionFrame::HLine: - case QStyleOptionFrame::VLine: - switch (frameShadow) { - case QStyleOptionFrame::Plain: - frameWidth = f->lineWidth; - break; - case QStyleOptionFrame::Raised: - case QStyleOptionFrame::Sunken: - frameWidth = (short)(f->lineWidth*2 + f->midLineWidth); - break; - } - break; - - case QStyleOptionFrame::StyledPanel: - //keep the compatibility with Qt 4.4 if there is a proxy style. - //be sure to call drawPrimitive(QStyle::SE_FrameContents) on the proxy style - return subElementRect(QStyle::SE_FrameContents, opt); - - case QStyleOptionFrame::WinPanel: - frameWidth = 2; - break; - - case QStyleOptionFrame::Panel: - switch (frameShadow) { - case QStyleOptionFrame::Plain: - case QStyleOptionFrame::Raised: - case QStyleOptionFrame::Sunken: - frameWidth = f->lineWidth; - break; - } - break; - } - r = f->rect.adjusted(frameWidth, frameWidth, -frameWidth, -frameWidth); - } - break; - case SE_DockWidgetCloseButton: - case SE_DockWidgetFloatButton: - case SE_DockWidgetTitleBarText: - case SE_DockWidgetIcon: { - int iconSize = proxy()->pixelMetric(PM_SmallIconSize, opt); - int buttonMargin = proxy()->pixelMetric(PM_DockWidgetTitleBarButtonMargin, opt); - QRect rect = opt->rect; - - const QStyleOptionDockWidget *dwOpt - = qstyleoption_cast<const QStyleOptionDockWidget*>(opt); - bool canClose = dwOpt == nullptr ? true : dwOpt->closable; - bool canFloat = dwOpt == nullptr ? false : dwOpt->floatable; - - const bool verticalTitleBar = dwOpt && dwOpt->verticalTitleBar; - - // If this is a vertical titlebar, we transpose and work as if it was - // horizontal, then transpose again. - - if (verticalTitleBar) - rect = rect.transposed(); - - do { - int right = rect.right(); - int left = rect.left(); - - QRect closeRect; - if (canClose) { - QSize sz = proxy()->standardIcon(QStyle::SP_TitleBarCloseButton, - opt).actualSize(QSize(iconSize, iconSize)); - sz += QSize(buttonMargin, buttonMargin); - if (verticalTitleBar) - sz = sz.transposed(); - closeRect = QRect(right - sz.width(), - rect.center().y() - sz.height()/2, - sz.width(), sz.height()); - right = closeRect.left() - 1; - } - if (sr == SE_DockWidgetCloseButton) { - r = closeRect; - break; - } - - QRect floatRect; - if (canFloat) { - QSize sz = proxy()->standardIcon(QStyle::SP_TitleBarNormalButton, - opt).actualSize(QSize(iconSize, iconSize)); - sz += QSize(buttonMargin, buttonMargin); - if (verticalTitleBar) - sz = sz.transposed(); - floatRect = QRect(right - sz.width(), - rect.center().y() - sz.height()/2, - sz.width(), sz.height()); - right = floatRect.left() - 1; - } - if (sr == SE_DockWidgetFloatButton) { - r = floatRect; - break; - } - - QRect iconRect; - if (sr == SE_DockWidgetIcon) { - r = iconRect; - break; - } - - QRect textRect = QRect(left, rect.top(), - right - left, rect.height()); - if (sr == SE_DockWidgetTitleBarText) { - r = textRect; - break; - } - - } while (false); - - if (verticalTitleBar) { - r = QRect(rect.left() + r.top() - rect.top(), - rect.top() + rect.right() - r.right(), - r.height(), r.width()); - } else { - r = visualRect(opt->direction, rect, r); - } - break; - } - case SE_ItemViewItemCheckIndicator: - if (!qstyleoption_cast<const QStyleOptionViewItem *>(opt)) { - r = subElementRect(SE_CheckBoxIndicator, opt); - break; - } - Q_FALLTHROUGH(); - case SE_ItemViewItemDecoration: - case SE_ItemViewItemText: - case SE_ItemViewItemFocusRect: - if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) { - if (!d->isViewItemCached(*vopt)) { - d->viewItemLayout(vopt, &d->checkRect, &d->decorationRect, &d->displayRect, false); - if (d->cachedOption) { - delete d->cachedOption; - d->cachedOption = nullptr; - } - d->cachedOption = new QStyleOptionViewItem(*vopt); - } - if (sr == SE_ItemViewItemCheckIndicator) - r = d->checkRect; - else if (sr == SE_ItemViewItemDecoration) - r = d->decorationRect; - else if (sr == SE_ItemViewItemText || sr == SE_ItemViewItemFocusRect) - r = d->displayRect; - } - break; - case SE_ToolBarHandle: - if (const QStyleOptionToolBar *tbopt = qstyleoption_cast<const QStyleOptionToolBar *>(opt)) { - if (tbopt->features & QStyleOptionToolBar::Movable) { - ///we need to access the widget here because the style option doesn't - //have all the information we need (ie. the layout's margin) - const QMargins margins(2, 2, 2, 2); - const int handleExtent = proxy()->pixelMetric(QStyle::PM_ToolBarHandleExtent, opt); - if (tbopt->state & QStyle::State_Horizontal) { - r = QRect(margins.left(), margins.top(), - handleExtent, - tbopt->rect.height() - (margins.top() + margins.bottom())); - r = QStyle::visualRect(tbopt->direction, tbopt->rect, r); - } else { - r = QRect(margins.left(), margins.top(), - tbopt->rect.width() - (margins.left() + margins.right()), - handleExtent); - } - } - } - break; - default: - break; - } - return r; -} - -// in lieu of std::array, minimal API -template <int N> -struct StaticPolygonF -{ - QPointF data[N]; - - Q_DECL_CONSTEXPR int size() const { return N; } - Q_DECL_CONSTEXPR const QPointF *cbegin() const { return data; } - Q_DECL_CONSTEXPR const QPointF &operator[](int idx) const { return data[idx]; } -}; - -static StaticPolygonF<3> calcArrow(const QStyleOptionSlider *dial, qreal &a) -{ - int width = dial->rect.width(); - int height = dial->rect.height(); - int r = qMin(width, height) / 2; - int currentSliderPosition = dial->upsideDown ? dial->sliderPosition : (dial->maximum - dial->sliderPosition); - - if (dial->maximum == dial->minimum) - a = Q_PI / 2; - else if (dial->dialWrapping) - a = Q_PI * 3 / 2 - (currentSliderPosition - dial->minimum) * 2 * Q_PI - / (dial->maximum - dial->minimum); - else - a = (Q_PI * 8 - (currentSliderPosition - dial->minimum) * 10 * Q_PI - / (dial->maximum - dial->minimum)) / 6; - - int xc = width / 2; - int yc = height / 2; - - int len = r - QStyleHelper::calcBigLineSize(r) - 5; - if (len < 5) - len = 5; - int back = len / 2; - - StaticPolygonF<3> arrow = {{ - QPointF(0.5 + xc + len * qCos(a), - 0.5 + yc - len * qSin(a)), - QPointF(0.5 + xc + back * qCos(a + Q_PI * 5 / 6), - 0.5 + yc - back * qSin(a + Q_PI * 5 / 6)), - QPointF(0.5 + xc + back * qCos(a - Q_PI * 5 / 6), - 0.5 + yc - back * qSin(a - Q_PI * 5 / 6)), - }}; - return arrow; -} - -void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p) const -{ - switch (cc) { - case CC_Slider: - if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - if (slider->subControls == SC_SliderTickmarks) { - int tickOffset = proxy()->pixelMetric(PM_SliderTickmarkOffset, slider); - int ticks = slider->tickPosition; - int thickness = proxy()->pixelMetric(PM_SliderControlThickness, slider); - int len = proxy()->pixelMetric(PM_SliderLength, slider); - int available = proxy()->pixelMetric(PM_SliderSpaceAvailable, slider); - int interval = slider->tickInterval; - if (interval <= 0) { - interval = slider->singleStep; - if (QStyle::sliderPositionFromValue(slider->minimum, slider->maximum, interval, - available) - - QStyle::sliderPositionFromValue(slider->minimum, slider->maximum, - 0, available) < 3) - interval = slider->pageStep; - } - if (!interval) - interval = 1; - int fudge = len / 2; - int pos; - // Since there is no subrect for tickmarks do a translation here. - p->save(); - p->translate(slider->rect.x(), slider->rect.y()); - p->setPen(slider->palette.windowText().color()); - int v = slider->minimum; - while (v <= slider->maximum + 1) { - if (v == slider->maximum + 1 && interval == 1) - break; - const int v_ = qMin(v, slider->maximum); - pos = QStyle::sliderPositionFromValue(slider->minimum, slider->maximum, - v_, available) + fudge; - if (slider->orientation == Qt::Horizontal) { - if (ticks & QStyleOptionSlider::TicksAbove) - p->drawLine(pos, 0, pos, tickOffset - 2); - if (ticks & QStyleOptionSlider::TicksBelow) - p->drawLine(pos, tickOffset + thickness + 1, pos, - slider->rect.height()-1); - } else { - if (ticks & QStyleOptionSlider::TicksAbove) - p->drawLine(0, pos, tickOffset - 2, pos); - if (ticks & QStyleOptionSlider::TicksBelow) - p->drawLine(tickOffset + thickness + 1, pos, - slider->rect.width()-1, pos); - } - // in the case where maximum is max int - int nextInterval = v + interval; - if (nextInterval < v) - break; - v = nextInterval; - } - p->restore(); - } - } - break; - case CC_ScrollBar: - if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - // Make a copy here and reset it for each primitive. - QStyleOptionSlider newScrollbar = *scrollbar; - State saveFlags = scrollbar->state; - - if (scrollbar->subControls & SC_ScrollBarSubLine) { - newScrollbar.state = saveFlags; - newScrollbar.rect = proxy()->subControlRect(cc, &newScrollbar, SC_ScrollBarSubLine); - if (newScrollbar.rect.isValid()) { - if (!(scrollbar->activeSubControls & SC_ScrollBarSubLine)) - newScrollbar.state &= ~(State_Sunken | State_MouseOver); - proxy()->drawControl(CE_ScrollBarSubLine, &newScrollbar, p); - } - } - if (scrollbar->subControls & SC_ScrollBarAddLine) { - newScrollbar.rect = scrollbar->rect; - newScrollbar.state = saveFlags; - newScrollbar.rect = proxy()->subControlRect(cc, &newScrollbar, SC_ScrollBarAddLine); - if (newScrollbar.rect.isValid()) { - if (!(scrollbar->activeSubControls & SC_ScrollBarAddLine)) - newScrollbar.state &= ~(State_Sunken | State_MouseOver); - proxy()->drawControl(CE_ScrollBarAddLine, &newScrollbar, p); - } - } - if (scrollbar->subControls & SC_ScrollBarSubPage) { - newScrollbar.rect = scrollbar->rect; - newScrollbar.state = saveFlags; - newScrollbar.rect = proxy()->subControlRect(cc, &newScrollbar, SC_ScrollBarSubPage); - if (newScrollbar.rect.isValid()) { - if (!(scrollbar->activeSubControls & SC_ScrollBarSubPage)) - newScrollbar.state &= ~(State_Sunken | State_MouseOver); - proxy()->drawControl(CE_ScrollBarSubPage, &newScrollbar, p); - } - } - if (scrollbar->subControls & SC_ScrollBarAddPage) { - newScrollbar.rect = scrollbar->rect; - newScrollbar.state = saveFlags; - newScrollbar.rect = proxy()->subControlRect(cc, &newScrollbar, SC_ScrollBarAddPage); - if (newScrollbar.rect.isValid()) { - if (!(scrollbar->activeSubControls & SC_ScrollBarAddPage)) - newScrollbar.state &= ~(State_Sunken | State_MouseOver); - proxy()->drawControl(CE_ScrollBarAddPage, &newScrollbar, p); - } - } - if (scrollbar->subControls & SC_ScrollBarFirst) { - newScrollbar.rect = scrollbar->rect; - newScrollbar.state = saveFlags; - newScrollbar.rect = proxy()->subControlRect(cc, &newScrollbar, SC_ScrollBarFirst); - if (newScrollbar.rect.isValid()) { - if (!(scrollbar->activeSubControls & SC_ScrollBarFirst)) - newScrollbar.state &= ~(State_Sunken | State_MouseOver); - proxy()->drawControl(CE_ScrollBarFirst, &newScrollbar, p); - } - } - if (scrollbar->subControls & SC_ScrollBarLast) { - newScrollbar.rect = scrollbar->rect; - newScrollbar.state = saveFlags; - newScrollbar.rect = proxy()->subControlRect(cc, &newScrollbar, SC_ScrollBarLast); - if (newScrollbar.rect.isValid()) { - if (!(scrollbar->activeSubControls & SC_ScrollBarLast)) - newScrollbar.state &= ~(State_Sunken | State_MouseOver); - proxy()->drawControl(CE_ScrollBarLast, &newScrollbar, p); - } - } - if (scrollbar->subControls & SC_ScrollBarSlider) { - newScrollbar.rect = scrollbar->rect; - newScrollbar.state = saveFlags; - newScrollbar.rect = proxy()->subControlRect(cc, &newScrollbar, SC_ScrollBarSlider); - if (newScrollbar.rect.isValid()) { - if (!(scrollbar->activeSubControls & SC_ScrollBarSlider)) - newScrollbar.state &= ~(State_Sunken | State_MouseOver); - proxy()->drawControl(CE_ScrollBarSlider, &newScrollbar, p); - - if (scrollbar->state & State_HasFocus) { - QStyleOptionFocusRect fropt; - fropt.QStyleOption::operator=(newScrollbar); - fropt.rect.setRect(newScrollbar.rect.x() + 2, newScrollbar.rect.y() + 2, - newScrollbar.rect.width() - 5, - newScrollbar.rect.height() - 5); - proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, p); - } - } - } - } - break; - case CC_SpinBox: - if (const QStyleOptionSpinBox *sb = qstyleoption_cast<const QStyleOptionSpinBox *>(opt)) { - QStyleOptionSpinBox copy = *sb; - PrimitiveElement pe; - - if (sb->frame && (sb->subControls & SC_SpinBoxFrame)) { - QRect r = proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxFrame); - qDrawWinPanel(p, r, sb->palette, true); - } - - if (sb->subControls & SC_SpinBoxUp) { - copy.subControls = SC_SpinBoxUp; - QPalette pal2 = sb->palette; - if (!(sb->stepEnabled & QStyleOptionSpinBox::StepUpEnabled)) { - pal2.setCurrentColorGroup(QPalette::Disabled); - copy.state &= ~State_Enabled; - } - - copy.palette = pal2; - - if (sb->activeSubControls == SC_SpinBoxUp && (sb->state & State_Sunken)) { - copy.state |= State_On; - copy.state |= State_Sunken; - } else { - copy.state |= State_Raised; - copy.state &= ~State_Sunken; - } - pe = (sb->buttonSymbols == QStyleOptionSpinBox::PlusMinus ? PE_IndicatorSpinPlus - : PE_IndicatorSpinUp); - - copy.rect = proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxUp); - proxy()->drawPrimitive(PE_PanelButtonBevel, ©, p); - copy.rect.adjust(3, 0, -4, 0); - proxy()->drawPrimitive(pe, ©, p); - } - - if (sb->subControls & SC_SpinBoxDown) { - copy.subControls = SC_SpinBoxDown; - copy.state = sb->state; - QPalette pal2 = sb->palette; - if (!(sb->stepEnabled & QStyleOptionSpinBox::StepDownEnabled)) { - pal2.setCurrentColorGroup(QPalette::Disabled); - copy.state &= ~State_Enabled; - } - copy.palette = pal2; - - if (sb->activeSubControls == SC_SpinBoxDown && (sb->state & State_Sunken)) { - copy.state |= State_On; - copy.state |= State_Sunken; - } else { - copy.state |= State_Raised; - copy.state &= ~State_Sunken; - } - pe = (sb->buttonSymbols == QStyleOptionSpinBox::PlusMinus ? PE_IndicatorSpinMinus - : PE_IndicatorSpinDown); - - copy.rect = proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxDown); - proxy()->drawPrimitive(PE_PanelButtonBevel, ©, p); - copy.rect.adjust(3, 0, -4, 0); - proxy()->drawPrimitive(pe, ©, p); - } - } - break; - case CC_ToolButton: - if (const QStyleOptionToolButton *toolbutton - = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) { - QRect button, menuarea; - button = proxy()->subControlRect(cc, toolbutton, SC_ToolButton); - menuarea = proxy()->subControlRect(cc, toolbutton, SC_ToolButtonMenu); - - State bflags = toolbutton->state & ~State_Sunken; - - if (bflags & State_AutoRaise) { - if (!(bflags & State_MouseOver) || !(bflags & State_Enabled)) { - bflags &= ~State_Raised; - } - } - State mflags = bflags; - if (toolbutton->state & State_Sunken) { - if (toolbutton->activeSubControls & SC_ToolButton) - bflags |= State_Sunken; - mflags |= State_Sunken; - } - - QStyleOption tool = *toolbutton; - if (toolbutton->subControls & SC_ToolButton) { - if (bflags & (State_Sunken | State_On | State_Raised)) { - tool.rect = button; - tool.state = bflags; - proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p); - } - } - - if (toolbutton->state & State_HasFocus) { - QStyleOptionFocusRect fr; - fr.QStyleOption::operator=(*toolbutton); - fr.rect.adjust(3, 3, -3, -3); - if (toolbutton->features & QStyleOptionToolButton::MenuButtonPopup) - fr.rect.adjust(0, 0, -proxy()->pixelMetric(QStyle::PM_MenuButtonIndicator, - toolbutton), 0); - proxy()->drawPrimitive(PE_FrameFocusRect, &fr, p); - } - QStyleOptionToolButton label = *toolbutton; - label.state = bflags; - int fw = proxy()->pixelMetric(PM_DefaultFrameWidth, opt); - label.rect = button.adjusted(fw, fw, -fw, -fw); - proxy()->drawControl(CE_ToolButtonLabel, &label, p); - - if (toolbutton->subControls & SC_ToolButtonMenu) { - tool.rect = menuarea; - tool.state = mflags; - if (mflags & (State_Sunken | State_On | State_Raised)) - proxy()->drawPrimitive(PE_IndicatorButtonDropDown, &tool, p); - proxy()->drawPrimitive(PE_IndicatorArrowDown, &tool, p); - } else if (toolbutton->features & QStyleOptionToolButton::HasMenu) { - int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, toolbutton); - QRect ir = toolbutton->rect; - QStyleOptionToolButton newBtn = *toolbutton; - newBtn.rect = QRect(ir.right() + 5 - mbi, ir.y() + ir.height() - mbi + 4, mbi - 6, mbi - 6); - newBtn.rect = visualRect(toolbutton->direction, button, newBtn.rect); - proxy()->drawPrimitive(PE_IndicatorArrowDown, &newBtn, p); - } - } - break; - case CC_TitleBar: - if (const QStyleOptionTitleBar *tb = qstyleoption_cast<const QStyleOptionTitleBar *>(opt)) { - QRect ir; - if (opt->subControls & SC_TitleBarLabel) { - QColor left = tb->palette.highlight().color(); - QColor right = tb->palette.base().color(); - - QBrush fillBrush(left); - if (left != right) { - QPoint p1(tb->rect.x(), tb->rect.top() + tb->rect.height()/2); - QPoint p2(tb->rect.right(), tb->rect.top() + tb->rect.height()/2); - QLinearGradient lg(p1, p2); - lg.setColorAt(0, left); - lg.setColorAt(1, right); - fillBrush = lg; - } - - p->fillRect(opt->rect, fillBrush); - - ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarLabel); - - p->setPen(tb->palette.highlightedText().color()); - p->drawText(ir.x() + 2, ir.y(), ir.width() - 2, ir.height(), - Qt::AlignLeft | Qt::AlignVCenter | Qt::TextSingleLine, tb->text); - } - - bool down = false; - QPixmap pm; - - QStyleOption tool = *tb; - if (tb->subControls & SC_TitleBarCloseButton && tb->titleBarFlags & Qt::WindowSystemMenuHint) { - ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarCloseButton); - down = tb->activeSubControls & SC_TitleBarCloseButton && (opt->state & State_Sunken); - if ((tb->titleBarFlags & Qt::WindowType_Mask) == Qt::Tool) - pm = proxy()->standardIcon(SP_DockWidgetCloseButton, &tool).pixmap(QSize(10, 10), dpr(opt->window)); - else - pm = proxy()->standardIcon(SP_TitleBarCloseButton, &tool).pixmap(QSize(10, 10), dpr(opt->window)); - tool.rect = ir; - tool.state = down ? State_Sunken : State_Raised; - proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p); - - p->save(); - if (down) - p->translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal, tb), - proxy()->pixelMetric(PM_ButtonShiftVertical, tb)); - proxy()->drawItemPixmap(p, ir, Qt::AlignCenter, pm); - p->restore(); - } - - if (tb->subControls & SC_TitleBarMaxButton - && tb->titleBarFlags & Qt::WindowMaximizeButtonHint - && !(tb->titleBarState & Qt::WindowMaximized)) { - ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarMaxButton); - - down = tb->activeSubControls & SC_TitleBarMaxButton && (opt->state & State_Sunken); - pm = proxy()->standardIcon(SP_TitleBarMaxButton, &tool).pixmap(QSize(10, 10), dpr(opt->window)); - tool.rect = ir; - tool.state = down ? State_Sunken : State_Raised; - proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p); - - p->save(); - if (down) - p->translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal, tb), - proxy()->pixelMetric(PM_ButtonShiftVertical, tb)); - proxy()->drawItemPixmap(p, ir, Qt::AlignCenter, pm); - p->restore(); - } - - if (tb->subControls & SC_TitleBarMinButton - && tb->titleBarFlags & Qt::WindowMinimizeButtonHint - && !(tb->titleBarState & Qt::WindowMinimized)) { - ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarMinButton); - down = tb->activeSubControls & SC_TitleBarMinButton && (opt->state & State_Sunken); - pm = proxy()->standardIcon(SP_TitleBarMinButton, &tool).pixmap(QSize(10, 10), dpr(opt->window)); - tool.rect = ir; - tool.state = down ? State_Sunken : State_Raised; - proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p); - - p->save(); - if (down) - p->translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal, tb), - proxy()->pixelMetric(PM_ButtonShiftVertical, tb)); - proxy()->drawItemPixmap(p, ir, Qt::AlignCenter, pm); - p->restore(); - } - - bool drawNormalButton = (tb->subControls & SC_TitleBarNormalButton) - && (((tb->titleBarFlags & Qt::WindowMinimizeButtonHint) - && (tb->titleBarState & Qt::WindowMinimized)) - || ((tb->titleBarFlags & Qt::WindowMaximizeButtonHint) - && (tb->titleBarState & Qt::WindowMaximized))); - - if (drawNormalButton) { - ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarNormalButton); - down = tb->activeSubControls & SC_TitleBarNormalButton && (opt->state & State_Sunken); - pm = proxy()->standardIcon(SP_TitleBarNormalButton, &tool).pixmap(QSize(10, 10), dpr(opt->window)); - tool.rect = ir; - tool.state = down ? State_Sunken : State_Raised; - proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p); - - p->save(); - if (down) - p->translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal, tb), - proxy()->pixelMetric(PM_ButtonShiftVertical, tb)); - proxy()->drawItemPixmap(p, ir, Qt::AlignCenter, pm); - p->restore(); - } - - if (tb->subControls & SC_TitleBarShadeButton - && tb->titleBarFlags & Qt::WindowShadeButtonHint - && !(tb->titleBarState & Qt::WindowMinimized)) { - ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarShadeButton); - down = (tb->activeSubControls & SC_TitleBarShadeButton && (opt->state & State_Sunken)); - pm = proxy()->standardIcon(SP_TitleBarShadeButton, &tool).pixmap(QSize(10, 10), dpr(opt->window)); - tool.rect = ir; - tool.state = down ? State_Sunken : State_Raised; - proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p); - p->save(); - if (down) - p->translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal, tb), - proxy()->pixelMetric(PM_ButtonShiftVertical, tb)); - proxy()->drawItemPixmap(p, ir, Qt::AlignCenter, pm); - p->restore(); - } - - if (tb->subControls & SC_TitleBarUnshadeButton - && tb->titleBarFlags & Qt::WindowShadeButtonHint - && tb->titleBarState & Qt::WindowMinimized) { - ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarUnshadeButton); - - down = tb->activeSubControls & SC_TitleBarUnshadeButton && (opt->state & State_Sunken); - pm = proxy()->standardIcon(SP_TitleBarUnshadeButton, &tool).pixmap(QSize(10, 10), dpr(opt->window)); - tool.rect = ir; - tool.state = down ? State_Sunken : State_Raised; - proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p); - p->save(); - if (down) - p->translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal, tb), - proxy()->pixelMetric(PM_ButtonShiftVertical, tb)); - proxy()->drawItemPixmap(p, ir, Qt::AlignCenter, pm); - p->restore(); - } - if (tb->subControls & SC_TitleBarContextHelpButton - && tb->titleBarFlags & Qt::WindowContextHelpButtonHint) { - ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarContextHelpButton); - - down = tb->activeSubControls & SC_TitleBarContextHelpButton && (opt->state & State_Sunken); - pm = proxy()->standardIcon(SP_TitleBarContextHelpButton, &tool).pixmap(QSize(10, 10), dpr(opt->window)); - tool.rect = ir; - tool.state = down ? State_Sunken : State_Raised; - proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p); - p->save(); - if (down) - p->translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal, tb), - proxy()->pixelMetric(PM_ButtonShiftVertical, tb)); - proxy()->drawItemPixmap(p, ir, Qt::AlignCenter, pm); - p->restore(); - } - if (tb->subControls & SC_TitleBarSysMenu && tb->titleBarFlags & Qt::WindowSystemMenuHint) { - ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarSysMenu); - if (!tb->icon.isNull()) { - tb->icon.paint(p, ir); - } else { - int iconSize = proxy()->pixelMetric(PM_SmallIconSize, tb); - pm = proxy()->standardIcon(SP_TitleBarMenuButton, &tool).pixmap(QSize(iconSize, iconSize), dpr(opt->window)); - tool.rect = ir; - p->save(); - proxy()->drawItemPixmap(p, ir, Qt::AlignCenter, pm); - p->restore(); - } - } - } - break; - case CC_Dial: - if (const QStyleOptionSlider *dial = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - // OK, this is more a port of things over - p->save(); - - // avoid dithering - if (p->paintEngine()->hasFeature(QPaintEngine::Antialiasing)) - p->setRenderHint(QPainter::Antialiasing); - - int width = dial->rect.width(); - int height = dial->rect.height(); - qreal r = qMin(width, height) / 2; - qreal d_ = r / 6; - qreal dx = dial->rect.x() + d_ + (width - 2 * r) / 2 + 1; - qreal dy = dial->rect.y() + d_ + (height - 2 * r) / 2 + 1; - QRect br = QRect(int(dx), int(dy), int(r * 2 - 2 * d_ - 2), int(r * 2 - 2 * d_ - 2)); - - QPalette pal = opt->palette; - // draw notches - if (dial->subControls & QStyle::SC_DialTickmarks) { - p->setPen(pal.windowText().color()); - p->drawLines(QStyleHelper::calcLines(dial)); - } - - if (dial->state & State_Enabled) { - p->setBrush(pal.brush(QPalette::ColorRole(proxy()->styleHint(SH_Dial_BackgroundRole, dial)))); - p->setPen(Qt::NoPen); - p->drawEllipse(br); - p->setBrush(Qt::NoBrush); - } - p->setPen(QPen(pal.dark().color())); - p->drawArc(br, 60 * 16, 180 * 16); - p->setPen(QPen(pal.light().color())); - p->drawArc(br, 240 * 16, 180 * 16); - - qreal a; - const StaticPolygonF<3> arrow = calcArrow(dial, a); - - p->setPen(Qt::NoPen); - p->setBrush(pal.button()); - p->drawPolygon(arrow.cbegin(), arrow.size()); - - a = QStyleHelper::angle(QPointF(width / 2, height / 2), arrow[0]); - p->setBrush(Qt::NoBrush); - - if (a <= 0 || a > 200) { - p->setPen(pal.light().color()); - p->drawLine(arrow[2], arrow[0]); - p->drawLine(arrow[1], arrow[2]); - p->setPen(pal.dark().color()); - p->drawLine(arrow[0], arrow[1]); - } else if (a > 0 && a < 45) { - p->setPen(pal.light().color()); - p->drawLine(arrow[2], arrow[0]); - p->setPen(pal.dark().color()); - p->drawLine(arrow[1], arrow[2]); - p->drawLine(arrow[0], arrow[1]); - } else if (a >= 45 && a < 135) { - p->setPen(pal.dark().color()); - p->drawLine(arrow[2], arrow[0]); - p->drawLine(arrow[1], arrow[2]); - p->setPen(pal.light().color()); - p->drawLine(arrow[0], arrow[1]); - } else if (a >= 135 && a < 200) { - p->setPen(pal.dark().color()); - p->drawLine(arrow[2], arrow[0]); - p->setPen(pal.light().color()); - p->drawLine(arrow[0], arrow[1]); - p->drawLine(arrow[1], arrow[2]); - } - - // draw focus rect around the dial - QStyleOptionFocusRect fropt; - fropt.rect = dial->rect; - fropt.state = dial->state; - fropt.palette = dial->palette; - if (fropt.state & QStyle::State_HasFocus) { - br.adjust(0, 0, 2, 2); - if (dial->subControls & SC_DialTickmarks) { - int r = qMin(width, height) / 2; - br.translate(-r / 6, - r / 6); - br.setWidth(br.width() + r / 3); - br.setHeight(br.height() + r / 3); - } - fropt.rect = br.adjusted(-2, -2, 2, 2); - proxy()->drawPrimitive(QStyle::PE_FrameFocusRect, &fropt, p); - } - p->restore(); - } - break; - case CC_GroupBox: - if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(opt)) { - // Draw frame - QRect textRect = proxy()->subControlRect(CC_GroupBox, opt, SC_GroupBoxLabel); - QRect checkBoxRect = proxy()->subControlRect(CC_GroupBox, opt, SC_GroupBoxCheckBox); - if (groupBox->subControls & QStyle::SC_GroupBoxFrame) { - QStyleOptionFrame frame; - frame.QStyleOption::operator=(*groupBox); - frame.features = groupBox->features; - frame.lineWidth = groupBox->lineWidth; - frame.midLineWidth = groupBox->midLineWidth; - frame.rect = proxy()->subControlRect(CC_GroupBox, opt, SC_GroupBoxFrame); - p->save(); - QRegion region(groupBox->rect); - if (!groupBox->text.isEmpty()) { - bool ltr = groupBox->direction == Qt::LeftToRight; - QRect finalRect; - if (groupBox->subControls & QStyle::SC_GroupBoxCheckBox) { - finalRect = checkBoxRect.united(textRect); - finalRect.adjust(ltr ? -4 : 0, 0, ltr ? 0 : 4, 0); - } else { - finalRect = textRect; - } - region -= finalRect; - } - p->setClipRegion(region); - proxy()->drawPrimitive(PE_FrameGroupBox, &frame, p); - p->restore(); - } - - // Draw title - if ((groupBox->subControls & QStyle::SC_GroupBoxLabel) && !groupBox->text.isEmpty()) { - QColor textColor = groupBox->textColor; - if (textColor.isValid()) - p->setPen(textColor); - int alignment = int(groupBox->textAlignment); - if (!proxy()->styleHint(QStyle::SH_UnderlineShortcut, opt)) - alignment |= Qt::TextHideMnemonic; - - proxy()->drawItemText(p, textRect, Qt::TextShowMnemonic | Qt::AlignHCenter | alignment, - groupBox->palette, groupBox->state & State_Enabled, groupBox->text, - textColor.isValid() ? QPalette::NoRole : QPalette::WindowText); - - if (groupBox->state & State_HasFocus) { - QStyleOptionFocusRect fropt; - fropt.QStyleOption::operator=(*groupBox); - fropt.rect = textRect; - proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, p); - } - } - - // Draw checkbox - if (groupBox->subControls & SC_GroupBoxCheckBox) { - QStyleOptionButton box; - box.QStyleOption::operator=(*groupBox); - box.rect = checkBoxRect; - proxy()->drawPrimitive(PE_IndicatorCheckBox, &box, p); - } - } - break; - case CC_MdiControls: - { - QStyleOptionButton btnOpt; - btnOpt.QStyleOption::operator=(*opt); - btnOpt.state &= ~State_MouseOver; - int bsx = 0; - int bsy = 0; - const int buttonIconMetric = proxy()->pixelMetric(PM_TitleBarButtonIconSize, &btnOpt); - const QSize buttonIconSize(buttonIconMetric, buttonIconMetric); - if (opt->subControls & QStyle::SC_MdiCloseButton) { - if (opt->activeSubControls & QStyle::SC_MdiCloseButton && (opt->state & State_Sunken)) { - btnOpt.state |= State_Sunken; - btnOpt.state &= ~State_Raised; - bsx = proxy()->pixelMetric(PM_ButtonShiftHorizontal); - bsy = proxy()->pixelMetric(PM_ButtonShiftVertical); - } else { - btnOpt.state |= State_Raised; - btnOpt.state &= ~State_Sunken; - bsx = 0; - bsy = 0; - } - btnOpt.rect = proxy()->subControlRect(CC_MdiControls, opt, SC_MdiCloseButton); - proxy()->drawPrimitive(PE_PanelButtonCommand, &btnOpt, p); - QPixmap pm = proxy()->standardIcon(SP_TitleBarCloseButton).pixmap(buttonIconSize, dpr(opt->window)); - proxy()->drawItemPixmap(p, btnOpt.rect.translated(bsx, bsy), Qt::AlignCenter, pm); - } - if (opt->subControls & QStyle::SC_MdiNormalButton) { - if (opt->activeSubControls & QStyle::SC_MdiNormalButton && (opt->state & State_Sunken)) { - btnOpt.state |= State_Sunken; - btnOpt.state &= ~State_Raised; - bsx = proxy()->pixelMetric(PM_ButtonShiftHorizontal); - bsy = proxy()->pixelMetric(PM_ButtonShiftVertical); - } else { - btnOpt.state |= State_Raised; - btnOpt.state &= ~State_Sunken; - bsx = 0; - bsy = 0; - } - btnOpt.rect = proxy()->subControlRect(CC_MdiControls, opt, SC_MdiNormalButton); - proxy()->drawPrimitive(PE_PanelButtonCommand, &btnOpt, p); - QPixmap pm = proxy()->standardIcon(SP_TitleBarNormalButton).pixmap(buttonIconSize, dpr(opt->window)); - proxy()->drawItemPixmap(p, btnOpt.rect.translated(bsx, bsy), Qt::AlignCenter, pm); - } - if (opt->subControls & QStyle::SC_MdiMinButton) { - if (opt->activeSubControls & QStyle::SC_MdiMinButton && (opt->state & State_Sunken)) { - btnOpt.state |= State_Sunken; - btnOpt.state &= ~State_Raised; - bsx = proxy()->pixelMetric(PM_ButtonShiftHorizontal); - bsy = proxy()->pixelMetric(PM_ButtonShiftVertical); - } else { - btnOpt.state |= State_Raised; - btnOpt.state &= ~State_Sunken; - bsx = 0; - bsy = 0; - } - btnOpt.rect = proxy()->subControlRect(CC_MdiControls, opt, SC_MdiMinButton); - proxy()->drawPrimitive(PE_PanelButtonCommand, &btnOpt, p); - QPixmap pm = proxy()->standardIcon(SP_TitleBarMinButton).pixmap(buttonIconSize, dpr(opt->window)); - proxy()->drawItemPixmap(p, btnOpt.rect.translated(bsx, bsy), Qt::AlignCenter, pm); - } - } - break; - default: - qWarning("QCommonStyle::drawComplexControl: Control %d not handled", cc); - } -} - -/*! - \reimp -*/ -QStyle::SubControl QCommonStyle::hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt) const -{ - SubControl sc = SC_None; - switch (cc) { - case CC_Slider: - if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - QRect r = proxy()->subControlRect(cc, slider, SC_SliderHandle); - if (r.isValid() && r.contains(pt)) { - sc = SC_SliderHandle; - } else { - r = proxy()->subControlRect(cc, slider, SC_SliderGroove); - if (r.isValid() && r.contains(pt)) - sc = SC_SliderGroove; - } - } - break; - case CC_ScrollBar: - if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - QRect r; - uint ctrl = SC_ScrollBarAddLine; - while (ctrl <= SC_ScrollBarGroove) { - r = proxy()->subControlRect(cc, scrollbar, QStyle::SubControl(ctrl)); - if (r.isValid() && r.contains(pt)) { - sc = QStyle::SubControl(ctrl); - break; - } - ctrl <<= 1; - } - } - break; - case CC_ToolButton: - if (const QStyleOptionToolButton *toolbutton = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) { - QRect r; - uint ctrl = SC_ToolButton; - while (ctrl <= SC_ToolButtonMenu) { - r = proxy()->subControlRect(cc, toolbutton, QStyle::SubControl(ctrl)); - if (r.isValid() && r.contains(pt)) { - sc = QStyle::SubControl(ctrl); - break; - } - ctrl <<= 1; - } - } - break; - case CC_SpinBox: - if (const QStyleOptionSpinBox *spinbox = qstyleoption_cast<const QStyleOptionSpinBox *>(opt)) { - QRect r; - uint ctrl = SC_SpinBoxUp; - while (ctrl <= SC_SpinBoxEditField) { - r = proxy()->subControlRect(cc, spinbox, QStyle::SubControl(ctrl)); - if (r.isValid() && r.contains(pt)) { - sc = QStyle::SubControl(ctrl); - break; - } - ctrl <<= 1; - } - } - break; - case CC_TitleBar: - if (const QStyleOptionTitleBar *tb = qstyleoption_cast<const QStyleOptionTitleBar *>(opt)) { - QRect r; - uint ctrl = SC_TitleBarSysMenu; - - while (ctrl <= SC_TitleBarLabel) { - r = proxy()->subControlRect(cc, tb, QStyle::SubControl(ctrl)); - if (r.isValid() && r.contains(pt)) { - sc = QStyle::SubControl(ctrl); - break; - } - ctrl <<= 1; - } - } - break; - case CC_ComboBox: - if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - QRect r; - uint ctrl = SC_ComboBoxArrow; // Start here and go down. - while (ctrl > 0) { - r = proxy()->subControlRect(cc, cb, QStyle::SubControl(ctrl)); - if (r.isValid() && r.contains(pt)) { - sc = QStyle::SubControl(ctrl); - break; - } - ctrl >>= 1; - } - } - break; - case CC_GroupBox: - if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(opt)) { - QRect r; - uint ctrl = SC_GroupBoxCheckBox; - while (ctrl <= SC_GroupBoxFrame) { - r = proxy()->subControlRect(cc, groupBox, QStyle::SubControl(ctrl)); - if (r.isValid() && r.contains(pt)) { - sc = QStyle::SubControl(ctrl); - break; - } - ctrl <<= 1; - } - } - break; - case CC_MdiControls: - { - QRect r; - uint ctrl = SC_MdiMinButton; - while (ctrl <= SC_MdiCloseButton) { - r = proxy()->subControlRect(CC_MdiControls, opt, QStyle::SubControl(ctrl)); - if (r.isValid() && r.contains(pt) && (opt->subControls & ctrl)) { - sc = QStyle::SubControl(ctrl); - return sc; - } - ctrl <<= 1; - } - } - break; - default: - qWarning("QCommonStyle::hitTestComplexControl: Case %d not handled", cc); - } - return sc; -} - -/*! - \reimp -*/ -QRect QCommonStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc) const -{ - QRect ret; - switch (cc) { - case CC_Slider: - if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - int tickOffset = proxy()->pixelMetric(PM_SliderTickmarkOffset, slider); - int thickness = proxy()->pixelMetric(PM_SliderControlThickness, slider); - - switch (sc) { - case SC_SliderHandle: { - int sliderPos = 0; - int len = proxy()->pixelMetric(PM_SliderLength, slider); - bool horizontal = slider->orientation == Qt::Horizontal; - sliderPos = sliderPositionFromValue(slider->minimum, slider->maximum, - slider->sliderPosition, - (horizontal ? slider->rect.width() - : slider->rect.height()) - len, - slider->upsideDown); - if (horizontal) - ret.setRect(slider->rect.x() + sliderPos, slider->rect.y() + tickOffset, len, thickness); - else - ret.setRect(slider->rect.x() + tickOffset, slider->rect.y() + sliderPos, thickness, len); - break; } - case SC_SliderGroove: - if (slider->orientation == Qt::Horizontal) - ret.setRect(slider->rect.x(), slider->rect.y() + tickOffset, - slider->rect.width(), thickness); - else - ret.setRect(slider->rect.x() + tickOffset, slider->rect.y(), - thickness, slider->rect.height()); - break; - default: - break; - } - ret = visualRect(slider->direction, slider->rect, ret); - } - break; - case CC_ScrollBar: - if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - const QRect scrollBarRect = scrollbar->rect; - int sbextent = 0; - if (!proxy()->styleHint(SH_ScrollBar_Transient, scrollbar)) - sbextent = proxy()->pixelMetric(PM_ScrollBarExtent, scrollbar); - int maxlen = ((scrollbar->orientation == Qt::Horizontal) ? - scrollBarRect.width() : scrollBarRect.height()) - (sbextent * 2); - int sliderlen; - - // calculate slider length - if (scrollbar->maximum != scrollbar->minimum) { - uint range = scrollbar->maximum - scrollbar->minimum; - sliderlen = (qint64(scrollbar->pageStep) * maxlen) / (range + scrollbar->pageStep); - - int slidermin = proxy()->pixelMetric(PM_ScrollBarSliderMin, scrollbar); - if (sliderlen < slidermin || range > INT_MAX / 2) - sliderlen = slidermin; - if (sliderlen > maxlen) - sliderlen = maxlen; - } else { - sliderlen = maxlen; - } - - int sliderstart = sbextent + sliderPositionFromValue(scrollbar->minimum, - scrollbar->maximum, - scrollbar->sliderPosition, - maxlen - sliderlen, - scrollbar->upsideDown); - - switch (sc) { - case SC_ScrollBarSubLine: // top/left button - if (scrollbar->orientation == Qt::Horizontal) { - int buttonWidth = qMin(scrollBarRect.width() / 2, sbextent); - ret.setRect(0, 0, buttonWidth, scrollBarRect.height()); - } else { - int buttonHeight = qMin(scrollBarRect.height() / 2, sbextent); - ret.setRect(0, 0, scrollBarRect.width(), buttonHeight); - } - break; - case SC_ScrollBarAddLine: // bottom/right button - if (scrollbar->orientation == Qt::Horizontal) { - int buttonWidth = qMin(scrollBarRect.width()/2, sbextent); - ret.setRect(scrollBarRect.width() - buttonWidth, 0, buttonWidth, scrollBarRect.height()); - } else { - int buttonHeight = qMin(scrollBarRect.height()/2, sbextent); - ret.setRect(0, scrollBarRect.height() - buttonHeight, scrollBarRect.width(), buttonHeight); - } - break; - case SC_ScrollBarSubPage: // between top/left button and slider - if (scrollbar->orientation == Qt::Horizontal) - ret.setRect(sbextent, 0, sliderstart - sbextent, scrollBarRect.height()); - else - ret.setRect(0, sbextent, scrollBarRect.width(), sliderstart - sbextent); - break; - case SC_ScrollBarAddPage: // between bottom/right button and slider - if (scrollbar->orientation == Qt::Horizontal) - ret.setRect(sliderstart + sliderlen, 0, - maxlen - sliderstart - sliderlen + sbextent, scrollBarRect.height()); - else - ret.setRect(0, sliderstart + sliderlen, scrollBarRect.width(), - maxlen - sliderstart - sliderlen + sbextent); - break; - case SC_ScrollBarGroove: - if (scrollbar->orientation == Qt::Horizontal) - ret.setRect(sbextent, 0, scrollBarRect.width() - sbextent * 2, - scrollBarRect.height()); - else - ret.setRect(0, sbextent, scrollBarRect.width(), - scrollBarRect.height() - sbextent * 2); - break; - case SC_ScrollBarSlider: - if (scrollbar->orientation == Qt::Horizontal) - ret.setRect(sliderstart, 0, sliderlen, scrollBarRect.height()); - else - ret.setRect(0, sliderstart, scrollBarRect.width(), sliderlen); - break; - default: - break; - } - ret = visualRect(scrollbar->direction, scrollBarRect, ret); - } - break; - case CC_SpinBox: - if (const QStyleOptionSpinBox *spinbox = qstyleoption_cast<const QStyleOptionSpinBox *>(opt)) { - QSize bs; - int fw = spinbox->frame ? proxy()->pixelMetric(PM_SpinBoxFrameWidth, spinbox) : 0; - bs.setHeight(qMax(8, spinbox->rect.height()/2 - fw)); - // 1.6 -approximate golden mean - bs.setWidth(qMax(16, qMin(bs.height() * 8 / 5, spinbox->rect.width() / 4))); - int y = fw + spinbox->rect.y(); - int x, lx, rx; - x = spinbox->rect.x() + spinbox->rect.width() - fw - bs.width(); - lx = fw; - rx = x - fw; - switch (sc) { - case SC_SpinBoxUp: - if (spinbox->buttonSymbols == QStyleOptionSpinBox::NoButtons) - return QRect(); - ret = QRect(x, y, bs.width(), bs.height()); - break; - case SC_SpinBoxDown: - if (spinbox->buttonSymbols == QStyleOptionSpinBox::NoButtons) - return QRect(); - - ret = QRect(x, y + bs.height(), bs.width(), bs.height()); - break; - case SC_SpinBoxEditField: - if (spinbox->buttonSymbols == QStyleOptionSpinBox::NoButtons) { - ret = QRect(lx, fw, spinbox->rect.width() - 2*fw, spinbox->rect.height() - 2*fw); - } else { - ret = QRect(lx, fw, rx, spinbox->rect.height() - 2*fw); - } - break; - case SC_SpinBoxFrame: - ret = spinbox->rect; - default: - break; - } - ret = visualRect(spinbox->direction, spinbox->rect, ret); - } - break; - case CC_ToolButton: - if (const QStyleOptionToolButton *tb = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) { - int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, tb); - ret = tb->rect; - switch (sc) { - case SC_ToolButton: - if ((tb->features - & (QStyleOptionToolButton::MenuButtonPopup | QStyleOptionToolButton::PopupDelay)) - == QStyleOptionToolButton::MenuButtonPopup) - ret.adjust(0, 0, -mbi, 0); - break; - case SC_ToolButtonMenu: - if ((tb->features - & (QStyleOptionToolButton::MenuButtonPopup | QStyleOptionToolButton::PopupDelay)) - == QStyleOptionToolButton::MenuButtonPopup) - ret.adjust(ret.width() - mbi, 0, 0, 0); - break; - default: - break; - } - ret = visualRect(tb->direction, tb->rect, ret); - } - break; - case CC_ComboBox: - if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - const qreal dpi = QStyleHelper::dpi(opt); - const int x = cb->rect.x(), y = cb->rect.y(), wi = cb->rect.width(), he = cb->rect.height(); - const int margin = cb->frame ? qRound(QStyleHelper::dpiScaled(3, dpi)) : 0; - const int bmarg = cb->frame ? qRound(QStyleHelper::dpiScaled(2, dpi)) : 0; - const int xpos = x + wi - bmarg - qRound(QStyleHelper::dpiScaled(16, dpi)); - - - switch (sc) { - case SC_ComboBoxFrame: - ret = cb->rect; - break; - case SC_ComboBoxArrow: - ret.setRect(xpos, y + bmarg, qRound(QStyleHelper::dpiScaled(16, opt)), he - 2*bmarg); - break; - case SC_ComboBoxEditField: - ret.setRect(x + margin, y + margin, wi - 2 * margin - qRound(QStyleHelper::dpiScaled(16, dpi)), he - 2 * margin); - break; - case SC_ComboBoxListBoxPopup: - ret = cb->rect; - break; - default: - break; - } - ret = visualRect(cb->direction, cb->rect, ret); - } - break; - case CC_TitleBar: - if (const QStyleOptionTitleBar *tb = qstyleoption_cast<const QStyleOptionTitleBar *>(opt)) { - const int controlMargin = 2; - const int controlHeight = tb->rect.height() - controlMargin *2; - const int delta = controlHeight + controlMargin; - int offset = 0; - - bool isMinimized = tb->titleBarState & Qt::WindowMinimized; - bool isMaximized = tb->titleBarState & Qt::WindowMaximized; - - switch (sc) { - case SC_TitleBarLabel: - if (tb->titleBarFlags & (Qt::WindowTitleHint | Qt::WindowSystemMenuHint)) { - ret = tb->rect; - if (tb->titleBarFlags & Qt::WindowSystemMenuHint) - ret.adjust(delta, 0, -delta, 0); - if (tb->titleBarFlags & Qt::WindowMinimizeButtonHint) - ret.adjust(0, 0, -delta, 0); - if (tb->titleBarFlags & Qt::WindowMaximizeButtonHint) - ret.adjust(0, 0, -delta, 0); - if (tb->titleBarFlags & Qt::WindowShadeButtonHint) - ret.adjust(0, 0, -delta, 0); - if (tb->titleBarFlags & Qt::WindowContextHelpButtonHint) - ret.adjust(0, 0, -delta, 0); - } - break; - case SC_TitleBarContextHelpButton: - if (tb->titleBarFlags & Qt::WindowContextHelpButtonHint) - offset += delta; - Q_FALLTHROUGH(); - case SC_TitleBarMinButton: - if (!isMinimized && (tb->titleBarFlags & Qt::WindowMinimizeButtonHint)) - offset += delta; - else if (sc == SC_TitleBarMinButton) - break; - Q_FALLTHROUGH(); - case SC_TitleBarNormalButton: - if (isMinimized && (tb->titleBarFlags & Qt::WindowMinimizeButtonHint)) - offset += delta; - else if (isMaximized && (tb->titleBarFlags & Qt::WindowMaximizeButtonHint)) - offset += delta; - else if (sc == SC_TitleBarNormalButton) - break; - Q_FALLTHROUGH(); - case SC_TitleBarMaxButton: - if (!isMaximized && (tb->titleBarFlags & Qt::WindowMaximizeButtonHint)) - offset += delta; - else if (sc == SC_TitleBarMaxButton) - break; - Q_FALLTHROUGH(); - case SC_TitleBarShadeButton: - if (!isMinimized && (tb->titleBarFlags & Qt::WindowShadeButtonHint)) - offset += delta; - else if (sc == SC_TitleBarShadeButton) - break; - Q_FALLTHROUGH(); - case SC_TitleBarUnshadeButton: - if (isMinimized && (tb->titleBarFlags & Qt::WindowShadeButtonHint)) - offset += delta; - else if (sc == SC_TitleBarUnshadeButton) - break; - Q_FALLTHROUGH(); - case SC_TitleBarCloseButton: - if (tb->titleBarFlags & Qt::WindowSystemMenuHint) - offset += delta; - else if (sc == SC_TitleBarCloseButton) - break; - ret.setRect(tb->rect.right() - offset, tb->rect.top() + controlMargin, - controlHeight, controlHeight); - break; - case SC_TitleBarSysMenu: - if (tb->titleBarFlags & Qt::WindowSystemMenuHint) { - ret.setRect(tb->rect.left() + controlMargin, tb->rect.top() + controlMargin, - controlHeight, controlHeight); - } - break; - default: - break; - } - ret = visualRect(tb->direction, tb->rect, ret); - } - break; - case CC_GroupBox: { - if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(opt)) { - switch (sc) { - case SC_GroupBoxFrame: - case SC_GroupBoxContents: { - int topMargin = 0; - int topHeight = 0; - int verticalAlignment = proxy()->styleHint(SH_GroupBox_TextLabelVerticalAlignment, groupBox); - bool hasCheckBox = groupBox->subControls & QStyle::SC_GroupBoxCheckBox; - if (groupBox->text.size() || hasCheckBox) { - int checkBoxHeight = hasCheckBox ? proxy()->pixelMetric(PM_IndicatorHeight, groupBox) : 0; - topHeight = qMax(groupBox->fontMetrics.height(), checkBoxHeight); - if (verticalAlignment & Qt::AlignVCenter) - topMargin = topHeight / 2; - else if (verticalAlignment & Qt::AlignTop) - topMargin = topHeight; - } - - QRect frameRect = groupBox->rect; - frameRect.setTop(topMargin); - - if (sc == SC_GroupBoxFrame) { - ret = frameRect; - break; - } - - int frameWidth = 0; - if ((groupBox->features & QStyleOptionFrame::Flat) == 0) - frameWidth = proxy()->pixelMetric(PM_DefaultFrameWidth, groupBox); - ret = frameRect.adjusted(frameWidth, frameWidth + topHeight - topMargin, - -frameWidth, -frameWidth); - break; - } - case SC_GroupBoxCheckBox: - case SC_GroupBoxLabel: { - QFontMetrics fontMetrics = groupBox->fontMetrics; - int th = fontMetrics.height(); - int tw = fontMetrics.size(Qt::TextShowMnemonic, groupBox->text + QLatin1Char(' ')).width(); - int marg = (groupBox->features & QStyleOptionFrame::Flat) ? 0 : 8; - ret = groupBox->rect.adjusted(marg, 0, -marg, 0); - - int indicatorWidth = proxy()->pixelMetric(PM_IndicatorWidth, opt); - int indicatorHeight = proxy()->pixelMetric(PM_IndicatorHeight, opt); - int indicatorSpace = proxy()->pixelMetric(PM_CheckBoxLabelSpacing, opt) - 1; - bool hasCheckBox = groupBox->subControls & QStyle::SC_GroupBoxCheckBox; - int checkBoxWidth = hasCheckBox ? (indicatorWidth + indicatorSpace) : 0; - int checkBoxHeight = hasCheckBox ? indicatorHeight : 0; - - int h = qMax(th, checkBoxHeight); - ret.setHeight(h); - - // Adjusted rect for label + indicatorWidth + indicatorSpace - QRect totalRect = alignedRect(groupBox->direction, groupBox->textAlignment, - QSize(tw + checkBoxWidth, h), ret); - - // Adjust totalRect if checkbox is set - if (hasCheckBox) { - bool ltr = groupBox->direction == Qt::LeftToRight; - int left = 0; - // Adjust for check box - if (sc == SC_GroupBoxCheckBox) { - left = ltr ? totalRect.left() : (totalRect.right() - indicatorWidth); - int top = totalRect.top() + (h - checkBoxHeight) / 2; - totalRect.setRect(left, top, indicatorWidth, indicatorHeight); - // Adjust for label - } else { - left = ltr ? (totalRect.left() + checkBoxWidth - 2) : totalRect.left(); - int top = totalRect.top() + (h - th) / 2; - totalRect.setRect(left, top, totalRect.width() - checkBoxWidth, th); - } - } - ret = totalRect; - break; - } - default: - break; - } - } - break; - } - case CC_MdiControls: - { - int numSubControls = 0; - if (opt->subControls & SC_MdiCloseButton) - ++numSubControls; - if (opt->subControls & SC_MdiMinButton) - ++numSubControls; - if (opt->subControls & SC_MdiNormalButton) - ++numSubControls; - if (numSubControls == 0) - break; - - int buttonWidth = opt->rect.width() / numSubControls - 1; - int offset = 0; - switch (sc) { - case SC_MdiCloseButton: - // Only one sub control, no offset needed. - if (numSubControls == 1) - break; - offset += buttonWidth + 2; - Q_FALLTHROUGH(); - case SC_MdiNormalButton: - // No offset needed if - // 1) There's only one sub control - // 2) We have a close button and a normal button (offset already added in SC_MdiClose) - if (numSubControls == 1 || (numSubControls == 2 && !(opt->subControls & SC_MdiMinButton))) - break; - if (opt->subControls & SC_MdiNormalButton) - offset += buttonWidth; - break; - default: - break; - } - - // Subtract one pixel if we only have one sub control. At this point - // buttonWidth is the actual width + 1 pixel margin, but we don't want the - // margin when there are no other controllers. - if (numSubControls == 1) - --buttonWidth; - ret = QRect(offset, 0, buttonWidth, opt->rect.height()); - break; } - default: - qWarning("QCommonStyle::subControlRect: Case %d not handled", cc); - } - - return ret; -} - -int QCommonStyle::pixelMetric(PixelMetric m, const QStyleOption *opt) const -{ - int ret; - - switch (m) { - case PM_FocusFrameVMargin: - case PM_FocusFrameHMargin: - ret = 2; - break; - case PM_MenuBarVMargin: - case PM_MenuBarHMargin: - ret = 0; - break; - case PM_DialogButtonsSeparator: - ret = int(QStyleHelper::dpiScaled(5, opt)); - break; - case PM_DialogButtonsButtonWidth: - ret = int(QStyleHelper::dpiScaled(70, opt)); - break; - case PM_DialogButtonsButtonHeight: - ret = int(QStyleHelper::dpiScaled(30, opt)); - break; - case PM_TitleBarHeight: { - if (const QStyleOptionTitleBar *tb = qstyleoption_cast<const QStyleOptionTitleBar *>(opt)) { - if ((tb->titleBarFlags & Qt::WindowType_Mask) == Qt::Tool) { - ret = qMax(opt->fontMetrics.height(), 16); - } else { - ret = qMax(opt->fontMetrics.height(), 18); - } - } else { - ret = int(QStyleHelper::dpiScaled(18., opt)); - } - - break; } - case PM_TitleBarButtonSize: - ret = int(QStyleHelper::dpiScaled(16., opt)); - break; - case PM_TitleBarButtonIconSize: - ret = int(QStyleHelper::dpiScaled(16., opt)); - break; - - case PM_ScrollBarSliderMin: - ret = int(QStyleHelper::dpiScaled(9., opt)); - break; - - case PM_ButtonMargin: - ret = int(QStyleHelper::dpiScaled(6., opt)); - break; - - case PM_DockWidgetTitleBarButtonMargin: - ret = int(QStyleHelper::dpiScaled(2., opt)); - break; - - case PM_ButtonDefaultIndicator: - ret = 0; - break; - - case PM_MenuButtonIndicator: - ret = int(QStyleHelper::dpiScaled(12, opt)); - break; - - case PM_ButtonShiftHorizontal: - case PM_ButtonShiftVertical: - - case PM_DefaultFrameWidth: - ret = 2; - break; - - case PM_ComboBoxFrameWidth: - case PM_SpinBoxFrameWidth: - case PM_MenuPanelWidth: - case PM_TabBarBaseOverlap: - case PM_TabBarBaseHeight: - ret = proxy()->pixelMetric(PM_DefaultFrameWidth, opt); - break; - case PM_MdiSubWindowFrameWidth: - ret = int(QStyleHelper::dpiScaled(4, opt)); - break; - case PM_MdiSubWindowMinimizedWidth: - ret = int(QStyleHelper::dpiScaled(196, opt)); - break; - case PM_ScrollBarExtent: - ret = int(QStyleHelper::dpiScaled(16, opt)); - break; - case PM_MaximumDragDistance: - ret = QGuiApplicationPrivate::platformTheme()->themeHint(QPlatformTheme::MaximumScrollBarDragDistance).toInt(); - break; - case PM_SliderThickness: - ret = int(QStyleHelper::dpiScaled(16, opt)); - break; - case PM_SliderTickmarkOffset: - if (const QStyleOptionSlider *sl = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - int space = (sl->orientation == Qt::Horizontal) ? sl->rect.height() - : sl->rect.width(); - int thickness = proxy()->pixelMetric(PM_SliderControlThickness, sl); - int ticks = sl->tickPosition; - - if (ticks == QStyleOptionSlider::TicksBothSides) - ret = (space - thickness) / 2; - else if (ticks == QStyleOptionSlider::TicksAbove) - ret = space - thickness; - else - ret = 0; - } else { - ret = 0; - } - break; - case PM_SliderSpaceAvailable: - if (const QStyleOptionSlider *sl = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - if (sl->orientation == Qt::Horizontal) - ret = sl->rect.width() - proxy()->pixelMetric(PM_SliderLength, sl); - else - ret = sl->rect.height() - proxy()->pixelMetric(PM_SliderLength, sl); - } else { - ret = 0; - } - break; - case PM_DockWidgetSeparatorExtent: - ret = int(QStyleHelper::dpiScaled(6, opt)); - break; - - case PM_DockWidgetHandleExtent: - ret = int(QStyleHelper::dpiScaled(8, opt)); - break; - case PM_DockWidgetTitleMargin: - ret = 0; - break; - case PM_DockWidgetFrameWidth: - ret = 1; - break; - case PM_SpinBoxSliderHeight: - case PM_MenuBarPanelWidth: - ret = 2; - break; - case PM_MenuBarItemSpacing: - ret = 0; - break; - case PM_ToolBarFrameWidth: - ret = 1; - break; - - case PM_ToolBarItemMargin: - ret = 0; - break; - - case PM_ToolBarItemSpacing: - ret = int(QStyleHelper::dpiScaled(4, opt)); - break; - - case PM_ToolBarHandleExtent: - ret = int(QStyleHelper::dpiScaled(8, opt)); - break; - - case PM_ToolBarSeparatorExtent: - ret = int(QStyleHelper::dpiScaled(6, opt)); - break; - - case PM_ToolBarExtensionExtent: - ret = int(QStyleHelper::dpiScaled(12, opt)); - break; - - case PM_TabBarTabOverlap: - ret = 3; - break; - - case PM_TabBarTabHSpace: - ret = int(QStyleHelper::dpiScaled(24, opt)); - break; - - case PM_TabBarTabShiftHorizontal: - ret = 0; - break; - - case PM_TabBarTabShiftVertical: - ret = 2; - break; - - case PM_TabBarTabVSpace: { - const QStyleOptionTab *tb = qstyleoption_cast<const QStyleOptionTab *>(opt); - if (tb && (tb->shape == QStyleOptionTab::RoundedNorth || tb->shape == QStyleOptionTab::RoundedSouth - || tb->shape == QStyleOptionTab::RoundedWest || tb->shape == QStyleOptionTab::RoundedEast)) - ret = 8; - else - if(tb && (tb->shape == QStyleOptionTab::TriangularWest || tb->shape == QStyleOptionTab::TriangularEast)) - ret = 3; - else - ret = 2; - break; } - - case PM_ProgressBarChunkWidth: - ret = 9; - break; - - case PM_IndicatorWidth: - ret = int(QStyleHelper::dpiScaled(13, opt)); - break; - - case PM_IndicatorHeight: - ret = int(QStyleHelper::dpiScaled(13, opt)); - break; - - case PM_ExclusiveIndicatorWidth: - ret = int(QStyleHelper::dpiScaled(12, opt)); - break; - - case PM_ExclusiveIndicatorHeight: - ret = int(QStyleHelper::dpiScaled(12, opt)); - break; - - case PM_MenuTearoffHeight: - ret = int(QStyleHelper::dpiScaled(10, opt)); - break; - - case PM_MenuScrollerHeight: - ret = int(QStyleHelper::dpiScaled(10, opt)); - break; - - case PM_MenuDesktopFrameWidth: - case PM_MenuHMargin: - case PM_MenuVMargin: - ret = 0; - break; - - case PM_HeaderMargin: - ret = int(QStyleHelper::dpiScaled(4, opt)); - break; - case PM_HeaderMarkSize: - ret = int(QStyleHelper::dpiScaled(16, opt)); - break; - case PM_HeaderGripMargin: - ret = int(QStyleHelper::dpiScaled(4, opt)); - break; - case PM_HeaderDefaultSectionSizeHorizontal: - ret = int(QStyleHelper::dpiScaled(100, opt)); - break; - case PM_HeaderDefaultSectionSizeVertical: - ret = int(QStyleHelper::dpiScaled(30, opt)); - break; - case PM_TabBarScrollButtonWidth: - ret = int(QStyleHelper::dpiScaled(16, opt)); - break; - case PM_LayoutLeftMargin: - case PM_LayoutTopMargin: - case PM_LayoutRightMargin: - case PM_LayoutBottomMargin: - { - bool isWindow = opt ? (opt->state & State_Window) : false; - ret = proxy()->pixelMetric(isWindow ? PM_DefaultTopLevelMargin : PM_DefaultChildMargin); - } - break; - case PM_LayoutHorizontalSpacing: - case PM_LayoutVerticalSpacing: - ret = proxy()->pixelMetric(PM_DefaultLayoutSpacing); - break; - - case PM_DefaultTopLevelMargin: - ret = int(QStyleHelper::dpiScaled(11, opt)); - break; - case PM_DefaultChildMargin: - ret = int(QStyleHelper::dpiScaled(9, opt)); - break; - case PM_DefaultLayoutSpacing: - ret = int(QStyleHelper::dpiScaled(6, opt)); - break; - - case PM_ToolBarIconSize: - ret = 0; - if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) - ret = theme->themeHint(QPlatformTheme::ToolBarIconSize).toInt(); - if (ret <= 0) - ret = int(QStyleHelper::dpiScaled(24, opt)); - break; - - case PM_TabBarIconSize: - case PM_ListViewIconSize: - ret = proxy()->pixelMetric(PM_SmallIconSize, opt); - break; - - case PM_ButtonIconSize: - case PM_SmallIconSize: - ret = int(QStyleHelper::dpiScaled(16, opt)); - break; - case PM_IconViewIconSize: - ret = proxy()->pixelMetric(PM_LargeIconSize, opt); - break; - - case PM_LargeIconSize: - ret = int(QStyleHelper::dpiScaled(32, opt)); - break; - - case PM_ToolTipLabelFrameWidth: - ret = 1; - break; - case PM_CheckBoxLabelSpacing: - case PM_RadioButtonLabelSpacing: - ret = int(QStyleHelper::dpiScaled(6, opt)); - break; - case PM_SizeGripSize: - ret = int(QStyleHelper::dpiScaled(13, opt)); - break; - case PM_MessageBoxIconSize: -#ifdef Q_OS_MAC - if (QGuiApplication::desktopSettingsAware()) { - ret = 64; // No DPI scaling, it's handled elsewhere. - } else -#endif - { - ret = int(QStyleHelper::dpiScaled(32, opt)); - } - break; - case PM_TextCursorWidth: - ret = QGuiApplicationPrivate::platformTheme()->themeHint(QPlatformTheme::TextCursorWidth).toInt(); - break; - case PM_TabBar_ScrollButtonOverlap: - ret = 1; - break; - case PM_TabCloseIndicatorWidth: - case PM_TabCloseIndicatorHeight: - ret = int(QStyleHelper::dpiScaled(16, opt)); - break; - case PM_ScrollView_ScrollBarSpacing: - ret = 2 * proxy()->pixelMetric(PM_DefaultFrameWidth, opt); - break; - case PM_ScrollView_ScrollBarOverlap: - ret = 0; - break; - case PM_SubMenuOverlap: - ret = -proxy()->pixelMetric(QStyle::PM_MenuPanelWidth, opt); - break; - case PM_TreeViewIndentation: - ret = int(QStyleHelper::dpiScaled(20, opt)); - break; - default: - ret = 0; - break; - } - - return ret; -} - -QSize QCommonStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &csz) const -{ - Q_D(const QCommonStyle); - QSize sz(csz); - switch (ct) { - case CT_PushButton: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - int w = csz.width(), - h = csz.height(), - bm = proxy()->pixelMetric(PM_ButtonMargin, btn), - fw = proxy()->pixelMetric(PM_DefaultFrameWidth, btn) * 2; - w += bm + fw; - h += bm + fw; - if (btn->features & QStyleOptionButton::AutoDefaultButton){ - int dbw = proxy()->pixelMetric(PM_ButtonDefaultIndicator, btn) * 2; - w += dbw; - h += dbw; - } - sz = QSize(w, h); - } - break; - case CT_RadioButton: - case CT_CheckBox: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - bool isRadio = (ct == CT_RadioButton); - - int w = proxy()->pixelMetric(isRadio ? PM_ExclusiveIndicatorWidth - : PM_IndicatorWidth, btn); - int h = proxy()->pixelMetric(isRadio ? PM_ExclusiveIndicatorHeight - : PM_IndicatorHeight, btn); - - int margins = 0; - // we add 4 pixels for label margins - if (!btn->icon.isNull() || !btn->text.isEmpty()) - margins = 4 + proxy()->pixelMetric(isRadio ? PM_RadioButtonLabelSpacing - : PM_CheckBoxLabelSpacing, opt); - sz += QSize(w + margins, 4); - sz.setHeight(qMax(sz.height(), h)); - } - break; - case CT_MenuItem: - if (const QStyleOptionMenuItem *mi = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) { - bool checkable = mi->menuHasCheckableItems; - int maxpmw = mi->maxIconWidth; - int w = sz.width(), h = sz.height(); - if (mi->menuItemType == QStyleOptionMenuItem::Separator) { - w = 10; - h = 2; - } else { - h = mi->fontMetrics.height() + 8; - if (!mi->icon.isNull()) { - int iconExtent = proxy()->pixelMetric(PM_SmallIconSize); - h = qMax(h, mi->icon.actualSize(QSize(iconExtent, iconExtent)).height() + 4); - } - } - if (mi->text.contains(QLatin1Char('\t'))) - w += 12; - if (maxpmw > 0) - w += maxpmw + 6; - if (checkable && maxpmw < 20) - w += 20 - maxpmw; - if (checkable || maxpmw > 0) - w += 2; - w += 12; - sz = QSize(w, h); - } - break; - case CT_ToolButton: - sz = QSize(sz.width() + 6, sz.height() + 5); - break; - case CT_ComboBox: - if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - int fw = cmb->frame ? proxy()->pixelMetric(PM_ComboBoxFrameWidth, opt) * 2 : 0; - const int textMargins = 2*(proxy()->pixelMetric(PM_FocusFrameHMargin) + 1); - // QItemDelegate::sizeHint expands the textMargins two times, thus the 2*textMargins... - int other = qMax(23, 2*textMargins + proxy()->pixelMetric(QStyle::PM_ScrollBarExtent, opt)); - sz = QSize(sz.width() + fw + other, sz.height() + fw); - } - break; - case CT_HeaderSection: - if (const QStyleOptionHeader *hdr = qstyleoption_cast<const QStyleOptionHeader *>(opt)) { - bool nullIcon = hdr->icon.isNull(); - int margin = proxy()->pixelMetric(QStyle::PM_HeaderMargin, hdr); - int iconSize = nullIcon ? 0 : proxy()->pixelMetric(QStyle::PM_SmallIconSize, hdr); - QSize txt = hdr->fontMetrics.size(0, hdr->text); - sz.setHeight(margin + qMax(iconSize, txt.height()) + margin); - sz.setWidth((nullIcon ? 0 : margin) + iconSize - + (hdr->text.isNull() ? 0 : margin) + txt.width() + margin); - if (hdr->sortIndicator != QStyleOptionHeader::None) { - int margin = proxy()->pixelMetric(QStyle::PM_HeaderMargin, hdr); - if (hdr->orientation == Qt::Horizontal) - sz.rwidth() += sz.height() + margin; - else - sz.rheight() += sz.width() + margin; - } - } - break; - case CT_TabWidget: - sz += QSize(4, 4); - break; - case CT_LineEdit: - if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - const int borderSize = 2 * f->lineWidth; - sz += QSize(borderSize, borderSize); - const int minSize = 10; - if (sz.width() < minSize) - sz.rwidth() = minSize; - if (sz.height() < minSize) - sz.rheight() = minSize; - } - break; - case CT_GroupBox: - if (const QStyleOptionGroupBox *styleOpt = qstyleoption_cast<const QStyleOptionGroupBox *>(opt)) { - if (sz.isEmpty()) - sz = QSize(20, 20); - sz += QSize(styleOpt->features.testFlag(QStyleOptionFrame::Flat) ? 0 : 16, 0); - } - break; - case CT_MdiControls: - if (const QStyleOptionComplex *styleOpt = qstyleoption_cast<const QStyleOptionComplex *>(opt)) { - const int buttonSize = proxy()->pixelMetric(PM_TitleBarButtonSize, styleOpt); - int width = 1; - if (styleOpt->subControls & SC_MdiMinButton) - width += buttonSize + 1; - if (styleOpt->subControls & SC_MdiNormalButton) - width += buttonSize + 1; - if (styleOpt->subControls & SC_MdiCloseButton) - width += buttonSize + 1; - sz = QSize(width, buttonSize); - } else { - const int buttonSize = proxy()->pixelMetric(PM_TitleBarButtonSize, opt); - sz = QSize(1 + 3 * (buttonSize + 1), buttonSize); - } - break; - case CT_ItemViewItem: - if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) { - QRect decorationRect, displayRect, checkRect; - d->viewItemLayout(vopt, &checkRect, &decorationRect, &displayRect, true); - sz = (decorationRect|displayRect|checkRect).size(); - if (decorationRect.isValid() && sz.height() == decorationRect.height()) - sz.rheight() += 2; // Prevent icons from overlapping. - } - break; - case CT_SpinBox: - if (const QStyleOptionSpinBox *vopt = qstyleoption_cast<const QStyleOptionSpinBox *>(opt)) { - // Add button + frame widths - if (vopt->subControls == SC_SpinBoxFrame) { - const qreal dpi = QStyleHelper::dpi(opt); - const bool hasButtons = (vopt->buttonSymbols != QStyleOptionSpinBox::NoButtons); - const int buttonWidth = hasButtons ? qRound(QStyleHelper::dpiScaled(16, dpi)) : 0; - const int fw = vopt->frame ? proxy()->pixelMetric(PM_SpinBoxFrameWidth, vopt) : 0; - sz += QSize(buttonWidth + 2*fw, 1 + 2*fw); - } else { - const QSize buttonSize = proxy()->subControlRect(CC_SpinBox, vopt, SC_SpinBoxUp).size(); - const int upAndDownTogetherHeight = buttonSize.height() * 2; - sz += QSize(buttonSize.width(), upAndDownTogetherHeight); - } - } - break; - case CT_Slider: - if (const QStyleOptionSlider *option = qstyleoption_cast<const QStyleOptionSlider *>(opt)) - sz = subControlRect(QStyle::CC_Slider, option, QStyle::SC_SliderHandle).size(); - break; - case CT_Dial: - sz = QSize(20, 20); - break; - case CT_Frame: - if (const QStyleOptionFrame *option = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - const int ninePatchSplit = 1; - int w = qMax(10, (option->lineWidth * 2) + ninePatchSplit); - sz = QSize(w, w); - } - break; - case CT_ProgressBar: - if (sz.isNull()) { - // Special case: return minimum nine patch image size - sz = QSize(10, 10); - } - break; - case CT_ScrollBar: - case CT_MenuBar: - case CT_Menu: - case CT_MenuBarItem: - case CT_TabBarTab: - // just return the contentsSize for now - Q_FALLTHROUGH(); - default: - break; - } - return sz; -} - -QFont QCommonStyle::font(QStyle::ControlElement element, const QStyle::State state) const -{ - Q_UNUSED(element); - Q_UNUSED(state); - return QGuiApplication::font(); -} - -QMargins QCommonStyle::ninePatchMargins(QStyle::ControlElement /*ce*/, const QStyleOption * /*opt*/, const QSize &imageSize) const -{ - // By default, we just divide the image at the center - int w = imageSize.width() / 2; - int h = imageSize.height() / 2; - return QMargins(w, h, w, h); -} - -QMargins QCommonStyle::ninePatchMargins(QStyle::ComplexControl /*cc*/, const QStyleOptionComplex * /*opt*/, const QSize &imageSize) const -{ - // By default, we just divide the image at the center - int w = imageSize.width() / 2; - int h = imageSize.height() / 2; - return QMargins(w, h, w, h); -} - -int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, QStyleHintReturn *hret) const -{ - int ret = 0; - - switch (sh) { - case SH_Menu_KeyboardSearch: - ret = false; - break; - case SH_Slider_AbsoluteSetButtons: - ret = Qt::MiddleButton; - break; - case SH_Slider_PageSetButtons: - ret = Qt::LeftButton; - break; - case SH_ScrollBar_ContextMenu: - ret = true; - break; - case SH_GroupBox_TextLabelVerticalAlignment: - ret = Qt::AlignVCenter; - break; - case SH_GroupBox_TextLabelColor: - ret = opt ? int(opt->palette.color(QPalette::Text).rgba()) : 0; - break; - - case SH_ListViewExpand_SelectMouseType: - case SH_TabBar_SelectMouseType: - ret = QEvent::MouseButtonPress; - break; - - case SH_TabBar_Alignment: - ret = Qt::AlignLeft; - break; - - case SH_Header_ArrowAlignment: - ret = Qt::AlignRight | Qt::AlignVCenter; - break; - - case SH_TitleBar_AutoRaise: - ret = false; - break; - - case SH_Menu_SubMenuPopupDelay: - ret = 256; - break; - - case SH_Menu_SloppySubMenus: - ret = true; - break; - - case SH_Menu_SubMenuUniDirection: - ret = false; - break; - case SH_Menu_SubMenuUniDirectionFailCount: - ret = 1; - break; - case SH_Menu_SubMenuSloppySelectOtherActions: - ret = true; - break; - case SH_Menu_SubMenuSloppyCloseTimeout: - ret = 1000; - break; - case SH_Menu_SubMenuResetWhenReenteringParent: - ret = false; - break; - case SH_Menu_SubMenuDontStartSloppyOnLeave: - ret = false; - break; - - case SH_ProgressDialog_TextLabelAlignment: - ret = Qt::AlignCenter; - break; - - case SH_BlinkCursorWhenTextSelected: -#if defined(Q_OS_DARWIN) - ret = 0; -#else - ret = 1; -#endif - break; - - case SH_Table_GridLineColor: - if (opt) - ret = opt->palette.color(QPalette::Mid).rgba(); - else - ret = -1; - break; - case SH_LineEdit_PasswordCharacter: { - const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme(); - const QPlatformTheme::ThemeHint hintType = QPlatformTheme::PasswordMaskCharacter; - const QVariant hint = theme ? theme->themeHint(hintType) : QPlatformTheme::defaultThemeHint(hintType); - ret = hint.toChar().unicode(); - break; - } - case SH_LineEdit_PasswordMaskDelay: - ret = QGuiApplicationPrivate::platformTheme()->themeHint(QPlatformTheme::PasswordMaskDelay).toInt(); - break; - case SH_ToolBox_SelectedPageTitleBold: - ret = 1; - break; - - case SH_UnderlineShortcut: - ret = 1; - break; - - case SH_SpinBox_ClickAutoRepeatRate: - ret = 150; - break; - - case SH_SpinBox_ClickAutoRepeatThreshold: - ret = 500; - break; - - case SH_SpinBox_KeyPressAutoRepeatRate: - ret = 75; - break; - - case SH_Menu_SelectionWrap: - ret = true; - break; - - case SH_Menu_FillScreenWithScroll: - ret = true; - break; - - case SH_ToolTipLabel_Opacity: - ret = 255; - break; - - case SH_Button_FocusPolicy: - ret = Qt::StrongFocus; - break; - - case SH_MessageBox_UseBorderForButtonSpacing: - ret = 0; - break; - - case SH_ToolButton_PopupDelay: - ret = 600; - break; - - case SH_FocusFrame_Mask: - ret = 1; - break; - case SH_RubberBand_Mask: - if (const QStyleOptionRubberBand *rbOpt = qstyleoption_cast<const QStyleOptionRubberBand *>(opt)) { - ret = 0; - if (rbOpt->shape == QStyleOptionRubberBand::Rectangle) { - ret = true; - if(QStyleHintReturnMask *mask = qstyleoption_cast<QStyleHintReturnMask*>(hret)) { - mask->region = opt->rect; - int margin = proxy()->pixelMetric(PM_DefaultFrameWidth) * 2; - mask->region -= opt->rect.adjusted(margin, margin, -margin, -margin); - } - } - } - break; - case SH_SpinControls_DisableOnBounds: - ret = 1; - break; - - case SH_Dial_BackgroundRole: - ret = QPalette::Window; - break; - - case SH_ComboBox_LayoutDirection: - ret = opt ? opt->direction : Qt::LeftToRight; - break; - - case SH_ItemView_EllipsisLocation: - ret = Qt::AlignTrailing; - break; - - case SH_ItemView_ShowDecorationSelected: - ret = false; - break; - - case SH_ItemView_ActivateItemOnSingleClick: - ret = 0; - if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) - ret = theme->themeHint(QPlatformTheme::ItemViewActivateItemOnSingleClick).toBool() ? 1 : 0; - break; - case SH_TitleBar_ModifyNotification: - ret = true; - break; - case SH_ScrollBar_RollBetweenButtons: - ret = false; - break; - case SH_TabBar_ElideMode: - ret = Qt::ElideNone; - break; - case SH_DialogButtonLayout: - if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) - ret = theme->themeHint(QPlatformTheme::DialogButtonBoxLayout).toInt(); - break; - case SH_ComboBox_PopupFrameStyle: - ret = QStyleOptionFrame::StyledPanel | QStyleOptionFrame::Plain; - break; - case SH_MessageBox_TextInteractionFlags: - ret = Qt::LinksAccessibleByMouse; - break; - case SH_DialogButtonBox_ButtonsHaveIcons: - ret = 0; - if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) - ret = theme->themeHint(QPlatformTheme::DialogButtonBoxButtonsHaveIcons).toBool() ? 1 : 0; - break; - case SH_SpellCheckUnderlineStyle: - ret = QTextCharFormat::WaveUnderline; - break; - case SH_MessageBox_CenterButtons: - ret = true; - break; - case SH_ItemView_MovementWithoutUpdatingSelection: - ret = true; - break; - case SH_FocusFrame_AboveWidget: - ret = false; - break; - case SH_TabWidget_DefaultTabPosition: - ret = QStyleOptionTabBarBase::North; - break; - case SH_ToolBar_Movable: - ret = true; - break; - case SH_TextControl_FocusIndicatorTextCharFormat: - ret = true; - if (QStyleHintReturnVariant *vret = qstyleoption_cast<QStyleHintReturnVariant*>(hret)) { - QPen outline(opt->palette.color(QPalette::Text), 1, Qt::DotLine); - QTextCharFormat fmt; - fmt.setProperty(QTextFormat::OutlinePen, outline); - vret->variant = fmt; - } - break; - case SH_WizardStyle: - break; - case SH_FormLayoutWrapPolicy: - break; - case SH_FormLayoutFieldGrowthPolicy: - break; - case SH_FormLayoutFormAlignment: - ret = Qt::AlignLeft | Qt::AlignTop; - break; - case SH_FormLayoutLabelAlignment: - ret = Qt::AlignLeft; - break; - case SH_ItemView_ArrowKeysNavigateIntoChildren: - ret = false; - break; - case SH_ItemView_DrawDelegateFrame: - ret = 0; - break; - case SH_TabBar_CloseButtonPosition: - ret = QStyleOptionTabBarBase::RightSide; - break; - case SH_TabBar_ChangeCurrentDelay: - ret = 500; - break; - case SH_DockWidget_ButtonsHaveFrame: - ret = true; - break; - case SH_ToolButtonStyle: - ret = 0; - if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) - ret = theme->themeHint(QPlatformTheme::ToolButtonStyle).toInt(); - break; - case SH_RequestSoftwareInputPanel: - ret = RSIP_OnMouseClick; - break; - case SH_ScrollBar_Transient: - ret = false; - break; - case SH_Menu_SupportsSections: - ret = false; - break; - case SH_ToolTip_WakeUpDelay: - ret = 700; - break; - case SH_ToolTip_FallAsleepDelay: - ret = 2000; - break; - case SH_Widget_Animate: - ret = true; - break; - case SH_Splitter_OpaqueResize: - ret = true; - break; - case SH_ItemView_ScrollMode: - ret = QStyleOptionViewItem::ScrollPerItem; - break; - case SH_TitleBar_ShowToolTipsOnButtons: - ret = true; - break; - case SH_Widget_Animation_Duration: - ret = styleHint(SH_Widget_Animate, opt, hret) ? 200 : 0; - break; - case SH_ComboBox_AllowWheelScrolling: - ret = true; - break; - case SH_SpinBox_ButtonsInsideFrame: - ret = true; - break; - case SH_SpinBox_StepModifier: - ret = Qt::ControlModifier; - break; - default: - ret = 0; - break; - } - - return ret; -} - -#if QT_CONFIG(imageformat_xpm) -static QPixmap cachedPixmapFromXPM(const char * const *xpm) -{ - QPixmap result; - const QString tag = QString::asprintf("xpm:0x%p", static_cast<const void*>(xpm)); - if (!QPixmapCache::find(tag, &result)) { - result = QPixmap(xpm); - QPixmapCache::insert(tag, result); - } - return result; -} - -static inline QPixmap titleBarMenuCachedPixmapFromXPM() { return cachedPixmapFromXPM(qt_menu_xpm); } -#endif - -static inline QString clearText16IconPath() -{ - return QStringLiteral(":/qt-project.org/styles/commonstyle/images/cleartext-16.png"); -} - -#if defined(Q_OS_WIN) || QT_CONFIG(imageformat_png) -static QIcon clearTextIcon(bool rtl) -{ - const QString directionalThemeName = rtl - ? QStringLiteral("edit-clear-locationbar-ltr") : QStringLiteral("edit-clear-locationbar-rtl"); - if (QIcon::hasThemeIcon(directionalThemeName)) - return QIcon::fromTheme(directionalThemeName); - const QString themeName = QStringLiteral("edit-clear"); - if (QIcon::hasThemeIcon(themeName)) - return QIcon::fromTheme(themeName); - - QIcon icon; -#ifndef QT_NO_IMAGEFORMAT_PNG - QPixmap clearText16(clearText16IconPath()); - Q_ASSERT(!clearText16.size().isEmpty()); - icon.addPixmap(clearText16); - QPixmap clearText32(QStringLiteral(":/qt-project.org/styles/commonstyle/images/cleartext-32.png")); - Q_ASSERT(!clearText32.size().isEmpty()); - icon.addPixmap(clearText32); - clearText32.setDevicePixelRatio(2); // The 32x32 pixmap can also be used for 16x16/devicePixelRatio=2 - icon.addPixmap(clearText32); -#endif // !QT_NO_IMAGEFORMAT_PNG - return icon; -} -#endif - -QPixmap QCommonStyle::standardPixmap(StandardPixmap sp, const QStyleOption *option) const -{ - const bool rtl = (option && option->direction == Qt::RightToLeft) || (!option && QGuiApplication::isRightToLeft()); -#if QT_CONFIG(imageformat_png) - QPixmap pixmap; - - if (QGuiApplication::desktopSettingsAware() && !QIcon::themeName().isEmpty()) { - switch (sp) { - case SP_DialogYesButton: - case SP_DialogOkButton: - pixmap = QIcon::fromTheme(QLatin1String("dialog-ok")).pixmap(16); - break; - case SP_DialogApplyButton: - pixmap = QIcon::fromTheme(QLatin1String("dialog-ok-apply")).pixmap(16); - break; - case SP_DialogDiscardButton: - pixmap = QIcon::fromTheme(QLatin1String("edit-delete")).pixmap(16); - break; - case SP_DialogCloseButton: - pixmap = QIcon::fromTheme(QLatin1String("dialog-close")).pixmap(16); - break; - case SP_DirHomeIcon: - pixmap = QIcon::fromTheme(QLatin1String("user-home")).pixmap(16); - break; - case SP_MessageBoxInformation: - pixmap = QIcon::fromTheme(QLatin1String("messagebox_info")).pixmap(16); - break; - case SP_MessageBoxWarning: - pixmap = QIcon::fromTheme(QLatin1String("messagebox_warning")).pixmap(16); - break; - case SP_MessageBoxCritical: - pixmap = QIcon::fromTheme(QLatin1String("messagebox_critical")).pixmap(16); - break; - case SP_MessageBoxQuestion: - pixmap = QIcon::fromTheme(QLatin1String("help")).pixmap(16); - break; - case SP_DialogOpenButton: - case SP_DirOpenIcon: - pixmap = QIcon::fromTheme(QLatin1String("folder-open")).pixmap(16); - break; - case SP_FileIcon: - pixmap = QIcon::fromTheme(QLatin1String("text-x-generic"), - QIcon::fromTheme(QLatin1String("empty"))).pixmap(16); - break; - case SP_DirClosedIcon: - case SP_DirIcon: - pixmap = QIcon::fromTheme(QLatin1String("folder")).pixmap(16); - break; - case SP_DriveFDIcon: - pixmap = QIcon::fromTheme(QLatin1String("media-floppy"), - QIcon::fromTheme(QLatin1String("3floppy_unmount"))).pixmap(16); - break; - case SP_ComputerIcon: - pixmap = QIcon::fromTheme(QLatin1String("computer"), - QIcon::fromTheme(QLatin1String("system"))).pixmap(16); - break; - case SP_DesktopIcon: - pixmap = QIcon::fromTheme(QLatin1String("user-desktop"), - QIcon::fromTheme(QLatin1String("desktop"))).pixmap(16); - break; - case SP_TrashIcon: - pixmap = QIcon::fromTheme(QLatin1String("user-trash"), - QIcon::fromTheme(QLatin1String("trashcan_empty"))).pixmap(16); - break; - case SP_DriveCDIcon: - case SP_DriveDVDIcon: - pixmap = QIcon::fromTheme(QLatin1String("media-optical"), - QIcon::fromTheme(QLatin1String("cdrom_unmount"))).pixmap(16); - break; - case SP_DriveHDIcon: - pixmap = QIcon::fromTheme(QLatin1String("drive-harddisk"), - QIcon::fromTheme(QLatin1String("hdd_unmount"))).pixmap(16); - break; - case SP_FileDialogToParent: - pixmap = QIcon::fromTheme(QLatin1String("go-up"), - QIcon::fromTheme(QLatin1String("up"))).pixmap(16); - break; - case SP_FileDialogNewFolder: - pixmap = QIcon::fromTheme(QLatin1String("folder_new")).pixmap(16); - break; - case SP_ArrowUp: - pixmap = QIcon::fromTheme(QLatin1String("go-up"), - QIcon::fromTheme(QLatin1String("up"))).pixmap(16); - break; - case SP_ArrowDown: - pixmap = QIcon::fromTheme(QLatin1String("go-down"), - QIcon::fromTheme(QLatin1String("down"))).pixmap(16); - break; - case SP_ArrowRight: - pixmap = QIcon::fromTheme(QLatin1String("go-next"), - QIcon::fromTheme(QLatin1String("forward"))).pixmap(16); - break; - case SP_ArrowLeft: - pixmap = QIcon::fromTheme(QLatin1String("go-previous"), - QIcon::fromTheme(QLatin1String("back"))).pixmap(16); - break; - case SP_FileDialogDetailedView: - pixmap = QIcon::fromTheme(QLatin1String("view_detailed")).pixmap(16); - break; - case SP_FileDialogListView: - pixmap = QIcon::fromTheme(QLatin1String("view_icon")).pixmap(16); - break; - case SP_BrowserReload: - pixmap = QIcon::fromTheme(QLatin1String("reload")).pixmap(16); - break; - case SP_BrowserStop: - pixmap = QIcon::fromTheme(QLatin1String("process-stop")).pixmap(16); - break; - case SP_MediaPlay: - pixmap = QIcon::fromTheme(QLatin1String("media-playback-start")).pixmap(16); - break; - case SP_MediaPause: - pixmap = QIcon::fromTheme(QLatin1String("media-playback-pause")).pixmap(16); - break; - case SP_MediaStop: - pixmap = QIcon::fromTheme(QLatin1String("media-playback-stop")).pixmap(16); - break; - case SP_MediaSeekForward: - pixmap = QIcon::fromTheme(QLatin1String("media-seek-forward")).pixmap(16); - break; - case SP_MediaSeekBackward: - pixmap = QIcon::fromTheme(QLatin1String("media-seek-backward")).pixmap(16); - break; - case SP_MediaSkipForward: - pixmap = QIcon::fromTheme(QLatin1String("media-skip-forward")).pixmap(16); - break; - case SP_MediaSkipBackward: - pixmap = QIcon::fromTheme(QLatin1String("media-skip-backward")).pixmap(16); - break; - case SP_DialogResetButton: - pixmap = QIcon::fromTheme(QLatin1String("edit-clear")).pixmap(24); - break; - case SP_DialogHelpButton: - pixmap = QIcon::fromTheme(QLatin1String("help-contents")).pixmap(24); - break; - case SP_DialogNoButton: - case SP_DialogCancelButton: - pixmap = QIcon::fromTheme(QLatin1String("dialog-cancel"), - QIcon::fromTheme(QLatin1String("process-stop"))).pixmap(24); - break; - case SP_DialogSaveButton: - pixmap = QIcon::fromTheme(QLatin1String("document-save")).pixmap(24); - break; - case SP_FileLinkIcon: - pixmap = QIcon::fromTheme(QLatin1String("emblem-symbolic-link")).pixmap(16); - if (!pixmap.isNull()) { - QPixmap fileIcon = QIcon::fromTheme(QLatin1String("text-x-generic")).pixmap(16); - if (fileIcon.isNull()) - fileIcon = QIcon::fromTheme(QLatin1String("empty")).pixmap(16); - if (!fileIcon.isNull()) { - QPainter painter(&fileIcon); - painter.drawPixmap(0, 0, 16, 16, pixmap); - return fileIcon; - } - } - break; - case SP_DirLinkIcon: - pixmap = QIcon::fromTheme(QLatin1String("emblem-symbolic-link")).pixmap(16); - if (!pixmap.isNull()) { - QPixmap dirIcon = QIcon::fromTheme(QLatin1String("folder")).pixmap(16); - if (!dirIcon.isNull()) { - QPainter painter(&dirIcon); - painter.drawPixmap(0, 0, 16, 16, pixmap); - return dirIcon; - } - } - break; - case SP_LineEditClearButton: - pixmap = clearTextIcon(rtl).pixmap(16); - break; - default: - break; - } - } - - if (!pixmap.isNull()) - return pixmap; -#endif // QT_CONFIG(imageformat_png) - switch (sp) { -#ifndef QT_NO_IMAGEFORMAT_XPM - case SP_ToolBarHorizontalExtensionButton: - if (rtl) { - QImage im(tb_extension_arrow_h_xpm); - im = im.convertToFormat(QImage::Format_ARGB32).mirrored(true, false); - return QPixmap::fromImage(im); - } - return cachedPixmapFromXPM(tb_extension_arrow_h_xpm); - case SP_ToolBarVerticalExtensionButton: - return cachedPixmapFromXPM(tb_extension_arrow_v_xpm); - case SP_FileDialogStart: - return cachedPixmapFromXPM(filedialog_start_xpm); - case SP_FileDialogEnd: - return cachedPixmapFromXPM(filedialog_end_xpm); -#endif -#ifndef QT_NO_IMAGEFORMAT_PNG - case SP_CommandLink: - case SP_ArrowForward: - if (rtl) - return proxy()->standardPixmap(SP_ArrowLeft, option); - return proxy()->standardPixmap(SP_ArrowRight, option); - case SP_ArrowBack: - if (rtl) - return proxy()->standardPixmap(SP_ArrowRight, option); - return proxy()->standardPixmap(SP_ArrowLeft, option); - case SP_ArrowLeft: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/left-16.png")); - case SP_ArrowRight: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/right-16.png")); - case SP_ArrowUp: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/up-16.png")); - case SP_ArrowDown: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/down-16.png")); - case SP_FileDialogToParent: - return proxy()->standardPixmap(SP_ArrowUp, option); - case SP_FileDialogNewFolder: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/newdirectory-16.png")); - case SP_FileDialogDetailedView: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/viewdetailed-16.png")); - case SP_FileDialogInfoView: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/fileinfo-16.png")); - case SP_FileDialogContentsView: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/filecontents-16.png")); - case SP_FileDialogListView: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/viewlist-16.png")); - case SP_FileDialogBack: - return proxy()->standardPixmap(SP_ArrowBack, option); - case SP_DriveHDIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/harddrive-16.png")); - case SP_TrashIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/trash-16.png")); - case SP_DriveFDIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/floppy-16.png")); - case SP_DriveNetIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/networkdrive-16.png")); - case SP_DesktopIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/desktop-16.png")); - case SP_ComputerIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/computer-16.png")); - case SP_DriveCDIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/cdr-16.png")); - case SP_DriveDVDIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/dvd-16.png")); - case SP_DirHomeIcon: - case SP_DirOpenIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/diropen-16.png")); - case SP_DirIcon: - case SP_DirClosedIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/dirclosed-16.png")); - case SP_DirLinkIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/dirlink-16.png")); - case SP_FileIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/file-16.png")); - case SP_FileLinkIcon: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/filelink-16.png")); - case SP_DialogOkButton: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-ok-16.png")); - case SP_DialogCancelButton: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-cancel-16.png")); - case SP_DialogHelpButton: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-help-16.png")); - case SP_DialogOpenButton: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-open-16.png")); - case SP_DialogSaveButton: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-save-16.png")); - case SP_DialogCloseButton: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-close-16.png")); - case SP_DialogApplyButton: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-apply-16.png")); - case SP_DialogResetButton: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-clear-16.png")); - case SP_DialogDiscardButton: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-delete-16.png")); - case SP_DialogYesButton: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-yes-16.png")); - case SP_DialogNoButton: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-no-16.png")); - case SP_BrowserReload: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/refresh-24.png")); - case SP_BrowserStop: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/stop-24.png")); - case SP_MediaPlay: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-play-32.png")); - case SP_MediaPause: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-pause-32.png")); - case SP_MediaStop: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-stop-32.png")); - case SP_MediaSeekForward: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-seek-forward-32.png")); - case SP_MediaSeekBackward: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-seek-backward-32.png")); - case SP_MediaSkipForward: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-skip-forward-32.png")); - case SP_MediaSkipBackward: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-skip-backward-32.png")); - case SP_MediaVolume: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-volume-16.png")); - case SP_MediaVolumeMuted: - return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-volume-muted-16.png")); - case SP_LineEditClearButton: - return QPixmap(clearText16IconPath()); -#endif // QT_NO_IMAGEFORMAT_PNG - default: - break; - } - -#ifndef QT_NO_IMAGEFORMAT_XPM - switch (sp) { - case SP_TitleBarMenuButton: - return titleBarMenuCachedPixmapFromXPM(); - case SP_TitleBarShadeButton: - return cachedPixmapFromXPM(qt_shade_xpm); - case SP_TitleBarUnshadeButton: - return cachedPixmapFromXPM(qt_unshade_xpm); - case SP_TitleBarNormalButton: - return cachedPixmapFromXPM(qt_normalizeup_xpm); - case SP_TitleBarMinButton: - return cachedPixmapFromXPM(qt_minimize_xpm); - case SP_TitleBarMaxButton: - return cachedPixmapFromXPM(qt_maximize_xpm); - case SP_TitleBarCloseButton: - return cachedPixmapFromXPM(qt_close_xpm); - case SP_TitleBarContextHelpButton: - return cachedPixmapFromXPM(qt_help_xpm); - case SP_DockWidgetCloseButton: - return cachedPixmapFromXPM(dock_widget_close_xpm); - case SP_MessageBoxInformation: - return cachedPixmapFromXPM(information_xpm); - case SP_MessageBoxWarning: - return cachedPixmapFromXPM(warning_xpm); - case SP_MessageBoxCritical: - return cachedPixmapFromXPM(critical_xpm); - case SP_MessageBoxQuestion: - return cachedPixmapFromXPM(question_xpm); - default: - break; - } -#endif //QT_NO_IMAGEFORMAT_XPM - -#if !QT_CONFIG(imageformat_png) && !QT_CONFIG(imageformat_xpm) - Q_UNUSED(rtl); -#endif - - return QPixmap(); -} - -#if QT_CONFIG(imageformat_png) -static inline QString iconResourcePrefix() { return QStringLiteral(":/qt-project.org/styles/commonstyle/images/"); } -static inline QString iconPngSuffix() { return QStringLiteral(".png"); } - -static void addIconFiles(const QString &prefix, const int sizes[], size_t count, QIcon &icon) -{ - for (size_t i = 0; i < count; ++i) - icon.addFile(prefix + QString::number(sizes[i]) + iconPngSuffix()); -} - -static const int dockTitleIconSizes[] = {10, 16, 20, 32, 48, 64}; -static const int titleBarSizes[] = {16, 32, 48}; -static const int toolBarExtHSizes[] = {8, 16, 32}; -static const int toolBarExtVSizes[] = {5, 10, 20}; -#endif // imageformat_png - -/*! - \internal -*/ -QIcon QCommonStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption *option) const -{ - QIcon icon; - const bool rtl = (option && option->direction == Qt::RightToLeft) || (!option && QGuiApplication::isRightToLeft()); - -#ifdef Q_OS_WIN - switch (standardIcon) { - case SP_DriveCDIcon: - case SP_DriveDVDIcon: - case SP_DriveNetIcon: - case SP_DriveHDIcon: - case SP_DriveFDIcon: - case SP_FileIcon: - case SP_FileLinkIcon: - case SP_DesktopIcon: - case SP_ComputerIcon: - case SP_VistaShield: - case SP_MessageBoxInformation: - case SP_MessageBoxWarning: - case SP_MessageBoxCritical: - case SP_MessageBoxQuestion: - if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { - QPlatformTheme::StandardPixmap sp = static_cast<QPlatformTheme::StandardPixmap>(standardIcon); - for (int size = 16 ; size <= 32 ; size += 16) { - QPixmap pixmap = theme->standardPixmap(sp, QSizeF(size, size)); - icon.addPixmap(pixmap, QIcon::Normal); - } - } - break; - case SP_DirIcon: - case SP_DirLinkIcon: - if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { - QPlatformTheme::StandardPixmap spOff = static_cast<QPlatformTheme::StandardPixmap>(standardIcon); - QPlatformTheme::StandardPixmap spOn = standardIcon == SP_DirIcon ? QPlatformTheme::DirOpenIcon : - QPlatformTheme::DirLinkOpenIcon; - for (int size = 16 ; size <= 32 ; size += 16) { - QSizeF pixSize(size, size); - QPixmap pixmap = theme->standardPixmap(spOff, pixSize); - icon.addPixmap(pixmap, QIcon::Normal, QIcon::Off); - pixmap = theme->standardPixmap(spOn, pixSize); - icon.addPixmap(pixmap, QIcon::Normal, QIcon::On); - } - } - break; - case SP_LineEditClearButton: - icon = clearTextIcon(rtl); - break; - default: - break; - } - if (!icon.isNull()) - return icon; - -#endif - - if (QGuiApplication::desktopSettingsAware() && !QIcon::themeName().isEmpty()) { - switch (standardIcon) { - case SP_DirHomeIcon: - icon = QIcon::fromTheme(QLatin1String("user-home")); - break; - case SP_MessageBoxInformation: - icon = QIcon::fromTheme(QLatin1String("dialog-information")); - break; - case SP_MessageBoxWarning: - icon = QIcon::fromTheme(QLatin1String("dialog-warning")); - break; - case SP_MessageBoxCritical: - icon = QIcon::fromTheme(QLatin1String("dialog-error")); - break; - case SP_MessageBoxQuestion: - icon = QIcon::fromTheme(QLatin1String("dialog-question")); - break; - case SP_DialogOpenButton: - case SP_DirOpenIcon: - icon = QIcon::fromTheme(QLatin1String("folder-open")); - break; - case SP_DialogSaveButton: - icon = QIcon::fromTheme(QLatin1String("document-save")); - break; - case SP_DialogApplyButton: - icon = QIcon::fromTheme(QLatin1String("dialog-ok-apply")); - break; - case SP_DialogYesButton: - case SP_DialogOkButton: - icon = QIcon::fromTheme(QLatin1String("dialog-ok")); - break; - case SP_DialogDiscardButton: - icon = QIcon::fromTheme(QLatin1String("edit-delete")); - break; - case SP_DialogResetButton: - icon = QIcon::fromTheme(QLatin1String("edit-clear")); - break; - case SP_DialogHelpButton: - icon = QIcon::fromTheme(QLatin1String("help-contents")); - break; - case SP_FileIcon: - icon = QIcon::fromTheme(QLatin1String("text-x-generic")); - break; - case SP_DirClosedIcon: - case SP_DirIcon: - icon = QIcon::fromTheme(QLatin1String("folder")); - break; - case SP_DriveFDIcon: - icon = QIcon::fromTheme(QLatin1String("floppy_unmount")); - break; - case SP_ComputerIcon: - icon = QIcon::fromTheme(QLatin1String("computer"), - QIcon::fromTheme(QLatin1String("system"))); - break; - case SP_DesktopIcon: - icon = QIcon::fromTheme(QLatin1String("user-desktop")); - break; - case SP_TrashIcon: - icon = QIcon::fromTheme(QLatin1String("user-trash")); - break; - case SP_DriveCDIcon: - case SP_DriveDVDIcon: - icon = QIcon::fromTheme(QLatin1String("media-optical")); - break; - case SP_DriveHDIcon: - icon = QIcon::fromTheme(QLatin1String("drive-harddisk")); - break; - case SP_FileDialogToParent: - icon = QIcon::fromTheme(QLatin1String("go-up")); - break; - case SP_FileDialogNewFolder: - icon = QIcon::fromTheme(QLatin1String("folder-new")); - break; - case SP_ArrowUp: - icon = QIcon::fromTheme(QLatin1String("go-up")); - break; - case SP_ArrowDown: - icon = QIcon::fromTheme(QLatin1String("go-down")); - break; - case SP_ArrowRight: - icon = QIcon::fromTheme(QLatin1String("go-next")); - break; - case SP_ArrowLeft: - icon = QIcon::fromTheme(QLatin1String("go-previous")); - break; - case SP_DialogNoButton: - case SP_DialogCancelButton: - icon = QIcon::fromTheme(QLatin1String("dialog-cancel"), - QIcon::fromTheme(QLatin1String("process-stop"))); - break; - case SP_DialogCloseButton: - icon = QIcon::fromTheme(QLatin1String("window-close")); - break; - case SP_FileDialogDetailedView: - icon = QIcon::fromTheme(QLatin1String("view-list-details")); - break; - case SP_FileDialogListView: - icon = QIcon::fromTheme(QLatin1String("view-list-icons")); - break; - case SP_BrowserReload: - icon = QIcon::fromTheme(QLatin1String("view-refresh")); - break; - case SP_BrowserStop: - icon = QIcon::fromTheme(QLatin1String("process-stop")); - break; - case SP_MediaPlay: - icon = QIcon::fromTheme(QLatin1String("media-playback-start")); - break; - case SP_MediaPause: - icon = QIcon::fromTheme(QLatin1String("media-playback-pause")); - break; - case SP_MediaStop: - icon = QIcon::fromTheme(QLatin1String("media-playback-stop")); - break; - case SP_MediaSeekForward: - icon = QIcon::fromTheme(QLatin1String("media-seek-forward")); - break; - case SP_MediaSeekBackward: - icon = QIcon::fromTheme(QLatin1String("media-seek-backward")); - break; - case SP_MediaSkipForward: - icon = QIcon::fromTheme(QLatin1String("media-skip-forward")); - break; - case SP_MediaSkipBackward: - icon = QIcon::fromTheme(QLatin1String("media-skip-backward")); - break; - case SP_MediaVolume: - icon = QIcon::fromTheme(QLatin1String("audio-volume-medium")); - break; - case SP_MediaVolumeMuted: - icon = QIcon::fromTheme(QLatin1String("audio-volume-muted")); - break; - case SP_ArrowForward: - if (rtl) - return QCommonStyle::standardIcon(SP_ArrowLeft, option); - return QCommonStyle::standardIcon(SP_ArrowRight, option); - case SP_ArrowBack: - if (rtl) - return QCommonStyle::standardIcon(SP_ArrowRight, option); - return QCommonStyle::standardIcon(SP_ArrowLeft, option); - case SP_FileLinkIcon: - { - QIcon linkIcon = QIcon::fromTheme(QLatin1String("emblem-symbolic-link")); - if (!linkIcon.isNull()) { - QIcon baseIcon = QCommonStyle::standardIcon(SP_FileIcon, option); - const QList<QSize> sizes = baseIcon.availableSizes(QIcon::Normal, QIcon::Off); - const qreal devicePixelRatio = option ? dpr(option->window) : 1.; - for (int i = 0 ; i < sizes.size() ; ++i) { - int size = sizes[i].width(); - QPixmap basePixmap = baseIcon.pixmap(QSize(size, size), devicePixelRatio); - QPixmap linkPixmap = linkIcon.pixmap(QSize(size / 2, size / 2), devicePixelRatio); - QPainter painter(&basePixmap); - painter.drawPixmap(size/2, size/2, linkPixmap); - icon.addPixmap(basePixmap); - } - } - } - break; - case SP_DirLinkIcon: - { - QIcon linkIcon = QIcon::fromTheme(QLatin1String("emblem-symbolic-link")); - if (!linkIcon.isNull()) { - QIcon baseIcon = QCommonStyle::standardIcon(SP_DirIcon, option); - const QList<QSize> sizes = baseIcon.availableSizes(QIcon::Normal, QIcon::Off); - const qreal devicePixelRatio = option ? dpr(option->window) : 1.; - for (int i = 0 ; i < sizes.size() ; ++i) { - int size = sizes[i].width(); - QPixmap basePixmap = baseIcon.pixmap(QSize(size, size), devicePixelRatio); - QPixmap linkPixmap = linkIcon.pixmap(QSize(size / 2, size / 2), devicePixelRatio); - QPainter painter(&basePixmap); - painter.drawPixmap(size/2, size/2, linkPixmap); - icon.addPixmap(basePixmap); - } - } - } - break; - default: - break; - } - } // if (QGuiApplication::desktopSettingsAware() && !QIcon::themeName().isEmpty()) - - if (!icon.isNull()) - return icon; - -#if defined(Q_OS_MAC) - if (QGuiApplication::desktopSettingsAware()) { - switch (standardIcon) { - case SP_DirIcon: { - // A rather special case - QIcon closeIcon = QCommonStyle::standardIcon(SP_DirClosedIcon, option); - QIcon openIcon = QCommonStyle::standardIcon(SP_DirOpenIcon, option); - closeIcon.addPixmap(openIcon.pixmap(16, 16), QIcon::Normal, QIcon::On); - closeIcon.addPixmap(openIcon.pixmap(32, 32), QIcon::Normal, QIcon::On); - closeIcon.addPixmap(openIcon.pixmap(64, 64), QIcon::Normal, QIcon::On); - closeIcon.addPixmap(openIcon.pixmap(128, 128), QIcon::Normal, QIcon::On); - return closeIcon; - } - - case SP_TitleBarNormalButton: - case SP_TitleBarCloseButton: { - QIcon titleBarIcon; - if (standardIcon == SP_TitleBarCloseButton) { - titleBarIcon.addFile(QLatin1String(":/qt-project.org/styles/macstyle/images/closedock-16.png")); - titleBarIcon.addFile(QLatin1String(":/qt-project.org/styles/macstyle/images/closedock-down-16.png"), QSize(16, 16), QIcon::Normal, QIcon::On); - } else { - titleBarIcon.addFile(QLatin1String(":/qt-project.org/styles/macstyle/images/dockdock-16.png")); - titleBarIcon.addFile(QLatin1String(":/qt-project.org/styles/macstyle/images/dockdock-down-16.png"), QSize(16, 16), QIcon::Normal, QIcon::On); - } - return titleBarIcon; - } - - case SP_MessageBoxQuestion: - case SP_MessageBoxInformation: - case SP_MessageBoxWarning: - case SP_MessageBoxCritical: - case SP_DesktopIcon: - case SP_TrashIcon: - case SP_ComputerIcon: - case SP_DriveFDIcon: - case SP_DriveHDIcon: - case SP_DriveCDIcon: - case SP_DriveDVDIcon: - case SP_DriveNetIcon: - case SP_DirOpenIcon: - case SP_DirClosedIcon: - case SP_DirLinkIcon: - case SP_FileLinkIcon: - case SP_FileIcon: - if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { - QPlatformTheme::StandardPixmap sp = static_cast<QPlatformTheme::StandardPixmap>(standardIcon); - QIcon retIcon; - const QList<QSize> sizes = theme->themeHint(QPlatformTheme::IconPixmapSizes).value<QList<QSize> >(); - for (const QSize &size : sizes) { - QPixmap mainIcon; - const QString cacheKey = QLatin1String("qt_mac_constructQIconFromIconRef") + QString::number(standardIcon) + QString::number(size.width()); - if (standardIcon >= QStyle::SP_CustomBase) { - mainIcon = theme->standardPixmap(sp, QSizeF(size)); - } else if (QPixmapCache::find(cacheKey, &mainIcon) == false) { - mainIcon = theme->standardPixmap(sp, QSizeF(size)); - QPixmapCache::insert(cacheKey, mainIcon); - } - - retIcon.addPixmap(mainIcon); - } - if (!retIcon.isNull()) - return retIcon; - } - - default: - break; - } - } // if (QGuiApplication::desktopSettingsAware()) -#endif // Q_OS_MAC - - switch (standardIcon) { -#ifndef QT_NO_IMAGEFORMAT_PNG - case SP_TitleBarMinButton: - addIconFiles(iconResourcePrefix() + QStringLiteral("titlebar-min-"), - titleBarSizes, sizeof(titleBarSizes)/sizeof(titleBarSizes[0]), icon); - break; - case SP_TitleBarMaxButton: - addIconFiles(iconResourcePrefix() + QStringLiteral("titlebar-max-"), - titleBarSizes, sizeof(titleBarSizes)/sizeof(titleBarSizes[0]), icon); - break; - case SP_TitleBarShadeButton: - addIconFiles(iconResourcePrefix() + QStringLiteral("titlebar-shade-"), - titleBarSizes, sizeof(titleBarSizes)/sizeof(titleBarSizes[0]), icon); - - break; - case SP_TitleBarUnshadeButton: - addIconFiles(iconResourcePrefix() + QStringLiteral("titlebar-unshade-"), - titleBarSizes, sizeof(titleBarSizes)/sizeof(titleBarSizes[0]), icon); - break; - case SP_TitleBarContextHelpButton: - addIconFiles(iconResourcePrefix() + QStringLiteral("titlebar-contexthelp-"), - titleBarSizes, sizeof(titleBarSizes)/sizeof(titleBarSizes[0]), icon); - break; - case SP_FileDialogNewFolder: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/newdirectory-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/newdirectory-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/newdirectory-128.png"), QSize(128, 128)); - break; - case SP_FileDialogBack: - return QCommonStyle::standardIcon(SP_ArrowBack, option); - case SP_FileDialogToParent: - return QCommonStyle::standardIcon(SP_ArrowUp, option); - case SP_FileDialogDetailedView: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/viewdetailed-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/viewdetailed-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/viewdetailed-128.png"), QSize(128, 128)); - break; - case SP_FileDialogInfoView: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/fileinfo-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/fileinfo-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/fileinfo-128.png"), QSize(128, 128)); - break; - case SP_FileDialogContentsView: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/filecontents-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/filecontents-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/filecontents-128.png"), QSize(128, 128)); - break; - case SP_FileDialogListView: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/viewlist-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/viewlist-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/viewlist-128.png"), QSize(128, 128)); - break; - case SP_DialogOkButton: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-ok-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-ok-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-ok-128.png"), QSize(128, 128)); - break; - case SP_DialogCancelButton: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-cancel-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-cancel-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-cancel-128.png"), QSize(128, 128)); - break; - case SP_DialogHelpButton: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-help-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-help-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-help-128.png"), QSize(128, 128)); - break; - case SP_DialogOpenButton: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-open-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-open-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-open-128.png"), QSize(128, 128)); - break; - case SP_DialogSaveButton: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-save-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-save-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-save-128.png"), QSize(128, 128)); - break; - case SP_DialogCloseButton: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-close-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-close-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-close-128.png"), QSize(128, 128)); - break; - case SP_DialogApplyButton: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-apply-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-apply-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-apply-128.png"), QSize(128, 128)); - break; - case SP_DialogResetButton: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-clear-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-clear-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-clear-128.png"), QSize(128, 128)); - break; - case SP_DialogDiscardButton: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-delete-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-delete-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-delete-128.png"), QSize(128, 128)); - break; - case SP_DialogYesButton: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-yes-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-yes-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-yes-128.png"), QSize(128, 128)); - break; - case SP_DialogNoButton: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-no-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-no-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/standardbutton-no-128.png"), QSize(128, 128)); - break; - case SP_ArrowForward: - if (rtl) - return QCommonStyle::standardIcon(SP_ArrowLeft, option); - return QCommonStyle::standardIcon(SP_ArrowRight, option); - case SP_ArrowBack: - if (rtl) - return QCommonStyle::standardIcon(SP_ArrowRight, option); - return QCommonStyle::standardIcon(SP_ArrowLeft, option); - case SP_ArrowLeft: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/left-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/left-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/left-128.png"), QSize(128, 128)); - break; - case SP_ArrowRight: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/right-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/right-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/right-128.png"), QSize(128, 128)); - break; - case SP_ArrowUp: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/up-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/up-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/up-128.png"), QSize(128, 128)); - break; - case SP_ArrowDown: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/down-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/down-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/down-128.png"), QSize(128, 128)); - break; - case SP_DirHomeIcon: - case SP_DirIcon: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/dirclosed-16.png"), - QSize(), QIcon::Normal, QIcon::Off); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/diropen-16.png"), - QSize(), QIcon::Normal, QIcon::On); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/dirclosed-32.png"), - QSize(32, 32), QIcon::Normal, QIcon::Off); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/diropen-32.png"), - QSize(32, 32), QIcon::Normal, QIcon::On); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/dirclosed-128.png"), - QSize(128, 128), QIcon::Normal, QIcon::Off); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/diropen-128.png"), - QSize(128, 128), QIcon::Normal, QIcon::On); - break; - case SP_DriveCDIcon: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/cdr-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/cdr-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/cdr-128.png"), QSize(128, 128)); - break; - case SP_DriveDVDIcon: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/dvd-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/dvd-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/dvd-128.png"), QSize(128, 128)); - break; - case SP_FileIcon: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/file-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/file-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/file-128.png"), QSize(128, 128)); - break; - case SP_FileLinkIcon: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/filelink-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/filelink-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/filelink-128.png"), QSize(128, 128)); - break; - case SP_TrashIcon: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/trash-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/trash-32.png"), QSize(32, 32)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/trash-128.png"), QSize(128, 128)); - break; - case SP_BrowserReload: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/refresh-24.png"), QSize(24, 24)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/refresh-32.png"), QSize(32, 32)); - break; - case SP_BrowserStop: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/stop-24.png"), QSize(24, 24)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/stop-32.png"), QSize(32, 32)); - break; - case SP_MediaPlay: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-play-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-play-32.png"), QSize(32, 32)); - break; - case SP_MediaPause: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-pause-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-pause-32.png"), QSize(32, 32)); - break; - case SP_MediaStop: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-stop-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-stop-32.png"), QSize(32, 32)); - break; - case SP_MediaSeekForward: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-seek-forward-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-seek-forward-32.png"), QSize(32, 32)); - break; - case SP_MediaSeekBackward: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-seek-backward-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-seek-backward-32.png"), QSize(32, 32)); - break; - case SP_MediaSkipForward: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-skip-forward-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-skip-forward-32.png"), QSize(32, 32)); - break; - case SP_MediaSkipBackward: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-skip-backward-16.png"), QSize(16, 16)); - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-skip-backward-32.png"), QSize(32, 32)); - break; - case SP_MediaVolume: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-volume-16.png"), QSize(16, 16)); - break; - case SP_MediaVolumeMuted: - icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-volume-muted-16.png"), QSize(16, 16)); - break; - case SP_TitleBarCloseButton: - addIconFiles(iconResourcePrefix() + QStringLiteral("closedock-"), - dockTitleIconSizes, sizeof(dockTitleIconSizes)/sizeof(dockTitleIconSizes[0]), icon); - break; - case SP_TitleBarMenuButton: -# ifndef QT_NO_IMAGEFORMAT_XPM - icon.addPixmap(titleBarMenuCachedPixmapFromXPM()); -# endif - icon.addFile(QLatin1String(":/qt-project.org/qmessagebox/images/qtlogo-64.png")); - break; - case SP_TitleBarNormalButton: - addIconFiles(iconResourcePrefix() + QStringLiteral("normalizedockup-"), - dockTitleIconSizes, sizeof(dockTitleIconSizes)/sizeof(dockTitleIconSizes[0]), icon); - break; - case SP_ToolBarHorizontalExtensionButton: { - QString prefix = iconResourcePrefix() + QStringLiteral("toolbar-ext-h-"); - if (rtl) - prefix += QStringLiteral("rtl-"); - addIconFiles(prefix, toolBarExtHSizes, sizeof(toolBarExtHSizes)/sizeof(toolBarExtHSizes[0]), icon); - } - break; - case SP_ToolBarVerticalExtensionButton: - addIconFiles(iconResourcePrefix() + QStringLiteral("toolbar-ext-v-"), - toolBarExtVSizes, sizeof(toolBarExtVSizes)/sizeof(toolBarExtVSizes[0]), icon); - break; -#endif // QT_NO_IMAGEFORMAT_PNG - default: - icon.addPixmap(proxy()->standardPixmap(standardIcon, option)); - break; - } - return icon; -} - -static inline uint qt_intensity(uint r, uint g, uint b) -{ - // 30% red, 59% green, 11% blue - return (77 * r + 150 * g + 28 * b) / 255; -} - -/*! \reimp */ -QPixmap QCommonStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, - const QStyleOption *opt) const -{ - switch (iconMode) { - case QIcon::Disabled: { - QImage im = pixmap.toImage().convertToFormat(QImage::Format_ARGB32); - - // Create a colortable based on the background (black -> bg -> white) - QColor bg = opt->palette.color(QPalette::Disabled, QPalette::Window); - int red = bg.red(); - int green = bg.green(); - int blue = bg.blue(); - uchar reds[256], greens[256], blues[256]; - for (int i=0; i<128; ++i) { - reds[i] = uchar((red * (i<<1)) >> 8); - greens[i] = uchar((green * (i<<1)) >> 8); - blues[i] = uchar((blue * (i<<1)) >> 8); - } - for (int i=0; i<128; ++i) { - reds[i+128] = uchar(qMin(red + (i << 1), 255)); - greens[i+128] = uchar(qMin(green + (i << 1), 255)); - blues[i+128] = uchar(qMin(blue + (i << 1), 255)); - } - - int intensity = qt_intensity(red, green, blue); - const int factor = 191; - - // High intensity colors needs dark shifting in the color table, while - // low intensity colors needs light shifting. This is to increase the - // perceived contrast. - if ((red - factor > green && red - factor > blue) - || (green - factor > red && green - factor > blue) - || (blue - factor > red && blue - factor > green)) - intensity = qMin(255, intensity + 91); - else if (intensity <= 128) - intensity -= 51; - - for (int y=0; y<im.height(); ++y) { - QRgb *scanLine = (QRgb*)im.scanLine(y); - for (int x=0; x<im.width(); ++x) { - QRgb pixel = *scanLine; - // Calculate color table index, taking intensity adjustment - // and a magic offset into account. - uint ci = uint(qGray(pixel)/3 + (130 - intensity / 3)); - *scanLine = qRgba(reds[ci], greens[ci], blues[ci], qAlpha(pixel)); - ++scanLine; - } - } - - return QPixmap::fromImage(im); - } - case QIcon::Selected: { - QImage img = pixmap.toImage().convertToFormat(QImage::Format_ARGB32_Premultiplied); - QColor color = opt->palette.color(QPalette::Normal, QPalette::Highlight); - color.setAlphaF(0.3f); - QPainter painter(&img); - painter.setCompositionMode(QPainter::CompositionMode_SourceAtop); - painter.fillRect(0, 0, img.width(), img.height(), color); - painter.end(); - return QPixmap::fromImage(img); } - case QIcon::Active: - return pixmap; - default: - break; - } - return pixmap; -} - -} // namespace QQC2 - -QT_END_NAMESPACE - -#include "moc_qquickcommonstyle.cpp" diff --git a/src/quicknativestyle/qstyle/qquickcommonstyle.h b/src/quicknativestyle/qstyle/qquickcommonstyle.h deleted file mode 100644 index 894194a0..00000000 --- a/src/quicknativestyle/qstyle/qquickcommonstyle.h +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QCOMMONSTYLE_H -#define QCOMMONSTYLE_H - -#include "qquickstyle.h" - -QT_BEGIN_NAMESPACE - -namespace QQC2 { - -class QCommonStylePrivate; - -class QCommonStyle: public QStyle -{ - Q_OBJECT - -public: - QCommonStyle(); - ~QCommonStyle() override; - - void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p) const override; - void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p) const override; - void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p) const override; - - QRect subElementRect(SubElement r, const QStyleOption *opt) const override; - QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc) const override; - - QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize) const override; - QFont font(ControlElement element, const QStyle::State state) const override; - QMargins ninePatchMargins(ControlElement ce, const QStyleOption *opt, const QSize &imageSize) const override; - QMargins ninePatchMargins(ComplexControl cc, const QStyleOptionComplex *opt, const QSize &imageSize) const override; - - int pixelMetric(PixelMetric m, const QStyleOption *opt = nullptr) const override; - int styleHint(StyleHint sh, const QStyleOption *opt = nullptr, QStyleHintReturn *shret = nullptr) const override; - - QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *opt = nullptr) const override; - QPixmap standardPixmap(StandardPixmap sp, const QStyleOption *opt = nullptr) const override; - QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const override; - - SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt) const override; - -protected: - QCommonStyle(QCommonStylePrivate &dd); - -private: - Q_DECLARE_PRIVATE(QCommonStyle) - Q_DISABLE_COPY(QCommonStyle) -}; - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif // QCOMMONSTYLE_H diff --git a/src/quicknativestyle/qstyle/qquickcommonstyle_p.h b/src/quicknativestyle/qstyle/qquickcommonstyle_p.h deleted file mode 100644 index ba2b8689..00000000 --- a/src/quicknativestyle/qstyle/qquickcommonstyle_p.h +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QCOMMONSTYLE_P_H -#define QCOMMONSTYLE_P_H - -#include "qquickcommonstyle.h" -#include "qquickstyle_p.h" -#include "qquickstyleoption.h" - -QT_BEGIN_NAMESPACE - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header -// file may change from version to version without notice, or even be removed. -// -// We mean it. -// - -class QTextOption; - -namespace QQC2 { - -class QCommonStylePrivate : public QStylePrivate -{ - Q_DECLARE_PUBLIC(QCommonStyle) -public: - - ~QCommonStylePrivate() - { - delete cachedOption; - } - - QString calculateElidedText(const QString &text, const QTextOption &textOption, - const QFont &font, const QRect &textRect, const Qt::Alignment valign, - Qt::TextElideMode textElideMode, int flags, - bool lastVisibleLineShouldBeElided, QPointF *paintStartPosition) const; - void viewItemDrawText(QPainter *p, const QStyleOptionViewItem *option, const QRect &rect) const; - void viewItemLayout(const QStyleOptionViewItem *opt, QRect *checkRect, - QRect *pixmapRect, QRect *textRect, bool sizehint) const; - QSize viewItemSize(const QStyleOptionViewItem *option, int role) const; - - mutable QRect decorationRect, displayRect, checkRect; - mutable QStyleOptionViewItem *cachedOption = nullptr; - bool isViewItemCached(const QStyleOptionViewItem &option) const { - return cachedOption - && option.index == cachedOption->index - && option.state == cachedOption->state - && option.rect == cachedOption->rect - && option.text == cachedOption->text - && option.direction == cachedOption->direction - && option.displayAlignment == cachedOption->displayAlignment - && option.decorationAlignment == cachedOption->decorationAlignment - && option.decorationPosition == cachedOption->decorationPosition - && option.decorationSize == cachedOption->decorationSize - && option.features == cachedOption->features - && option.icon.isNull() == cachedOption->icon.isNull() - && option.font == cachedOption->font - && option.viewItemPosition == cachedOption->viewItemPosition; - } - QString toolButtonElideText(const QStyleOptionToolButton *toolbutton, - const QRect &textRect, int flags) const; - - mutable QIcon tabBarcloseButtonIcon; - virtual void tabLayout(const QStyleOptionTab *opt, QRect *textRect, QRect *pixmapRect) const; -}; - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif //QCOMMONSTYLE_P_H diff --git a/src/quicknativestyle/qstyle/qquickcommonstylepixmaps_p.h b/src/quicknativestyle/qstyle/qquickcommonstylepixmaps_p.h deleted file mode 100644 index 59f1afac..00000000 --- a/src/quicknativestyle/qstyle/qquickcommonstylepixmaps_p.h +++ /dev/null @@ -1,532 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QT_NO_IMAGEFORMAT_XPM - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -QT_BEGIN_NAMESPACE - -namespace QQC2 { - -static const char * const check_list_controller_xpm[] = { -"16 16 4 1", -" c None", -". c #000000000000", -"X c #FFFFFFFF0000", -"o c #C71BC30BC71B", -" ", -" ", -" .......... ", -" .XXXXXXXX. ", -" .XXXXXXXX.oo ", -" .XXXXXXXX.oo ", -" .XXXXXXXX.oo ", -" .XXXXXXXX.oo ", -" .XXXXXXXX.oo ", -" .XXXXXXXX.oo ", -" .XXXXXXXX.oo ", -" ..........oo ", -" oooooooooo ", -" oooooooooo ", -" ", -" "}; - - -static const char * const tb_extension_arrow_v_xpm[] = { - "5 8 3 1", - " c None", - ". c #000000", - "+ c none", - ".+++.", - "..+..", - "+...+", - "++.++", - ".+++.", - "..+..", - "+...+", - "++.++" -}; - -static const char * const tb_extension_arrow_h_xpm[] = { - "8 5 3 1", - " c None", - ". c #000000", - "+ c none", - "..++..++", - "+..++..+", - "++..++..", - "+..++..+", - "..++..++", -}; - -static const char * const filedialog_start_xpm[]={ - "16 15 8 1", - "a c #cec6bd", - "# c #000000", - "e c #ffff00", - "b c #999999", - "f c #cccccc", - "d c #dcdcdc", - "c c #ffffff", - ". c None", - ".....######aaaaa", - "...bb#cccc##aaaa", - "..bcc#cccc#d#aaa", - ".bcef#cccc#dd#aa", - ".bcfe#cccc#####a", - ".bcef#ccccccccc#", - "bbbbbbbbbbbbccc#", - "bccccccccccbbcc#", - "bcefefefefee#bc#", - ".bcefefefefef#c#", - ".bcfefefefefe#c#", - "..bcfefefefeeb##", - "..bbbbbbbbbbbbb#", - "...#############", - "................"}; - -static const char * const filedialog_end_xpm[]={ - "16 15 9 1", - "d c #a0a0a0", - "c c #c3c3c3", - "# c #cec6bd", - ". c #000000", - "f c #ffff00", - "e c #999999", - "g c #cccccc", - "b c #ffffff", - "a c None", - "......####aaaaaa", - ".bbbb..###aaaaaa", - ".bbbb.c.##aaaaaa", - ".bbbb....ddeeeea", - ".bbbbbbb.bbbbbe.", - ".bbbbbbb.bcfgfe.", - "eeeeeeeeeeeeefe.", - "ebbbbbbbbbbeege.", - "ebfgfgfgfgff.ee.", - "aebfgfgfgfgfg.e.", - "aebgfgfgfgfgf.e.", - "aaebgfgfgfgffe..", - "aaeeeeeeeeeeeee.", - "aaa.............", - "aaaaaaaaaaaaaaaa"}; - - -/* XPM */ -static const char * const qt_menu_xpm[] = { -"16 16 72 1", -" c None", -". c #65AF36", -"+ c #66B036", -"@ c #77B94C", -"# c #A7D28C", -"$ c #BADBA4", -"% c #A4D088", -"& c #72B646", -"* c #9ACB7A", -"= c #7FBD56", -"- c #85C05F", -"; c #F4F9F0", -"> c #FFFFFF", -", c #E5F1DC", -"' c #ECF5E7", -") c #7ABA50", -"! c #83BF5C", -"~ c #AED595", -"{ c #D7EACA", -"] c #A9D28D", -"^ c #BCDDA8", -"/ c #C4E0B1", -"( c #81BE59", -"_ c #D0E7C2", -": c #D4E9C6", -"< c #6FB542", -"[ c #6EB440", -"} c #88C162", -"| c #98CA78", -"1 c #F4F9F1", -"2 c #8FC56C", -"3 c #F1F8EC", -"4 c #E8F3E1", -"5 c #D4E9C7", -"6 c #74B748", -"7 c #80BE59", -"8 c #73B747", -"9 c #6DB43F", -"0 c #CBE4BA", -"a c #80BD58", -"b c #6DB33F", -"c c #FEFFFE", -"d c #68B138", -"e c #F9FCF7", -"f c #91C66F", -"g c #E8F3E0", -"h c #DCEDD0", -"i c #91C66E", -"j c #A3CF86", -"k c #C9E3B8", -"l c #B0D697", -"m c #E3F0DA", -"n c #95C873", -"o c #E6F2DE", -"p c #9ECD80", -"q c #BEDEAA", -"r c #C7E2B6", -"s c #79BA4F", -"t c #6EB441", -"u c #BCDCA7", -"v c #FAFCF8", -"w c #F6FAF3", -"x c #84BF5D", -"y c #EDF6E7", -"z c #FAFDF9", -"A c #88C263", -"B c #98CA77", -"C c #CDE5BE", -"D c #67B037", -"E c #D9EBCD", -"F c #6AB23C", -"G c #77B94D", -" .++++++++++++++", -".+++++++++++++++", -"+++@#$%&+++*=+++", -"++-;>,>')+!>~+++", -"++{>]+^>/(_>:~<+", -"+[>>}+|>123>456+", -"+7>>8+->>90>~+++", -"+a>>b+a>c[0>~+++", -"+de>=+f>g+0>~+++", -"++h>i+j>k+0>~+++", -"++l>mno>p+q>rst+", -"++duv>wl++xy>zA+", -"++++B>Cb++++&D++", -"+++++0zE++++++++", -"++++++FG+++++++.", -"++++++++++++++. "}; - -static const char * const qt_close_xpm[] = { -"10 10 2 1", -"# c #000000", -". c None", -"..........", -".##....##.", -"..##..##..", -"...####...", -"....##....", -"...####...", -"..##..##..", -".##....##.", -"..........", -".........."}; - -static const char * const qt_maximize_xpm[]={ -"10 10 2 1", -"# c #000000", -". c None", -"#########.", -"#########.", -"#.......#.", -"#.......#.", -"#.......#.", -"#.......#.", -"#.......#.", -"#.......#.", -"#########.", -".........."}; - -static const char * const qt_minimize_xpm[] = { -"10 10 2 1", -"# c #000000", -". c None", -"..........", -"..........", -"..........", -"..........", -"..........", -"..........", -"..........", -".#######..", -".#######..", -".........."}; - -static const char * const qt_normalizeup_xpm[] = { -"10 10 2 1", -"# c #000000", -". c None", -"...######.", -"...######.", -"...#....#.", -".######.#.", -".######.#.", -".#....###.", -".#....#...", -".#....#...", -".######...", -".........."}; - -static const char * const qt_help_xpm[] = { -"10 10 2 1", -". c None", -"# c #000000", -"..........", -"..######..", -".##....##.", -"......##..", -".....##...", -"....##....", -"....##....", -"..........", -"....##....", -".........."}; - -static const char * const qt_shade_xpm[] = { -"10 10 2 1", -"# c #000000", -". c None", -"..........", -"..........", -"..........", -"..........", -"....#.....", -"...###....", -"..#####...", -".#######..", -"..........", -".........."}; - -static const char * const qt_unshade_xpm[] = { -"10 10 2 1", -"# c #000000", -". c None", -"..........", -"..........", -"..........", -".#######..", -"..#####...", -"...###....", -"....#.....", -"..........", -"..........", -".........."}; - -static const char * const dock_widget_close_xpm[] = { -"8 8 2 1", -"# c #000000", -". c None", -"........", -".##..##.", -"..####..", -"...##...", -"..####..", -".##..##.", -"........", -"........"}; - -/* XPM */ -static const char * const information_xpm[]={ -"32 32 5 1", -". c None", -"c c #000000", -"* c #999999", -"a c #ffffff", -"b c #0000ff", -"...........********.............", -"........***aaaaaaaa***..........", -"......**aaaaaaaaaaaaaa**........", -".....*aaaaaaaaaaaaaaaaaa*.......", -"....*aaaaaaaabbbbaaaaaaaac......", -"...*aaaaaaaabbbbbbaaaaaaaac.....", -"..*aaaaaaaaabbbbbbaaaaaaaaac....", -".*aaaaaaaaaaabbbbaaaaaaaaaaac...", -".*aaaaaaaaaaaaaaaaaaaaaaaaaac*..", -"*aaaaaaaaaaaaaaaaaaaaaaaaaaaac*.", -"*aaaaaaaaaabbbbbbbaaaaaaaaaaac*.", -"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**", -"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**", -"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**", -"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**", -"*aaaaaaaaaaaabbbbbaaaaaaaaaaac**", -".*aaaaaaaaaaabbbbbaaaaaaaaaac***", -".*aaaaaaaaaaabbbbbaaaaaaaaaac***", -"..*aaaaaaaaaabbbbbaaaaaaaaac***.", -"...caaaaaaabbbbbbbbbaaaaaac****.", -"....caaaaaaaaaaaaaaaaaaaac****..", -".....caaaaaaaaaaaaaaaaaac****...", -"......ccaaaaaaaaaaaaaacc****....", -".......*cccaaaaaaaaccc*****.....", -"........***cccaaaac*******......", -"..........****caaac*****........", -".............*caaac**...........", -"...............caac**...........", -"................cac**...........", -".................cc**...........", -"..................***...........", -"...................**..........."}; -/* XPM */ -static const char* const warning_xpm[]={ -"32 32 4 1", -". c None", -"a c #ffff00", -"* c #000000", -"b c #999999", -".............***................", -"............*aaa*...............", -"...........*aaaaa*b.............", -"...........*aaaaa*bb............", -"..........*aaaaaaa*bb...........", -"..........*aaaaaaa*bb...........", -".........*aaaaaaaaa*bb..........", -".........*aaaaaaaaa*bb..........", -"........*aaaaaaaaaaa*bb.........", -"........*aaaa***aaaa*bb.........", -".......*aaaa*****aaaa*bb........", -".......*aaaa*****aaaa*bb........", -"......*aaaaa*****aaaaa*bb.......", -"......*aaaaa*****aaaaa*bb.......", -".....*aaaaaa*****aaaaaa*bb......", -".....*aaaaaa*****aaaaaa*bb......", -"....*aaaaaaaa***aaaaaaaa*bb.....", -"....*aaaaaaaa***aaaaaaaa*bb.....", -"...*aaaaaaaaa***aaaaaaaaa*bb....", -"...*aaaaaaaaaa*aaaaaaaaaa*bb....", -"..*aaaaaaaaaaa*aaaaaaaaaaa*bb...", -"..*aaaaaaaaaaaaaaaaaaaaaaa*bb...", -".*aaaaaaaaaaaa**aaaaaaaaaaa*bb..", -".*aaaaaaaaaaa****aaaaaaaaaa*bb..", -"*aaaaaaaaaaaa****aaaaaaaaaaa*bb.", -"*aaaaaaaaaaaaa**aaaaaaaaaaaa*bb.", -"*aaaaaaaaaaaaaaaaaaaaaaaaaaa*bbb", -"*aaaaaaaaaaaaaaaaaaaaaaaaaaa*bbb", -".*aaaaaaaaaaaaaaaaaaaaaaaaa*bbbb", -"..*************************bbbbb", -"....bbbbbbbbbbbbbbbbbbbbbbbbbbb.", -".....bbbbbbbbbbbbbbbbbbbbbbbbb.."}; -/* XPM */ -static const char* const critical_xpm[]={ -"32 32 4 1", -". c None", -"a c #999999", -"* c #ff0000", -"b c #ffffff", -"...........********.............", -".........************...........", -".......****************.........", -"......******************........", -".....********************a......", -"....**********************a.....", -"...************************a....", -"..*******b**********b*******a...", -"..******bbb********bbb******a...", -".******bbbbb******bbbbb******a..", -".*******bbbbb****bbbbb*******a..", -"*********bbbbb**bbbbb*********a.", -"**********bbbbbbbbbb**********a.", -"***********bbbbbbbb***********aa", -"************bbbbbb************aa", -"************bbbbbb************aa", -"***********bbbbbbbb***********aa", -"**********bbbbbbbbbb**********aa", -"*********bbbbb**bbbbb*********aa", -".*******bbbbb****bbbbb*******aa.", -".******bbbbb******bbbbb******aa.", -"..******bbb********bbb******aaa.", -"..*******b**********b*******aa..", -"...************************aaa..", -"....**********************aaa...", -"....a********************aaa....", -".....a******************aaa.....", -"......a****************aaa......", -".......aa************aaaa.......", -".........aa********aaaaa........", -"...........aaaaaaaaaaa..........", -".............aaaaaaa............"}; -/* XPM */ -static const char *const question_xpm[] = { -"32 32 5 1", -". c None", -"c c #000000", -"* c #999999", -"a c #ffffff", -"b c #0000ff", -"...........********.............", -"........***aaaaaaaa***..........", -"......**aaaaaaaaaaaaaa**........", -".....*aaaaaaaaaaaaaaaaaa*.......", -"....*aaaaaaaaaaaaaaaaaaaac......", -"...*aaaaaaaabbbbbbaaaaaaaac.....", -"..*aaaaaaaabaaabbbbaaaaaaaac....", -".*aaaaaaaabbaaaabbbbaaaaaaaac...", -".*aaaaaaaabbbbaabbbbaaaaaaaac*..", -"*aaaaaaaaabbbbaabbbbaaaaaaaaac*.", -"*aaaaaaaaaabbaabbbbaaaaaaaaaac*.", -"*aaaaaaaaaaaaabbbbaaaaaaaaaaac**", -"*aaaaaaaaaaaaabbbaaaaaaaaaaaac**", -"*aaaaaaaaaaaaabbaaaaaaaaaaaaac**", -"*aaaaaaaaaaaaabbaaaaaaaaaaaaac**", -"*aaaaaaaaaaaaaaaaaaaaaaaaaaaac**", -".*aaaaaaaaaaaabbaaaaaaaaaaaac***", -".*aaaaaaaaaaabbbbaaaaaaaaaaac***", -"..*aaaaaaaaaabbbbaaaaaaaaaac***.", -"...caaaaaaaaaabbaaaaaaaaaac****.", -"....caaaaaaaaaaaaaaaaaaaac****..", -".....caaaaaaaaaaaaaaaaaac****...", -"......ccaaaaaaaaaaaaaacc****....", -".......*cccaaaaaaaaccc*****.....", -"........***cccaaaac*******......", -"..........****caaac*****........", -".............*caaac**...........", -"...............caac**...........", -"................cac**...........", -".................cc**...........", -"..................***...........", -"...................**..........."}; - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif //QT_NO_IMAGEFORMAT_XPM diff --git a/src/quicknativestyle/qstyle/qquickdrawutil.cpp b/src/quicknativestyle/qstyle/qquickdrawutil.cpp deleted file mode 100644 index d5290a7b..00000000 --- a/src/quicknativestyle/qstyle/qquickdrawutil.cpp +++ /dev/null @@ -1,1145 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickdrawutil.h" - -#include "qbitmap.h" -#include "qpixmapcache.h" -#include "qpainter.h" -#include "qpalette.h" -#include <private/qpaintengineex_p.h> -#include <qvarlengtharray.h> -#include <qmath.h> -#include <private/qhexstring_p.h> - -QT_BEGIN_NAMESPACE - -namespace QQC2 { - -namespace { -class PainterStateGuard { - Q_DISABLE_COPY_MOVE(PainterStateGuard) -public: - explicit PainterStateGuard(QPainter *p) : m_painter(p) {} - ~PainterStateGuard() - { - for ( ; m_level > 0; --m_level) - m_painter->restore(); - } - - void save() - { - m_painter->save(); - ++m_level; - } - - void restore() - { - m_painter->restore(); - --m_level; - } - -private: - QPainter *m_painter; - int m_level= 0; -}; -} // namespace - -/*! - \headerfile <qdrawutil.h> - \title Drawing Utility Functions - - \sa QPainter -*/ - -/*! - \fn void qDrawShadeLine(QPainter *painter, int x1, int y1, int x2, int y2, - const QPalette &palette, bool sunken, - int lineWidth, int midLineWidth) - \relates <qdrawutil.h> - - Draws a horizontal (\a y1 == \a y2) or vertical (\a x1 == \a x2) - shaded line using the given \a painter. Note that nothing is - drawn if \a y1 != \a y2 and \a x1 != \a x2 (i.e. the line is - neither horizontal nor vertical). - - The provided \a palette specifies the shading colors (\l - {QPalette::light()}{light}, \l {QPalette::dark()}{dark} and \l - {QPalette::mid()}{middle} colors). The given \a lineWidth - specifies the line width for each of the lines; it is not the - total line width. The given \a midLineWidth specifies the width of - a middle line drawn in the QPalette::mid() color. - - The line appears sunken if \a sunken is true, otherwise raised. - - \warning This function does not look at QWidget::style() or - QApplication::style(). Use the drawing functions in QStyle to - make widgets that follow the current GUI style. - - - Alternatively you can use a QFrame widget and apply the - QFrame::setFrameStyle() function to display a shaded line: - - \snippet code/src_gui_painting_qdrawutil.cpp 0 - - \sa qDrawShadeRect(), qDrawShadePanel(), QStyle -*/ - -void qDrawShadeLine(QPainter *p, int x1, int y1, int x2, int y2, - const QPalette &pal, bool sunken, - int lineWidth, int midLineWidth) -{ - if (Q_UNLIKELY(!p || lineWidth < 0 || midLineWidth < 0)) { - qWarning("qDrawShadeLine: Invalid parameters"); - return; - } - int tlw = lineWidth*2 + midLineWidth; // total line width - QPen oldPen = p->pen(); // save pen - if (sunken) - p->setPen(pal.color(QPalette::Dark)); - else - p->setPen(pal.light().color()); - QPolygon a; - int i; - if (y1 == y2) { // horizontal line - int y = y1 - tlw/2; - if (x1 > x2) { // swap x1 and x2 - int t = x1; - x1 = x2; - x2 = t; - } - x2--; - for (i=0; i<lineWidth; i++) { // draw top shadow - a.setPoints(3, x1+i, y+tlw-1-i, - x1+i, y+i, - x2-i, y+i); - p->drawPolyline(a); - } - if (midLineWidth > 0) { - p->setPen(pal.mid().color()); - for (i=0; i<midLineWidth; i++) // draw lines in the middle - p->drawLine(x1+lineWidth, y+lineWidth+i, - x2-lineWidth, y+lineWidth+i); - } - if (sunken) - p->setPen(pal.light().color()); - else - p->setPen(pal.dark().color()); - for (i=0; i<lineWidth; i++) { // draw bottom shadow - a.setPoints(3, x1+i, y+tlw-i-1, - x2-i, y+tlw-i-1, - x2-i, y+i+1); - p->drawPolyline(a); - } - } - else if (x1 == x2) { // vertical line - int x = x1 - tlw/2; - if (y1 > y2) { // swap y1 and y2 - int t = y1; - y1 = y2; - y2 = t; - } - y2--; - for (i=0; i<lineWidth; i++) { // draw left shadow - a.setPoints(3, x+i, y2, - x+i, y1+i, - x+tlw-1, y1+i); - p->drawPolyline(a); - } - if (midLineWidth > 0) { - p->setPen(pal.mid().color()); - for (i=0; i<midLineWidth; i++) // draw lines in the middle - p->drawLine(x+lineWidth+i, y1+lineWidth, x+lineWidth+i, y2); - } - if (sunken) - p->setPen(pal.light().color()); - else - p->setPen(pal.dark().color()); - for (i=0; i<lineWidth; i++) { // draw right shadow - a.setPoints(3, x+lineWidth, y2-i, - x+tlw-i-1, y2-i, - x+tlw-i-1, y1+lineWidth); - p->drawPolyline(a); - } - } - p->setPen(oldPen); -} - -/*! - \fn void qDrawShadeRect(QPainter *painter, int x, int y, int width, int height, - const QPalette &palette, bool sunken, - int lineWidth, int midLineWidth, - const QBrush *fill) - \relates <qdrawutil.h> - - Draws the shaded rectangle beginning at (\a x, \a y) with the - given \a width and \a height using the provided \a painter. - - The provide \a palette specifies the shading colors (\l - {QPalette::light()}{light}, \l {QPalette::dark()}{dark} and \l - {QPalette::mid()}{middle} colors. The given \a lineWidth - specifies the line width for each of the lines; it is not the - total line width. The \a midLineWidth specifies the width of a - middle line drawn in the QPalette::mid() color. The rectangle's - interior is filled with the \a fill brush unless \a fill is 0. - - The rectangle appears sunken if \a sunken is true, otherwise - raised. - - \warning This function does not look at QWidget::style() or - QApplication::style(). Use the drawing functions in QStyle to make - widgets that follow the current GUI style. - - Alternatively you can use a QFrame widget and apply the - QFrame::setFrameStyle() function to display a shaded rectangle: - - \snippet code/src_gui_painting_qdrawutil.cpp 1 - - \sa qDrawShadeLine(), qDrawShadePanel(), qDrawPlainRect(), QStyle -*/ - -void qDrawShadeRect(QPainter *p, int x, int y, int w, int h, - const QPalette &pal, bool sunken, - int lineWidth, int midLineWidth, - const QBrush *fill) -{ - if (w == 0 || h == 0) - return; - if (Q_UNLIKELY(w < 0 || h < 0 || lineWidth < 0 || midLineWidth < 0)) { - qWarning("qDrawShadeRect: Invalid parameters"); - return; - } - - PainterStateGuard painterGuard(p); - const qreal devicePixelRatio = p->device()->devicePixelRatioF(); - if (!qFuzzyCompare(devicePixelRatio, qreal(1))) { - painterGuard.save(); - const qreal inverseScale = qreal(1) / devicePixelRatio; - p->scale(inverseScale, inverseScale); - x = qRound(devicePixelRatio * x); - y = qRound(devicePixelRatio * y); - w = qRound(devicePixelRatio * w); - h = qRound(devicePixelRatio * h); - lineWidth = qRound(devicePixelRatio * lineWidth); - midLineWidth = qRound(devicePixelRatio * midLineWidth); - } - - QPen oldPen = p->pen(); - if (sunken) - p->setPen(pal.dark().color()); - else - p->setPen(pal.light().color()); - int x1=x, y1=y, x2=x+w-1, y2=y+h-1; - - if (lineWidth == 1 && midLineWidth == 0) {// standard shade rectangle - p->drawRect(x1, y1, w-2, h-2); - if (sunken) - p->setPen(pal.light().color()); - else - p->setPen(pal.dark().color()); - QLineF lines[4] = { QLineF(x1+1, y1+1, x2-2, y1+1), - QLineF(x1+1, y1+2, x1+1, y2-2), - QLineF(x1, y2, x2, y2), - QLineF(x2,y1, x2,y2-1) }; - p->drawLines(lines, 4); // draw bottom/right lines - } else { // more complicated - int m = lineWidth+midLineWidth; - int i, j=0, k=m; - for (i=0; i<lineWidth; i++) { // draw top shadow - QLineF lines[4] = { QLineF(x1+i, y2-i, x1+i, y1+i), - QLineF(x1+i, y1+i, x2-i, y1+i), - QLineF(x1+k, y2-k, x2-k, y2-k), - QLineF(x2-k, y2-k, x2-k, y1+k) }; - p->drawLines(lines, 4); - k++; - } - p->setPen(pal.mid().color()); - j = lineWidth*2; - for (i=0; i<midLineWidth; i++) { // draw lines in the middle - p->drawRect(x1+lineWidth+i, y1+lineWidth+i, w-j-1, h-j-1); - j += 2; - } - if (sunken) - p->setPen(pal.light().color()); - else - p->setPen(pal.dark().color()); - k = m; - for (i=0; i<lineWidth; i++) { // draw bottom shadow - QLineF lines[4] = { QLineF(x1+1+i, y2-i, x2-i, y2-i), - QLineF(x2-i, y2-i, x2-i, y1+i+1), - QLineF(x1+k, y2-k, x1+k, y1+k), - QLineF(x1+k, y1+k, x2-k, y1+k) }; - p->drawLines(lines, 4); - k++; - } - } - if (fill) { - QBrush oldBrush = p->brush(); - int tlw = lineWidth + midLineWidth; - p->setPen(Qt::NoPen); - p->setBrush(*fill); - p->drawRect(x+tlw, y+tlw, w-2*tlw, h-2*tlw); - p->setBrush(oldBrush); - } - p->setPen(oldPen); // restore pen -} - - -/*! - \fn void qDrawShadePanel(QPainter *painter, int x, int y, int width, int height, - const QPalette &palette, bool sunken, - int lineWidth, const QBrush *fill) - \relates <qdrawutil.h> - - Draws the shaded panel beginning at (\a x, \a y) with the given \a - width and \a height using the provided \a painter and the given \a - lineWidth. - - The given \a palette specifies the shading colors (\l - {QPalette::light()}{light}, \l {QPalette::dark()}{dark} and \l - {QPalette::mid()}{middle} colors). The panel's interior is filled - with the \a fill brush unless \a fill is 0. - - The panel appears sunken if \a sunken is true, otherwise raised. - - \warning This function does not look at QWidget::style() or - QApplication::style(). Use the drawing functions in QStyle to make - widgets that follow the current GUI style. - - Alternatively you can use a QFrame widget and apply the - QFrame::setFrameStyle() function to display a shaded panel: - - \snippet code/src_gui_painting_qdrawutil.cpp 2 - - \sa qDrawWinPanel(), qDrawShadeLine(), qDrawShadeRect(), QStyle -*/ - -void qDrawShadePanel(QPainter *p, int x, int y, int w, int h, - const QPalette &pal, bool sunken, - int lineWidth, const QBrush *fill) -{ - if (w == 0 || h == 0) - return; - if (Q_UNLIKELY(w < 0 || h < 0 || lineWidth < 0)) { - qWarning("qDrawShadePanel: Invalid parameters"); - } - - PainterStateGuard painterGuard(p); - const qreal devicePixelRatio = p->device()->devicePixelRatioF(); - if (!qFuzzyCompare(devicePixelRatio, qreal(1))) { - painterGuard.save(); - const qreal inverseScale = qreal(1) / devicePixelRatio; - p->scale(inverseScale, inverseScale); - x = qRound(devicePixelRatio * x); - y = qRound(devicePixelRatio * y); - w = qRound(devicePixelRatio * w); - h = qRound(devicePixelRatio * h); - lineWidth = qRound(devicePixelRatio * lineWidth); - } - - QColor shade = pal.dark().color(); - QColor light = pal.light().color(); - if (fill) { - if (fill->color() == shade) - shade = pal.shadow().color(); - if (fill->color() == light) - light = pal.midlight().color(); - } - QPen oldPen = p->pen(); // save pen - QVector<QLineF> lines; - lines.reserve(2*lineWidth); - - if (sunken) - p->setPen(shade); - else - p->setPen(light); - int x1, y1, x2, y2; - int i; - x1 = x; - y1 = y2 = y; - x2 = x+w-2; - for (i=0; i<lineWidth; i++) { // top shadow - lines << QLineF(x1, y1++, x2--, y2++); - } - x2 = x1; - y1 = y+h-2; - for (i=0; i<lineWidth; i++) { // left shado - lines << QLineF(x1++, y1, x2++, y2--); - } - p->drawLines(lines); - lines.clear(); - if (sunken) - p->setPen(light); - else - p->setPen(shade); - x1 = x; - y1 = y2 = y+h-1; - x2 = x+w-1; - for (i=0; i<lineWidth; i++) { // bottom shadow - lines << QLineF(x1++, y1--, x2, y2--); - } - x1 = x2; - y1 = y; - y2 = y+h-lineWidth-1; - for (i=0; i<lineWidth; i++) { // right shadow - lines << QLineF(x1--, y1++, x2--, y2); - } - p->drawLines(lines); - if (fill) // fill with fill color - p->fillRect(x+lineWidth, y+lineWidth, w-lineWidth*2, h-lineWidth*2, *fill); - p->setPen(oldPen); // restore pen -} - - -/*! - \internal - This function draws a rectangle with two pixel line width. - It is called from qDrawWinButton() and qDrawWinPanel(). - - c1..c4 and fill are used: - - 1 1 1 1 1 2 - 1 3 3 3 4 2 - 1 3 F F 4 2 - 1 3 F F 4 2 - 1 4 4 4 4 2 - 2 2 2 2 2 2 -*/ - -static void qDrawWinShades(QPainter *p, - int x, int y, int w, int h, - const QColor &c1, const QColor &c2, - const QColor &c3, const QColor &c4, - const QBrush *fill) -{ - if (w < 2 || h < 2) // can't do anything with that - return; - - PainterStateGuard painterGuard(p); - const qreal devicePixelRatio = p->device()->devicePixelRatioF(); - if (!qFuzzyCompare(devicePixelRatio, qreal(1))) { - painterGuard.save(); - const qreal inverseScale = qreal(1) / devicePixelRatio; - p->scale(inverseScale, inverseScale); - x = qRound(devicePixelRatio * x); - y = qRound(devicePixelRatio * y); - w = qRound(devicePixelRatio * w); - h = qRound(devicePixelRatio * h); - } - - QPen oldPen = p->pen(); - QPoint a[3] = { QPoint(x, y+h-2), QPoint(x, y), QPoint(x+w-2, y) }; - p->setPen(c1); - p->drawPolyline(a, 3); - QPoint b[3] = { QPoint(x, y+h-1), QPoint(x+w-1, y+h-1), QPoint(x+w-1, y) }; - p->setPen(c2); - p->drawPolyline(b, 3); - if (w > 4 && h > 4) { - QPoint c[3] = { QPoint(x+1, y+h-3), QPoint(x+1, y+1), QPoint(x+w-3, y+1) }; - p->setPen(c3); - p->drawPolyline(c, 3); - QPoint d[3] = { QPoint(x+1, y+h-2), QPoint(x+w-2, y+h-2), QPoint(x+w-2, y+1) }; - p->setPen(c4); - p->drawPolyline(d, 3); - if (fill) - p->fillRect(QRect(x+2, y+2, w-4, h-4), *fill); - } - p->setPen(oldPen); -} - - -/*! - \fn void qDrawWinButton(QPainter *painter, int x, int y, int width, int height, - const QPalette &palette, bool sunken, - const QBrush *fill) - \relates <qdrawutil.h> - - Draws the Windows-style button specified by the given point (\a x, - \a y}, \a width and \a height using the provided \a painter with a - line width of 2 pixels. The button's interior is filled with the - \a{fill} brush unless \a fill is 0. - - The given \a palette specifies the shading colors (\l - {QPalette::light()}{light}, \l {QPalette::dark()}{dark} and \l - {QPalette::mid()}{middle} colors). - - The button appears sunken if \a sunken is true, otherwise raised. - - \warning This function does not look at QWidget::style() or - QApplication::style()-> Use the drawing functions in QStyle to make - widgets that follow the current GUI style. - - \sa qDrawWinPanel(), QStyle -*/ - -void qDrawWinButton(QPainter *p, int x, int y, int w, int h, - const QPalette &pal, bool sunken, - const QBrush *fill) -{ - if (sunken) - qDrawWinShades(p, x, y, w, h, - pal.shadow().color(), pal.light().color(), pal.dark().color(), - pal.button().color(), fill); - else - qDrawWinShades(p, x, y, w, h, - pal.light().color(), pal.shadow().color(), pal.button().color(), - pal.dark().color(), fill); -} - -/*! - \fn void qDrawWinPanel(QPainter *painter, int x, int y, int width, int height, - const QPalette &palette, bool sunken, - const QBrush *fill) - \relates <qdrawutil.h> - - Draws the Windows-style panel specified by the given point(\a x, - \a y), \a width and \a height using the provided \a painter with a - line width of 2 pixels. The button's interior is filled with the - \a fill brush unless \a fill is 0. - - The given \a palette specifies the shading colors. The panel - appears sunken if \a sunken is true, otherwise raised. - - \warning This function does not look at QWidget::style() or - QApplication::style(). Use the drawing functions in QStyle to make - widgets that follow the current GUI style. - - Alternatively you can use a QFrame widget and apply the - QFrame::setFrameStyle() function to display a shaded panel: - - \snippet code/src_gui_painting_qdrawutil.cpp 3 - - \sa qDrawShadePanel(), qDrawWinButton(), QStyle -*/ - -void qDrawWinPanel(QPainter *p, int x, int y, int w, int h, - const QPalette &pal, bool sunken, - const QBrush *fill) -{ - if (sunken) - qDrawWinShades(p, x, y, w, h, - pal.dark().color(), pal.light().color(), pal.shadow().color(), - pal.midlight().color(), fill); - else - qDrawWinShades(p, x, y, w, h, - pal.light().color(), pal.shadow().color(), pal.midlight().color(), - pal.dark().color(), fill); -} - -/*! - \fn void qDrawPlainRect(QPainter *painter, int x, int y, int width, int height, const QColor &lineColor, - int lineWidth, const QBrush *fill) - \relates <qdrawutil.h> - - Draws the plain rectangle beginning at (\a x, \a y) with the given - \a width and \a height, using the specified \a painter, \a lineColor - and \a lineWidth. The rectangle's interior is filled with the \a - fill brush unless \a fill is 0. - - \warning This function does not look at QWidget::style() or - QApplication::style(). Use the drawing functions in QStyle to make - widgets that follow the current GUI style. - - Alternatively you can use a QFrame widget and apply the - QFrame::setFrameStyle() function to display a plain rectangle: - - \snippet code/src_gui_painting_qdrawutil.cpp 4 - - \sa qDrawShadeRect(), QStyle -*/ - -void qDrawPlainRect(QPainter *p, int x, int y, int w, int h, const QColor &c, - int lineWidth, const QBrush *fill) -{ - if (w == 0 || h == 0) - return; - if (Q_UNLIKELY(w < 0 || h < 0 || lineWidth < 0)) { - qWarning("qDrawPlainRect: Invalid parameters"); - } - - PainterStateGuard painterGuard(p); - const qreal devicePixelRatio = p->device()->devicePixelRatioF(); - if (!qFuzzyCompare(devicePixelRatio, qreal(1))) { - painterGuard.save(); - const qreal inverseScale = qreal(1) / devicePixelRatio; - p->scale(inverseScale, inverseScale); - x = qRound(devicePixelRatio * x); - y = qRound(devicePixelRatio * y); - w = qRound(devicePixelRatio * w); - h = qRound(devicePixelRatio * h); - lineWidth = qRound(devicePixelRatio * lineWidth); - } - - QPen oldPen = p->pen(); - QBrush oldBrush = p->brush(); - p->setPen(c); - p->setBrush(Qt::NoBrush); - for (int i=0; i<lineWidth; i++) - p->drawRect(x+i, y+i, w-i*2 - 1, h-i*2 - 1); - if (fill) { // fill with fill color - p->setPen(Qt::NoPen); - p->setBrush(*fill); - p->drawRect(x+lineWidth, y+lineWidth, w-lineWidth*2, h-lineWidth*2); - } - p->setPen(oldPen); - p->setBrush(oldBrush); -} - -/***************************************************************************** - Overloaded functions. - *****************************************************************************/ - -/*! - \fn void qDrawShadeLine(QPainter *painter, const QPoint &p1, const QPoint &p2, - const QPalette &palette, bool sunken, int lineWidth, int midLineWidth) - \relates <qdrawutil.h> - \overload - - Draws a horizontal or vertical shaded line between \a p1 and \a p2 - using the given \a painter. Note that nothing is drawn if the line - between the points would be neither horizontal nor vertical. - - The provided \a palette specifies the shading colors (\l - {QPalette::light()}{light}, \l {QPalette::dark()}{dark} and \l - {QPalette::mid()}{middle} colors). The given \a lineWidth - specifies the line width for each of the lines; it is not the - total line width. The given \a midLineWidth specifies the width of - a middle line drawn in the QPalette::mid() color. - - The line appears sunken if \a sunken is true, otherwise raised. - - \warning This function does not look at QWidget::style() or - QApplication::style(). Use the drawing functions in QStyle to - make widgets that follow the current GUI style. - - - Alternatively you can use a QFrame widget and apply the - QFrame::setFrameStyle() function to display a shaded line: - - \snippet code/src_gui_painting_qdrawutil.cpp 5 - - \sa qDrawShadeRect(), qDrawShadePanel(), QStyle -*/ - -void qDrawShadeLine(QPainter *p, const QPoint &p1, const QPoint &p2, - const QPalette &pal, bool sunken, - int lineWidth, int midLineWidth) -{ - qDrawShadeLine(p, p1.x(), p1.y(), p2.x(), p2.y(), pal, sunken, - lineWidth, midLineWidth); -} - -/*! - \fn void qDrawShadeRect(QPainter *painter, const QRect &rect, const QPalette &palette, - bool sunken, int lineWidth, int midLineWidth, const QBrush *fill) - \relates <qdrawutil.h> - \overload - - Draws the shaded rectangle specified by \a rect using the given \a painter. - - The provide \a palette specifies the shading colors (\l - {QPalette::light()}{light}, \l {QPalette::dark()}{dark} and \l - {QPalette::mid()}{middle} colors. The given \a lineWidth - specifies the line width for each of the lines; it is not the - total line width. The \a midLineWidth specifies the width of a - middle line drawn in the QPalette::mid() color. The rectangle's - interior is filled with the \a fill brush unless \a fill is 0. - - The rectangle appears sunken if \a sunken is true, otherwise - raised. - - \warning This function does not look at QWidget::style() or - QApplication::style(). Use the drawing functions in QStyle to make - widgets that follow the current GUI style. - - Alternatively you can use a QFrame widget and apply the - QFrame::setFrameStyle() function to display a shaded rectangle: - - \snippet code/src_gui_painting_qdrawutil.cpp 6 - - \sa qDrawShadeLine(), qDrawShadePanel(), qDrawPlainRect(), QStyle -*/ - -void qDrawShadeRect(QPainter *p, const QRect &r, - const QPalette &pal, bool sunken, - int lineWidth, int midLineWidth, - const QBrush *fill) -{ - qDrawShadeRect(p, r.x(), r.y(), r.width(), r.height(), pal, sunken, - lineWidth, midLineWidth, fill); -} - -/*! - \fn void qDrawShadePanel(QPainter *painter, const QRect &rect, const QPalette &palette, - bool sunken, int lineWidth, const QBrush *fill) - \relates <qdrawutil.h> - \overload - - Draws the shaded panel at the rectangle specified by \a rect using the - given \a painter and the given \a lineWidth. - - The given \a palette specifies the shading colors (\l - {QPalette::light()}{light}, \l {QPalette::dark()}{dark} and \l - {QPalette::mid()}{middle} colors). The panel's interior is filled - with the \a fill brush unless \a fill is 0. - - The panel appears sunken if \a sunken is true, otherwise raised. - - \warning This function does not look at QWidget::style() or - QApplication::style(). Use the drawing functions in QStyle to make - widgets that follow the current GUI style. - - Alternatively you can use a QFrame widget and apply the - QFrame::setFrameStyle() function to display a shaded panel: - - \snippet code/src_gui_painting_qdrawutil.cpp 7 - - \sa qDrawWinPanel(), qDrawShadeLine(), qDrawShadeRect(), QStyle -*/ - -void qDrawShadePanel(QPainter *p, const QRect &r, - const QPalette &pal, bool sunken, - int lineWidth, const QBrush *fill) -{ - qDrawShadePanel(p, r.x(), r.y(), r.width(), r.height(), pal, sunken, - lineWidth, fill); -} - -/*! - \fn void qDrawWinButton(QPainter *painter, const QRect &rect, const QPalette &palette, - bool sunken, const QBrush *fill) - \relates <qdrawutil.h> - \overload - - Draws the Windows-style button at the rectangle specified by \a rect using - the given \a painter with a line width of 2 pixels. The button's interior - is filled with the \a{fill} brush unless \a fill is 0. - - The given \a palette specifies the shading colors (\l - {QPalette::light()}{light}, \l {QPalette::dark()}{dark} and \l - {QPalette::mid()}{middle} colors). - - The button appears sunken if \a sunken is true, otherwise raised. - - \warning This function does not look at QWidget::style() or - QApplication::style()-> Use the drawing functions in QStyle to make - widgets that follow the current GUI style. - - \sa qDrawWinPanel(), QStyle -*/ - -void qDrawWinButton(QPainter *p, const QRect &r, - const QPalette &pal, bool sunken, const QBrush *fill) -{ - qDrawWinButton(p, r.x(), r.y(), r.width(), r.height(), pal, sunken, fill); -} - -/*! - \fn void qDrawWinPanel(QPainter *painter, const QRect &rect, const QPalette &palette, - bool sunken, const QBrush *fill) - \overload - - Draws the Windows-style panel at the rectangle specified by \a rect using - the given \a painter with a line width of 2 pixels. The button's interior - is filled with the \a fill brush unless \a fill is 0. - - The given \a palette specifies the shading colors. The panel - appears sunken if \a sunken is true, otherwise raised. - - \warning This function does not look at QWidget::style() or - QApplication::style(). Use the drawing functions in QStyle to make - widgets that follow the current GUI style. - - Alternatively you can use a QFrame widget and apply the - QFrame::setFrameStyle() function to display a shaded panel: - - \snippet code/src_gui_painting_qdrawutil.cpp 8 - - \sa qDrawShadePanel(), qDrawWinButton(), QStyle -*/ - -void qDrawWinPanel(QPainter *p, const QRect &r, - const QPalette &pal, bool sunken, const QBrush *fill) -{ - qDrawWinPanel(p, r.x(), r.y(), r.width(), r.height(), pal, sunken, fill); -} - -/*! - \fn void qDrawPlainRect(QPainter *painter, const QRect &rect, const QColor &lineColor, int lineWidth, const QBrush *fill) - \relates <qdrawutil.h> - \overload - - Draws the plain rectangle specified by \a rect using the given \a painter, - \a lineColor and \a lineWidth. The rectangle's interior is filled with the - \a fill brush unless \a fill is 0. - - \warning This function does not look at QWidget::style() or - QApplication::style(). Use the drawing functions in QStyle to make - widgets that follow the current GUI style. - - Alternatively you can use a QFrame widget and apply the - QFrame::setFrameStyle() function to display a plain rectangle: - - \snippet code/src_gui_painting_qdrawutil.cpp 9 - - \sa qDrawShadeRect(), QStyle -*/ - -void qDrawPlainRect(QPainter *p, const QRect &r, const QColor &c, - int lineWidth, const QBrush *fill) -{ - qDrawPlainRect(p, r.x(), r.y(), r.width(), r.height(), c, - lineWidth, fill); -} - - -/*! - \class QTileRules - \since 4.6 - - \inmodule QtWidgets - - \brief The QTileRules class provides the rules used to draw a - pixmap or image split into nine segments. - - Spliiting is similar to \l{http://www.w3.org/TR/css3-background/}{CSS3 border-images}. - - \sa Qt::TileRule, QMargins -*/ - -/*! \fn QTileRules::QTileRules(Qt::TileRule horizontalRule, Qt::TileRule verticalRule) - Constructs a QTileRules with the given \a horizontalRule and - \a verticalRule. - */ - -/*! \fn QTileRules::QTileRules(Qt::TileRule rule) - Constructs a QTileRules with the given \a rule used for both - the horizontal rule and the vertical rule. - */ - -/*! - \fn void qDrawBorderPixmap(QPainter *painter, const QRect &target, const QMargins &margins, const QPixmap &pixmap) - \relates <qdrawutil.h> - \since 4.6 - - \brief The qDrawBorderPixmap function is for drawing a pixmap into - the margins of a rectangle. - - Draws the given \a pixmap into the given \a target rectangle, using the - given \a painter. The pixmap will be split into nine segments and drawn - according to the \a margins structure. -*/ - -typedef QVarLengthArray<QPainter::PixmapFragment, 16> QPixmapFragmentsArray; - -/*! - \since 4.6 - - Draws the indicated \a sourceRect rectangle from the given \a pixmap into - the given \a targetRect rectangle, using the given \a painter. The pixmap - will be split into nine segments according to the given \a targetMargins - and \a sourceMargins structures. Finally, the pixmap will be drawn - according to the given \a rules. - - This function is used to draw a scaled pixmap, similar to - \l{http://www.w3.org/TR/css3-background/}{CSS3 border-images} - - \sa Qt::TileRule, QTileRules, QMargins -*/ - -void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargins &targetMargins, - const QPixmap &pixmap, const QRect &sourceRect,const QMargins &sourceMargins, - const QTileRules &rules -#ifndef Q_CLANG_QDOC - , QDrawBorderPixmap::DrawingHints hints -#endif - ) -{ - QPainter::PixmapFragment d; - d.opacity = 1.0; - d.rotation = 0.0; - - QPixmapFragmentsArray opaqueData; - QPixmapFragmentsArray translucentData; - - // source center - const int sourceCenterTop = sourceRect.top() + sourceMargins.top(); - const int sourceCenterLeft = sourceRect.left() + sourceMargins.left(); - const int sourceCenterBottom = sourceRect.bottom() - sourceMargins.bottom() + 1; - const int sourceCenterRight = sourceRect.right() - sourceMargins.right() + 1; - const int sourceCenterWidth = sourceCenterRight - sourceCenterLeft; - const int sourceCenterHeight = sourceCenterBottom - sourceCenterTop; - // target center - const int targetCenterTop = targetRect.top() + targetMargins.top(); - const int targetCenterLeft = targetRect.left() + targetMargins.left(); - const int targetCenterBottom = targetRect.bottom() - targetMargins.bottom() + 1; - const int targetCenterRight = targetRect.right() - targetMargins.right() + 1; - const int targetCenterWidth = targetCenterRight - targetCenterLeft; - const int targetCenterHeight = targetCenterBottom - targetCenterTop; - - QVarLengthArray<qreal, 16> xTarget; // x-coordinates of target rectangles - QVarLengthArray<qreal, 16> yTarget; // y-coordinates of target rectangles - - int columns = 3; - int rows = 3; - if (rules.horizontal != Qt::StretchTile && sourceCenterWidth != 0) - columns = qMax(3, 2 + qCeil(targetCenterWidth / qreal(sourceCenterWidth))); - if (rules.vertical != Qt::StretchTile && sourceCenterHeight != 0) - rows = qMax(3, 2 + qCeil(targetCenterHeight / qreal(sourceCenterHeight))); - - xTarget.resize(columns + 1); - yTarget.resize(rows + 1); - - bool oldAA = painter->testRenderHint(QPainter::Antialiasing); - if (painter->paintEngine()->type() != QPaintEngine::OpenGL - && painter->paintEngine()->type() != QPaintEngine::OpenGL2 - && oldAA && painter->combinedTransform().type() != QTransform::TxNone) { - painter->setRenderHint(QPainter::Antialiasing, false); - } - - xTarget[0] = targetRect.left(); - xTarget[1] = targetCenterLeft; - xTarget[columns - 1] = targetCenterRight; - xTarget[columns] = targetRect.left() + targetRect.width(); - - yTarget[0] = targetRect.top(); - yTarget[1] = targetCenterTop; - yTarget[rows - 1] = targetCenterBottom; - yTarget[rows] = targetRect.top() + targetRect.height(); - - qreal dx = targetCenterWidth; - qreal dy = targetCenterHeight; - - switch (rules.horizontal) { - case Qt::StretchTile: - dx = targetCenterWidth; - break; - case Qt::RepeatTile: - dx = sourceCenterWidth; - break; - case Qt::RoundTile: - dx = targetCenterWidth / qreal(columns - 2); - break; - } - - for (int i = 2; i < columns - 1; ++i) - xTarget[i] = xTarget[i - 1] + dx; - - switch (rules.vertical) { - case Qt::StretchTile: - dy = targetCenterHeight; - break; - case Qt::RepeatTile: - dy = sourceCenterHeight; - break; - case Qt::RoundTile: - dy = targetCenterHeight / qreal(rows - 2); - break; - } - - for (int i = 2; i < rows - 1; ++i) - yTarget[i] = yTarget[i - 1] + dy; - - // corners - if (targetMargins.top() > 0 && targetMargins.left() > 0 && sourceMargins.top() > 0 && sourceMargins.left() > 0) { // top left - d.x = (0.5 * (xTarget[1] + xTarget[0])); - d.y = (0.5 * (yTarget[1] + yTarget[0])); - d.sourceLeft = sourceRect.left(); - d.sourceTop = sourceRect.top(); - d.width = sourceMargins.left(); - d.height = sourceMargins.top(); - d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.width; - d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.height; - if (hints & QDrawBorderPixmap::OpaqueTopLeft) - opaqueData.append(d); - else - translucentData.append(d); - } - if (targetMargins.top() > 0 && targetMargins.right() > 0 && sourceMargins.top() > 0 && sourceMargins.right() > 0) { // top right - d.x = (0.5 * (xTarget[columns] + xTarget[columns - 1])); - d.y = (0.5 * (yTarget[1] + yTarget[0])); - d.sourceLeft = sourceCenterRight; - d.sourceTop = sourceRect.top(); - d.width = sourceMargins.right(); - d.height = sourceMargins.top(); - d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.width; - d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.height; - if (hints & QDrawBorderPixmap::OpaqueTopRight) - opaqueData.append(d); - else - translucentData.append(d); - } - if (targetMargins.bottom() > 0 && targetMargins.left() > 0 && sourceMargins.bottom() > 0 && sourceMargins.left() > 0) { // bottom left - d.x = (0.5 * (xTarget[1] + xTarget[0])); - d.y =(0.5 * (yTarget[rows] + yTarget[rows - 1])); - d.sourceLeft = sourceRect.left(); - d.sourceTop = sourceCenterBottom; - d.width = sourceMargins.left(); - d.height = sourceMargins.bottom(); - d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.width; - d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.height; - if (hints & QDrawBorderPixmap::OpaqueBottomLeft) - opaqueData.append(d); - else - translucentData.append(d); - } - if (targetMargins.bottom() > 0 && targetMargins.right() > 0 && sourceMargins.bottom() > 0 && sourceMargins.right() > 0) { // bottom right - d.x = (0.5 * (xTarget[columns] + xTarget[columns - 1])); - d.y = (0.5 * (yTarget[rows] + yTarget[rows - 1])); - d.sourceLeft = sourceCenterRight; - d.sourceTop = sourceCenterBottom; - d.width = sourceMargins.right(); - d.height = sourceMargins.bottom(); - d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.width; - d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.height; - if (hints & QDrawBorderPixmap::OpaqueBottomRight) - opaqueData.append(d); - else - translucentData.append(d); - } - - // horizontal edges - if (targetCenterWidth > 0 && sourceCenterWidth > 0) { - if (targetMargins.top() > 0 && sourceMargins.top() > 0) { // top - QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueTop ? opaqueData : translucentData; - d.sourceLeft = sourceCenterLeft; - d.sourceTop = sourceRect.top(); - d.width = sourceCenterWidth; - d.height = sourceMargins.top(); - d.y = (0.5 * (yTarget[1] + yTarget[0])); - d.scaleX = dx / d.width; - d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.height; - for (int i = 1; i < columns - 1; ++i) { - d.x = (0.5 * (xTarget[i + 1] + xTarget[i])); - data.append(d); - } - if (rules.horizontal == Qt::RepeatTile) - data[data.size() - 1].width = ((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX); - } - if (targetMargins.bottom() > 0 && sourceMargins.bottom() > 0) { // bottom - QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueBottom ? opaqueData : translucentData; - d.sourceLeft = sourceCenterLeft; - d.sourceTop = sourceCenterBottom; - d.width = sourceCenterWidth; - d.height = sourceMargins.bottom(); - d.y = (0.5 * (yTarget[rows] + yTarget[rows - 1])); - d.scaleX = dx / d.width; - d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.height; - for (int i = 1; i < columns - 1; ++i) { - d.x = (0.5 * (xTarget[i + 1] + xTarget[i])); - data.append(d); - } - if (rules.horizontal == Qt::RepeatTile) - data[data.size() - 1].width = ((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX); - } - } - - // vertical edges - if (targetCenterHeight > 0 && sourceCenterHeight > 0) { - if (targetMargins.left() > 0 && sourceMargins.left() > 0) { // left - QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueLeft ? opaqueData : translucentData; - d.sourceLeft = sourceRect.left(); - d.sourceTop = sourceCenterTop; - d.width = sourceMargins.left(); - d.height = sourceCenterHeight; - d.x = (0.5 * (xTarget[1] + xTarget[0])); - d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.width; - d.scaleY = dy / d.height; - for (int i = 1; i < rows - 1; ++i) { - d.y = (0.5 * (yTarget[i + 1] + yTarget[i])); - data.append(d); - } - if (rules.vertical == Qt::RepeatTile) - data[data.size() - 1].height = ((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY); - } - if (targetMargins.right() > 0 && sourceMargins.right() > 0) { // right - QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueRight ? opaqueData : translucentData; - d.sourceLeft = sourceCenterRight; - d.sourceTop = sourceCenterTop; - d.width = sourceMargins.right(); - d.height = sourceCenterHeight; - d.x = (0.5 * (xTarget[columns] + xTarget[columns - 1])); - d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.width; - d.scaleY = dy / d.height; - for (int i = 1; i < rows - 1; ++i) { - d.y = (0.5 * (yTarget[i + 1] + yTarget[i])); - data.append(d); - } - if (rules.vertical == Qt::RepeatTile) - data[data.size() - 1].height = ((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY); - } - } - - // center - if (targetCenterWidth > 0 && targetCenterHeight > 0 && sourceCenterWidth > 0 && sourceCenterHeight > 0) { - QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueCenter ? opaqueData : translucentData; - d.sourceLeft = sourceCenterLeft; - d.sourceTop = sourceCenterTop; - d.width = sourceCenterWidth; - d.height = sourceCenterHeight; - d.scaleX = dx / d.width; - d.scaleY = dy / d.height; - - qreal repeatWidth = (xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX; - qreal repeatHeight = (yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY; - - for (int j = 1; j < rows - 1; ++j) { - d.y = (0.5 * (yTarget[j + 1] + yTarget[j])); - for (int i = 1; i < columns - 1; ++i) { - d.x = (0.5 * (xTarget[i + 1] + xTarget[i])); - data.append(d); - } - if (rules.horizontal == Qt::RepeatTile) - data[data.size() - 1].width = repeatWidth; - } - if (rules.vertical == Qt::RepeatTile) { - for (int i = 1; i < columns - 1; ++i) - data[data.size() - i].height = repeatHeight; - } - } - - if (opaqueData.size()) - painter->drawPixmapFragments(opaqueData.data(), opaqueData.size(), pixmap, QPainter::OpaqueHint); - if (translucentData.size()) - painter->drawPixmapFragments(translucentData.data(), translucentData.size(), pixmap); - - if (oldAA) - painter->setRenderHint(QPainter::Antialiasing, true); -} - -} // namespace QQC2 - -QT_END_NAMESPACE diff --git a/src/quicknativestyle/qstyle/qquickdrawutil.h b/src/quicknativestyle/qstyle/qquickdrawutil.h deleted file mode 100644 index 4f7a6c2e..00000000 --- a/src/quicknativestyle/qstyle/qquickdrawutil.h +++ /dev/null @@ -1,170 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QDRAWUTIL_H -#define QDRAWUTIL_H - -#include <QtCore/qnamespace.h> -#include <QtCore/qstring.h> // char*->QString conversion -#include <QtCore/qmargins.h> -#include <QtGui/qpixmap.h> - -QT_BEGIN_NAMESPACE - - -class QPainter; -class QPalette; -class QPoint; -class QColor; -class QBrush; -class QRect; - -namespace QQC2 { - -// -// Standard shade drawing -// - -void qDrawShadeLine(QPainter *p, int x1, int y1, int x2, int y2, - const QPalette &pal, bool sunken = true, - int lineWidth = 1, int midLineWidth = 0); - -void qDrawShadeLine(QPainter *p, const QPoint &p1, const QPoint &p2, - const QPalette &pal, bool sunken = true, - int lineWidth = 1, int midLineWidth = 0); - -void qDrawShadeRect(QPainter *p, int x, int y, int w, int h, - const QPalette &pal, bool sunken = false, - int lineWidth = 1, int midLineWidth = 0, - const QBrush *fill = nullptr); - -void qDrawShadeRect(QPainter *p, const QRect &r, - const QPalette &pal, bool sunken = false, - int lineWidth = 1, int midLineWidth = 0, - const QBrush *fill = nullptr); - -void qDrawShadePanel(QPainter *p, int x, int y, int w, int h, - const QPalette &pal, bool sunken = false, - int lineWidth = 1, const QBrush *fill = nullptr); - -void qDrawShadePanel(QPainter *p, const QRect &r, - const QPalette &pal, bool sunken = false, - int lineWidth = 1, const QBrush *fill = nullptr); - -void qDrawWinButton(QPainter *p, int x, int y, int w, int h, - const QPalette &pal, bool sunken = false, - const QBrush *fill = nullptr); - -void qDrawWinButton(QPainter *p, const QRect &r, - const QPalette &pal, bool sunken = false, - const QBrush *fill = nullptr); - -void qDrawWinPanel(QPainter *p, int x, int y, int w, int h, - const QPalette &pal, bool sunken = false, - const QBrush *fill = nullptr); - -void qDrawWinPanel(QPainter *p, const QRect &r, - const QPalette &pal, bool sunken = false, - const QBrush *fill = nullptr); - -void qDrawPlainRect(QPainter *p, int x, int y, int w, int h, const QColor &, - int lineWidth = 1, const QBrush *fill = nullptr); - -void qDrawPlainRect(QPainter *p, const QRect &r, const QColor &, - int lineWidth = 1, const QBrush *fill = nullptr); - - - -struct QTileRules -{ - inline QTileRules(Qt::TileRule horizontalRule, Qt::TileRule verticalRule) - : horizontal(horizontalRule), vertical(verticalRule) {} - inline QTileRules(Qt::TileRule rule = Qt::StretchTile) - : horizontal(rule), vertical(rule) {} - Qt::TileRule horizontal; - Qt::TileRule vertical; -}; - -#ifndef Q_CLANG_QDOC -// For internal use only. -namespace QDrawBorderPixmap -{ - enum DrawingHint - { - OpaqueTopLeft = 0x0001, - OpaqueTop = 0x0002, - OpaqueTopRight = 0x0004, - OpaqueLeft = 0x0008, - OpaqueCenter = 0x0010, - OpaqueRight = 0x0020, - OpaqueBottomLeft = 0x0040, - OpaqueBottom = 0x0080, - OpaqueBottomRight = 0x0100, - OpaqueCorners = OpaqueTopLeft | OpaqueTopRight | OpaqueBottomLeft | OpaqueBottomRight, - OpaqueEdges = OpaqueTop | OpaqueLeft | OpaqueRight | OpaqueBottom, - OpaqueFrame = OpaqueCorners | OpaqueEdges, - OpaqueAll = OpaqueCenter | OpaqueFrame - }; - - Q_DECLARE_FLAGS(DrawingHints, DrawingHint) -} -#endif - -void qDrawBorderPixmap(QPainter *painter, - const QRect &targetRect, - const QMargins &targetMargins, - const QPixmap &pixmap, - const QRect &sourceRect, - const QMargins &sourceMargins, - const QTileRules &rules = QTileRules() -#ifndef Q_CLANG_QDOC - , QDrawBorderPixmap::DrawingHints hints = QDrawBorderPixmap::DrawingHints() -#endif - ); - -inline void qDrawBorderPixmap(QPainter *painter, - const QRect &target, - const QMargins &margins, - const QPixmap &pixmap) -{ - qDrawBorderPixmap(painter, target, margins, pixmap, pixmap.rect(), margins); -} - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif // QDRAWUTIL_H diff --git a/src/quicknativestyle/qstyle/qquicknativestyle.cpp b/src/quicknativestyle/qstyle/qquicknativestyle.cpp deleted file mode 100644 index 7a2030e0..00000000 --- a/src/quicknativestyle/qstyle/qquicknativestyle.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicknativestyle.h" - -QT_BEGIN_NAMESPACE - -namespace QQC2 { - -QStyle *QQuickNativeStyle::s_style = nullptr; - -} // namespace QQC2 - -QT_END_NAMESPACE diff --git a/src/quicknativestyle/qstyle/qquicknativestyle.h b/src/quicknativestyle/qstyle/qquicknativestyle.h deleted file mode 100644 index 13c313f0..00000000 --- a/src/quicknativestyle/qstyle/qquicknativestyle.h +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKNATIVESTYLE_H -#define QQUICKNATIVESTYLE_H - -#include "qquickstyle.h" - -QT_BEGIN_NAMESPACE - -namespace QQC2 { - -class QQuickNativeStyle -{ -public: - static void setStyle(QStyle *style) - { - if (s_style) - delete s_style; - s_style = style; - } - - inline static QStyle *style() - { - return s_style; - } - -private: - static QStyle *s_style; -}; - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif // QQUICKNATIVESTYLE_H diff --git a/src/quicknativestyle/qstyle/qquickstyle.cpp b/src/quicknativestyle/qstyle/qquickstyle.cpp deleted file mode 100644 index 2278fb65..00000000 --- a/src/quicknativestyle/qstyle/qquickstyle.cpp +++ /dev/null @@ -1,412 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyle.h" -#include "qquickstyle_p.h" -#include "qquickstyleoption.h" - -#include <QtGui/qpainter.h> -#include <QtGui/qbitmap.h> -#include <QtGui/qpixmapcache.h> -#include <QtGui/qpa/qplatformtheme.h> - -#include <QtGui/private/qguiapplication_p.h> - -#ifndef QT_NO_DEBUG -# include <QtCore/qdebug.h> -#endif - -#include <limits.h> -#include <algorithm> - -QT_BEGIN_NAMESPACE - -namespace QQC2 { - -/*! - Constructs a style object. -*/ -QStyle::QStyle() - : QObject(*new QStylePrivate) -{ - Q_D(QStyle); - d->proxyStyle = this; -} - -/*! - \internal - - Constructs a style object. -*/ -QStyle::QStyle(QStylePrivate &dd) - : QObject(dd) -{ - Q_D(QStyle); - d->proxyStyle = this; -} - -/*! - Destroys the style object. -*/ -QStyle::~QStyle() -{ -} - -/*! - \fn QRect QStyle::itemTextRect(const QFontMetrics &metrics, const QRect &rectangle, int alignment, bool enabled, const QString &text) const - - Returns the area within the given \a rectangle in which to draw - the provided \a text according to the specified font \a metrics - and \a alignment. The \a enabled parameter indicates whether or - not the associated item is enabled. - - If the given \a rectangle is larger than the area needed to render - the \a text, the rectangle that is returned will be offset within - \a rectangle according to the specified \a alignment. For - example, if \a alignment is Qt::AlignCenter, the returned - rectangle will be centered within \a rectangle. If the given \a - rectangle is smaller than the area needed, the returned rectangle - will be the smallest rectangle large enough to render the \a text. - - \sa Qt::Alignment -*/ -QRect QStyle::itemTextRect(const QFontMetrics &metrics, const QRect &rect, int alignment, bool enabled, - const QString &text) const -{ - QRect result; - int x, y, w, h; - rect.getRect(&x, &y, &w, &h); - if (!text.isEmpty()) { - result = metrics.boundingRect(x, y, w, h, alignment, text); - if (!enabled && proxy()->styleHint(SH_EtchDisabledText)) { - result.setWidth(result.width()+1); - result.setHeight(result.height()+1); - } - } else { - result = QRect(x, y, w, h); - } - return result; -} - -/*! - \fn QRect QStyle::itemPixmapRect(const QRect &rectangle, int alignment, const QPixmap &pixmap) const - - Returns the area within the given \a rectangle in which to draw - the specified \a pixmap according to the defined \a alignment. -*/ -QRect QStyle::itemPixmapRect(const QRect &rect, int alignment, const QPixmap &pixmap) const -{ - QRect result; - int x, y, w, h; - rect.getRect(&x, &y, &w, &h); - - const int pixmapWidth = pixmap.width()/pixmap.devicePixelRatio(); - const int pixmapHeight = pixmap.height()/pixmap.devicePixelRatio(); - - if ((alignment & Qt::AlignVCenter) == Qt::AlignVCenter) - y += h/2 - pixmapHeight/2; - else if ((alignment & Qt::AlignBottom) == Qt::AlignBottom) - y += h - pixmapHeight; - if ((alignment & Qt::AlignRight) == Qt::AlignRight) - x += w - pixmapWidth; - else if ((alignment & Qt::AlignHCenter) == Qt::AlignHCenter) - x += w/2 - pixmapWidth/2; - else if ((alignment & Qt::AlignLeft) != Qt::AlignLeft && QGuiApplication::isRightToLeft()) - x += w - pixmapWidth; - result = QRect(x, y, pixmapWidth, pixmapHeight); - return result; -} - -/*! - \fn void QStyle::drawItemText(QPainter *painter, const QRect &rectangle, int alignment, const QPalette &palette, bool enabled, const QString& text, QPalette::ColorRole textRole) const - - Draws the given \a text in the specified \a rectangle using the - provided \a painter and \a palette. - - The text is drawn using the painter's pen, and aligned and wrapped - according to the specified \a alignment. If an explicit \a - textRole is specified, the text is drawn using the \a palette's - color for the given role. The \a enabled parameter indicates - whether or not the item is enabled; when reimplementing this - function, the \a enabled parameter should influence how the item is - drawn. - - \sa Qt::Alignment, drawItemPixmap() -*/ -void QStyle::drawItemText(QPainter *painter, const QRect &rect, int alignment, const QPalette &pal, - bool enabled, const QString& text, QPalette::ColorRole textRole) const -{ - if (text.isEmpty()) - return; - QPen savedPen; - if (textRole != QPalette::NoRole) { - savedPen = painter->pen(); - painter->setPen(QPen(pal.brush(textRole), savedPen.widthF())); - } - if (!enabled) { - if (proxy()->styleHint(SH_DitherDisabledText)) { - QRect br; - painter->drawText(rect, alignment, text, &br); - painter->fillRect(br, QBrush(painter->background().color(), Qt::Dense5Pattern)); - return; - } else if (proxy()->styleHint(SH_EtchDisabledText)) { - QPen pen = painter->pen(); - painter->setPen(pal.light().color()); - painter->drawText(rect.adjusted(1, 1, 1, 1), alignment, text); - painter->setPen(pen); - } - } - painter->drawText(rect, alignment, text); - if (textRole != QPalette::NoRole) - painter->setPen(savedPen); -} - -/*! - \fn void QStyle::drawItemPixmap(QPainter *painter, const QRect &rectangle, int alignment, - const QPixmap &pixmap) const - - Draws the given \a pixmap in the specified \a rectangle, according - to the specified \a alignment, using the provided \a painter. - - \sa drawItemText() -*/ - -void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, - const QPixmap &pixmap) const -{ - qreal scale = pixmap.devicePixelRatio(); - QRect aligned = alignedRect(QGuiApplication::layoutDirection(), QFlag(alignment), pixmap.size() / scale, rect); - QRect inter = aligned.intersected(rect); - - painter->drawPixmap(inter.x(), inter.y(), pixmap, inter.x() - aligned.x(), inter.y() - aligned.y(), inter.width() * scale, inter.height() *scale); -} - -/*! - \fn QRect QStyle::visualRect(Qt::LayoutDirection direction, const QRect &boundingRectangle, const QRect &logicalRectangle) - - Returns the given \a logicalRectangle converted to screen - coordinates based on the specified \a direction. The \a - boundingRectangle is used when performing the translation. - - This function is provided to support right-to-left desktops, and - is typically used in implementations of the subControlRect() - function. - - \sa QWidget::layoutDirection -*/ -QRect QStyle::visualRect(Qt::LayoutDirection direction, const QRect &boundingRect, const QRect &logicalRect) -{ - if (direction == Qt::LeftToRight) - return logicalRect; - QRect rect = logicalRect; - rect.translate(2 * (boundingRect.right() - logicalRect.right()) + - logicalRect.width() - boundingRect.width(), 0); - return rect; -} - -/*! - \fn QPoint QStyle::visualPos(Qt::LayoutDirection direction, const QRect &boundingRectangle, const QPoint &logicalPosition) - - Returns the given \a logicalPosition converted to screen - coordinates based on the specified \a direction. The \a - boundingRectangle is used when performing the translation. - - \sa QWidget::layoutDirection -*/ -QPoint QStyle::visualPos(Qt::LayoutDirection direction, const QRect &boundingRect, const QPoint &logicalPos) -{ - if (direction == Qt::LeftToRight) - return logicalPos; - return QPoint(boundingRect.right() - logicalPos.x(), logicalPos.y()); -} - -/*! - Returns a new rectangle of the specified \a size that is aligned to the given \a - rectangle according to the specified \a alignment and \a direction. - */ -QRect QStyle::alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize &size, const QRect &rectangle) -{ - alignment = visualAlignment(direction, alignment); - int x = rectangle.x(); - int y = rectangle.y(); - int w = size.width(); - int h = size.height(); - if ((alignment & Qt::AlignVCenter) == Qt::AlignVCenter) - y += rectangle.size().height()/2 - h/2; - else if ((alignment & Qt::AlignBottom) == Qt::AlignBottom) - y += rectangle.size().height() - h; - if ((alignment & Qt::AlignRight) == Qt::AlignRight) - x += rectangle.size().width() - w; - else if ((alignment & Qt::AlignHCenter) == Qt::AlignHCenter) - x += rectangle.size().width()/2 - w/2; - return QRect(x, y, w, h); -} - -/*! - Transforms an \a alignment of Qt::AlignLeft or Qt::AlignRight - without Qt::AlignAbsolute into Qt::AlignLeft or Qt::AlignRight with - Qt::AlignAbsolute according to the layout \a direction. The other - alignment flags are left untouched. - - If no horizontal alignment was specified, the function returns the - default alignment for the given layout \a direction. - - QWidget::layoutDirection -*/ -Qt::Alignment QStyle::visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment) -{ - return QGuiApplicationPrivate::visualAlignment(direction, alignment); -} - -/*! - Converts the given \a logicalValue to a pixel position. The \a min - parameter maps to 0, \a max maps to \a span and other values are - distributed evenly in-between. - - This function can handle the entire integer range without - overflow, providing that \a span is less than 4096. - - By default, this function assumes that the maximum value is on the - right for horizontal items and on the bottom for vertical items. - Set the \a upsideDown parameter to true to reverse this behavior. - - \sa sliderValueFromPosition() -*/ - -int QStyle::sliderPositionFromValue(int min, int max, int logicalValue, int span, bool upsideDown) -{ - if (span <= 0 || logicalValue < min || max <= min) - return 0; - if (logicalValue > max) - return upsideDown ? span : min; - - uint range = max - min; - uint p = upsideDown ? max - logicalValue : logicalValue - min; - - if (range > (uint)INT_MAX/4096) { - double dpos = (double(p))/(double(range)/span); - return int(dpos); - } else if (range > (uint)span) { - return (2 * p * span + range) / (2*range); - } else { - uint div = span / range; - uint mod = span % range; - return p * div + (2 * p * mod + range) / (2 * range); - } - // equiv. to (p * span) / range + 0.5 - // no overflow because of this implicit assumption: - // span <= 4096 -} - -/*! - \fn int QStyle::sliderValueFromPosition(int min, int max, int position, int span, bool upsideDown) - - Converts the given pixel \a position to a logical value. 0 maps to - the \a min parameter, \a span maps to \a max and other values are - distributed evenly in-between. - - This function can handle the entire integer range without - overflow. - - By default, this function assumes that the maximum value is on the - right for horizontal items and on the bottom for vertical - items. Set the \a upsideDown parameter to true to reverse this - behavior. - - \sa sliderPositionFromValue() -*/ - -int QStyle::sliderValueFromPosition(int min, int max, int pos, int span, bool upsideDown) -{ - if (span <= 0 || pos <= 0) - return upsideDown ? max : min; - if (pos >= span) - return upsideDown ? min : max; - - uint range = max - min; - - if ((uint)span > range) { - int tmp = (2 * pos * range + span) / (2 * span); - return upsideDown ? max - tmp : tmp + min; - } else { - uint div = range / span; - uint mod = range % span; - int tmp = pos * div + (2 * pos * mod + span) / (2 * span); - return upsideDown ? max - tmp : tmp + min; - } - // equiv. to min + (pos*range)/span + 0.5 - // no overflow because of this implicit assumption: - // pos <= span < sqrt(INT_MAX+0.0625)+0.25 ~ sqrt(INT_MAX) -} - -/*! - Returns the style's standard palette. - - Note that on systems that support system colors, the style's - standard palette is not used. In particular, the Windows - Vista and Mac styles do not use the standard palette, but make - use of native theme engines. With these styles, you should not set - the palette with QApplication::setPalette(). - - \sa QApplication::setPalette() - */ -QPalette QStyle::standardPalette() const -{ - QColor background = QColor(0xd4, 0xd0, 0xc8); // win 2000 grey - - QColor light(background.lighter()); - QColor dark(background.darker()); - QColor mid(Qt::gray); - QPalette palette(Qt::black, background, light, dark, mid, Qt::black, Qt::white); - palette.setBrush(QPalette::Disabled, QPalette::WindowText, dark); - palette.setBrush(QPalette::Disabled, QPalette::Text, dark); - palette.setBrush(QPalette::Disabled, QPalette::ButtonText, dark); - palette.setBrush(QPalette::Disabled, QPalette::Base, background); - return palette; -} - -//Windows and KDE allow menus to cover the taskbar, while GNOME and macOS don't -bool QStylePrivate::useFullScreenForPopup() -{ - auto theme = QGuiApplicationPrivate::platformTheme(); - return theme && theme->themeHint(QPlatformTheme::UseFullScreenForPopupMenu).toBool(); -} - -} // namespace QQC2 - -QT_END_NAMESPACE - -#include "moc_qquickstyle.cpp" diff --git a/src/quicknativestyle/qstyle/qquickstyle.h b/src/quicknativestyle/qstyle/qquickstyle.h deleted file mode 100644 index 38a0dcf5..00000000 --- a/src/quicknativestyle/qstyle/qquickstyle.h +++ /dev/null @@ -1,839 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSTYLE_H -#define QSTYLE_H - -#include <QtCore/qobject.h> -#include <QtCore/qrect.h> -#include <QtCore/qsize.h> -#include <QtGui/qwindow.h> -#include <QtGui/qicon.h> -#include <QtGui/qpixmap.h> -#include <QtGui/qpalette.h> - -QT_BEGIN_NAMESPACE - -class QAction; -class QDebug; -class QFontMetrics; - -namespace QQC2 { - -class QStyleHintReturn; -class QStyleOption; -class QStyleOptionComplex; -class QStylePrivate; - -class QStyle : public QObject -{ - Q_OBJECT - Q_DECLARE_PRIVATE(QStyle) - -protected: - QStyle(QStylePrivate &dd); - -public: - QStyle(); - virtual ~QStyle(); - - enum StateFlag { - State_None = 0x00000000, - State_Enabled = 0x00000001, - State_Raised = 0x00000002, - State_Sunken = 0x00000004, - State_Off = 0x00000008, - State_NoChange = 0x00000010, - State_On = 0x00000020, - State_DownArrow = 0x00000040, - State_Horizontal = 0x00000080, - State_HasFocus = 0x00000100, - State_Top = 0x00000200, - State_Bottom = 0x00000400, - State_FocusAtBorder = 0x00000800, - State_AutoRaise = 0x00001000, - State_MouseOver = 0x00002000, - State_UpArrow = 0x00004000, - State_Selected = 0x00008000, - State_Active = 0x00010000, - State_Window = 0x00020000, - State_Open = 0x00040000, - State_Children = 0x00080000, - State_Item = 0x00100000, - State_Sibling = 0x00200000, - State_Editing = 0x00400000, - State_KeyboardFocusChange = 0x00800000, -#ifdef QT_KEYPAD_NAVIGATION - State_HasEditFocus = 0x01000000, -#endif - State_ReadOnly = 0x02000000, - State_Small = 0x04000000, - State_Mini = 0x08000000 - }; - Q_ENUM(StateFlag) - Q_DECLARE_FLAGS(State, StateFlag) - - enum PrimitiveElement { - PE_Frame, - PE_FrameDefaultButton, - PE_FrameDockWidget, - PE_FrameFocusRect, - PE_FrameGroupBox, - PE_FrameLineEdit, - PE_FrameMenu, - PE_FrameStatusBarItem, - PE_FrameTabWidget, - PE_FrameWindow, - PE_FrameButtonBevel, - PE_FrameButtonTool, - PE_FrameTabBarBase, - - PE_PanelButtonCommand, - PE_PanelButtonBevel, - PE_PanelButtonTool, - PE_PanelMenuBar, - PE_PanelToolBar, - PE_PanelLineEdit, - - PE_IndicatorArrowDown, - PE_IndicatorArrowLeft, - PE_IndicatorArrowRight, - PE_IndicatorArrowUp, - PE_IndicatorBranch, - PE_IndicatorButtonDropDown, - PE_IndicatorItemViewItemCheck, - PE_IndicatorCheckBox, - PE_IndicatorDockWidgetResizeHandle, - PE_IndicatorHeaderArrow, - PE_IndicatorMenuCheckMark, - PE_IndicatorProgressChunk, - PE_IndicatorRadioButton, - PE_IndicatorSpinDown, - PE_IndicatorSpinMinus, - PE_IndicatorSpinPlus, - PE_IndicatorSpinUp, - PE_IndicatorToolBarHandle, - PE_IndicatorToolBarSeparator, - PE_PanelTipLabel, - PE_IndicatorTabTear, - PE_IndicatorTabTearLeft = PE_IndicatorTabTear, - PE_PanelScrollAreaCorner, - - PE_Widget, - - PE_IndicatorColumnViewArrow, - PE_IndicatorItemViewItemDrop, - - PE_PanelItemViewItem, - PE_PanelItemViewRow, // ### Qt 6: remove - - PE_PanelStatusBar, - - PE_IndicatorTabClose, - PE_PanelMenu, - - PE_IndicatorTabTearRight, - - // do not add any values below/greater this - PE_CustomBase = 0xf000000 - }; - Q_ENUM(PrimitiveElement) - - enum ControlElement { - CE_PushButton, - CE_PushButtonBevel, - CE_PushButtonLabel, - - CE_CheckBox, - CE_CheckBoxLabel, - - CE_RadioButton, - CE_RadioButtonLabel, - - CE_TabBarTab, - CE_TabBarTabShape, - CE_TabBarTabLabel, - - CE_ProgressBar, - CE_ProgressBarGroove, - CE_ProgressBarContents, - CE_ProgressBarLabel, - - CE_MenuItem, - CE_MenuScroller, - CE_MenuVMargin, - CE_MenuHMargin, - CE_MenuTearoff, - CE_MenuEmptyArea, - - CE_MenuBarItem, - CE_MenuBarEmptyArea, - - CE_ToolButtonLabel, - - CE_Header, - CE_HeaderSection, - CE_HeaderLabel, - - CE_ToolBoxTab, - CE_SizeGrip, - CE_Splitter, - CE_RubberBand, - CE_DockWidgetTitle, - - CE_ScrollBarAddLine, - CE_ScrollBarSubLine, - CE_ScrollBarAddPage, - CE_ScrollBarSubPage, - CE_ScrollBarSlider, - CE_ScrollBarFirst, - CE_ScrollBarLast, - - CE_FocusFrame, - CE_ComboBoxLabel, - - CE_ToolBar, - CE_ToolBoxTabShape, - CE_ToolBoxTabLabel, - CE_HeaderEmptyArea, - - CE_ColumnViewGrip, - - CE_ItemViewItem, - - CE_ShapedFrame, - - // do not add any values below/greater than this - CE_CustomBase = 0xf0000000 - }; - Q_ENUM(ControlElement) - - enum SubElement { - SE_PushButtonContents, - SE_PushButtonFocusRect, - - SE_CheckBoxIndicator, - SE_CheckBoxContents, - SE_CheckBoxFocusRect, - SE_CheckBoxClickRect, - - SE_RadioButtonIndicator, - SE_RadioButtonContents, - SE_RadioButtonFocusRect, - SE_RadioButtonClickRect, - - SE_ComboBoxFocusRect, - - SE_SliderFocusRect, - - SE_ProgressBarGroove, - SE_ProgressBarContents, - SE_ProgressBarLabel, - - SE_ToolBoxTabContents, - - SE_HeaderLabel, - SE_HeaderArrow, - - SE_TabWidgetTabBar, - SE_TabWidgetTabPane, - SE_TabWidgetTabContents, - SE_TabWidgetLeftCorner, - SE_TabWidgetRightCorner, - - SE_ItemViewItemCheckIndicator, - SE_TabBarTearIndicator, - SE_TabBarTearIndicatorLeft = SE_TabBarTearIndicator, - - SE_TreeViewDisclosureItem, - - SE_LineEditContents, - SE_FrameContents, - - SE_DockWidgetCloseButton, - SE_DockWidgetFloatButton, - SE_DockWidgetTitleBarText, - SE_DockWidgetIcon, - - SE_CheckBoxLayoutItem, - SE_ComboBoxLayoutItem, - SE_DateTimeEditLayoutItem, - SE_LabelLayoutItem, - SE_ProgressBarLayoutItem, - SE_PushButtonLayoutItem, - SE_RadioButtonLayoutItem, - SE_SliderLayoutItem, - SE_ScrollBarLayoutItem, - SE_SpinBoxLayoutItem, - SE_ToolButtonLayoutItem, - - SE_FrameLayoutItem, - SE_GroupBoxLayoutItem, - SE_TabWidgetLayoutItem, - - SE_ItemViewItemDecoration, - SE_ItemViewItemText, - SE_ItemViewItemFocusRect, - - SE_TabBarTabLeftButton, - SE_TabBarTabRightButton, - SE_TabBarTabText, - - SE_ShapedFrameContents, - - SE_ToolBarHandle, - - SE_TabBarScrollLeftButton, - SE_TabBarScrollRightButton, - SE_TabBarTearIndicatorRight, - - // do not add any values below/greater than this - SE_CustomBase = 0xf0000000 - }; - Q_ENUM(SubElement) - - enum ComplexControl { - CC_SpinBox, - CC_ComboBox, - CC_ScrollBar, - CC_Slider, - CC_ToolButton, - CC_TitleBar, - CC_Dial, - CC_GroupBox, - CC_MdiControls, - - // do not add any values below/greater than this - CC_CustomBase = 0xf0000000 - }; - Q_ENUM(ComplexControl) - - enum SubControl { - SC_None = 0x00000000, - - SC_ScrollBarAddLine = 0x00000001, - SC_ScrollBarSubLine = 0x00000002, - SC_ScrollBarAddPage = 0x00000004, - SC_ScrollBarSubPage = 0x00000008, - SC_ScrollBarFirst = 0x00000010, - SC_ScrollBarLast = 0x00000020, - SC_ScrollBarSlider = 0x00000040, - SC_ScrollBarGroove = 0x00000080, - - SC_SpinBoxUp = 0x00000001, - SC_SpinBoxDown = 0x00000002, - SC_SpinBoxFrame = 0x00000004, - SC_SpinBoxEditField = 0x00000008, - - SC_ComboBoxFrame = 0x00000001, - SC_ComboBoxEditField = 0x00000002, - SC_ComboBoxArrow = 0x00000004, - SC_ComboBoxListBoxPopup = 0x00000008, - - SC_SliderGroove = 0x00000001, - SC_SliderHandle = 0x00000002, - SC_SliderTickmarks = 0x00000004, - - SC_ToolButton = 0x00000001, - SC_ToolButtonMenu = 0x00000002, - - SC_TitleBarSysMenu = 0x00000001, - SC_TitleBarMinButton = 0x00000002, - SC_TitleBarMaxButton = 0x00000004, - SC_TitleBarCloseButton = 0x00000008, - SC_TitleBarNormalButton = 0x00000010, - SC_TitleBarShadeButton = 0x00000020, - SC_TitleBarUnshadeButton = 0x00000040, - SC_TitleBarContextHelpButton = 0x00000080, - SC_TitleBarLabel = 0x00000100, - - SC_DialGroove = 0x00000001, - SC_DialHandle = 0x00000002, - SC_DialTickmarks = 0x00000004, - - SC_GroupBoxCheckBox = 0x00000001, - SC_GroupBoxLabel = 0x00000002, - SC_GroupBoxContents = 0x00000004, - SC_GroupBoxFrame = 0x00000008, - - SC_MdiMinButton = 0x00000001, - SC_MdiNormalButton = 0x00000002, - SC_MdiCloseButton = 0x00000004, - - SC_CustomBase = 0xf0000000, - SC_All = 0xffffffff - }; - Q_ENUM(SubControl) - Q_DECLARE_FLAGS(SubControls, SubControl) - - enum PixelMetric { - PM_ButtonMargin, - PM_ButtonDefaultIndicator, - PM_MenuButtonIndicator, - PM_ButtonShiftHorizontal, - PM_ButtonShiftVertical, - - PM_DefaultFrameWidth, - PM_SpinBoxFrameWidth, - PM_ComboBoxFrameWidth, - - PM_MaximumDragDistance, - - PM_ScrollBarExtent, - PM_ScrollBarSliderMin, - - PM_SliderThickness, // total slider thickness - PM_SliderControlThickness, // thickness of the business part - PM_SliderLength, // total length of slider - PM_SliderTickmarkOffset, // - PM_SliderSpaceAvailable, // available space for slider to move - - PM_DockWidgetSeparatorExtent, - PM_DockWidgetHandleExtent, - PM_DockWidgetFrameWidth, - - PM_TabBarTabOverlap, - PM_TabBarTabHSpace, - PM_TabBarTabVSpace, - PM_TabBarBaseHeight, - PM_TabBarBaseOverlap, - - PM_ProgressBarChunkWidth, - - PM_SplitterWidth, - PM_TitleBarHeight, - - PM_MenuScrollerHeight, - PM_MenuHMargin, - PM_MenuVMargin, - PM_MenuPanelWidth, - PM_MenuTearoffHeight, - PM_MenuDesktopFrameWidth, - - PM_MenuBarPanelWidth, - PM_MenuBarItemSpacing, - PM_MenuBarVMargin, - PM_MenuBarHMargin, - - PM_IndicatorWidth, - PM_IndicatorHeight, - PM_ExclusiveIndicatorWidth, - PM_ExclusiveIndicatorHeight, - - PM_DialogButtonsSeparator, - PM_DialogButtonsButtonWidth, - PM_DialogButtonsButtonHeight, - - PM_MdiSubWindowFrameWidth, - PM_MdiSubWindowMinimizedWidth, - - PM_HeaderMargin, - PM_HeaderMarkSize, - PM_HeaderGripMargin, - PM_TabBarTabShiftHorizontal, - PM_TabBarTabShiftVertical, - PM_TabBarScrollButtonWidth, - - PM_ToolBarFrameWidth, - PM_ToolBarHandleExtent, - PM_ToolBarItemSpacing, - PM_ToolBarItemMargin, - PM_ToolBarSeparatorExtent, - PM_ToolBarExtensionExtent, - - PM_SpinBoxSliderHeight, - - PM_DefaultTopLevelMargin, - PM_DefaultChildMargin, - PM_DefaultLayoutSpacing, - - PM_ToolBarIconSize, - PM_ListViewIconSize, - PM_IconViewIconSize, - PM_SmallIconSize, - PM_LargeIconSize, - - PM_FocusFrameVMargin, - PM_FocusFrameHMargin, - - PM_ToolTipLabelFrameWidth, - PM_CheckBoxLabelSpacing, - PM_TabBarIconSize, - PM_SizeGripSize, - PM_DockWidgetTitleMargin, - PM_MessageBoxIconSize, - PM_ButtonIconSize, - - PM_DockWidgetTitleBarButtonMargin, - - PM_RadioButtonLabelSpacing, - PM_LayoutLeftMargin, - PM_LayoutTopMargin, - PM_LayoutRightMargin, - PM_LayoutBottomMargin, - PM_LayoutHorizontalSpacing, - PM_LayoutVerticalSpacing, - PM_TabBar_ScrollButtonOverlap, - - PM_TextCursorWidth, - - PM_TabCloseIndicatorWidth, - PM_TabCloseIndicatorHeight, - - PM_ScrollView_ScrollBarSpacing, - PM_ScrollView_ScrollBarOverlap, - PM_SubMenuOverlap, - PM_TreeViewIndentation, - - PM_HeaderDefaultSectionSizeHorizontal, - PM_HeaderDefaultSectionSizeVertical, - - PM_TitleBarButtonIconSize, - PM_TitleBarButtonSize, - - PM_PushButtonFocusFrameRadius, - PM_CheckBoxFocusFrameRadius, - PM_ComboBoxFocusFrameRadius, - PM_DialFocusFrameRadius, - PM_RadioButtonFocusFrameRadius, - PM_SliderFocusFrameRadius, - PM_SpinBoxFocusFrameRadius, - PM_TextAreaFocusFrameRadius, - PM_TextFieldFocusFrameRadius, - - // do not add any values below/greater than this - PM_CustomBase = 0xf0000000 - }; - Q_ENUM(PixelMetric) - - enum ContentsType { - CT_PushButton, - CT_CheckBox, - CT_RadioButton, - CT_ToolButton, - CT_ComboBox, - CT_Splitter, - CT_ProgressBar, - CT_MenuItem, - CT_MenuBarItem, - CT_MenuBar, - CT_Menu, - CT_TabBarTab, - CT_Slider, - CT_Dial, - CT_ScrollBar, - CT_LineEdit, - CT_SpinBox, - CT_SizeGrip, - CT_TabWidget, - CT_DialogButtons, - CT_HeaderSection, - CT_GroupBox, - CT_MdiControls, - CT_ItemViewItem, - CT_Frame, - // do not add any values below/greater than this - CT_CustomBase = 0xf0000000 - }; - Q_ENUM(ContentsType) - - enum RequestSoftwareInputPanel { - RSIP_OnMouseClickAndAlreadyFocused, - RSIP_OnMouseClick - }; - Q_ENUM(RequestSoftwareInputPanel) - - enum StyleHint { - SH_EtchDisabledText, - SH_DitherDisabledText, - SH_ScrollBar_MiddleClickAbsolutePosition, - SH_ScrollBar_ScrollWhenPointerLeavesControl, - SH_TabBar_SelectMouseType, - SH_TabBar_Alignment, - SH_Header_ArrowAlignment, - SH_Slider_SnapToValue, - SH_Slider_SloppyKeyEvents, - SH_ProgressDialog_CenterCancelButton, - SH_ProgressDialog_TextLabelAlignment, - SH_PrintDialog_RightAlignButtons, - SH_MainWindow_SpaceBelowMenuBar, - SH_FontDialog_SelectAssociatedText, - SH_Menu_AllowActiveAndDisabled, - SH_Menu_SpaceActivatesItem, - SH_Menu_SubMenuPopupDelay, - SH_ScrollView_FrameOnlyAroundContents, - SH_MenuBar_AltKeyNavigation, - SH_ComboBox_ListMouseTracking, - SH_Menu_MouseTracking, - SH_MenuBar_MouseTracking, - SH_ItemView_ChangeHighlightOnFocus, - SH_Widget_ShareActivation, - SH_Workspace_FillSpaceOnMaximize, - SH_ComboBox_Popup, - SH_TitleBar_NoBorder, - SH_Slider_StopMouseOverSlider, - SH_BlinkCursorWhenTextSelected, - SH_RichText_FullWidthSelection, - SH_Menu_Scrollable, - SH_GroupBox_TextLabelVerticalAlignment, - SH_GroupBox_TextLabelColor, - SH_Menu_SloppySubMenus, - SH_Table_GridLineColor, - SH_LineEdit_PasswordCharacter, - SH_DialogButtons_DefaultButton, - SH_ToolBox_SelectedPageTitleBold, - SH_TabBar_PreferNoArrows, - SH_ScrollBar_LeftClickAbsolutePosition, - SH_ListViewExpand_SelectMouseType, - SH_UnderlineShortcut, - SH_SpinBox_AnimateButton, - SH_SpinBox_KeyPressAutoRepeatRate, - SH_SpinBox_ClickAutoRepeatRate, - SH_Menu_FillScreenWithScroll, - SH_ToolTipLabel_Opacity, - SH_DrawMenuBarSeparator, - SH_TitleBar_ModifyNotification, - SH_Button_FocusPolicy, - SH_MessageBox_UseBorderForButtonSpacing, - SH_TitleBar_AutoRaise, - SH_ToolButton_PopupDelay, - SH_FocusFrame_Mask, - SH_RubberBand_Mask, - SH_WindowFrame_Mask, - SH_SpinControls_DisableOnBounds, - SH_Dial_BackgroundRole, - SH_ComboBox_LayoutDirection, - SH_ItemView_EllipsisLocation, - SH_ItemView_ShowDecorationSelected, - SH_ItemView_ActivateItemOnSingleClick, - SH_ScrollBar_ContextMenu, - SH_ScrollBar_RollBetweenButtons, - SH_Slider_AbsoluteSetButtons, - SH_Slider_PageSetButtons, - SH_Menu_KeyboardSearch, - SH_TabBar_ElideMode, - SH_DialogButtonLayout, - SH_ComboBox_PopupFrameStyle, - SH_MessageBox_TextInteractionFlags, - SH_DialogButtonBox_ButtonsHaveIcons, - SH_SpellCheckUnderlineStyle, - SH_MessageBox_CenterButtons, - SH_Menu_SelectionWrap, - SH_ItemView_MovementWithoutUpdatingSelection, - SH_ToolTip_Mask, - SH_FocusFrame_AboveWidget, - SH_TextControl_FocusIndicatorTextCharFormat, - SH_WizardStyle, - SH_ItemView_ArrowKeysNavigateIntoChildren, - SH_Menu_Mask, - SH_Menu_FlashTriggeredItem, - SH_Menu_FadeOutOnHide, - SH_SpinBox_ClickAutoRepeatThreshold, - SH_ItemView_PaintAlternatingRowColorsForEmptyArea, - SH_FormLayoutWrapPolicy, - SH_TabWidget_DefaultTabPosition, - SH_ToolBar_Movable, - SH_FormLayoutFieldGrowthPolicy, - SH_FormLayoutFormAlignment, - SH_FormLayoutLabelAlignment, - SH_ItemView_DrawDelegateFrame, - SH_TabBar_CloseButtonPosition, - SH_DockWidget_ButtonsHaveFrame, - SH_ToolButtonStyle, - SH_RequestSoftwareInputPanel, - SH_ScrollBar_Transient, - SH_Menu_SupportsSections, - SH_ToolTip_WakeUpDelay, - SH_ToolTip_FallAsleepDelay, - SH_Widget_Animate, - SH_Splitter_OpaqueResize, - // Whether we should use a native popup. - // Only supported for non-editable combo boxes on Mac OS X so far. - SH_ComboBox_UseNativePopup, - SH_LineEdit_PasswordMaskDelay, - SH_TabBar_ChangeCurrentDelay, - SH_Menu_SubMenuUniDirection, - SH_Menu_SubMenuUniDirectionFailCount, - SH_Menu_SubMenuSloppySelectOtherActions, - SH_Menu_SubMenuSloppyCloseTimeout, - SH_Menu_SubMenuResetWhenReenteringParent, - SH_Menu_SubMenuDontStartSloppyOnLeave, - SH_ItemView_ScrollMode, - SH_TitleBar_ShowToolTipsOnButtons, - SH_Widget_Animation_Duration, - SH_ComboBox_AllowWheelScrolling, - SH_SpinBox_ButtonsInsideFrame, - SH_SpinBox_StepModifier, - // Add new style hint values here - - SH_CustomBase = 0xf0000000 - }; - Q_ENUM(StyleHint) - - enum StandardPixmap { - SP_TitleBarMenuButton, - SP_TitleBarMinButton, - SP_TitleBarMaxButton, - SP_TitleBarCloseButton, - SP_TitleBarNormalButton, - SP_TitleBarShadeButton, - SP_TitleBarUnshadeButton, - SP_TitleBarContextHelpButton, - SP_DockWidgetCloseButton, - SP_MessageBoxInformation, - SP_MessageBoxWarning, - SP_MessageBoxCritical, - SP_MessageBoxQuestion, - SP_DesktopIcon, - SP_TrashIcon, - SP_ComputerIcon, - SP_DriveFDIcon, - SP_DriveHDIcon, - SP_DriveCDIcon, - SP_DriveDVDIcon, - SP_DriveNetIcon, - SP_DirOpenIcon, - SP_DirClosedIcon, - SP_DirLinkIcon, - SP_DirLinkOpenIcon, - SP_FileIcon, - SP_FileLinkIcon, - SP_ToolBarHorizontalExtensionButton, - SP_ToolBarVerticalExtensionButton, - SP_FileDialogStart, - SP_FileDialogEnd, - SP_FileDialogToParent, - SP_FileDialogNewFolder, - SP_FileDialogDetailedView, - SP_FileDialogInfoView, - SP_FileDialogContentsView, - SP_FileDialogListView, - SP_FileDialogBack, - SP_DirIcon, - SP_DialogOkButton, - SP_DialogCancelButton, - SP_DialogHelpButton, - SP_DialogOpenButton, - SP_DialogSaveButton, - SP_DialogCloseButton, - SP_DialogApplyButton, - SP_DialogResetButton, - SP_DialogDiscardButton, - SP_DialogYesButton, - SP_DialogNoButton, - SP_ArrowUp, - SP_ArrowDown, - SP_ArrowLeft, - SP_ArrowRight, - SP_ArrowBack, - SP_ArrowForward, - SP_DirHomeIcon, - SP_CommandLink, - SP_VistaShield, - SP_BrowserReload, - SP_BrowserStop, - SP_MediaPlay, - SP_MediaStop, - SP_MediaPause, - SP_MediaSkipForward, - SP_MediaSkipBackward, - SP_MediaSeekForward, - SP_MediaSeekBackward, - SP_MediaVolume, - SP_MediaVolumeMuted, - SP_LineEditClearButton, - SP_DialogYesToAllButton, - SP_DialogNoToAllButton, - SP_DialogSaveAllButton, - SP_DialogAbortButton, - SP_DialogRetryButton, - SP_DialogIgnoreButton, - SP_RestoreDefaultsButton, - // do not add any values below/greater than this - SP_CustomBase = 0xf0000000 - }; - Q_ENUM(StandardPixmap) - - virtual QRect itemTextRect(const QFontMetrics &fm, const QRect &r, int flags, bool enabled, const QString &text) const; - virtual QRect itemPixmapRect(const QRect &r, int flags, const QPixmap &pixmap) const; - virtual QRect subElementRect(SubElement subElement, const QStyleOption *option) const = 0; - virtual QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc) const = 0; - - virtual QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize) const = 0; - virtual QFont font(ControlElement element, const QStyle::State state) const = 0; - virtual QMargins ninePatchMargins(ControlElement ce, const QStyleOption *opt, const QSize &imageSize) const = 0; - virtual QMargins ninePatchMargins(ComplexControl cc, const QStyleOptionComplex *opt, const QSize &imageSize) const = 0; - - virtual SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt) const = 0; - - virtual int pixelMetric(PixelMetric metric, const QStyleOption *option = nullptr) const = 0; - virtual int styleHint(StyleHint stylehint, const QStyleOption *opt = nullptr, QStyleHintReturn* returnData = nullptr) const = 0; - - virtual void drawItemText(QPainter *painter, const QRect &rect, - int flags, const QPalette &pal, bool enabled, - const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; - virtual void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const; - virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p) const = 0; - virtual void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p) const = 0; - virtual void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p) const = 0; - - virtual QPalette standardPalette() const; - virtual QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt = nullptr) const = 0; - virtual QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = nullptr) const = 0; - virtual QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const = 0; - - static QRect visualRect(Qt::LayoutDirection direction, const QRect &boundingRect, const QRect &logicalRect); - static QPoint visualPos(Qt::LayoutDirection direction, const QRect &boundingRect, const QPoint &logicalPos); - static int sliderPositionFromValue(int min, int max, int val, int space, bool upsideDown = false); - static int sliderValueFromPosition(int min, int max, int pos, int space, bool upsideDown = false); - static Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment); - static QRect alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSize &size, const QRect &rectangle); - - // TODO: Remove the concept of proxy (but keep it for now until everything builds) - const QStyle *proxy() const { return this; } - -private: - Q_DISABLE_COPY(QStyle) -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(QStyle::State) -Q_DECLARE_OPERATORS_FOR_FLAGS(QStyle::SubControls) - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif // QSTYLE_H diff --git a/src/quicknativestyle/qstyle/qquickstyle_p.h b/src/quicknativestyle/qstyle/qquickstyle_p.h deleted file mode 100644 index 46f53740..00000000 --- a/src/quicknativestyle/qstyle/qquickstyle_p.h +++ /dev/null @@ -1,121 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSTYLE_P_H -#define QSTYLE_P_H - -#include "qquickstyle.h" - -#include <QtCore/private/qobject_p.h> -#include <QtGui/qguiapplication.h> - -QT_BEGIN_NAMESPACE - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of qstyle_*.cpp. This header file may change from version to version -// without notice, or even be removed. -// -// We mean it. -// - -// Private class - -namespace QQC2 { - -class QStylePrivate: public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QStyle) - -public: - static bool useFullScreenForPopup(); - mutable int layoutSpacingIndex = -1; - QStyle *proxyStyle; -}; - -inline QImage styleCacheImage(const QSize &size) -{ - const qreal pixelRatio = qApp->devicePixelRatio(); - QImage cacheImage = QImage(size * pixelRatio, QImage::Format_ARGB32_Premultiplied); - cacheImage.setDevicePixelRatio(pixelRatio); - return cacheImage; -} - -inline QPixmap styleCachePixmap(const QSize &size) -{ - const qreal pixelRatio = qApp->devicePixelRatio(); - QPixmap cachePixmap = QPixmap(size * pixelRatio); - cachePixmap.setDevicePixelRatio(pixelRatio); - return cachePixmap; -} - -#define BEGIN_STYLE_PIXMAPCACHE(a) \ - QRect rect = option->rect; \ - QPixmap internalPixmapCache; \ - QImage imageCache; \ - QPainter *p = painter; \ - QString unique = QStyleHelper::uniqueName((a), option, option->rect.size()); \ - int txType = painter->deviceTransform().type() | painter->worldTransform().type(); \ - bool doPixmapCache = (!option->rect.isEmpty()) \ - && ((txType <= QTransform::TxTranslate) || (painter->deviceTransform().type() == QTransform::TxScale)); \ - if (doPixmapCache && QPixmapCache::find(unique, &internalPixmapCache)) { \ - painter->drawPixmap(option->rect.topLeft(), internalPixmapCache); \ - } else { \ - if (doPixmapCache) { \ - rect.setRect(0, 0, option->rect.width(), option->rect.height()); \ - imageCache = styleCacheImage(option->rect.size()); \ - imageCache.fill(0); \ - p = new QPainter(&imageCache); \ - } - -#define END_STYLE_PIXMAPCACHE \ - if (doPixmapCache) { \ - p->end(); \ - delete p; \ - internalPixmapCache = QPixmap::fromImage(imageCache); \ - painter->drawPixmap(option->rect.topLeft(), internalPixmapCache); \ - QPixmapCache::insert(unique, internalPixmapCache); \ - } \ - } - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif //QSTYLE_P_H diff --git a/src/quicknativestyle/qstyle/qquickstylehelper.cpp b/src/quicknativestyle/qstyle/qquickstylehelper.cpp deleted file mode 100644 index ebc82864..00000000 --- a/src/quicknativestyle/qstyle/qquickstylehelper.cpp +++ /dev/null @@ -1,438 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstylehelper_p.h" -#include "qquickstyleoption.h" -#include "qquickstyle_p.h" - -#include <QtCore/qmath.h> -#include <QtGui/qpainter.h> -#include <QtGui/qpixmapcache.h> -#include <QtGui/qwindow.h> -#include <QtGui/private/qhighdpiscaling_p.h> -#include <QtGui/private/qguiapplication_p.h> -#include <QtGui/private/qmath_p.h> -#include <QtGui/private/qhexstring_p.h> - -#include <qmetaobject.h> -#include <qstringbuilder.h> - -QT_BEGIN_NAMESPACE - -Q_GUI_EXPORT int qt_defaultDpiX(); - -namespace QQC2 { - -namespace QStyleHelper { - -QString uniqueName(const QString &key, const QStyleOption *option, const QSize &size) -{ - const QStyleOptionComplex *complexOption = qstyleoption_cast<const QStyleOptionComplex *>(option); - QString tmp = key % HexString<uint>(option->state) - % HexString<uint>(option->direction) - % HexString<uint>(complexOption ? uint(complexOption->activeSubControls) : 0u) - % HexString<quint64>(option->palette.cacheKey()) - % HexString<uint>(size.width()) - % HexString<uint>(size.height()); - - if (const QStyleOptionSpinBox *spinBox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) { - tmp = tmp % HexString<uint>(spinBox->buttonSymbols) - % HexString<uint>(spinBox->stepEnabled) - % QLatin1Char(spinBox->frame ? '1' : '0'); ; - } - - return tmp; -} - -#ifdef Q_OS_DARWIN -static const qreal qstyleBaseDpi = 72; -#else -static const qreal qstyleBaseDpi = 96; -#endif - -qreal dpi(const QStyleOption *option) -{ -#ifndef Q_OS_DARWIN - // Prioritize the application override, except for on macOS where - // we have historically not supported the AA_Use96Dpi flag. - if (QCoreApplication::testAttribute(Qt::AA_Use96Dpi)) - return 96; -#endif - - // Expect that QStyleOption::QFontMetrics::QFont has the correct DPI set - if (option) - return option->fontMetrics.fontDpi(); - - return qstyleBaseDpi; -} - -qreal dpiScaled(qreal value, qreal dpi) -{ - return value * dpi / qstyleBaseDpi; -} - -qreal dpiScaled(qreal value, const QPaintDevice *device) -{ - return dpiScaled(value, device->logicalDpiX()); -} - -qreal dpiScaled(qreal value, const QStyleOption *option) -{ - return dpiScaled(value, dpi(option)); -} - -bool isInstanceOf(QObject *obj, QAccessible::Role role) -{ - bool match = false; - QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(obj); - match = iface && iface->role() == role; - return match; -} - -// Searches for an ancestor of a particular accessible role -bool hasAncestor(QObject *obj, QAccessible::Role role) -{ - bool found = false; - QObject *parent = obj ? obj->parent() : nullptr; - while (parent && !found) { - if (isInstanceOf(parent, role)) - found = true; - parent = parent->parent(); - } - return found; -} - - -int calcBigLineSize(int radius) -{ - int bigLineSize = radius / 6; - if (bigLineSize < 4) - bigLineSize = 4; - if (bigLineSize > radius / 2) - bigLineSize = radius / 2; - return bigLineSize; -} - -static QPointF calcRadialPos(const QStyleOptionSlider *dial, qreal offset) -{ - const int width = dial->rect.width(); - const int height = dial->rect.height(); - const int r = qMin(width, height) / 2; - const int currentSliderPosition = dial->upsideDown ? dial->sliderPosition : (dial->maximum - dial->sliderPosition); - qreal a = 0; - if (dial->maximum == dial->minimum) - a = Q_PI / 2; - else if (dial->dialWrapping) - a = Q_PI * 3 / 2 - (currentSliderPosition - dial->minimum) * 2 * Q_PI - / (dial->maximum - dial->minimum); - else - a = (Q_PI * 8 - (currentSliderPosition - dial->minimum) * 10 * Q_PI - / (dial->maximum - dial->minimum)) / 6; - qreal xc = width / 2.0; - qreal yc = height / 2.0; - qreal len = r - QStyleHelper::calcBigLineSize(r) - 3; - qreal back = offset * len; - QPointF pos(QPointF(xc + back * qCos(a), yc - back * qSin(a))); - return pos; -} - -qreal angle(const QPointF &p1, const QPointF &p2) -{ - static const qreal rad_factor = 180 / Q_PI; - qreal _angle = 0; - - if (p1.x() == p2.x()) { - if (p1.y() < p2.y()) - _angle = 270; - else - _angle = 90; - } else { - qreal x1, x2, y1, y2; - - if (p1.x() <= p2.x()) { - x1 = p1.x(); y1 = p1.y(); - x2 = p2.x(); y2 = p2.y(); - } else { - x2 = p1.x(); y2 = p1.y(); - x1 = p2.x(); y1 = p2.y(); - } - - qreal m = -(y2 - y1) / (x2 - x1); - _angle = qAtan(m) * rad_factor; - - if (p1.x() < p2.x()) - _angle = 180 - _angle; - else - _angle = -_angle; - } - return _angle; -} - -QPolygonF calcLines(const QStyleOptionSlider *dial) -{ - QPolygonF poly; - int width = dial->rect.width(); - int height = dial->rect.height(); - qreal r = qMin(width, height) / 2; - int bigLineSize = calcBigLineSize(int(r)); - - qreal xc = width / 2 + 0.5; - qreal yc = height / 2 + 0.5; - const int ns = dial->tickInterval; - if (!ns) // Invalid values may be set by Qt Designer. - return poly; - int notches = (dial->maximum + ns - 1 - dial->minimum) / ns; - if (notches <= 0) - return poly; - if (dial->maximum < dial->minimum || dial->maximum - dial->minimum > 1000) { - int maximum = dial->minimum + 1000; - notches = (maximum + ns - 1 - dial->minimum) / ns; - } - - poly.resize(2 + 2 * notches); - int smallLineSize = bigLineSize / 2; - for (int i = 0; i <= notches; ++i) { - qreal angle = dial->dialWrapping ? Q_PI * 3 / 2 - i * 2 * Q_PI / notches - : (Q_PI * 8 - i * 10 * Q_PI / notches) / 6; - qreal s = qSin(angle); - qreal c = qCos(angle); - if (i == 0 || (((ns * i) % (dial->pageStep ? dial->pageStep : 1)) == 0)) { - poly[2 * i] = QPointF(xc + (r - bigLineSize) * c, - yc - (r - bigLineSize) * s); - poly[2 * i + 1] = QPointF(xc + r * c, yc - r * s); - } else { - poly[2 * i] = QPointF(xc + (r - 1 - smallLineSize) * c, - yc - (r - 1 - smallLineSize) * s); - poly[2 * i + 1] = QPointF(xc + (r - 1) * c, yc -(r - 1) * s); - } - } - return poly; -} - -// This will draw a nice and shiny QDial for us. We don't want -// all the shinyness in QWindowsStyle, hence we place it here - -void drawDial(const QStyleOptionSlider *option, QPainter *painter) -{ - QPalette pal = option->palette; - QColor buttonColor = pal.button().color(); - const int width = option->rect.width(); - const int height = option->rect.height(); - const bool enabled = option->state & QStyle::State_Enabled; - qreal r = qMin(width, height) / 2; - r -= r/50; - const qreal penSize = r/20.0; - - painter->save(); - painter->setRenderHint(QPainter::Antialiasing); - - // Draw notches - if (option->subControls & QStyle::SC_DialTickmarks) { - painter->setPen(option->palette.dark().color().darker(120)); - painter->drawLines(QStyleHelper::calcLines(option)); - } - - // setting color before BEGIN_STYLE_PIXMAPCACHE since - // otherwise it is not set when the image is in the cache - buttonColor.setHsv(buttonColor .hue(), - qMin(140, buttonColor .saturation()), - qMax(180, buttonColor.value())); - - // Cache dial background - BEGIN_STYLE_PIXMAPCACHE(QString::fromLatin1("qdial")) - p->setRenderHint(QPainter::Antialiasing); - - const qreal d_ = r / 6; - const qreal dx = option->rect.x() + d_ + (width - 2 * r) / 2 + 1; - const qreal dy = option->rect.y() + d_ + (height - 2 * r) / 2 + 1; - - QRectF br = QRectF(dx + 0.5, dy + 0.5, - int(r * 2 - 2 * d_ - 2), - int(r * 2 - 2 * d_ - 2)); - - if (enabled) { - // Drop shadow - qreal shadowSize = qMax(1.0, penSize/2.0); - QRectF shadowRect= br.adjusted(-2*shadowSize, -2*shadowSize, - 2*shadowSize, 2*shadowSize); - QRadialGradient shadowGradient(shadowRect.center().x(), - shadowRect.center().y(), shadowRect.width()/2.0, - shadowRect.center().x(), shadowRect.center().y()); - shadowGradient.setColorAt(qreal(0.91), QColor(0, 0, 0, 40)); - shadowGradient.setColorAt(qreal(1.0), Qt::transparent); - p->setBrush(shadowGradient); - p->setPen(Qt::NoPen); - p->translate(shadowSize, shadowSize); - p->drawEllipse(shadowRect); - p->translate(-shadowSize, -shadowSize); - - // Main gradient - QRadialGradient gradient(br.center().x() - br.width()/3, dy, - br.width()*1.3, br.center().x(), - br.center().y() - br.height()/2); - gradient.setColorAt(0, buttonColor.lighter(110)); - gradient.setColorAt(qreal(0.5), buttonColor); - gradient.setColorAt(qreal(0.501), buttonColor.darker(102)); - gradient.setColorAt(1, buttonColor.darker(115)); - p->setBrush(gradient); - } else { - p->setBrush(Qt::NoBrush); - } - - p->setPen(QPen(buttonColor.darker(280))); - p->drawEllipse(br); - p->setBrush(Qt::NoBrush); - p->setPen(buttonColor.lighter(110)); - p->drawEllipse(br.adjusted(1, 1, -1, -1)); - - if (option->state & QStyle::State_HasFocus) { - QColor highlight = pal.highlight().color(); - highlight.setHsv(highlight.hue(), - qMin(160, highlight.saturation()), - qMax(230, highlight.value())); - highlight.setAlpha(127); - p->setPen(QPen(highlight, 2.0)); - p->setBrush(Qt::NoBrush); - p->drawEllipse(br.adjusted(-1, -1, 1, 1)); - } - - END_STYLE_PIXMAPCACHE - - QPointF dp = calcRadialPos(option, qreal(0.70)); - buttonColor = buttonColor.lighter(104); - buttonColor.setAlphaF(0.8f); - const qreal ds = r/qreal(7.0); - QRectF dialRect(dp.x() - ds, dp.y() - ds, 2*ds, 2*ds); - QRadialGradient dialGradient(dialRect.center().x() + dialRect.width()/2, - dialRect.center().y() + dialRect.width(), - dialRect.width()*2, - dialRect.center().x(), dialRect.center().y()); - dialGradient.setColorAt(1, buttonColor.darker(140)); - dialGradient.setColorAt(qreal(0.4), buttonColor.darker(120)); - dialGradient.setColorAt(0, buttonColor.darker(110)); - if (penSize > 3.0) { - painter->setPen(QPen(QColor(0, 0, 0, 25), penSize)); - painter->drawLine(calcRadialPos(option, qreal(0.90)), calcRadialPos(option, qreal(0.96))); - } - - painter->setBrush(dialGradient); - painter->setPen(QColor(255, 255, 255, 150)); - painter->drawEllipse(dialRect.adjusted(-1, -1, 1, 1)); - painter->setPen(QColor(0, 0, 0, 80)); - painter->drawEllipse(dialRect); - painter->restore(); -} - -void drawBorderPixmap(const QPixmap &pixmap, QPainter *painter, const QRect &rect, - int left, int top, int right, - int bottom) -{ - QSize size = pixmap.size(); - //painter->setRenderHint(QPainter::SmoothPixmapTransform); - - //top - if (top > 0) { - painter->drawPixmap(QRect(rect.left() + left, rect.top(), rect.width() -right - left, top), pixmap, - QRect(left, 0, size.width() -right - left, top)); - - //top-left - if(left > 0) - painter->drawPixmap(QRect(rect.left(), rect.top(), left, top), pixmap, - QRect(0, 0, left, top)); - - //top-right - if (right > 0) - painter->drawPixmap(QRect(rect.left() + rect.width() - right, rect.top(), right, top), pixmap, - QRect(size.width() - right, 0, right, top)); - } - - //left - if (left > 0) - painter->drawPixmap(QRect(rect.left(), rect.top()+top, left, rect.height() - top - bottom), pixmap, - QRect(0, top, left, size.height() - bottom - top)); - - //center - painter->drawPixmap(QRect(rect.left() + left, rect.top()+top, rect.width() -right - left, - rect.height() - bottom - top), pixmap, - QRect(left, top, size.width() -right -left, - size.height() - bottom - top)); - //right - if (right > 0) - painter->drawPixmap(QRect(rect.left() +rect.width() - right, rect.top()+top, right, rect.height() - top - bottom), pixmap, - QRect(size.width() - right, top, right, size.height() - bottom - top)); - - //bottom - if (bottom > 0) { - painter->drawPixmap(QRect(rect.left() +left, rect.top() + rect.height() - bottom, - rect.width() - right - left, bottom), pixmap, - QRect(left, size.height() - bottom, - size.width() - right - left, bottom)); - //bottom-left - if (left > 0) - painter->drawPixmap(QRect(rect.left(), rect.top() + rect.height() - bottom, left, bottom), pixmap, - QRect(0, size.height() - bottom, left, bottom)); - - //bottom-right - if (right > 0) - painter->drawPixmap(QRect(rect.left() + rect.width() - right, rect.top() + rect.height() - bottom, right, bottom), pixmap, - QRect(size.width() - right, size.height() - bottom, right, bottom)); - - } -} - -WidgetSizePolicy widgetSizePolicy(const QStyleOption *opt) -{ - if (opt && opt->state & QStyle::State_Mini) - return SizeMini; - else if (opt && opt->state & QStyle::State_Small) - return SizeSmall; - - return SizeDefault; -} - -QColor backgroundColor(const QPalette &pal) -{ -// if (qobject_cast<const QScrollBar *>(widget) && widget->parent() && -// qobject_cast<const QAbstractScrollArea *>(widget->parent()->parent())) -// return widget->parentWidget()->parentWidget()->palette().color(QPalette::Base); - return pal.color(QPalette::Base); -} - -} - -} // namespace QQC2 - -QT_END_NAMESPACE diff --git a/src/quicknativestyle/qstyle/qquickstylehelper_p.h b/src/quicknativestyle/qstyle/qquickstylehelper_p.h deleted file mode 100644 index 757d647d..00000000 --- a/src/quicknativestyle/qstyle/qquickstylehelper_p.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtCore/qpoint.h> -#include <QtCore/qstring.h> -#include <QtGui/qpaintdevice.h> -#include <QtGui/qpolygon.h> -#include <QtCore/qstringbuilder.h> -#include <QtGui/qaccessible.h> - -#ifndef QSTYLEHELPER_P_H -#define QSTYLEHELPER_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -QT_BEGIN_NAMESPACE - -class QObject; -class QPainter; -class QPixmap; - -namespace QQC2 { - -class QStyleOptionSlider; -class QStyleOption; - -namespace QStyleHelper -{ - QString uniqueName(const QString &key, const QStyleOption *option, const QSize &size); - - qreal dpi(const QStyleOption *option); - qreal dpiScaled(qreal value, qreal dpi); - qreal dpiScaled(qreal value, const QPaintDevice *device); - qreal dpiScaled(qreal value, const QStyleOption *option); - - qreal angle(const QPointF &p1, const QPointF &p2); - QPolygonF calcLines(const QStyleOptionSlider *dial); - int calcBigLineSize(int radius); - void drawDial(const QStyleOptionSlider *dial, QPainter *painter); - - void drawBorderPixmap(const QPixmap &pixmap, QPainter *painter, const QRect &rect, - int left = 0, int top = 0, int right = 0, - int bottom = 0); - - bool isInstanceOf(QObject *obj, QAccessible::Role role); - bool hasAncestor(QObject *obj, QAccessible::Role role); - QColor backgroundColor(const QPalette &pal); - - enum WidgetSizePolicy { SizeLarge = 0, SizeSmall = 1, SizeMini = 2, SizeDefault = -1 }; - WidgetSizePolicy widgetSizePolicy(const QStyleOption *opt); -} - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif // QSTYLEHELPER_P_H diff --git a/src/quicknativestyle/qstyle/qquickstyleoption.cpp b/src/quicknativestyle/qstyle/qquickstyleoption.cpp deleted file mode 100644 index c34dddd7..00000000 --- a/src/quicknativestyle/qstyle/qquickstyleoption.cpp +++ /dev/null @@ -1,652 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstyleoption.h" - -#include <QtGui/private/qguiapplication_p.h> -#include <QtCore/qdebug.h> -#include <QtCore/qmath.h> - -QT_BEGIN_NAMESPACE - -namespace QQC2 { - -QStyleOption::QStyleOption(int version, int type) - : version(version), type(type), state(QStyle::State_None), - direction(QGuiApplication::layoutDirection()), fontMetrics(QFont()), - styleObject(nullptr), control(nullptr), window(nullptr) -{ -} - -/*! - Destroys this style option object. -*/ -QStyleOption::~QStyleOption() -{ -} - -/*! - Constructs a copy of \a other. -*/ -QStyleOption::QStyleOption(const QStyleOption &other) - : version(Version), type(Type), state(other.state), - direction(other.direction), rect(other.rect), fontMetrics(other.fontMetrics), - palette(other.palette), styleObject(other.styleObject), - control(other.control), window(other.window) -{ -} - -/*! - Assign \a other to this QStyleOption. -*/ -QStyleOption &QStyleOption::operator=(const QStyleOption &other) -{ - control = other.control; - window = other.window; - state = other.state; - direction = other.direction; - rect = other.rect; - fontMetrics = other.fontMetrics; - palette = other.palette; - styleObject = other.styleObject; - return *this; -} - -/*! - Constructs a QStyleOptionFocusRect, initializing the members - variables to their default values. -*/ -QStyleOptionFocusRect::QStyleOptionFocusRect() - : QStyleOption(Version, SO_FocusRect) -{ - state |= QStyle::State_KeyboardFocusChange; // assume we had one, will be corrected in initFrom() -} - -/*! - \internal -*/ -QStyleOptionFocusRect::QStyleOptionFocusRect(int versionIn) - : QStyleOption(versionIn, SO_FocusRect) -{ - state |= QStyle::State_KeyboardFocusChange; // assume we had one, will be corrected in initFrom() -} - -/*! - Constructs a QStyleOptionFrame, initializing the members - variables to their default values. -*/ -QStyleOptionFrame::QStyleOptionFrame() - : QStyleOption(Version, SO_Frame), lineWidth(0), midLineWidth(0), - features(None), frameShape(NoFrame) -{ -} - -/*! - \internal -*/ -QStyleOptionFrame::QStyleOptionFrame(int versionIn) - : QStyleOption(versionIn, SO_Frame), lineWidth(0), midLineWidth(0), - features(None) -{ -} - -/*! - Constructs a QStyleOptionGroupBox, initializing the members - variables to their default values. -*/ -QStyleOptionGroupBox::QStyleOptionGroupBox() - : QStyleOptionComplex(Version, Type), features(QStyleOptionFrame::None), - textAlignment(Qt::AlignLeft), lineWidth(0), midLineWidth(0) -{ -} - -QStyleOptionGroupBox::QStyleOptionGroupBox(int versionIn) - : QStyleOptionComplex(versionIn, Type), features(QStyleOptionFrame::None), - textAlignment(Qt::AlignLeft), lineWidth(0), midLineWidth(0) -{ -} - -/*! - Constructs a QStyleOptionHeader, initializing the members - variables to their default values. -*/ -QStyleOptionHeader::QStyleOptionHeader() - : QStyleOption(QStyleOptionHeader::Version, SO_Header), - section(0), textAlignment(Qt::AlignLeft), iconAlignment(Qt::AlignLeft), - position(QStyleOptionHeader::Beginning), - selectedPosition(QStyleOptionHeader::NotAdjacent), sortIndicator(None), - orientation(Qt::Horizontal) -{ -} - -/*! - \internal -*/ -QStyleOptionHeader::QStyleOptionHeader(int versionIn) - : QStyleOption(versionIn, SO_Header), - section(0), textAlignment(Qt::AlignLeft), iconAlignment(Qt::AlignLeft), - position(QStyleOptionHeader::Beginning), - selectedPosition(QStyleOptionHeader::NotAdjacent), sortIndicator(None), - orientation(Qt::Horizontal) -{ -} - -/*! - Constructs a QStyleOptionButton, initializing the members - variables to their default values. -*/ -QStyleOptionButton::QStyleOptionButton() - : QStyleOption(QStyleOptionButton::Version, SO_Button), features(None) -{ -} - -/*! - \internal -*/ -QStyleOptionButton::QStyleOptionButton(int versionIn) - : QStyleOption(versionIn, SO_Button), features(None) -{ -} - -/*! - Constructs a QStyleOptionToolBar, initializing the members - variables to their default values. -*/ -QStyleOptionToolBar::QStyleOptionToolBar() - : QStyleOption(Version, SO_ToolBar), positionOfLine(OnlyOne), positionWithinLine(OnlyOne), - toolBarArea(Qt::TopToolBarArea), features(None), lineWidth(0), midLineWidth(0) -{ -} - -/*! - \fn QStyleOptionToolBar::QStyleOptionToolBar(const QStyleOptionToolBar &other) - - Constructs a copy of the \a other style option. -*/ -QStyleOptionToolBar::QStyleOptionToolBar(int versionIn) -: QStyleOption(versionIn, SO_ToolBar), positionOfLine(OnlyOne), positionWithinLine(OnlyOne), - toolBarArea(Qt::TopToolBarArea), features(None), lineWidth(0), midLineWidth(0) -{ - -} - -/*! - Constructs a QStyleOptionTab object, initializing the members - variables to their default values. -*/ -QStyleOptionTab::QStyleOptionTab() - : QStyleOption(QStyleOptionTab::Version, SO_Tab), - row(0), - position(Beginning), - selectedPosition(NotAdjacent), cornerWidgets(QStyleOptionTab::NoCornerWidgets), - documentMode(false), - features(QStyleOptionTab::None) -{ -} - -QStyleOptionTab::QStyleOptionTab(int versionIn) - : QStyleOption(versionIn, SO_Tab), - row(0), - position(Beginning), - selectedPosition(NotAdjacent), cornerWidgets(QStyleOptionTab::NoCornerWidgets), - documentMode(false), - features(QStyleOptionTab::None) -{ -} - -/*! - Constructs a QStyleOptionTabV4 object, initializing the members - variables to their default values. - */ -QStyleOptionTabV4::QStyleOptionTabV4() : QStyleOptionTab(QStyleOptionTabV4::Version) -{ -} - -/*! - Constructs a QStyleOptionProgressBar, initializing the members - variables to their default values. -*/ -QStyleOptionProgressBar::QStyleOptionProgressBar() - : QStyleOption(QStyleOptionProgressBar::Version, SO_ProgressBar), - minimum(0), maximum(0), progress(0), textAlignment(Qt::AlignLeft), textVisible(false), - invertedAppearance(false), bottomToTop(false) -{ -} - -QStyleOptionProgressBar::QStyleOptionProgressBar(int versionIn) - : QStyleOption(versionIn, SO_ProgressBar), - minimum(0), maximum(0), progress(0), textAlignment(Qt::AlignLeft), textVisible(false), - invertedAppearance(false), bottomToTop(false) -{ -} - -/*! - Constructs a QStyleOptionMenuItem, initializing the members - variables to their default values. -*/ -QStyleOptionMenuItem::QStyleOptionMenuItem() - : QStyleOption(QStyleOptionMenuItem::Version, SO_MenuItem), menuItemType(Normal), - checkType(NotCheckable), checked(false), menuHasCheckableItems(true), maxIconWidth(0), tabWidth(0) -{ -} - -/*! - \internal -*/ -QStyleOptionMenuItem::QStyleOptionMenuItem(int versionIn) - : QStyleOption(versionIn, SO_MenuItem), menuItemType(Normal), - checkType(NotCheckable), checked(false), menuHasCheckableItems(true), maxIconWidth(0), tabWidth(0) -{ -} - -/*! - Constructs a QStyleOptionComplex of the specified \a type and \a - version, initializing the member variables to their default - values. This constructor is usually called by subclasses. -*/ -QStyleOptionComplex::QStyleOptionComplex(int versionIn, int typeIn) - : QStyleOption(versionIn, typeIn), subControls(QStyle::SC_All), activeSubControls(QStyle::SC_None) -{ -} - - -/*! - Constructs a QStyleOptionSlider, initializing the members - variables to their default values. -*/ -QStyleOptionSlider::QStyleOptionSlider() - : QStyleOptionComplex(Version, SO_Slider), orientation(Qt::Horizontal), minimum(0), maximum(0), - tickPosition(NoTicks), tickInterval(0), upsideDown(false), - sliderPosition(0), sliderValue(0), singleStep(0), pageStep(0), notchTarget(0.0), - dialWrapping(false) -{ -} - -/*! - \internal -*/ -QStyleOptionSlider::QStyleOptionSlider(int versionIn) - : QStyleOptionComplex(versionIn, SO_Slider), orientation(Qt::Horizontal), minimum(0), maximum(0), - tickPosition(NoTicks), tickInterval(0), upsideDown(false), - sliderPosition(0), sliderValue(0), singleStep(0), pageStep(0), notchTarget(0.0), - dialWrapping(false) -{ -} - -/*! - Constructs a QStyleOptionSpinBox, initializing the members - variables to their default values. -*/ -QStyleOptionSpinBox::QStyleOptionSpinBox() - : QStyleOptionComplex(Version, SO_SpinBox), buttonSymbols(UpDownArrows), - stepEnabled(StepNone), frame(false) -{ -} - -/*! - \internal -*/ -QStyleOptionSpinBox::QStyleOptionSpinBox(int versionIn) - : QStyleOptionComplex(versionIn, SO_SpinBox), buttonSymbols(UpDownArrows), - stepEnabled(StepNone), frame(false) -{ -} - -/*! - Constructs a QStyleOptionDockWidget, initializing the member - variables to their default values. -*/ -QStyleOptionDockWidget::QStyleOptionDockWidget() - : QStyleOption(Version, SO_DockWidget), closable(false), - movable(false), floatable(false), verticalTitleBar(false) -{ -} - -/*! - \internal -*/ -QStyleOptionDockWidget::QStyleOptionDockWidget(int versionIn) - : QStyleOption(versionIn, SO_DockWidget), closable(false), - movable(false), floatable(false), verticalTitleBar(false) -{ -} - -/*! - Constructs a QStyleOptionToolButton, initializing the members - variables to their default values. -*/ -QStyleOptionToolButton::QStyleOptionToolButton() - : QStyleOptionComplex(Version, SO_ToolButton), features(None), arrowType(Qt::DownArrow) - , toolButtonStyle(Qt::ToolButtonIconOnly) -{ -} - -QStyleOptionToolButton::QStyleOptionToolButton(int versionIn) - : QStyleOptionComplex(versionIn, SO_ToolButton), features(None), arrowType(Qt::DownArrow) - , toolButtonStyle(Qt::ToolButtonIconOnly) - -{ -} - -/*! - Creates a QStyleOptionComboBox, initializing the members variables - to their default values. -*/ -QStyleOptionComboBox::QStyleOptionComboBox() - : QStyleOptionComplex(Version, SO_ComboBox), editable(false), frame(true) -{ -} - -QStyleOptionComboBox::QStyleOptionComboBox(int versionIn) - : QStyleOptionComplex(versionIn, SO_ComboBox), editable(false), frame(true) -{ -} - -/*! - Creates a QStyleOptionToolBox, initializing the members variables - to their default values. -*/ -QStyleOptionToolBox::QStyleOptionToolBox() - : QStyleOption(Version, SO_ToolBox), position(Beginning), selectedPosition(NotAdjacent) -{ -} - -QStyleOptionToolBox::QStyleOptionToolBox(int versionIn) - : QStyleOption(versionIn, SO_ToolBox), position(Beginning), selectedPosition(NotAdjacent) -{ -} - - -/*! - Creates a QStyleOptionRubberBand, initializing the members - variables to their default values. -*/ -QStyleOptionRubberBand::QStyleOptionRubberBand() - : QStyleOption(Version, SO_RubberBand), opaque(false), shape(Line) -{ -} - -QStyleOptionRubberBand::QStyleOptionRubberBand(int versionIn) - : QStyleOption(versionIn, SO_RubberBand), opaque(false) -{ -} - -/*! - Constructs a QStyleOptionTitleBar, initializing the members - variables to their default values. -*/ -QStyleOptionTitleBar::QStyleOptionTitleBar() - : QStyleOptionComplex(Version, SO_TitleBar), titleBarState(0) -{ -} - -QStyleOptionTitleBar::QStyleOptionTitleBar(int versionIn) - : QStyleOptionComplex(versionIn, SO_TitleBar), titleBarState(0) -{ -} - -/*! - Constructs a QStyleOptionViewItem, initializing the members - variables to their default values. -*/ -QStyleOptionViewItem::QStyleOptionViewItem() - : QStyleOption(Version, SO_ViewItem), - displayAlignment(Qt::AlignLeft), decorationAlignment(Qt::AlignLeft), - textElideMode(Qt::ElideMiddle), decorationPosition(Left), - showDecorationSelected(false), features(None), - checkState(Qt::Unchecked), viewItemPosition(QStyleOptionViewItem::Invalid) -{ -} - -QStyleOptionViewItem::QStyleOptionViewItem(int versionIn) - : QStyleOption(versionIn, SO_ViewItem), - displayAlignment(Qt::AlignLeft), decorationAlignment(Qt::AlignLeft), - textElideMode(Qt::ElideMiddle), decorationPosition(Left), - showDecorationSelected(false), features(None), - checkState(Qt::Unchecked), viewItemPosition(QStyleOptionViewItem::Invalid) -{ -} - -/*! - Constructs a QStyleOptionTabWidgetFrame, initializing the members - variables to their default values. -*/ -QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame() - : QStyleOption(Version, SO_TabWidgetFrame), lineWidth(0), midLineWidth(0), shape(QStyleOptionTab::RoundedNorth) -{ -} - -QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame(int versionIn) - : QStyleOption(versionIn, SO_TabWidgetFrame), lineWidth(0), midLineWidth(0) -{ -} - -/*! - Construct a QStyleOptionTabBarBase, initializing the members - vaiables to their default values. -*/ -QStyleOptionTabBarBase::QStyleOptionTabBarBase() - : QStyleOption(Version, SO_TabBarBase), documentMode(false), shape(QStyleOptionTab::RoundedNorth) -{ -} - -QStyleOptionTabBarBase::QStyleOptionTabBarBase(int versionIn) - : QStyleOption(versionIn, SO_TabBarBase), documentMode(false) -{ -} - -/*! - Constructs a QStyleOptionSizeGrip. -*/ -QStyleOptionSizeGrip::QStyleOptionSizeGrip() - : QStyleOptionComplex(Version, Type), corner(Qt::BottomRightCorner) -{ -} - -QStyleOptionSizeGrip::QStyleOptionSizeGrip(int versionIn) - : QStyleOptionComplex(versionIn, Type), corner(Qt::BottomRightCorner) -{ -} - -/*! - Constructs a QStyleOptionGraphicsItem. -*/ -QStyleOptionGraphicsItem::QStyleOptionGraphicsItem() - : QStyleOption(Version, Type), levelOfDetail(1) -{ -} - -QStyleOptionGraphicsItem::QStyleOptionGraphicsItem(int versionIn) - : QStyleOption(versionIn, Type), levelOfDetail(1) -{ -} - -/*! - \since 4.6 - - Returns the level of detail from the \a worldTransform. - - Its value represents the maximum value of the height and - width of a unity rectangle, mapped using the \a worldTransform - of the painter used to draw the item. By default, if no - transformations are applied, its value is 1. If zoomed out 1:2, the level - of detail will be 0.5, and if zoomed in 2:1, its value is 2. - - \sa QGraphicsScene::minimumRenderSize() -*/ -qreal QStyleOptionGraphicsItem::levelOfDetailFromTransform(const QTransform &worldTransform) -{ - if (worldTransform.type() <= QTransform::TxTranslate) - return 1; // Translation only? The LOD is 1. - - // Two unit vectors. - QLineF v1(0, 0, 1, 0); - QLineF v2(0, 0, 0, 1); - // LOD is the transformed area of a 1x1 rectangle. - return qSqrt(worldTransform.map(v1).length() * worldTransform.map(v2).length()); -} - -/*! - Constructs a QStyleHintReturn with version \a version and type \a - type. - - The version has no special meaning for QStyleHintReturn; it can be - used by subclasses to distinguish between different version of - the same hint type. - - \sa QStyleOption::version, QStyleOption::type -*/ -QStyleHintReturn::QStyleHintReturn(int versionIn, int type) - : version(versionIn), type(type) -{ -} - -/*! - \internal -*/ - -QStyleHintReturn::~QStyleHintReturn() -{ -} - -/*! - Constructs a QStyleHintReturnMask. The member variables are - initialized to default values. -*/ -QStyleHintReturnMask::QStyleHintReturnMask() : QStyleHintReturn(Version, Type) -{ -} - -QStyleHintReturnMask::~QStyleHintReturnMask() -{ -} - -/*! - Constructs a QStyleHintReturnVariant. The member variables are - initialized to default values. -*/ -QStyleHintReturnVariant::QStyleHintReturnVariant() : QStyleHintReturn(Version, Type) -{ -} - -QStyleHintReturnVariant::~QStyleHintReturnVariant() -{ -} - -#if !defined(QT_NO_DEBUG_STREAM) -QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType) -{ -#if !defined(QT_NO_DEBUG) - switch (optionType) { - case QStyleOption::SO_Default: - debug << "SO_Default"; break; - case QStyleOption::SO_FocusRect: - debug << "SO_FocusRect"; break; - case QStyleOption::SO_Button: - debug << "SO_Button"; break; - case QStyleOption::SO_Tab: - debug << "SO_Tab"; break; - case QStyleOption::SO_MenuItem: - debug << "SO_MenuItem"; break; - case QStyleOption::SO_Frame: - debug << "SO_Frame"; break; - case QStyleOption::SO_ProgressBar: - debug << "SO_ProgressBar"; break; - case QStyleOption::SO_ToolBox: - debug << "SO_ToolBox"; break; - case QStyleOption::SO_Header: - debug << "SO_Header"; break; - case QStyleOption::SO_DockWidget: - debug << "SO_DockWidget"; break; - case QStyleOption::SO_ViewItem: - debug << "SO_ViewItem"; break; - case QStyleOption::SO_TabWidgetFrame: - debug << "SO_TabWidgetFrame"; break; - case QStyleOption::SO_TabBarBase: - debug << "SO_TabBarBase"; break; - case QStyleOption::SO_RubberBand: - debug << "SO_RubberBand"; break; - case QStyleOption::SO_Complex: - debug << "SO_Complex"; break; - case QStyleOption::SO_Slider: - debug << "SO_Slider"; break; - case QStyleOption::SO_SpinBox: - debug << "SO_SpinBox"; break; - case QStyleOption::SO_ToolButton: - debug << "SO_ToolButton"; break; - case QStyleOption::SO_ComboBox: - debug << "SO_ComboBox"; break; - case QStyleOption::SO_TitleBar: - debug << "SO_TitleBar"; break; - case QStyleOption::SO_CustomBase: - debug << "SO_CustomBase"; break; - case QStyleOption::SO_GroupBox: - debug << "SO_GroupBox"; break; - case QStyleOption::SO_ToolBar: - debug << "SO_ToolBar"; break; - case QStyleOption::SO_ComplexCustomBase: - debug << "SO_ComplexCustomBase"; break; - case QStyleOption::SO_SizeGrip: - debug << "SO_SizeGrip"; break; - case QStyleOption::SO_GraphicsItem: - debug << "SO_GraphicsItem"; break; - } -#else - Q_UNUSED(optionType); -#endif - return debug; -} - -QDebug operator<<(QDebug debug, const QStyleOption &option) -{ -#if !defined(QT_NO_DEBUG) - debug << "QStyleOption("; - debug << QStyleOption::OptionType(option.type); - debug << ',' << (option.direction == Qt::RightToLeft ? "RightToLeft" : "LeftToRight"); - debug << ',' << option.state; - debug << ',' << option.rect; - debug << ',' << option.styleObject; - debug << ')'; -#else - Q_UNUSED(option); -#endif - return debug; -} -#endif - -} // namespace QQC2 - -QT_END_NAMESPACE diff --git a/src/quicknativestyle/qstyle/qquickstyleoption.h b/src/quicknativestyle/qstyle/qquickstyleoption.h deleted file mode 100644 index 05c9ce57..00000000 --- a/src/quicknativestyle/qstyle/qquickstyleoption.h +++ /dev/null @@ -1,795 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSTYLEOPTION_H -#define QSTYLEOPTION_H - -#include "qquickstyle.h" - -#include <QtCore/qlocale.h> -#include <QtCore/qvariant.h> -#include <QtCore/qdebug.h> -#include <QtCore/qabstractitemmodel.h> - -#include <QtGui/qicon.h> -#include <QtGui/qfontmetrics.h> - -QT_BEGIN_NAMESPACE - -class QQuickItem; - -namespace QQC2 { - -class QStyleOption -{ -public: - enum OptionType { - SO_Default, SO_FocusRect, SO_Button, SO_Tab, SO_MenuItem, - SO_Frame, SO_ProgressBar, SO_ToolBox, SO_Header, - SO_DockWidget, SO_ViewItem, SO_TabWidgetFrame, - SO_TabBarBase, SO_RubberBand, SO_ToolBar, SO_GraphicsItem, - - SO_Complex = 0xf0000, SO_Slider, SO_SpinBox, SO_ToolButton, SO_ComboBox, - SO_TitleBar, SO_GroupBox, SO_SizeGrip, - - SO_CustomBase = 0xf00, - SO_ComplexCustomBase = 0xf000000 - }; - Q_ENUMS(OptionType) - - enum StyleOptionType { Type = SO_Default }; - enum StyleOptionVersion { Version = 1 }; - - int version; // TODO: Remove version information - int type; - QStyle::State state; - Qt::LayoutDirection direction; - QRect rect; - QFontMetrics fontMetrics; - QPalette palette; - QObject *styleObject; - - // QQC2 additions. Remember to also update copy - // constructor and assignment operator when adding - // new variables here. - QQuickItem *control; - QWindow *window; - - QStyleOption(int version = QStyleOption::Version, int type = SO_Default); - QStyleOption(const QStyleOption &other); - ~QStyleOption(); - - QStyleOption &operator=(const QStyleOption &other); -}; - -class QStyleOptionFocusRect : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_FocusRect }; - enum StyleOptionVersion { Version = 1 }; - - QColor backgroundColor; - - QStyleOptionFocusRect(); - QStyleOptionFocusRect(const QStyleOptionFocusRect &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionFocusRect &operator=(const QStyleOptionFocusRect &) = default; - -protected: - QStyleOptionFocusRect(int version); -}; - -class QStyleOptionFrame : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_Frame }; - enum StyleOptionVersion { Version = 3 }; - enum FrameFeature { - None = 0x00, - Flat = 0x01, - Rounded = 0x02 - }; - Q_DECLARE_FLAGS(FrameFeatures, FrameFeature) - enum Shape { - NoFrame = 0, // no frame - Box = 0x0001, // rectangular box - Panel = 0x0002, // rectangular panel - WinPanel = 0x0003, // rectangular panel (Windows) - HLine = 0x0004, // horizontal line - VLine = 0x0005, // vertical line - StyledPanel = 0x0006 // rectangular panel depending on the GUI style - }; - enum Shadow { - Plain = 0x0010, // plain line - Raised = 0x0020, // raised shadow effect - Sunken = 0x0030 // sunken shadow effect - }; - - int lineWidth; - int midLineWidth; - FrameFeatures features; - Shape frameShape; - - QStyleOptionFrame(); - QStyleOptionFrame(const QStyleOptionFrame &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionFrame &operator=(const QStyleOptionFrame &) = default; - -protected: - QStyleOptionFrame(int version); -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionFrame::FrameFeatures) - -Q_DECL_DEPRECATED typedef QStyleOptionFrame QStyleOptionFrameV2; -Q_DECL_DEPRECATED typedef QStyleOptionFrame QStyleOptionFrameV3; - -class QStyleOptionTab : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_Tab }; - enum StyleOptionVersion { Version = 3 }; - - enum TabPosition { Beginning, Middle, End, OnlyOneTab }; - enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected }; - enum CornerWidget { NoCornerWidgets = 0x00, LeftCornerWidget = 0x01, - RightCornerWidget = 0x02 }; - enum TabFeature { None = 0x00, HasFrame = 0x01 }; - enum Shape { RoundedNorth, RoundedSouth, RoundedWest, RoundedEast, - TriangularNorth, TriangularSouth, TriangularWest, TriangularEast - }; - Q_DECLARE_FLAGS(CornerWidgets, CornerWidget) - Q_DECLARE_FLAGS(TabFeatures, TabFeature) - - QString text; - QIcon icon; - int row; - TabPosition position; - Shape shape = RoundedNorth; - SelectedPosition selectedPosition; - CornerWidgets cornerWidgets; - QSize iconSize; - bool documentMode; - QSize leftButtonSize; - QSize rightButtonSize; - TabFeatures features; - - QStyleOptionTab(); - QStyleOptionTab(const QStyleOptionTab &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionTab &operator=(const QStyleOptionTab &) = default; - -protected: - QStyleOptionTab(int version); -}; - -class QStyleOptionTabWidgetFrame : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_TabWidgetFrame }; - enum StyleOptionVersion { Version = 2 }; - - int lineWidth; - int midLineWidth; - QStyleOptionTab::Shape shape; - QSize tabBarSize; - QSize rightCornerWidgetSize; - QSize leftCornerWidgetSize; - QRect tabBarRect; - QRect selectedTabRect; - - QStyleOptionTabWidgetFrame(); - inline QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other) - : QStyleOption(Version, Type) { *this = other; } - QStyleOptionTabWidgetFrame &operator=(const QStyleOptionTabWidgetFrame &) = default; - -protected: - QStyleOptionTabWidgetFrame(int version); -}; - -Q_DECL_DEPRECATED typedef QStyleOptionTabWidgetFrame QStyleOptionTabWidgetFrameV2; - - -class QStyleOptionTabBarBase : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_TabBarBase }; - - enum TabBarPosition { North, South, West, East }; - enum ButtonPosition { LeftSide, RightSide }; - - QRect tabBarRect; - QRect selectedTabRect; - bool documentMode; - QStyleOptionTab::Shape shape; - - QStyleOptionTabBarBase(); - QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionTabBarBase &operator=(const QStyleOptionTabBarBase &) = default; - -protected: - QStyleOptionTabBarBase(int version); -}; - -class QStyleOptionHeader : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_Header }; - enum StyleOptionVersion { Version = 1 }; - enum SectionPosition { Beginning, Middle, End, OnlyOneSection }; - enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected, - NextAndPreviousAreSelected }; - enum SortIndicator { None, SortUp, SortDown }; - - int section; - QString text; - Qt::Alignment textAlignment; - QIcon icon; - Qt::Alignment iconAlignment; - SectionPosition position; - SelectedPosition selectedPosition; - SortIndicator sortIndicator; - Qt::Orientation orientation; - - QStyleOptionHeader(); - QStyleOptionHeader(const QStyleOptionHeader &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionHeader &operator=(const QStyleOptionHeader &) = default; - -protected: - QStyleOptionHeader(int version); -}; - -class QStyleOptionButton : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_Button }; - enum StyleOptionVersion { Version = 1 }; - - enum ButtonFeature { None = 0x00, Flat = 0x01, HasMenu = 0x02, DefaultButton = 0x04, - AutoDefaultButton = 0x08, CommandLinkButton = 0x10 }; - Q_DECLARE_FLAGS(ButtonFeatures, ButtonFeature) - - ButtonFeatures features; - QString text; - QIcon icon; - QSize iconSize; - - QStyleOptionButton(); - QStyleOptionButton(const QStyleOptionButton &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionButton &operator=(const QStyleOptionButton &) = default; - -protected: - QStyleOptionButton(int version); -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionButton::ButtonFeatures) - -class QStyleOptionTabV4 : public QStyleOptionTab -{ -public: - enum StyleOptionVersion { Version = 4 }; - QStyleOptionTabV4(); - int tabIndex = -1; -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionTab::CornerWidgets) - -Q_DECL_DEPRECATED typedef QStyleOptionTab QStyleOptionTabV2; -Q_DECL_DEPRECATED typedef QStyleOptionTab QStyleOptionTabV3; - - -class QStyleOptionToolBar : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_ToolBar }; - enum StyleOptionVersion { Version = 1 }; - enum ToolBarPosition { Beginning, Middle, End, OnlyOne }; - enum ToolBarFeature { None = 0x0, Movable = 0x1 }; - Q_DECLARE_FLAGS(ToolBarFeatures, ToolBarFeature) - - ToolBarPosition positionOfLine; // The toolbar line position - ToolBarPosition positionWithinLine; // The position within a toolbar - Qt::ToolBarArea toolBarArea; // The toolbar docking area - ToolBarFeatures features; - int lineWidth; - int midLineWidth; - - QStyleOptionToolBar(); - QStyleOptionToolBar(const QStyleOptionToolBar &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionToolBar &operator=(const QStyleOptionToolBar &) = default; - -protected: - QStyleOptionToolBar(int version); -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolBar::ToolBarFeatures) - -class QStyleOptionProgressBar : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_ProgressBar }; - enum StyleOptionVersion { Version = 2 }; - - int minimum; - int maximum; - int progress; - QString text; - Qt::Alignment textAlignment; - bool textVisible; - bool invertedAppearance; - bool bottomToTop; - - QStyleOptionProgressBar(); - QStyleOptionProgressBar(const QStyleOptionProgressBar &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionProgressBar &operator=(const QStyleOptionProgressBar &) = default; - -protected: - QStyleOptionProgressBar(int version); -}; - -class QStyleOptionMenuItem : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_MenuItem }; - enum StyleOptionVersion { Version = 1 }; - - enum MenuItemType { Normal, DefaultItem, Separator, SubMenu, Scroller, TearOff, Margin, - EmptyArea }; - enum CheckType { NotCheckable, Exclusive, NonExclusive }; - - MenuItemType menuItemType; - CheckType checkType; - bool checked; - bool menuHasCheckableItems; - QRect menuRect; - QString text; - QIcon icon; - int maxIconWidth; - int tabWidth; // ### Qt 6: rename to reservedShortcutWidth - QFont font; - - QStyleOptionMenuItem(); - QStyleOptionMenuItem(const QStyleOptionMenuItem &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionMenuItem &operator=(const QStyleOptionMenuItem &) = default; - -protected: - QStyleOptionMenuItem(int version); -}; - -class QStyleOptionDockWidget : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_DockWidget }; - enum StyleOptionVersion { Version = 2 }; - - QString title; - bool closable; - bool movable; - bool floatable; - bool verticalTitleBar; - - QStyleOptionDockWidget(); - QStyleOptionDockWidget(const QStyleOptionDockWidget &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionDockWidget &operator=(const QStyleOptionDockWidget &) = default; - -protected: - QStyleOptionDockWidget(int version); -}; - -Q_DECL_DEPRECATED typedef QStyleOptionDockWidget QStyleOptionDockWidgetV2; - -class QStyleOptionViewItem : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_ViewItem }; - enum StyleOptionVersion { Version = 4 }; - - enum Position { Left, Right, Top, Bottom }; - enum ScrollMode { ScrollPerItem, ScrollPerPixel }; // Doesn't really belong in this class. - - Qt::Alignment displayAlignment; - Qt::Alignment decorationAlignment; - Qt::TextElideMode textElideMode; - Position decorationPosition; - QSize decorationSize; - QFont font; - bool showDecorationSelected; - - enum ViewItemFeature { - None = 0x00, - WrapText = 0x01, - Alternate = 0x02, - HasCheckIndicator = 0x04, - HasDisplay = 0x08, - HasDecoration = 0x10 - }; - Q_DECLARE_FLAGS(ViewItemFeatures, ViewItemFeature) - - ViewItemFeatures features; - - QLocale locale; - - enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne }; - - QModelIndex index; - Qt::CheckState checkState; - QIcon icon; - QString text; - ViewItemPosition viewItemPosition; - QBrush backgroundBrush; - - QStyleOptionViewItem(); - QStyleOptionViewItem(const QStyleOptionViewItem &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionViewItem &operator=(const QStyleOptionViewItem &) = default; - -protected: - QStyleOptionViewItem(int version); -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionViewItem::ViewItemFeatures) - -Q_DECL_DEPRECATED typedef QStyleOptionViewItem QStyleOptionViewItemV2; -Q_DECL_DEPRECATED typedef QStyleOptionViewItem QStyleOptionViewItemV3; -Q_DECL_DEPRECATED typedef QStyleOptionViewItem QStyleOptionViewItemV4; - -class QStyleOptionToolBox : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_ToolBox }; - enum StyleOptionVersion { Version = 2 }; - - QString text; - QIcon icon; - - enum TabPosition { Beginning, Middle, End, OnlyOneTab }; - enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected }; - - TabPosition position; - SelectedPosition selectedPosition; - - QStyleOptionToolBox(); - QStyleOptionToolBox(const QStyleOptionToolBox &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionToolBox &operator=(const QStyleOptionToolBox &) = default; - -protected: - QStyleOptionToolBox(int version); -}; - -Q_DECL_DEPRECATED typedef QStyleOptionToolBox QStyleOptionToolBoxV2; - -class QStyleOptionRubberBand : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_RubberBand }; - enum StyleOptionVersion { Version = 1 }; - enum Shape { Line, Rectangle }; - - bool opaque; - Shape shape; - - QStyleOptionRubberBand(); - QStyleOptionRubberBand(const QStyleOptionRubberBand &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionRubberBand &operator=(const QStyleOptionRubberBand &) = default; - -protected: - QStyleOptionRubberBand(int version); -}; - -// -------------------------- Complex style options ------------------------------- -class QStyleOptionComplex : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_Complex }; - enum StyleOptionVersion { Version = 1 }; - - QStyle::SubControls subControls; - QStyle::SubControls activeSubControls; - - QStyleOptionComplex(int version = QStyleOptionComplex::Version, int type = SO_Complex); - QStyleOptionComplex(const QStyleOptionComplex &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionComplex &operator=(const QStyleOptionComplex &) = default; -}; - -class QStyleOptionSlider : public QStyleOptionComplex -{ -public: - enum StyleOptionType { Type = SO_Slider }; - enum StyleOptionVersion { Version = 1 }; - enum TickPosition { - NoTicks = 0, - TicksAbove = 1, - TicksLeft = TicksAbove, - TicksBelow = 2, - TicksRight = TicksBelow, - TicksBothSides = 3 - }; - - Qt::Orientation orientation; - int minimum; - int maximum; - TickPosition tickPosition; - int tickInterval; - bool upsideDown; - int sliderPosition; - int sliderValue; - int singleStep; - int pageStep; - qreal notchTarget; - bool dialWrapping; - - QStyleOptionSlider(); - QStyleOptionSlider(const QStyleOptionSlider &other) : QStyleOptionComplex(Version, Type) { *this = other; } - QStyleOptionSlider &operator=(const QStyleOptionSlider &) = default; - -protected: - QStyleOptionSlider(int version); -}; - -class QStyleOptionSpinBox : public QStyleOptionComplex -{ -public: - enum StyleOptionType { Type = SO_SpinBox }; - enum StyleOptionVersion { Version = 1 }; - enum StepEnabledFlag { StepNone = 0x00, StepUpEnabled = 0x01, StepDownEnabled = 0x02, StepEnabled = 0xFF }; - enum ButtonSymbols { UpDownArrows, PlusMinus, NoButtons }; - - ButtonSymbols buttonSymbols; - StepEnabledFlag stepEnabled; - bool frame; - - QStyleOptionSpinBox(); - QStyleOptionSpinBox(const QStyleOptionSpinBox &other) : QStyleOptionComplex(Version, Type) { *this = other; } - QStyleOptionSpinBox &operator=(const QStyleOptionSpinBox &) = default; - -protected: - QStyleOptionSpinBox(int version); -}; - -class QStyleOptionToolButton : public QStyleOptionComplex -{ -public: - enum StyleOptionType { Type = SO_ToolButton }; - enum StyleOptionVersion { Version = 1 }; - - enum ToolButtonFeature { None = 0x00, Arrow = 0x01, Menu = 0x04, MenuButtonPopup = Menu, PopupDelay = 0x08, - HasMenu = 0x10 }; - Q_DECLARE_FLAGS(ToolButtonFeatures, ToolButtonFeature) - - ToolButtonFeatures features; - QIcon icon; - QSize iconSize; - QString text; - Qt::ArrowType arrowType; - Qt::ToolButtonStyle toolButtonStyle; - QPoint pos; - QFont font; - - QStyleOptionToolButton(); - QStyleOptionToolButton(const QStyleOptionToolButton &other) : QStyleOptionComplex(Version, Type) { *this = other; } - QStyleOptionToolButton &operator=(const QStyleOptionToolButton &) = default; - -protected: - QStyleOptionToolButton(int version); -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures) - -class QStyleOptionComboBox : public QStyleOptionComplex -{ -public: - enum StyleOptionType { Type = SO_ComboBox }; - enum StyleOptionVersion { Version = 1 }; - - bool editable; - QRect popupRect; - bool frame; - QString currentText; - QIcon currentIcon; - QSize iconSize; - - QStyleOptionComboBox(); - QStyleOptionComboBox(const QStyleOptionComboBox &other) : QStyleOptionComplex(Version, Type) { *this = other; } - QStyleOptionComboBox &operator=(const QStyleOptionComboBox &) = default; - -protected: - QStyleOptionComboBox(int version); -}; - -class QStyleOptionTitleBar : public QStyleOptionComplex -{ -public: - enum StyleOptionType { Type = SO_TitleBar }; - enum StyleOptionVersion { Version = 1 }; - - QString text; - QIcon icon; - int titleBarState; - Qt::WindowFlags titleBarFlags; - - QStyleOptionTitleBar(); - QStyleOptionTitleBar(const QStyleOptionTitleBar &other) : QStyleOptionComplex(Version, Type) { *this = other; } - QStyleOptionTitleBar &operator=(const QStyleOptionTitleBar &) = default; - -protected: - QStyleOptionTitleBar(int version); -}; - -class QStyleOptionGroupBox : public QStyleOptionComplex -{ -public: - enum StyleOptionType { Type = SO_GroupBox }; - enum StyleOptionVersion { Version = 1 }; - - QStyleOptionFrame::FrameFeatures features; - QString text; - Qt::Alignment textAlignment; - QColor textColor; - int lineWidth; - int midLineWidth; - - QStyleOptionGroupBox(); - QStyleOptionGroupBox(const QStyleOptionGroupBox &other) : QStyleOptionComplex(Version, Type) { *this = other; } - QStyleOptionGroupBox &operator=(const QStyleOptionGroupBox &) = default; -protected: - QStyleOptionGroupBox(int version); -}; - -class QStyleOptionSizeGrip : public QStyleOptionComplex -{ -public: - enum StyleOptionType { Type = SO_SizeGrip }; - enum StyleOptionVersion { Version = 1 }; - - Qt::Corner corner; - - QStyleOptionSizeGrip(); - QStyleOptionSizeGrip(const QStyleOptionSizeGrip &other) : QStyleOptionComplex(Version, Type) { *this = other; } - QStyleOptionSizeGrip &operator=(const QStyleOptionSizeGrip &) = default; -protected: - QStyleOptionSizeGrip(int version); -}; - -class QStyleOptionGraphicsItem : public QStyleOption -{ -public: - enum StyleOptionType { Type = SO_GraphicsItem }; - enum StyleOptionVersion { Version = 1 }; - - QRectF exposedRect; - qreal levelOfDetail; - - QStyleOptionGraphicsItem(); - QStyleOptionGraphicsItem(const QStyleOptionGraphicsItem &other) : QStyleOption(Version, Type) { *this = other; } - QStyleOptionGraphicsItem &operator=(const QStyleOptionGraphicsItem &) = default; - static qreal levelOfDetailFromTransform(const QTransform &worldTransform); -protected: - QStyleOptionGraphicsItem(int version); -}; - -template <typename T> -T qstyleoption_cast(const QStyleOption *opt) -{ - typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt; - if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type - || int(Opt::Type) == QStyleOption::SO_Default - || (int(Opt::Type) == QStyleOption::SO_Complex - && opt->type > QStyleOption::SO_Complex))) - return static_cast<T>(opt); - return nullptr; -} - -template <typename T> -T qstyleoption_cast(QStyleOption *opt) -{ - typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt; - if (opt && opt->version >= Opt::Version && (opt->type == Opt::Type - || int(Opt::Type) == QStyleOption::SO_Default - || (int(Opt::Type) == QStyleOption::SO_Complex - && opt->type > QStyleOption::SO_Complex))) - return static_cast<T>(opt); - return nullptr; -} - -// -------------------------- QStyleHintReturn ------------------------------- - -class QStyleHintReturn -{ -public: - enum HintReturnType { - SH_Default=0xf000, SH_Mask, SH_Variant - }; - - enum StyleOptionType { Type = SH_Default }; - enum StyleOptionVersion { Version = 1 }; - - QStyleHintReturn(int version = QStyleOption::Version, int type = SH_Default); - ~QStyleHintReturn(); - - int version; - int type; -}; - -class QStyleHintReturnMask : public QStyleHintReturn -{ -public: - enum StyleOptionType { Type = SH_Mask }; - enum StyleOptionVersion { Version = 1 }; - - QStyleHintReturnMask(); - ~QStyleHintReturnMask(); - - QRegion region; -}; - -class QStyleHintReturnVariant : public QStyleHintReturn -{ -public: - enum StyleOptionType { Type = SH_Variant }; - enum StyleOptionVersion { Version = 1 }; - - QStyleHintReturnVariant(); - ~QStyleHintReturnVariant(); - - QVariant variant; -}; - -template <typename T> -T qstyleoption_cast(const QStyleHintReturn *hint) -{ - typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt; - if (hint && hint->version <= Opt::Version && - (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default)) - return static_cast<T>(hint); - return nullptr; -} - -template <typename T> -T qstyleoption_cast(QStyleHintReturn *hint) -{ - typedef typename std::remove_cv<typename std::remove_pointer<T>::type>::type Opt; - if (hint && hint->version <= Opt::Version && - (hint->type == Opt::Type || int(Opt::Type) == QStyleHintReturn::SH_Default)) - return static_cast<T>(hint); - return nullptr; -} - -#if !defined(QT_NO_DEBUG_STREAM) -QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType); -QDebug operator<<(QDebug debug, const QStyleOption &option); -#endif - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif // QSTYLEOPTION_H diff --git a/src/quicknativestyle/qstyle/qstyle.pri b/src/quicknativestyle/qstyle/qstyle.pri deleted file mode 100644 index 4d025498..00000000 --- a/src/quicknativestyle/qstyle/qstyle.pri +++ /dev/null @@ -1,23 +0,0 @@ -INCLUDEPATH += $$PWD - -HEADERS += \ - $$PWD/qquicknativestyle.h \ - $$PWD/qquickcommonstyle.h \ - $$PWD/qquickcommonstyle_p.h \ - $$PWD/qquickcommonstylepixmaps_p.h \ - $$PWD/qquickdrawutil.h \ - $$PWD/qquickstyle.h \ - $$PWD/qquickstyle_p.h \ - $$PWD/qquickstylehelper_p.h \ - $$PWD/qquickstyleoption.h - -SOURCES += \ - $$PWD/qquicknativestyle.cpp \ - $$PWD/qquickcommonstyle.cpp \ - $$PWD/qquickdrawutil.cpp \ - $$PWD/qquickstyle.cpp \ - $$PWD/qquickstylehelper.cpp \ - $$PWD/qquickstyleoption.cpp - -macos: include(mac/mac.pri) -win32: include(windows/windows.pri) diff --git a/src/quicknativestyle/qstyle/windows/qquickwindowsstyle.cpp b/src/quicknativestyle/qstyle/windows/qquickwindowsstyle.cpp deleted file mode 100644 index 242b770d..00000000 --- a/src/quicknativestyle/qstyle/windows/qquickwindowsstyle.cpp +++ /dev/null @@ -1,2388 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickwindowsstyle_p.h" -#include "qquickwindowsstyle_p_p.h" -#include "qquickstyleoption.h" -#include "qquickstylehelper_p.h" -#include "qquickdrawutil.h" - -#include <QtGui/qbitmap.h> -#include <QtGui/qevent.h> -#include <QtGui/qpaintengine.h> -#include <QtGui/qpainter.h> -#include <QtCore/qdebug.h> -#include <QtCore/qfile.h> -#include <QtCore/qtextstream.h> -#include <QtGui/qpixmapcache.h> -#include <private/qmath_p.h> -#include <qmath.h> -#include <QtGui/qpainterpath.h> -#include <QtGui/qscreen.h> -#include <QtGui/qwindow.h> -#include <qpa/qplatformtheme.h> -#include <qpa/qplatformscreen.h> -#include <private/qguiapplication_p.h> -#include <private/qhighdpiscaling_p.h> -#include <qpa/qplatformnativeinterface.h> - -#if 0 && QT_CONFIG(animation) -//#include <private/qstyleanimation_p.h> -#endif - -#include <algorithm> - -QT_BEGIN_NAMESPACE - -#if defined(Q_OS_WIN) - -QT_BEGIN_INCLUDE_NAMESPACE -#include "qt_windows.h" -QT_END_INCLUDE_NAMESPACE -# ifndef COLOR_GRADIENTACTIVECAPTION -# define COLOR_GRADIENTACTIVECAPTION 27 -# endif -# ifndef COLOR_GRADIENTINACTIVECAPTION -# define COLOR_GRADIENTINACTIVECAPTION 28 -# endif - -Q_GUI_EXPORT HICON qt_pixmapToWinHICON(const QPixmap &); -#endif //Q_OS_WIN - -QT_BEGIN_INCLUDE_NAMESPACE -#include <limits.h> -QT_END_INCLUDE_NAMESPACE - -namespace QQC2 { - -enum QSliderDirection { SlUp, SlDown, SlLeft, SlRight }; - -/* - \internal -*/ - -QWindowsStylePrivate::QWindowsStylePrivate() = default; - -qreal QWindowsStylePrivate::appDevicePixelRatio() -{ - return qApp->devicePixelRatio(); -} - -bool QWindowsStylePrivate::isDarkMode() -{ - bool result = false; -#ifdef Q_OS_WIN - // Windows only: Return whether dark mode style support is desired and - // dark mode is in effect. - if (auto ni = QGuiApplication::platformNativeInterface()) { - const QVariant darkModeStyleP = ni->property("darkModeStyle"); - result = darkModeStyleP.metaType().id() == QMetaType::Bool - && darkModeStyleP.value<bool>() - && ni->property("darkMode").value<bool>(); - } -#endif - return result; -} - -// ###TODO SH_UnderlineShortcut -#if 0 -// Returns \c true if the toplevel parent of \a widget has seen the Alt-key -bool QWindowsStylePrivate::hasSeenAlt(const QWidget *widget) const -{ - widget = widget->window(); - return seenAlt.contains(widget); -} - -/*! - \reimp -*/ -bool QWindowsStyle::eventFilter(QObject *o, QEvent *e) -{ - // Records Alt- and Focus events -// if (!o->isWidgetType()) - return QObject::eventFilter(o, e); - QWidget *widget = qobject_cast<QWidget*>(o); - Q_D(QWindowsStyle); - switch (e->type()) { - case QEvent::KeyPress: - if (static_cast<QKeyEvent *>(e)->key() == Qt::Key_Alt) { - widget = widget->window(); - - // Alt has been pressed - find all widgets that care - QList<QWidget *> l = widget->findChildren<QWidget *>(); - auto ignorable = [](QWidget *w) { - return w->isWindow() || !w->isVisible() - || w->style()->styleHint(SH_UnderlineShortcut, nullptr, w); - }; - l.erase(std::remove_if (l.begin(), l.end(), ignorable), l.end()); - // Update states before repainting - d->seenAlt.append(widget); - d->alt_down = true; - - // Repaint all relevant widgets - for (int pos = 0; pos < l.size(); ++pos) - l.at(pos)->update(); - } - break; - case QEvent::KeyRelease: - if (static_cast<QKeyEvent*>(e)->key() == Qt::Key_Alt) { - widget = widget->window(); - - // Update state and repaint the menu bars. - d->alt_down = false; -#if 0 && QT_CONFIG(menubar) - QList<QMenuBar *> l = widget->findChildren<QMenuBar *>(); - for (int i = 0; i < l.size(); ++i) - l.at(i)->update(); -#endif - } - break; - case QEvent::Close: - // Reset widget when closing - d->seenAlt.removeAll(widget); - d->seenAlt.removeAll(widget->window()); - break; - default: - break; - } - return QCommonStyle::eventFilter(o, e); -} -#endif - -/*! - \class QWindowsStyle - \brief The QWindowsStyle class provides a Microsoft Windows-like look and feel. - - \ingroup appearance - \inmodule QtWidgets - \internal - - This style is Qt's default GUI style on Windows. - - \image qwindowsstyle.png - \sa QWindowsVistaStyle, QMacStyle, QFusionStyle -*/ - -/*! - Constructs a QWindowsStyle object. -*/ -QWindowsStyle::QWindowsStyle() : QCommonStyle(*new QWindowsStylePrivate) -{ -} - -/*! - \internal - - Constructs a QWindowsStyle object. -*/ -QWindowsStyle::QWindowsStyle(QWindowsStylePrivate &dd) : QCommonStyle(dd) -{ -} - - -/*! Destroys the QWindowsStyle object. */ -QWindowsStyle::~QWindowsStyle() -{ -} - -#ifdef Q_OS_WIN -static inline QRgb colorref2qrgb(COLORREF col) -{ - return qRgb(GetRValue(col), GetGValue(col), GetBValue(col)); -} -#endif -#if 0 -/*! \reimp */ -void QWindowsStyle::polish(QApplication *app) -{ - QCommonStyle::polish(app); - QWindowsStylePrivate *d = const_cast<QWindowsStylePrivate*>(d_func()); - // We only need the overhead when shortcuts are sometimes hidden - if (!proxy()->styleHint(SH_UnderlineShortcut, nullptr) && app) - app->installEventFilter(this); - - const auto &palette = QGuiApplication::palette(); - d->activeGradientCaptionColor = palette.highlight().color(); - d->activeCaptionColor = d->activeGradientCaptionColor; - d->inactiveGradientCaptionColor = palette.dark().color(); - d->inactiveCaptionColor = d->inactiveGradientCaptionColor; - d->inactiveCaptionText = palette.window().color(); - -#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) //fetch native title bar colors - if (app->desktopSettingsAware()){ - DWORD activeCaption = GetSysColor(COLOR_ACTIVECAPTION); - DWORD gradientActiveCaption = GetSysColor(COLOR_GRADIENTACTIVECAPTION); - DWORD inactiveCaption = GetSysColor(COLOR_INACTIVECAPTION); - DWORD gradientInactiveCaption = GetSysColor(COLOR_GRADIENTINACTIVECAPTION); - DWORD inactiveCaptionText = GetSysColor(COLOR_INACTIVECAPTIONTEXT); - d->activeCaptionColor = colorref2qrgb(activeCaption); - d->activeGradientCaptionColor = colorref2qrgb(gradientActiveCaption); - d->inactiveCaptionColor = colorref2qrgb(inactiveCaption); - d->inactiveGradientCaptionColor = colorref2qrgb(gradientInactiveCaption); - d->inactiveCaptionText = colorref2qrgb(inactiveCaptionText); - } -#endif -} - -/*! \reimp */ -void QWindowsStyle::unpolish(QApplication *app) -{ - QCommonStyle::unpolish(app); - app->removeEventFilter(this); -} - -/*! \reimp */ -void QWindowsStyle::polish(QWidget *widget) -{ - QCommonStyle::polish(widget); -} - -/*! \reimp */ -void QWindowsStyle::unpolish(QWidget *widget) -{ - QCommonStyle::unpolish(widget); -} - -/*! - \reimp -*/ -void QWindowsStyle::polish(QPalette &pal) -{ - QCommonStyle::polish(pal); -} -#endif - -int QWindowsStylePrivate::pixelMetricFromSystemDp(QStyle::PixelMetric pm, const QStyleOption *opt) -{ -#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) - switch (pm) { - case QStyle::PM_DockWidgetFrameWidth: - return GetSystemMetrics(SM_CXFRAME); - - case QStyle::PM_TitleBarHeight: - Q_ASSERT(opt); - if (const QStyleOptionTitleBar *tb = qstyleoption_cast<const QStyleOptionTitleBar *>(opt)) { - if ((tb->titleBarFlags & Qt::WindowType_Mask) == Qt::Tool) { - // MS always use one less than they say - return GetSystemMetrics(SM_CYSMCAPTION) - 1; - } - } - return GetSystemMetrics(SM_CYCAPTION) - 1; - - case QStyle::PM_ScrollBarExtent: - { - NONCLIENTMETRICS ncm; - ncm.cbSize = FIELD_OFFSET(NONCLIENTMETRICS, lfMessageFont) + sizeof(LOGFONT); - if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0)) - return qMax(ncm.iScrollHeight, ncm.iScrollWidth); - } - break; - - case QStyle::PM_MdiSubWindowFrameWidth: - return GetSystemMetrics(SM_CYFRAME); - - default: - break; - } -#else // Q_OS_WIN && !Q_OS_WINRT - Q_UNUSED(pm); - Q_UNUSED(widget); -#endif - return QWindowsStylePrivate::InvalidMetric; -} - -int QWindowsStylePrivate::fixedPixelMetric(QStyle::PixelMetric pm) -{ - switch (pm) { - case QStyle::PM_ToolBarItemSpacing: - return 0; - case QStyle::PM_ButtonDefaultIndicator: - case QStyle::PM_ButtonShiftHorizontal: - case QStyle::PM_ButtonShiftVertical: - case QStyle::PM_MenuHMargin: - case QStyle::PM_MenuVMargin: - case QStyle::PM_ToolBarItemMargin: - return 1; - case QStyle::PM_DockWidgetSeparatorExtent: - return 4; -#if 0 && QT_CONFIG(tabbar) - case QStyle::PM_TabBarTabShiftHorizontal: - return 0; - case QStyle::PM_TabBarTabShiftVertical: - return 2; -#endif - - case QStyle::PM_SliderLength: - return 11; - -#if 0 && QT_CONFIG(menu) - case QStyle::PM_MenuBarHMargin: - case QStyle::PM_MenuBarVMargin: - case QStyle::PM_MenuBarPanelWidth: - return 0; - case QStyle::PM_SmallIconSize: - return 16; - case QStyle::PM_LargeIconSize: - return 32; - case QStyle::PM_DockWidgetTitleMargin: - return 2; - case QStyle::PM_DockWidgetTitleBarButtonMargin: - case QStyle::PM_DockWidgetFrameWidth: - return 4; - -#endif // QT_CONFIG(menu) - case QStyle::PM_ToolBarHandleExtent: - return 10; - default: - break; - } - return QWindowsStylePrivate::InvalidMetric; -} - -static QScreen *screenOf(const QWindow *w) -{ - if (w) { - if (auto screen = w->screen()) - return screen; - } - return QGuiApplication::primaryScreen(); -} - -// Calculate the overall scale factor to obtain Qt Device Independent -// Pixels from a native Windows size. Divide by devicePixelRatio -// and account for secondary screens with differing logical DPI. -qreal QWindowsStylePrivate::nativeMetricScaleFactor(const QStyleOption *opt) -{ - Q_ASSERT(opt); - const QWindow *win = opt->window; - return nativeMetricScaleFactor(win); -} - -qreal QWindowsStylePrivate::nativeMetricScaleFactor(const QWindow *win) -{ - qreal result = qreal(1) / QWindowsStylePrivate::devicePixelRatio(win); - if (QGuiApplicationPrivate::screen_list.size() > 1) { - const QScreen *primaryScreen = QGuiApplication::primaryScreen(); - const QScreen *screen = screenOf(win); - if (screen != primaryScreen) { - const qreal primaryLogicalDpi = primaryScreen->handle()->logicalDpi().first; - const qreal logicalDpi = screen->handle()->logicalDpi().first; - if (!qFuzzyCompare(primaryLogicalDpi, logicalDpi)) - result *= logicalDpi / primaryLogicalDpi; - } - } - return result; -} - -/*! - \reimp -*/ -int QWindowsStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt) const -{ - int ret = QWindowsStylePrivate::pixelMetricFromSystemDp(pm, opt); - if (ret != QWindowsStylePrivate::InvalidMetric) - return qRound(qreal(ret) * QWindowsStylePrivate::nativeMetricScaleFactor(opt)); - - ret = QWindowsStylePrivate::fixedPixelMetric(pm); - if (ret != QWindowsStylePrivate::InvalidMetric) - return int(QStyleHelper::dpiScaled(ret, opt)); - - ret = 0; - - switch (pm) { - case PM_MaximumDragDistance: - ret = QCommonStyle::pixelMetric(PM_MaximumDragDistance); - if (ret == -1) - ret = 60; - break; - - // Returns the number of pixels to use for the business part of the - // slider (i.e., the non-tickmark portion). The remaining space is shared - // equally between the tickmark regions. - case PM_SliderControlThickness: - if (const QStyleOptionSlider *sl = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - int space = (sl->orientation == Qt::Horizontal) ? sl->rect.height() : sl->rect.width(); - int ticks = sl->tickPosition; - int n = 0; - if (ticks & QStyleOptionSlider::TicksAbove) - ++n; - if (ticks & QStyleOptionSlider::TicksBelow) - ++n; - if (!n) { - ret = space; - break; - } - - int thick = 6; // Magic constant to get 5 + 16 + 5 - if (ticks != QStyleOptionSlider::TicksBothSides && ticks != QStyleOptionSlider::NoTicks) - thick += proxy()->pixelMetric(PM_SliderLength, sl) / 4; - - space -= thick; - if (space > 0) - thick += (space * 2) / (n + 2); - ret = thick; - } - break; - - case PM_IconViewIconSize: - ret = proxy()->pixelMetric(PM_LargeIconSize, opt); - break; - - case PM_SplitterWidth: - ret = int(QStyleHelper::dpiScaled(4, opt)); - break; - - default: - ret = QCommonStyle::pixelMetric(pm, opt); - break; - } - - return ret; -} - -/*! - \reimp - */ -QPixmap QWindowsStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt) const -{ -#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) - QPixmap desktopIcon; - switch (standardPixmap) { - case SP_DriveCDIcon: - case SP_DriveDVDIcon: - case SP_DriveNetIcon: - case SP_DriveHDIcon: - case SP_DriveFDIcon: - case SP_FileIcon: - case SP_FileLinkIcon: - case SP_DirLinkIcon: - case SP_DirClosedIcon: - case SP_DesktopIcon: - case SP_ComputerIcon: - case SP_DirOpenIcon: - case SP_FileDialogNewFolder: - case SP_DirHomeIcon: - case SP_TrashIcon: - case SP_VistaShield: - if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { - QPlatformTheme::StandardPixmap sp = static_cast<QPlatformTheme::StandardPixmap>(standardPixmap); - desktopIcon = theme->standardPixmap(sp, QSizeF(16, 16)); - } - break; - case SP_MessageBoxInformation: - case SP_MessageBoxWarning: - case SP_MessageBoxCritical: - case SP_MessageBoxQuestion: - if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { - QPlatformTheme::StandardPixmap sp = static_cast<QPlatformTheme::StandardPixmap>(standardPixmap); - desktopIcon = theme->standardPixmap(sp, QSizeF()); - } - break; - default: - break; - } - if (!desktopIcon.isNull()) { - return desktopIcon; - } -#endif // Q_OS_WIN && !Q_OS_WINRT - return QCommonStyle::standardPixmap(standardPixmap, opt); -} - -/*! \reimp */ -int QWindowsStyle::styleHint(StyleHint hint, const QStyleOption *opt, - QStyleHintReturn *returnData) const -{ - int ret = 0; - - switch (hint) { - case SH_EtchDisabledText: - ret = d_func()->isDarkMode() ? 0 : 1; - break; - case SH_Slider_SnapToValue: - case SH_PrintDialog_RightAlignButtons: - case SH_FontDialog_SelectAssociatedText: - case SH_Menu_AllowActiveAndDisabled: - case SH_MenuBar_AltKeyNavigation: - case SH_MenuBar_MouseTracking: - case SH_Menu_MouseTracking: - case SH_ComboBox_ListMouseTracking: - case SH_Slider_StopMouseOverSlider: - case SH_MainWindow_SpaceBelowMenuBar: - ret = 1; - - break; - case SH_ItemView_ShowDecorationSelected: -#if 0 && QT_CONFIG(listview) - if (qobject_cast<const QListView*>(widget)) - ret = 1; -#endif - break; - case SH_ItemView_ChangeHighlightOnFocus: - ret = 1; - break; - case SH_ToolBox_SelectedPageTitleBold: - ret = 0; - break; - -#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) // Option not used on WinRT -> common style - case SH_UnderlineShortcut: - { - ret = 1; - BOOL cues = false; - SystemParametersInfo(SPI_GETKEYBOARDCUES, 0, &cues, 0); - ret = int(cues); - // Do nothing if we always paint underlines - Q_D(const QWindowsStyle); - if (!ret && d) { -#if 0 && QT_CONFIG(menubar) - const QMenuBar *menuBar = qobject_cast<const QMenuBar *>(widget); - if (!menuBar && qobject_cast<const QMenu *>(widget)) { - QWidget *w = QApplication::activeWindow(); - if (w && w != widget) - menuBar = w->findChild<QMenuBar *>(); - } - // If we paint a menu bar draw underlines if is in the keyboardState - if (menuBar) { - if (menuBar->d_func()->keyboardState || d->altDown()) - ret = 1; - // Otherwise draw underlines if the toplevel widget has seen an alt-press - } else -#endif // QT_CONFIG(menubar) -// if (d->hasSeenAlt(widget)) { -// ret = 1; -// } - } -#ifndef QT_NO_ACCESSIBILITY - if (!ret && opt && opt->type == QStyleOption::SO_MenuItem - && QStyleHelper::isInstanceOf(opt->styleObject, QAccessible::MenuItem) - && opt->styleObject->property("_q_showUnderlined").toBool()) - ret = 1; -#endif // QT_NO_ACCESSIBILITY - break; - } -#endif // Q_OS_WIN && !Q_OS_WINRT - case SH_Menu_SubMenuSloppyCloseTimeout: - case SH_Menu_SubMenuPopupDelay: { -#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) - DWORD delay; - if (SystemParametersInfo(SPI_GETMENUSHOWDELAY, 0, &delay, 0)) - ret = delay; - else -#endif // Q_OS_WIN && !Q_OS_WINRT - ret = 400; - break; - } -#if 0 && QT_CONFIG(rubberband) - case SH_RubberBand_Mask: - if (const QStyleOptionRubberBand *rbOpt = qstyleoption_cast<const QStyleOptionRubberBand *>(opt)) { - ret = 0; - if (rbOpt->shape == QRubberBand::Rectangle) { - ret = true; - if (QStyleHintReturnMask *mask = qstyleoption_cast<QStyleHintReturnMask*>(returnData)) { - mask->region = opt->rect; - int size = 1; - if (widget && widget->isWindow()) - size = 4; - mask->region -= opt->rect.adjusted(size, size, -size, -size); - } - } - } - break; -#endif // QT_CONFIG(rubberband) -#if 0 && QT_CONFIG(wizard) - case SH_WizardStyle: - ret = QWizard::ModernStyle; - break; -#endif - case SH_ItemView_ArrowKeysNavigateIntoChildren: - ret = true; - break; - case SH_DialogButtonBox_ButtonsHaveIcons: - ret = 0; - break; - default: - ret = QCommonStyle::styleHint(hint, opt, returnData); - break; - } - return ret; -} - -/*! \reimp */ -void QWindowsStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p) const -{ - // Used to restore across fallthrough cases. Currently only used in PE_IndicatorCheckBox - bool doRestore = false; - - switch (pe) { -#if 0 && QT_CONFIG(toolbar) - case PE_IndicatorToolBarSeparator: - { - QRect rect = opt->rect; - const int margin = 2; - QPen oldPen = p->pen(); - if (opt->state & State_Horizontal){ - const int offset = rect.width()/2; - p->setPen(QPen(opt->palette.dark().color())); - p->drawLine(rect.bottomLeft().x() + offset, - rect.bottomLeft().y() - margin, - rect.topLeft().x() + offset, - rect.topLeft().y() + margin); - p->setPen(QPen(opt->palette.light().color())); - p->drawLine(rect.bottomLeft().x() + offset + 1, - rect.bottomLeft().y() - margin, - rect.topLeft().x() + offset + 1, - rect.topLeft().y() + margin); - } - else{ //Draw vertical separator - const int offset = rect.height()/2; - p->setPen(QPen(opt->palette.dark().color())); - p->drawLine(rect.topLeft().x() + margin , - rect.topLeft().y() + offset, - rect.topRight().x() - margin, - rect.topRight().y() + offset); - p->setPen(QPen(opt->palette.light().color())); - p->drawLine(rect.topLeft().x() + margin , - rect.topLeft().y() + offset + 1, - rect.topRight().x() - margin, - rect.topRight().y() + offset + 1); - } - p->setPen(oldPen); - } - break; - case PE_IndicatorToolBarHandle: - p->save(); - p->translate(opt->rect.x(), opt->rect.y()); - if (opt->state & State_Horizontal) { - int x = opt->rect.width() / 2 - 4; - if (opt->direction == Qt::RightToLeft) - x -= 2; - if (opt->rect.height() > 4) { - qDrawShadePanel(p, x, 2, 3, opt->rect.height() - 4, - opt->palette, false, 1, nullptr); - qDrawShadePanel(p, x + 3, 2, 3, opt->rect.height() - 4, - opt->palette, false, 1, nullptr); - } - } else { - if (opt->rect.width() > 4) { - int y = opt->rect.height() / 2 - 4; - qDrawShadePanel(p, 2, y, opt->rect.width() - 4, 3, - opt->palette, false, 1, nullptr); - qDrawShadePanel(p, 2, y + 3, opt->rect.width() - 4, 3, - opt->palette, false, 1, nullptr); - } - } - p->restore(); - break; - -#endif // QT_CONFIG(toolbar) - case PE_FrameButtonTool: - case PE_PanelButtonTool: { - QPen oldPen = p->pen(); -#if 0 && QT_CONFIG(dockwidget) - if (w && w->inherits("QDockWidgetTitleButton")) { - if (const QWidget *dw = w->parentWidget()) - if (dw->isWindow()){ - qDrawWinButton(p, opt->rect.adjusted(1, 1, 0, 0), opt->palette, opt->state & (State_Sunken | State_On), - &opt->palette.button()); - - return; - } - } -#endif // QT_CONFIG(dockwidget) - QBrush fill; - bool stippled; - bool panel = (pe == PE_PanelButtonTool); - if ((!(opt->state & State_Sunken )) - && (!(opt->state & State_Enabled) - || !(opt->state & State_MouseOver && opt->state & State_AutoRaise)) - && (opt->state & State_On)) { - fill = QBrush(opt->palette.light().color(), Qt::Dense4Pattern); - stippled = true; - } else { - fill = opt->palette.brush(QPalette::Button); - stippled = false; - } - - if (opt->state & (State_Raised | State_Sunken | State_On)) { - if (opt->state & State_AutoRaise) { - if (opt->state & (State_Enabled | State_Sunken | State_On)){ - if (panel) - qDrawShadePanel(p, opt->rect, opt->palette, - opt->state & (State_Sunken | State_On), 1, &fill); - else - qDrawShadeRect(p, opt->rect, opt->palette, - opt->state & (State_Sunken | State_On), 1); - } - if (stippled) { - p->setPen(opt->palette.button().color()); - p->drawRect(opt->rect.adjusted(1,1,-2,-2)); - } - } else { - qDrawWinButton(p, opt->rect, opt->palette, - opt->state & (State_Sunken | State_On), panel ? &fill : nullptr); - } - } else { - p->fillRect(opt->rect, fill); - } - p->setPen(oldPen); - break; } - case PE_PanelButtonCommand: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - QBrush fill; - State flags = opt->state; - QPalette pal = opt->palette; - QRect r = opt->rect; - if (! (flags & State_Sunken) && (flags & State_On)) - fill = QBrush(pal.light().color(), Qt::Dense4Pattern); - else - fill = pal.brush(QPalette::Button); - - if (btn->features & QStyleOptionButton::DefaultButton && flags & State_Sunken) { - p->setPen(pal.dark().color()); - p->setBrush(fill); - p->drawRect(r.adjusted(0, 0, -1, -1)); - } else if (flags & (State_Raised | State_On | State_Sunken)) { - qDrawWinButton(p, r, pal, flags & (State_Sunken | State_On), - &fill); - } else { - p->fillRect(r, fill); - } - } - break; - case PE_FrameDefaultButton: { - QPen oldPen = p->pen(); - p->setPen(QPen(opt->palette.shadow().color(), 0)); - QRectF rect = opt->rect; - const qreal dpi = QStyleHelper::dpi(opt); - const qreal topLevelAdjustment = QStyleHelper::dpiScaled(0.5, dpi); - const qreal bottomRightAdjustment = QStyleHelper::dpiScaled(-1.5, dpi); - rect.adjust(topLevelAdjustment, topLevelAdjustment, - bottomRightAdjustment, bottomRightAdjustment); - p->drawRect(rect); - p->setPen(oldPen); - break; - } - case PE_IndicatorCheckBox: { - QBrush fill; - if (opt->state & State_NoChange) - fill = QBrush(opt->palette.base().color(), Qt::Dense4Pattern); - else if (opt->state & State_Sunken) - fill = opt->palette.button(); - else if (opt->state & State_Enabled) - fill = opt->palette.base(); - else - fill = opt->palette.window(); - p->save(); - doRestore = true; - qDrawWinPanel(p, opt->rect, opt->palette, true, &fill); - if (opt->state & State_NoChange) - p->setPen(opt->palette.dark().color()); - else - p->setPen(opt->palette.text().color()); - } - Q_FALLTHROUGH(); - case PE_IndicatorItemViewItemCheck: - if (!doRestore) { - p->save(); - doRestore = true; - } -#if 0 && QT_CONFIG(itemviews) - if (pe == PE_IndicatorItemViewItemCheck) { - const QStyleOptionViewItem *itemViewOpt = qstyleoption_cast<const QStyleOptionViewItem *>(opt); - p->setPen(itemViewOpt - && itemViewOpt->showDecorationSelected - && opt->state & State_Selected - ? opt->palette.highlightedText().color() - : opt->palette.text().color()); - if (opt->state & State_NoChange) - p->setBrush(opt->palette.brush(QPalette::Button)); - p->drawRect(opt->rect.x() + 1, opt->rect.y() + 1, opt->rect.width() - 2, opt->rect.height() - 2); - } -#endif // QT_CONFIG(itemviews) - if (!(opt->state & State_Off)) { - QPointF points[6]; - qreal scaleh = opt->rect.width() / 12.0; - qreal scalev = opt->rect.height() / 12.0; - points[0] = { opt->rect.x() + 3.5 * scaleh, opt->rect.y() + 5.5 * scalev }; - points[1] = { points[0].x(), points[0].y() + 2 * scalev }; - points[2] = { points[1].x() + 2 * scaleh, points[1].y() + 2 * scalev }; - points[3] = { points[2].x() + 4 * scaleh, points[2].y() - 4 * scalev }; - points[4] = { points[3].x(), points[3].y() - 2 * scalev }; - points[5] = { points[4].x() - 4 * scaleh, points[4].y() + 4 * scalev }; - p->setPen(QPen(opt->palette.text().color(), 0)); - p->setBrush(opt->palette.text().color()); - p->drawPolygon(points, 6); - } - if (doRestore) - p->restore(); - break; - case PE_FrameFocusRect: - if (const QStyleOptionFocusRect *fropt = qstyleoption_cast<const QStyleOptionFocusRect *>(opt)) { - //### check for d->alt_down - if (!(fropt->state & State_KeyboardFocusChange) && !proxy()->styleHint(SH_UnderlineShortcut, opt)) - return; - QRect r = opt->rect; - p->save(); - p->setBackgroundMode(Qt::TransparentMode); - QColor bg_col = fropt->backgroundColor; - if (!bg_col.isValid()) - bg_col = p->background().color(); - // Create an "XOR" color. - QColor patternCol((bg_col.red() ^ 0xff) & 0xff, - (bg_col.green() ^ 0xff) & 0xff, - (bg_col.blue() ^ 0xff) & 0xff); - p->setBrush(QBrush(patternCol, Qt::Dense4Pattern)); - p->setBrushOrigin(r.topLeft()); - p->setPen(Qt::NoPen); - p->drawRect(r.left(), r.top(), r.width(), 1); // Top - p->drawRect(r.left(), r.bottom(), r.width(), 1); // Bottom - p->drawRect(r.left(), r.top(), 1, r.height()); // Left - p->drawRect(r.right(), r.top(), 1, r.height()); // Right - p->restore(); - } - break; - case PE_IndicatorRadioButton: - { - QRect r = opt->rect; - p->save(); - p->setRenderHint(QPainter::Antialiasing, true); - - QPointF circleCenter = r.center() + QPoint(1, 1); - qreal radius = (r.width() + (r.width() + 1) % 2) / 2.0 - 1; - - QPainterPath path1; - path1.addEllipse(circleCenter, radius, radius); - radius *= 0.85; - QPainterPath path2; - path2.addEllipse(circleCenter, radius, radius); - radius *= 0.85; - QPainterPath path3; - path3.addEllipse(circleCenter, radius, radius); - radius *= 0.5; - QPainterPath path4; - path4.addEllipse(circleCenter, radius, radius); - - QPolygon topLeftPol, bottomRightPol; - topLeftPol.setPoints(3, r.x(), r.y(), r.x(), r.y() + r.height(), r.x() + r.width(), r.y()); - bottomRightPol.setPoints(3, r.x(), r.y() + r.height(), r.x() + r.width(), r.y() + r.height(), r.x() + r.width(), r.y()); - - p->setClipRegion(QRegion(topLeftPol)); - p->setPen(opt->palette.dark().color()); - p->setBrush(opt->palette.dark().color()); - p->drawPath(path1); - p->setPen(opt->palette.shadow().color()); - p->setBrush(opt->palette.shadow().color()); - p->drawPath(path2); - - p->setClipRegion(QRegion(bottomRightPol)); - p->setPen(opt->palette.light().color()); - p->setBrush(opt->palette.light().color()); - p->drawPath(path1); - p->setPen(opt->palette.midlight().color()); - p->setBrush(opt->palette.midlight().color()); - p->drawPath(path2); - - QColor fillColor = ((opt->state & State_Sunken) || !(opt->state & State_Enabled)) ? - opt->palette.button().color() : opt->palette.base().color(); - - p->setClipping(false); - p->setPen(fillColor); - p->setBrush(fillColor); - p->drawPath(path3); - - if (opt->state & State_On) { - p->setPen(opt->palette.text().color()); - p->setBrush(opt->palette.text()); - p->drawPath(path4); - } - p->restore(); - break; - } -#ifndef QT_NO_FRAME - case PE_Frame: - case PE_FrameMenu: - if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - if (frame->lineWidth == 2 || pe == PE_Frame) { - QPalette popupPal = frame->palette; - if (pe == PE_FrameMenu) { - popupPal.setColor(QPalette::Light, frame->palette.window().color()); - popupPal.setColor(QPalette::Midlight, frame->palette.light().color()); - } - if (pe == PE_Frame && (frame->state & State_Raised)) - qDrawWinButton(p, frame->rect, popupPal, frame->state & State_Sunken); - else if (pe == PE_Frame && (frame->state & State_Sunken)) - { - popupPal.setColor(QPalette::Midlight, frame->palette.window().color()); - qDrawWinPanel(p, frame->rect, popupPal, frame->state & State_Sunken); - } - else - qDrawWinPanel(p, frame->rect, popupPal, frame->state & State_Sunken); - } else { - QCommonStyle::drawPrimitive(pe, opt, p); - } - } else { - QPalette popupPal = opt->palette; - popupPal.setColor(QPalette::Light, opt->palette.window().color()); - popupPal.setColor(QPalette::Midlight, opt->palette.light().color()); - qDrawWinPanel(p, opt->rect, popupPal, opt->state & State_Sunken); - } - break; -#endif // QT_NO_FRAME - case PE_FrameButtonBevel: - case PE_PanelButtonBevel: { - QBrush fill; - bool panel = pe != PE_FrameButtonBevel; - p->setBrushOrigin(opt->rect.topLeft()); - if (!(opt->state & State_Sunken) && (opt->state & State_On)) - fill = QBrush(opt->palette.light().color(), Qt::Dense4Pattern); - else - fill = opt->palette.brush(QPalette::Button); - - if (opt->state & (State_Raised | State_On | State_Sunken)) { - qDrawWinButton(p, opt->rect, opt->palette, opt->state & (State_Sunken | State_On), - panel ? &fill : nullptr); - } else { - if (panel) - p->fillRect(opt->rect, fill); - else - p->drawRect(opt->rect); - } - break; } - case PE_FrameWindow: { - QPalette popupPal = opt->palette; - popupPal.setColor(QPalette::Light, opt->palette.window().color()); - popupPal.setColor(QPalette::Midlight, opt->palette.light().color()); - qDrawWinPanel(p, opt->rect, popupPal, opt->state & State_Sunken); - break; } -#if 0 && QT_CONFIG(dockwidget) - case PE_IndicatorDockWidgetResizeHandle: - break; - case PE_FrameDockWidget: - if (qstyleoption_cast<const QStyleOptionFrame *>(opt)) { - proxy()->drawPrimitive(QStyle::PE_FrameWindow, opt, p, w); - } - break; -#endif // QT_CONFIG(dockwidget) - - case PE_FrameStatusBarItem: - qDrawShadePanel(p, opt->rect, opt->palette, true, 1, nullptr); - break; - - case PE_IndicatorProgressChunk: - { - bool vertical = false, inverted = false; - if (const QStyleOptionProgressBar *pb = qstyleoption_cast<const QStyleOptionProgressBar *>(opt)) { - vertical = !(pb->state & QStyle::State_Horizontal); - inverted = pb->invertedAppearance; - } - - int space = 2; - int chunksize = proxy()->pixelMetric(PM_ProgressBarChunkWidth, opt) - space; - if (!vertical) { - if (opt->rect.width() <= chunksize) - space = 0; - - if (inverted) - p->fillRect(opt->rect.x() + space, opt->rect.y(), opt->rect.width() - space, opt->rect.height(), - opt->palette.brush(QPalette::Highlight)); - else - p->fillRect(opt->rect.x(), opt->rect.y(), opt->rect.width() - space, opt->rect.height(), - opt->palette.brush(QPalette::Highlight)); - } else { - if (opt->rect.height() <= chunksize) - space = 0; - - if (inverted) - p->fillRect(opt->rect.x(), opt->rect.y(), opt->rect.width(), opt->rect.height() - space, - opt->palette.brush(QPalette::Highlight)); - else - p->fillRect(opt->rect.x(), opt->rect.y() + space, opt->rect.width(), opt->rect.height() - space, - opt->palette.brush(QPalette::Highlight)); - } - } - break; - - case PE_FrameTabWidget: { - qDrawWinButton(p, opt->rect, opt->palette, false, nullptr); - break; - } - default: - QCommonStyle::drawPrimitive(pe, opt, p); - } -} - -/*! \reimp */ -void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter *p) const -{ - switch (ce) { -#if 0 && QT_CONFIG(rubberband) - case CE_RubberBand: - if (qstyleoption_cast<const QStyleOptionRubberBand *>(opt)) { - // ### workaround for slow general painter path - QPixmap tiledPixmap(16, 16); - QPainter pixmapPainter(&tiledPixmap); - pixmapPainter.setPen(Qt::NoPen); - pixmapPainter.setBrush(Qt::Dense4Pattern); - pixmapPainter.setBackground(Qt::white); - pixmapPainter.setBackgroundMode(Qt::OpaqueMode); - pixmapPainter.drawRect(0, 0, tiledPixmap.width(), tiledPixmap.height()); - pixmapPainter.end(); - tiledPixmap = QPixmap::fromImage(tiledPixmap.toImage()); - p->save(); - QRect r = opt->rect; - QStyleHintReturnMask mask; - if (proxy()->styleHint(QStyle::SH_RubberBand_Mask, opt, widget, &mask)) - p->setClipRegion(mask.region); - p->drawTiledPixmap(r.x(), r.y(), r.width(), r.height(), tiledPixmap); - p->restore(); - return; - } - break; -#endif // QT_CONFIG(rubberband) - -#if 0 && QT_CONFIG(menu) && QT_CONFIG(mainwindow) - case CE_MenuBarEmptyArea: - if (widget && qobject_cast<const QMainWindow *>(widget->parentWidget())) { - p->fillRect(opt->rect, opt->palette.button()); - QPen oldPen = p->pen(); - p->setPen(QPen(opt->palette.dark().color())); - p->drawLine(opt->rect.bottomLeft(), opt->rect.bottomRight()); - p->setPen(oldPen); - } - break; -#endif -#if 0 && QT_CONFIG(menu) - case CE_MenuItem: - if (const QStyleOptionMenuItem *menuitem = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) { - int x, y, w, h; - menuitem->rect.getRect(&x, &y, &w, &h); - int tab = menuitem->tabWidth; - bool dis = !(menuitem->state & State_Enabled); - bool checked = menuitem->checkType != QStyleOptionMenuItem::NotCheckable - ? menuitem->checked : false; - bool act = menuitem->state & State_Selected; - - // windows always has a check column, regardless whether we have an icon or not - int checkcol = qMax<int>(menuitem->maxIconWidth, QWindowsStylePrivate::windowsCheckMarkWidth); - - QBrush fill = menuitem->palette.brush(act ? QPalette::Highlight : QPalette::Button); - p->fillRect(menuitem->rect.adjusted(0, 0, -1, 0), fill); - - if (menuitem->menuItemType == QStyleOptionMenuItem::Separator){ - int yoff = y-1 + h / 2; - p->setPen(menuitem->palette.dark().color()); - p->drawLine(x + 2, yoff, x + w - 4, yoff); - p->setPen(menuitem->palette.light().color()); - p->drawLine(x + 2, yoff + 1, x + w - 4, yoff + 1); - return; - } - - QRect vCheckRect = visualRect(opt->direction, menuitem->rect, QRect(menuitem->rect.x(), menuitem->rect.y(), checkcol, menuitem->rect.height())); - if (!menuitem->icon.isNull() && checked) { - if (act) { - qDrawShadePanel(p, vCheckRect, - menuitem->palette, true, 1, - &menuitem->palette.brush(QPalette::Button)); - } else { - QBrush fill(menuitem->palette.light().color(), Qt::Dense4Pattern); - qDrawShadePanel(p, vCheckRect, menuitem->palette, true, 1, &fill); - } - } else if (!act) { - p->fillRect(vCheckRect, menuitem->palette.brush(QPalette::Button)); - } - - // On Windows Style, if we have a checkable item and an icon we - // draw the icon recessed to indicate an item is checked. If we - // have no icon, we draw a checkmark instead. - if (!menuitem->icon.isNull()) { - QIcon::Mode mode = dis ? QIcon::Disabled : QIcon::Normal; - if (act && !dis) - mode = QIcon::Active; - QPixmap pixmap; - if (checked) - pixmap = menuitem->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, opt, widget), mode, QIcon::On); - else - pixmap = menuitem->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, opt, widget), mode); - const int pixw = pixmap.width() / pixmap.devicePixelRatio(); - const int pixh = pixmap.height() / pixmap.devicePixelRatio(); - QRect pmr(0, 0, pixw, pixh); - pmr.moveCenter(vCheckRect.center()); - p->setPen(menuitem->palette.text().color()); - p->drawPixmap(pmr.topLeft(), pixmap); - } else if (checked) { - QStyleOptionMenuItem newMi = *menuitem; - newMi.state = State_None; - if (!dis) - newMi.state |= State_Enabled; - if (act) - newMi.state |= State_On; - newMi.rect = visualRect(opt->direction, menuitem->rect, QRect(menuitem->rect.x() + QWindowsStylePrivate::windowsItemFrame, - menuitem->rect.y() + QWindowsStylePrivate::windowsItemFrame, - checkcol - 2 * QWindowsStylePrivate::windowsItemFrame, - menuitem->rect.height() - 2 * QWindowsStylePrivate::windowsItemFrame)); - proxy()->drawPrimitive(PE_IndicatorMenuCheckMark, &newMi, p, widget); - } - p->setPen(act ? menuitem->palette.highlightedText().color() : menuitem->palette.buttonText().color()); - - QColor discol; - if (dis) { - discol = menuitem->palette.text().color(); - p->setPen(discol); - } - - int xm = int(QWindowsStylePrivate::windowsItemFrame) + checkcol + int(QWindowsStylePrivate::windowsItemHMargin); - int xpos = menuitem->rect.x() + xm; - QRect textRect(xpos, y + QWindowsStylePrivate::windowsItemVMargin, - w - xm - QWindowsStylePrivate::windowsRightBorder - tab + 1, h - 2 * QWindowsStylePrivate::windowsItemVMargin); - QRect vTextRect = visualRect(opt->direction, menuitem->rect, textRect); - QStringRef s(&menuitem->text); - if (!s.isEmpty()) { // draw text - p->save(); - int t = s.indexOf(QLatin1Char('\t')); - int text_flags = Qt::AlignVCenter | Qt::TextShowMnemonic | Qt::TextDontClip | Qt::TextSingleLine; - if (!proxy()->styleHint(SH_UnderlineShortcut, menuitem, widget)) - text_flags |= Qt::TextHideMnemonic; - text_flags |= Qt::AlignLeft; - if (t >= 0) { - QRect vShortcutRect = visualRect(opt->direction, menuitem->rect, - QRect(textRect.topRight(), QPoint(menuitem->rect.right(), textRect.bottom()))); - const QString textToDraw = s.mid(t + 1).toString(); - if (dis && !act && proxy()->styleHint(SH_EtchDisabledText, opt, widget)) { - p->setPen(menuitem->palette.light().color()); - p->drawText(vShortcutRect.adjusted(1, 1, 1, 1), text_flags, textToDraw); - p->setPen(discol); - } - p->drawText(vShortcutRect, text_flags, textToDraw); - s = s.left(t); - } - QFont font = menuitem->font; - if (menuitem->menuItemType == QStyleOptionMenuItem::DefaultItem) - font.setBold(true); - p->setFont(font); - const QString textToDraw = s.left(t).toString(); - if (dis && !act && proxy()->styleHint(SH_EtchDisabledText, opt, widget)) { - p->setPen(menuitem->palette.light().color()); - p->drawText(vTextRect.adjusted(1, 1, 1, 1), text_flags, textToDraw); - p->setPen(discol); - } - p->drawText(vTextRect, text_flags, textToDraw); - p->restore(); - } - if (menuitem->menuItemType == QStyleOptionMenuItem::SubMenu) {// draw sub menu arrow - int dim = (h - 2 * QWindowsStylePrivate::windowsItemFrame) / 2; - PrimitiveElement arrow; - arrow = (opt->direction == Qt::RightToLeft) ? PE_IndicatorArrowLeft : PE_IndicatorArrowRight; - xpos = x + w - QWindowsStylePrivate::windowsArrowHMargin - QWindowsStylePrivate::windowsItemFrame - dim; - QRect vSubMenuRect = visualRect(opt->direction, menuitem->rect, QRect(xpos, y + h / 2 - dim / 2, dim, dim)); - QStyleOptionMenuItem newMI = *menuitem; - newMI.rect = vSubMenuRect; - newMI.state = dis ? State_None : State_Enabled; - if (act) - newMI.palette.setColor(QPalette::ButtonText, - newMI.palette.highlightedText().color()); - proxy()->drawPrimitive(arrow, &newMI, p, widget); - } - - } - break; -#endif // QT_CONFIG(menu) -#if 0 && QT_CONFIG(menubar) - case CE_MenuBarItem: - if (const QStyleOptionMenuItem *mbi = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) { - bool active = mbi->state & State_Selected; - bool hasFocus = mbi->state & State_HasFocus; - bool down = mbi->state & State_Sunken; - QStyleOptionMenuItem newMbi = *mbi; - p->fillRect(mbi->rect, mbi->palette.brush(QPalette::Button)); - if (active || hasFocus) { - QBrush b = mbi->palette.brush(QPalette::Button); - if (active && down) - p->setBrushOrigin(p->brushOrigin() + QPoint(1, 1)); - if (active && hasFocus) - qDrawShadeRect(p, mbi->rect.x(), mbi->rect.y(), mbi->rect.width(), - mbi->rect.height(), mbi->palette, active && down, 1, 0, &b); - if (active && down) { - newMbi.rect.translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal, mbi, widget), - proxy()->pixelMetric(PM_ButtonShiftVertical, mbi, widget)); - p->setBrushOrigin(p->brushOrigin() - QPoint(1, 1)); - } - } - QCommonStyle::drawControl(ce, &newMbi, p, widget); - } - break; -#endif // QT_CONFIG(menubar) -#if 0 && QT_CONFIG(tabbar) - case CE_TabBarTabShape: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) { - bool rtlHorTabs = (tab->direction == Qt::RightToLeft - && (tab->shape == QTabBar::RoundedNorth - || tab->shape == QTabBar::RoundedSouth)); - bool selected = tab->state & State_Selected; - bool lastTab = ((!rtlHorTabs && tab->position == QStyleOptionTab::End) - || (rtlHorTabs - && tab->position == QStyleOptionTab::Beginning)); - bool firstTab = ((!rtlHorTabs - && tab->position == QStyleOptionTab::Beginning) - || (rtlHorTabs - && tab->position == QStyleOptionTab::End)); - bool onlyOne = tab->position == QStyleOptionTab::OnlyOneTab; - bool previousSelected = - ((!rtlHorTabs - && tab->selectedPosition == QStyleOptionTab::PreviousIsSelected) - || (rtlHorTabs - && tab->selectedPosition == QStyleOptionTab::NextIsSelected)); - bool nextSelected = - ((!rtlHorTabs - && tab->selectedPosition == QStyleOptionTab::NextIsSelected) - || (rtlHorTabs - && tab->selectedPosition - == QStyleOptionTab::PreviousIsSelected)); - int tabBarAlignment = proxy()->styleHint(SH_TabBar_Alignment, tab, widget); - bool leftAligned = (!rtlHorTabs && tabBarAlignment == Qt::AlignLeft) - || (rtlHorTabs - && tabBarAlignment == Qt::AlignRight); - - bool rightAligned = (!rtlHorTabs && tabBarAlignment == Qt::AlignRight) - || (rtlHorTabs - && tabBarAlignment == Qt::AlignLeft); - - QColor light = tab->palette.light().color(); - QColor dark = tab->palette.dark().color(); - QColor shadow = tab->palette.shadow().color(); - int borderThinkness = proxy()->pixelMetric(PM_TabBarBaseOverlap, tab, widget); - if (selected) - borderThinkness /= 2; - QRect r2(opt->rect); - int x1 = r2.left(); - int x2 = r2.right(); - int y1 = r2.top(); - int y2 = r2.bottom(); - switch (tab->shape) { - default: - QCommonStyle::drawControl(ce, tab, p, widget); - break; - case QTabBar::RoundedNorth: { - if (!selected) { - y1 += 2; - x1 += onlyOne || firstTab ? borderThinkness : 0; - x2 -= onlyOne || lastTab ? borderThinkness : 0; - } - - p->fillRect(QRect(x1 + 1, y1 + 1, (x2 - x1) - 1, (y2 - y1) - 2), tab->palette.window()); - - // Delete border - if (selected) { - p->fillRect(QRect(x1,y2-1,x2-x1,1), tab->palette.window()); - p->fillRect(QRect(x1,y2,x2-x1,1), tab->palette.window()); - } - // Left - if (firstTab || selected || onlyOne || !previousSelected) { - p->setPen(light); - p->drawLine(x1, y1 + 2, x1, y2 - ((onlyOne || firstTab) && selected && leftAligned ? 0 : borderThinkness)); - p->drawPoint(x1 + 1, y1 + 1); - } - // Top - { - int beg = x1 + (previousSelected ? 0 : 2); - int end = x2 - (nextSelected ? 0 : 2); - p->setPen(light); - p->drawLine(beg, y1, end, y1); - } - // Right - if (lastTab || selected || onlyOne || !nextSelected) { - p->setPen(shadow); - p->drawLine(x2, y1 + 2, x2, y2 - ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness)); - p->drawPoint(x2 - 1, y1 + 1); - p->setPen(dark); - p->drawLine(x2 - 1, y1 + 2, x2 - 1, y2 - ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness)); - } - break; } - case QTabBar::RoundedSouth: { - if (!selected) { - y2 -= 2; - x1 += firstTab ? borderThinkness : 0; - x2 -= lastTab ? borderThinkness : 0; - } - - p->fillRect(QRect(x1 + 1, y1 + 2, (x2 - x1) - 1, (y2 - y1) - 1), tab->palette.window()); - - // Delete border - if (selected) { - p->fillRect(QRect(x1, y1 + 1, (x2 - 1)-x1, 1), tab->palette.window()); - p->fillRect(QRect(x1, y1, (x2 - 1)-x1, 1), tab->palette.window()); - } - // Left - if (firstTab || selected || onlyOne || !previousSelected) { - p->setPen(light); - p->drawLine(x1, y2 - 2, x1, y1 + ((onlyOne || firstTab) && selected && leftAligned ? 0 : borderThinkness)); - p->drawPoint(x1 + 1, y2 - 1); - } - // Bottom - { - int beg = x1 + (previousSelected ? 0 : 2); - int end = x2 - (nextSelected ? 0 : 2); - p->setPen(shadow); - p->drawLine(beg, y2, end, y2); - p->setPen(dark); - p->drawLine(beg, y2 - 1, end, y2 - 1); - } - // Right - if (lastTab || selected || onlyOne || !nextSelected) { - p->setPen(shadow); - p->drawLine(x2, y2 - 2, x2, y1 + ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness)); - p->drawPoint(x2 - 1, y2 - 1); - p->setPen(dark); - p->drawLine(x2 - 1, y2 - 2, x2 - 1, y1 + ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness)); - } - break; } - case QTabBar::RoundedWest: { - if (!selected) { - x1 += 2; - y1 += firstTab ? borderThinkness : 0; - y2 -= lastTab ? borderThinkness : 0; - } - - p->fillRect(QRect(x1 + 1, y1 + 1, (x2 - x1) - 2, (y2 - y1) - 1), tab->palette.window()); - - // Delete border - if (selected) { - p->fillRect(QRect(x2 - 1, y1, 1, y2-y1), tab->palette.window()); - p->fillRect(QRect(x2, y1, 1, y2-y1), tab->palette.window()); - } - // Top - if (firstTab || selected || onlyOne || !previousSelected) { - p->setPen(light); - p->drawLine(x1 + 2, y1, x2 - ((onlyOne || firstTab) && selected && leftAligned ? 0 : borderThinkness), y1); - p->drawPoint(x1 + 1, y1 + 1); - } - // Left - { - int beg = y1 + (previousSelected ? 0 : 2); - int end = y2 - (nextSelected ? 0 : 2); - p->setPen(light); - p->drawLine(x1, beg, x1, end); - } - // Bottom - if (lastTab || selected || onlyOne || !nextSelected) { - p->setPen(shadow); - p->drawLine(x1 + 3, y2, x2 - ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness), y2); - p->drawPoint(x1 + 2, y2 - 1); - p->setPen(dark); - p->drawLine(x1 + 3, y2 - 1, x2 - ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness), y2 - 1); - p->drawPoint(x1 + 1, y2 - 1); - p->drawPoint(x1 + 2, y2); - } - break; } - case QTabBar::RoundedEast: { - if (!selected) { - x2 -= 2; - y1 += firstTab ? borderThinkness : 0; - y2 -= lastTab ? borderThinkness : 0; - } - - p->fillRect(QRect(x1 + 2, y1 + 1, (x2 - x1) - 1, (y2 - y1) - 1), tab->palette.window()); - - // Delete border - if (selected) { - p->fillRect(QRect(x1 + 1, y1, 1, (y2 - 1)-y1),tab->palette.window()); - p->fillRect(QRect(x1, y1, 1, (y2-1)-y1), tab->palette.window()); - } - // Top - if (firstTab || selected || onlyOne || !previousSelected) { - p->setPen(light); - p->drawLine(x2 - 2, y1, x1 + ((onlyOne || firstTab) && selected && leftAligned ? 0 : borderThinkness), y1); - p->drawPoint(x2 - 1, y1 + 1); - } - // Right - { - int beg = y1 + (previousSelected ? 0 : 2); - int end = y2 - (nextSelected ? 0 : 2); - p->setPen(shadow); - p->drawLine(x2, beg, x2, end); - p->setPen(dark); - p->drawLine(x2 - 1, beg, x2 - 1, end); - } - // Bottom - if (lastTab || selected || onlyOne || !nextSelected) { - p->setPen(shadow); - p->drawLine(x2 - 2, y2, x1 + ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness), y2); - p->drawPoint(x2 - 1, y2 - 1); - p->setPen(dark); - p->drawLine(x2 - 2, y2 - 1, x1 + ((onlyOne || lastTab) && selected && rightAligned ? 0 : borderThinkness), y2 - 1); - } - break; } - } - } - break; -#endif // QT_CONFIG(tabbar) - case CE_ToolBoxTabShape: - qDrawShadePanel(p, opt->rect, opt->palette, - opt->state & (State_Sunken | State_On), 1, - &opt->palette.brush(QPalette::Button)); - break; -#if 0 && QT_CONFIG(splitter) - case CE_Splitter: - p->eraseRect(opt->rect); - break; -#endif // QT_CONFIG(splitter) -#if 0 && QT_CONFIG(scrollbar) - case CE_ScrollBarSubLine: - case CE_ScrollBarAddLine: { - if ((opt->state & State_Sunken)) { - p->setPen(opt->palette.dark().color()); - p->setBrush(opt->palette.brush(QPalette::Button)); - p->drawRect(opt->rect.adjusted(0, 0, -1, -1)); - } else { - QStyleOption buttonOpt = *opt; - if (!(buttonOpt.state & State_Sunken)) - buttonOpt.state |= State_Raised; - QPalette pal(opt->palette); - pal.setColor(QPalette::Button, opt->palette.light().color()); - pal.setColor(QPalette::Light, opt->palette.button().color()); - qDrawWinButton(p, opt->rect, pal, opt->state & (State_Sunken | State_On), - &opt->palette.brush(QPalette::Button)); - } - PrimitiveElement arrow; - if (opt->state & State_Horizontal) { - if (ce == CE_ScrollBarAddLine) - arrow = opt->direction == Qt::LeftToRight ? PE_IndicatorArrowRight : PE_IndicatorArrowLeft; - else - arrow = opt->direction == Qt::LeftToRight ? PE_IndicatorArrowLeft : PE_IndicatorArrowRight; - } else { - if (ce == CE_ScrollBarAddLine) - arrow = PE_IndicatorArrowDown; - else - arrow = PE_IndicatorArrowUp; - } - QStyleOption arrowOpt = *opt; - arrowOpt.rect = opt->rect.adjusted(4, 4, -4, -4); - proxy()->drawPrimitive(arrow, &arrowOpt, p, widget); - break; } - case CE_ScrollBarAddPage: - case CE_ScrollBarSubPage: { - QBrush br; - QBrush bg = p->background(); - Qt::BGMode bg_mode = p->backgroundMode(); - p->setPen(Qt::NoPen); - p->setBackgroundMode(Qt::OpaqueMode); - - if (opt->state & State_Sunken) { - br = QBrush(opt->palette.shadow().color(), Qt::Dense4Pattern); - p->setBackground(opt->palette.dark().color()); - p->setBrush(br); - } else { - const QBrush paletteBrush = opt->palette.brush(QPalette::Light); - if (paletteBrush.style() == Qt::TexturePattern) { - if (qHasPixmapTexture(paletteBrush)) - br = QBrush(paletteBrush.texture()); - else - br = QBrush(paletteBrush.textureImage()); - } else - br = QBrush(opt->palette.light().color(), Qt::Dense4Pattern); - p->setBackground(opt->palette.window().color()); - p->setBrush(br); - } - p->drawRect(opt->rect); - p->setBackground(bg); - p->setBackgroundMode(bg_mode); - break; } - case CE_ScrollBarSlider: - if (!(opt->state & State_Enabled)) { - QBrush br; - const QBrush paletteBrush = opt->palette.brush(QPalette::Light); - if (paletteBrush.style() == Qt::TexturePattern) { - if (qHasPixmapTexture(paletteBrush)) - br = QBrush(paletteBrush.texture()); - else - br = QBrush(paletteBrush.textureImage()); - } else - br = QBrush(opt->palette.light().color(), Qt::Dense4Pattern); - p->setPen(Qt::NoPen); - p->setBrush(br); - p->setBackgroundMode(Qt::OpaqueMode); - p->drawRect(opt->rect); - } else { - QStyleOptionButton buttonOpt; - buttonOpt.QStyleOption::operator=(*opt); - buttonOpt.state = State_Enabled | State_Raised; - - QPalette pal(opt->palette); - pal.setColor(QPalette::Button, opt->palette.light().color()); - pal.setColor(QPalette::Light, opt->palette.button().color()); - qDrawWinButton(p, opt->rect, pal, false, &opt->palette.brush(QPalette::Button)); - } - break; -#endif // QT_CONFIG(scrollbar) - case CE_HeaderSection: { - QBrush fill; - if (opt->state & State_On) - fill = QBrush(opt->palette.light().color(), Qt::Dense4Pattern); - else - fill = opt->palette.brush(QPalette::Button); - - if (opt->state & (State_Raised | State_Sunken)) { - qDrawWinButton(p, opt->rect, opt->palette, opt->state & State_Sunken, &fill); - } else { - p->fillRect(opt->rect, fill); - } - break; } -#if 0 && QT_CONFIG(toolbar) - case CE_ToolBar: - if (const QStyleOptionToolBar *toolbar = qstyleoption_cast<const QStyleOptionToolBar *>(opt)) { - // Reserve the beveled appearance only for mainwindow toolbars - if (!(widget && qobject_cast<const QMainWindow*> (widget->parentWidget()))) - break; - - QRect rect = opt->rect; - bool paintLeftBorder = true; - bool paintRightBorder = true; - bool paintBottomBorder = true; - - switch (toolbar->toolBarArea){ - case Qt::BottomToolBarArea : - switch (toolbar->positionOfLine){ - case QStyleOptionToolBar::Beginning: - case QStyleOptionToolBar::OnlyOne: - paintBottomBorder = false; - break; - default: - break; - } - Q_FALLTHROUGH(); // It continues in the end of the next case - case Qt::TopToolBarArea : - switch (toolbar->positionWithinLine){ - case QStyleOptionToolBar::Beginning: - paintLeftBorder = false; - break; - case QStyleOptionToolBar::End: - paintRightBorder = false; - break; - case QStyleOptionToolBar::OnlyOne: - paintRightBorder = false; - paintLeftBorder = false; - break; - default: - break; - } - if (opt->direction == Qt::RightToLeft){ //reverse layout changes the order of Beginning/end - bool tmp = paintLeftBorder; - paintRightBorder=paintLeftBorder; - paintLeftBorder=tmp; - } - break; - case Qt::RightToolBarArea : - switch (toolbar->positionOfLine){ - case QStyleOptionToolBar::Beginning: - case QStyleOptionToolBar::OnlyOne: - paintRightBorder = false; - break; - default: - break; - } - break; - case Qt::LeftToolBarArea : - switch (toolbar->positionOfLine){ - case QStyleOptionToolBar::Beginning: - case QStyleOptionToolBar::OnlyOne: - paintLeftBorder = false; - break; - default: - break; - } - break; - default: - break; - } - - - //draw top border - p->setPen(QPen(opt->palette.light().color())); - p->drawLine(rect.topLeft().x(), - rect.topLeft().y(), - rect.topRight().x(), - rect.topRight().y()); - - if (paintLeftBorder){ - p->setPen(QPen(opt->palette.light().color())); - p->drawLine(rect.topLeft().x(), - rect.topLeft().y(), - rect.bottomLeft().x(), - rect.bottomLeft().y()); - } - - if (paintRightBorder){ - p->setPen(QPen(opt->palette.dark().color())); - p->drawLine(rect.topRight().x(), - rect.topRight().y(), - rect.bottomRight().x(), - rect.bottomRight().y()); - } - - if (paintBottomBorder){ - p->setPen(QPen(opt->palette.dark().color())); - p->drawLine(rect.bottomLeft().x(), - rect.bottomLeft().y(), - rect.bottomRight().x(), - rect.bottomRight().y()); - } - } - break; - - -#endif // QT_CONFIG(toolbar) - - case CE_ProgressBarContents: - if (const QStyleOptionProgressBar *pb = qstyleoption_cast<const QStyleOptionProgressBar *>(opt)) { - QRect rect = pb->rect; - if (!rect.isValid()) - return; - - const bool vertical = !(pb->state & QStyle::State_Horizontal); - const bool inverted = pb->invertedAppearance; - - QTransform m; - if (vertical) { - rect = QRect(rect.y(), rect.x(), rect.height(), rect.width()); // flip width and height - m.rotate(90); - m.translate(0, -(rect.height() + rect.y()*2)); - } - QPalette pal2 = pb->palette; - // Correct the highlight color if it is the same as the background - if (pal2.highlight() == pal2.window()) - pal2.setColor(QPalette::Highlight, pb->palette.color(QPalette::Active, - QPalette::Highlight)); - bool reverse = ((!vertical && (pb->direction == Qt::RightToLeft)) || vertical); - if (inverted) - reverse = !reverse; - int w = rect.width(); - Q_D(const QWindowsStyle); - if (pb->minimum == 0 && pb->maximum == 0) { - const int unit_width = proxy()->pixelMetric(PM_ProgressBarChunkWidth, pb); - QStyleOptionProgressBar pbBits = *pb; - Q_ASSERT(unit_width >0); - - pbBits.rect = rect; - pbBits.palette = pal2; - - int step = 0; - int chunkCount = w / unit_width + 1; -#if 0 && QT_CONFIG(animation) - if (QProgressStyleAnimation *animation = qobject_cast<QProgressStyleAnimation*>(d->animation(opt->styleObject))) - step = (animation->animationStep() / 3) % chunkCount; - else - d->startAnimation(new QProgressStyleAnimation(d->animationFps, opt->styleObject)); -#else - Q_UNUSED(d); -#endif - int chunksInRow = 5; - int myY = pbBits.rect.y(); - int myHeight = pbBits.rect.height(); - int chunksToDraw = chunksInRow; - - if (step > chunkCount - 5)chunksToDraw = (chunkCount - step); - p->save(); - p->setClipRect(m.mapRect(QRectF(rect)).toRect()); - - int x0 = reverse ? rect.left() + rect.width() - unit_width*(step) - unit_width : rect.left() + unit_width * step; - int x = 0; - - for (int i = 0; i < chunksToDraw ; ++i) { - pbBits.rect.setRect(x0 + x, myY, unit_width, myHeight); - pbBits.rect = m.mapRect(QRectF(pbBits.rect)).toRect(); - proxy()->drawPrimitive(PE_IndicatorProgressChunk, &pbBits, p); - x += reverse ? -unit_width : unit_width; - } - //Draw wrap-around chunks - if ( step > chunkCount-5){ - x0 = reverse ? rect.left() + rect.width() - unit_width : rect.left() ; - x = 0; - int chunksToDraw = step - (chunkCount - chunksInRow); - for (int i = 0; i < chunksToDraw ; ++i) { - pbBits.rect.setRect(x0 + x, myY, unit_width, myHeight); - pbBits.rect = m.mapRect(QRectF(pbBits.rect)).toRect(); - proxy()->drawPrimitive(PE_IndicatorProgressChunk, &pbBits, p); - x += reverse ? -unit_width : unit_width; - } - } - p->restore(); //restore state - } - else { -#if 0 && QT_CONFIG(animation) - d->stopAnimation(opt->styleObject); -#endif - QCommonStyle::drawControl(ce, opt, p); - } - } - break; - -#if 0 && QT_CONFIG(dockwidget) - case CE_DockWidgetTitle: - - if (const QStyleOptionDockWidget *dwOpt = qstyleoption_cast<const QStyleOptionDockWidget *>(opt)) { - Q_D(const QWindowsStyle); - - const bool verticalTitleBar = dwOpt->verticalTitleBar; - - QRect rect = dwOpt->rect; - QRect r = rect; - - if (verticalTitleBar) { - r = r.transposed(); - - p->save(); - p->translate(r.left(), r.top() + r.width()); - p->rotate(-90); - p->translate(-r.left(), -r.top()); - } - - bool floating = false; - bool active = dwOpt->state & State_Active; - QColor inactiveCaptionTextColor = d->inactiveCaptionText; - if (dwOpt->movable) { - QColor left, right; - - //Titlebar gradient - if (opt->state & QStyle::State_Window) { - floating = true; - if (active) { - left = d->activeCaptionColor; - right = d->activeGradientCaptionColor; - } else { - left = d->inactiveCaptionColor; - right = d->inactiveGradientCaptionColor; - } - QBrush fillBrush(left); - if (left != right) { - QPoint p1(r.x(), r.top() + r.height()/2); - QPoint p2(rect.right(), r.top() + r.height()/2); - QLinearGradient lg(p1, p2); - lg.setColorAt(0, left); - lg.setColorAt(1, right); - fillBrush = lg; - } - p->fillRect(r.adjusted(0, 0, 0, -3), fillBrush); - } - } - if (!dwOpt->title.isEmpty()) { - QFont oldFont = p->font(); - if (floating) { - QFont font = oldFont; - font.setBold(true); - p->setFont(font); - } - QPalette palette = dwOpt->palette; - palette.setColor(QPalette::Window, inactiveCaptionTextColor); - QRect titleRect = subElementRect(SE_DockWidgetTitleBarText, opt, widget); - if (verticalTitleBar) { - titleRect = QRect(r.left() + rect.bottom() - - titleRect.bottom(), - r.top() + titleRect.left() - rect.left(), - titleRect.height(), titleRect.width()); - } - proxy()->drawItemText(p, titleRect, - Qt::AlignLeft | Qt::AlignVCenter, palette, - dwOpt->state & State_Enabled, dwOpt->title, - floating ? (active ? QPalette::BrightText : QPalette::Window) : QPalette::WindowText); - p->setFont(oldFont); - } - if (verticalTitleBar) - p->restore(); - } - return; -#endif // QT_CONFIG(dockwidget) -#if 0 && QT_CONFIG(combobox) - case CE_ComboBoxLabel: - if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - if (cb->state & State_HasFocus) { - p->setPen(cb->palette.highlightedText().color()); - p->setBackground(cb->palette.highlight()); - } else { - p->setPen(cb->palette.text().color()); - p->setBackground(cb->palette.window()); - } - } - QCommonStyle::drawControl(ce, opt, p, widget); - break; -#endif // QT_CONFIG(combobox) - default: - QCommonStyle::drawControl(ce, opt, p); - } -} - -/*! \reimp */ -QRect QWindowsStyle::subElementRect(SubElement sr, const QStyleOption *opt) const -{ - QRect r; - switch (sr) { - case SE_SliderFocusRect: - case SE_ToolBoxTabContents: - r = visualRect(opt->direction, opt->rect, opt->rect); - break; - case SE_DockWidgetTitleBarText: { - r = QCommonStyle::subElementRect(sr, opt); - const QStyleOptionDockWidget *dwOpt - = qstyleoption_cast<const QStyleOptionDockWidget*>(opt); - const bool verticalTitleBar = dwOpt && dwOpt->verticalTitleBar; - int m = proxy()->pixelMetric(PM_DockWidgetTitleMargin, opt); - if (verticalTitleBar) { - r.adjust(0, 0, 0, -m); - } else { - if (opt->direction == Qt::LeftToRight) - r.adjust(m, 0, 0, 0); - else - r.adjust(0, 0, -m, 0); - } - break; - } - case SE_ProgressBarContents: - r = QCommonStyle::subElementRect(SE_ProgressBarGroove, opt); - r.adjust(3, 3, -3, -3); - break; - default: - r = QCommonStyle::subElementRect(sr, opt); - } - return r; -} - - -/*! \reimp */ -void QWindowsStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, - QPainter *p) const -{ -#if 0 - switch (cc) { -#if QT_CONFIG(slider) - case CC_Slider: - if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - int thickness = proxy()->pixelMetric(PM_SliderControlThickness, slider); - int len = proxy()->pixelMetric(PM_SliderLength, slider); - int ticks = slider->tickPosition; - QRect groove = proxy()->subControlRect(CC_Slider, slider, SC_SliderGroove); - QRect handle = proxy()->subControlRect(CC_Slider, slider, SC_SliderHandle); - - if ((slider->subControls & SC_SliderGroove) && groove.isValid()) { - int mid = thickness / 2; - - if (ticks & QStyleOptionSlider::TicksAbove) - mid += len / 8; - if (ticks & QStyleOptionSlider::TicksBelow) - mid -= len / 8; - - p->setPen(slider->palette.shadow().color()); - if (slider->orientation == Qt::Horizontal) { - qDrawWinPanel(p, groove.x(), groove.y() + mid - 2, - groove.width(), 4, slider->palette, true); - p->drawLine(groove.x() + 1, groove.y() + mid - 1, - groove.x() + groove.width() - 3, groove.y() + mid - 1); - } else { - qDrawWinPanel(p, groove.x() + mid - 2, groove.y(), - 4, groove.height(), slider->palette, true); - p->drawLine(groove.x() + mid - 1, groove.y() + 1, - groove.x() + mid - 1, groove.y() + groove.height() - 3); - } - } - - if (slider->subControls & SC_SliderTickmarks) { - QStyleOptionSlider tmpSlider = *slider; - tmpSlider.subControls = SC_SliderTickmarks; - QCommonStyle::drawComplexControl(cc, &tmpSlider, p); - } - - if (slider->subControls & SC_SliderHandle) { - // 4444440 - // 4333310 - // 4322210 - // 4322210 - // 4322210 - // 4322210 - // *43210* - // **410** - // ***0*** - const QColor c0 = slider->palette.shadow().color(); - const QColor c1 = slider->palette.dark().color(); - // const QColor c2 = g.button(); - const QColor c3 = slider->palette.midlight().color(); - const QColor c4 = slider->palette.light().color(); - QBrush handleBrush; - - if (slider->state & State_Enabled) { - handleBrush = slider->palette.color(QPalette::Button); - } else { - handleBrush = QBrush(slider->palette.color(QPalette::Button), - Qt::Dense4Pattern); - } - - - int x = handle.x(), y = handle.y(), - wi = handle.width(), he = handle.height(); - - int x1 = x; - int x2 = x+wi-1; - int y1 = y; - int y2 = y+he-1; - - Qt::Orientation orient = slider->orientation; - bool tickAbove = slider->tickPosition == QStyleOptionSlider::TicksAbove; - bool tickBelow = slider->tickPosition == QStyleOptionSlider::TicksBelow; - - if (slider->state & State_HasFocus) { - QStyleOptionFocusRect fropt; - fropt.QStyleOption::operator=(*slider); - fropt.rect = subElementRect(SE_SliderFocusRect, slider); - proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, p); - } - - if ((tickAbove && tickBelow) || (!tickAbove && !tickBelow)) { - Qt::BGMode oldMode = p->backgroundMode(); - p->setBackgroundMode(Qt::OpaqueMode); - qDrawWinButton(p, QRect(x, y, wi, he), slider->palette, false, - &handleBrush); - p->setBackgroundMode(oldMode); - return; - } - - QSliderDirection dir; - - if (orient == Qt::Horizontal) - if (tickAbove) - dir = SlUp; - else - dir = SlDown; - else - if (tickAbove) - dir = SlLeft; - else - dir = SlRight; - - QPolygon a; - - int d = 0; - switch (dir) { - case SlUp: - y1 = y1 + wi/2; - d = (wi + 1) / 2 - 1; - a.setPoints(5, x1,y1, x1,y2, x2,y2, x2,y1, x1+d,y1-d); - break; - case SlDown: - y2 = y2 - wi/2; - d = (wi + 1) / 2 - 1; - a.setPoints(5, x1,y1, x1,y2, x1+d,y2+d, x2,y2, x2,y1); - break; - case SlLeft: - d = (he + 1) / 2 - 1; - x1 = x1 + he/2; - a.setPoints(5, x1,y1, x1-d,y1+d, x1,y2, x2,y2, x2,y1); - break; - case SlRight: - d = (he + 1) / 2 - 1; - x2 = x2 - he/2; - a.setPoints(5, x1,y1, x1,y2, x2,y2, x2+d,y1+d, x2,y1); - break; - } - - QBrush oldBrush = p->brush(); - p->setPen(Qt::NoPen); - p->setBrush(handleBrush); - Qt::BGMode oldMode = p->backgroundMode(); - p->setBackgroundMode(Qt::OpaqueMode); - p->drawRect(x1, y1, x2-x1+1, y2-y1+1); - p->drawPolygon(a); - p->setBrush(oldBrush); - p->setBackgroundMode(oldMode); - - if (dir != SlUp) { - p->setPen(c4); - p->drawLine(x1, y1, x2, y1); - p->setPen(c3); - p->drawLine(x1, y1+1, x2, y1+1); - } - if (dir != SlLeft) { - p->setPen(c3); - p->drawLine(x1+1, y1+1, x1+1, y2); - p->setPen(c4); - p->drawLine(x1, y1, x1, y2); - } - if (dir != SlRight) { - p->setPen(c0); - p->drawLine(x2, y1, x2, y2); - p->setPen(c1); - p->drawLine(x2-1, y1+1, x2-1, y2-1); - } - if (dir != SlDown) { - p->setPen(c0); - p->drawLine(x1, y2, x2, y2); - p->setPen(c1); - p->drawLine(x1+1, y2-1, x2-1, y2-1); - } - - switch (dir) { - case SlUp: - p->setPen(c4); - p->drawLine(x1, y1, x1+d, y1-d); - p->setPen(c0); - d = wi - d - 1; - p->drawLine(x2, y1, x2-d, y1-d); - d--; - p->setPen(c3); - p->drawLine(x1+1, y1, x1+1+d, y1-d); - p->setPen(c1); - p->drawLine(x2-1, y1, x2-1-d, y1-d); - break; - case SlDown: - p->setPen(c4); - p->drawLine(x1, y2, x1+d, y2+d); - p->setPen(c0); - d = wi - d - 1; - p->drawLine(x2, y2, x2-d, y2+d); - d--; - p->setPen(c3); - p->drawLine(x1+1, y2, x1+1+d, y2+d); - p->setPen(c1); - p->drawLine(x2-1, y2, x2-1-d, y2+d); - break; - case SlLeft: - p->setPen(c4); - p->drawLine(x1, y1, x1-d, y1+d); - p->setPen(c0); - d = he - d - 1; - p->drawLine(x1, y2, x1-d, y2-d); - d--; - p->setPen(c3); - p->drawLine(x1, y1+1, x1-d, y1+1+d); - p->setPen(c1); - p->drawLine(x1, y2-1, x1-d, y2-1-d); - break; - case SlRight: - p->setPen(c4); - p->drawLine(x2, y1, x2+d, y1+d); - p->setPen(c0); - d = he - d - 1; - p->drawLine(x2, y2, x2+d, y2-d); - d--; - p->setPen(c3); - p->drawLine(x2, y1+1, x2+d, y1+1+d); - p->setPen(c1); - p->drawLine(x2, y2-1, x2+d, y2-1-d); - break; - } - } - } - break; -#endif // QT_CONFIG(slider) -#if QT_CONFIG(scrollbar) - case CC_ScrollBar: - if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - QStyleOptionSlider newScrollbar = *scrollbar; - if (scrollbar->minimum == scrollbar->maximum) - newScrollbar.state &= ~State_Enabled; //do not draw the slider. - QCommonStyle::drawComplexControl(cc, &newScrollbar, p, widget); - } - break; -#endif // QT_CONFIG(scrollbar) -#if QT_CONFIG(combobox) - case CC_ComboBox: - if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) { - QBrush editBrush = cmb->palette.brush(QPalette::Button); - if ((cmb->subControls & SC_ComboBoxFrame)) { - if (cmb->frame) { - QPalette shadePal = opt->palette; - shadePal.setColor(QPalette::Midlight, shadePal.button().color()); - qDrawWinPanel(p, opt->rect, shadePal, true, &editBrush); - } - else { - p->fillRect(opt->rect, editBrush); - } - } - if (cmb->subControls & SC_ComboBoxArrow) { - State flags = State_None; - - QRect ar = proxy()->subControlRect(CC_ComboBox, cmb, SC_ComboBoxArrow, widget); - bool sunkenArrow = cmb->activeSubControls == SC_ComboBoxArrow - && cmb->state & State_Sunken; - if (sunkenArrow) { - p->setPen(cmb->palette.dark().color()); - p->setBrush(cmb->palette.brush(QPalette::Button)); - p->drawRect(ar.adjusted(0,0,-1,-1)); - } else { - // Make qDrawWinButton use the right colors for drawing the shade of the button - QPalette pal(cmb->palette); - pal.setColor(QPalette::Button, cmb->palette.light().color()); - pal.setColor(QPalette::Light, cmb->palette.button().color()); - qDrawWinButton(p, ar, pal, false, - &cmb->palette.brush(QPalette::Button)); - } - - ar.adjust(2, 2, -2, -2); - if (opt->state & State_Enabled) - flags |= State_Enabled; - if (opt->state & State_HasFocus) - flags |= State_HasFocus; - - if (sunkenArrow) - flags |= State_Sunken; - QStyleOption arrowOpt = *cmb; - arrowOpt.rect = ar.adjusted(1, 1, -1, -1); - arrowOpt.state = flags; - proxy()->drawPrimitive(PE_IndicatorArrowDown, &arrowOpt, p, widget); - } - - if (cmb->subControls & SC_ComboBoxEditField) { - QRect re = proxy()->subControlRect(CC_ComboBox, cmb, SC_ComboBoxEditField, widget); - if (cmb->state & State_HasFocus && !cmb->editable) - p->fillRect(re.x(), re.y(), re.width(), re.height(), - cmb->palette.brush(QPalette::Highlight)); - - if (cmb->state & State_HasFocus) { - p->setPen(cmb->palette.highlightedText().color()); - p->setBackground(cmb->palette.highlight()); - - } else { - p->setPen(cmb->palette.text().color()); - p->setBackground(cmb->palette.window()); - } - - if (cmb->state & State_HasFocus && !cmb->editable) { - QStyleOptionFocusRect focus; - focus.QStyleOption::operator=(*cmb); - focus.rect = subElementRect(SE_ComboBoxFocusRect, cmb, widget); - focus.state |= State_FocusAtBorder; - focus.backgroundColor = cmb->palette.highlight().color(); - proxy()->drawPrimitive(PE_FrameFocusRect, &focus, p, widget); - } - } - } - break; -#endif // QT_CONFIG(combobox) -#if QT_CONFIG(spinbox) - case CC_SpinBox: - if (const QStyleOptionSpinBox *sb = qstyleoption_cast<const QStyleOptionSpinBox *>(opt)) { - QStyleOptionSpinBox copy = *sb; - PrimitiveElement pe; - bool enabled = opt->state & State_Enabled; - if (sb->frame && (sb->subControls & SC_SpinBoxFrame)) { - QBrush editBrush = sb->palette.brush(QPalette::Base); - QRect r = proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxFrame, widget); - QPalette shadePal = sb->palette; - shadePal.setColor(QPalette::Midlight, shadePal.button().color()); - qDrawWinPanel(p, r, shadePal, true, &editBrush); - } - - QPalette shadePal(opt->palette); - shadePal.setColor(QPalette::Button, opt->palette.light().color()); - shadePal.setColor(QPalette::Light, opt->palette.button().color()); - - if (sb->subControls & SC_SpinBoxUp) { - copy.subControls = SC_SpinBoxUp; - QPalette pal2 = sb->palette; - if (!(sb->stepEnabled & QAbstractSpinBox::StepUpEnabled)) { - pal2.setCurrentColorGroup(QPalette::Disabled); - copy.state &= ~State_Enabled; - } - - copy.palette = pal2; - - if (sb->activeSubControls == SC_SpinBoxUp && (sb->state & State_Sunken)) { - copy.state |= State_On; - copy.state |= State_Sunken; - } else { - copy.state |= State_Raised; - copy.state &= ~State_Sunken; - } - pe = (sb->buttonSymbols == QAbstractSpinBox::PlusMinus ? PE_IndicatorSpinPlus - : PE_IndicatorSpinUp); - - copy.rect = proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxUp, widget); - qDrawWinButton(p, copy.rect, shadePal, copy.state & (State_Sunken | State_On), - ©.palette.brush(QPalette::Button)); - copy.rect.adjust(4, 1, -5, -1); - if ((!enabled || !(sb->stepEnabled & QAbstractSpinBox::StepUpEnabled)) - && proxy()->styleHint(SH_EtchDisabledText, opt, widget) ) - { - QStyleOptionSpinBox lightCopy = copy; - lightCopy.rect.adjust(1, 1, 1, 1); - lightCopy.palette.setBrush(QPalette::ButtonText, copy.palette.light()); - proxy()->drawPrimitive(pe, &lightCopy, p, widget); - } - proxy()->drawPrimitive(pe, ©, p, widget); - } - - if (sb->subControls & SC_SpinBoxDown) { - copy.subControls = SC_SpinBoxDown; - copy.state = sb->state; - QPalette pal2 = sb->palette; - if (!(sb->stepEnabled & QAbstractSpinBox::StepDownEnabled)) { - pal2.setCurrentColorGroup(QPalette::Disabled); - copy.state &= ~State_Enabled; - } - copy.palette = pal2; - - if (sb->activeSubControls == SC_SpinBoxDown && (sb->state & State_Sunken)) { - copy.state |= State_On; - copy.state |= State_Sunken; - } else { - copy.state |= State_Raised; - copy.state &= ~State_Sunken; - } - pe = (sb->buttonSymbols == QAbstractSpinBox::PlusMinus ? PE_IndicatorSpinMinus - : PE_IndicatorSpinDown); - - copy.rect = proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxDown, widget); - qDrawWinButton(p, copy.rect, shadePal, copy.state & (State_Sunken | State_On), - ©.palette.brush(QPalette::Button)); - copy.rect.adjust(4, 0, -5, -1); - if ((!enabled || !(sb->stepEnabled & QAbstractSpinBox::StepDownEnabled)) - && proxy()->styleHint(SH_EtchDisabledText, opt, widget) ) - { - QStyleOptionSpinBox lightCopy = copy; - lightCopy.rect.adjust(1, 1, 1, 1); - lightCopy.palette.setBrush(QPalette::ButtonText, copy.palette.light()); - proxy()->drawPrimitive(pe, &lightCopy, p, widget); - } - proxy()->drawPrimitive(pe, ©, p, widget); - } - } - break; -#endif // QT_CONFIG(spinbox) - default: - QCommonStyle::drawComplexControl(cc, opt, p); - } -#else // 0 - QCommonStyle::drawComplexControl(cc, opt, p); -#endif -} - -/*! \reimp */ -QSize QWindowsStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &csz) const -{ - QSize sz(csz); - switch (ct) { - case CT_PushButton: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) { - sz = QCommonStyle::sizeFromContents(ct, opt, csz); - int w = sz.width(), - h = sz.height(); - int defwidth = 0; - if (btn->features & QStyleOptionButton::AutoDefaultButton) - defwidth = 2 * proxy()->pixelMetric(PM_ButtonDefaultIndicator, btn); - const qreal dpi = QStyleHelper::dpi(opt); - int minwidth = int(QStyleHelper::dpiScaled(75, dpi)); - int minheight = int(QStyleHelper::dpiScaled(23, dpi)); - -#ifndef QT_QWS_SMALL_PUSHBUTTON - if (w < minwidth + defwidth && !btn->text.isEmpty()) - w = minwidth + defwidth; - if (h < minheight + defwidth) - h = minheight + defwidth; -#endif - sz = QSize(w, h); - } - break; -#if 0 && QT_CONFIG(menu) - case CT_MenuItem: - if (const QStyleOptionMenuItem *mi = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) { - int w = sz.width(); - sz = QCommonStyle::sizeFromContents(ct, opt, csz, widget); - - if (mi->menuItemType == QStyleOptionMenuItem::Separator) { - sz = QSize(10, QWindowsStylePrivate::windowsSepHeight); - } - else if (mi->icon.isNull()) { - sz.setHeight(sz.height() - 2); - w -= 6; - } - - if (mi->menuItemType != QStyleOptionMenuItem::Separator && !mi->icon.isNull()) { - int iconExtent = proxy()->pixelMetric(PM_SmallIconSize, opt, widget); - sz.setHeight(qMax(sz.height(), - mi->icon.actualSize(QSize(iconExtent, iconExtent)).height() - + 2 * QWindowsStylePrivate::windowsItemFrame)); - } - int maxpmw = mi->maxIconWidth; - int tabSpacing = 20; - if (mi->text.contains(QLatin1Char('\t'))) - w += tabSpacing; - else if (mi->menuItemType == QStyleOptionMenuItem::SubMenu) - w += 2 * QWindowsStylePrivate::windowsArrowHMargin; - else if (mi->menuItemType == QStyleOptionMenuItem::DefaultItem) { - // adjust the font and add the difference in size. - // it would be better if the font could be adjusted in the initStyleOption qmenu func!! - QFontMetrics fm(mi->font); - QFont fontBold = mi->font; - fontBold.setBold(true); - QFontMetrics fmBold(fontBold); - w += fmBold.horizontalAdvance(mi->text) - fm.horizontalAdvance(mi->text); - } - - int checkcol = qMax<int>(maxpmw, QWindowsStylePrivate::windowsCheckMarkWidth); // Windows always shows a check column - w += checkcol; - w += int(QWindowsStylePrivate::windowsRightBorder) + 10; - sz.setWidth(w); - } - break; -#endif // QT_CONFIG(menu) -#if 0 && QT_CONFIG(menubar) - case CT_MenuBarItem: - if (!sz.isEmpty()) - sz += QSize(QWindowsStylePrivate::windowsItemHMargin * 4, QWindowsStylePrivate::windowsItemVMargin * 2); - break; -#endif - case CT_ToolButton: - if (qstyleoption_cast<const QStyleOptionToolButton *>(opt)) - return sz += QSize(7, 6); - Q_FALLTHROUGH(); - - default: - sz = QCommonStyle::sizeFromContents(ct, opt, csz); - } - return sz; -} - -/*! - \reimp -*/ -QIcon QWindowsStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption *option) const -{ - return QCommonStyle::standardIcon(standardIcon, option); -} - -} // namespace QQC2 - -QT_END_NAMESPACE - -#include "moc_qquickwindowsstyle_p.cpp" diff --git a/src/quicknativestyle/qstyle/windows/qquickwindowsstyle_p.h b/src/quicknativestyle/qstyle/windows/qquickwindowsstyle_p.h deleted file mode 100644 index 92926b71..00000000 --- a/src/quicknativestyle/qstyle/windows/qquickwindowsstyle_p.h +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKWINDOWSSTYLE_P_H -#define QQUICKWINDOWSSTYLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qquickcommonstyle.h" - -QT_BEGIN_NAMESPACE - -class QPalette; - -namespace QQC2 { - -class QStyleOptionButton; -class QWindowsStylePrivate; - -class QWindowsStylePrivate; - -class QWindowsStyle : public QCommonStyle -{ - Q_OBJECT -public: - QWindowsStyle(); - ~QWindowsStyle() override; -/* - void polish(QApplication*) override; - void unpolish(QApplication*) override; - - void polish(QWidget*) override; - void unpolish(QWidget*) override; - - void polish(QPalette &) override; -*/ - void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p) const override; - void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p) const override; - void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p) const override; - - QRect subElementRect(SubElement r, const QStyleOption *opt) const override; - QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &contentsSize) const override; - - int pixelMetric(PixelMetric pm, const QStyleOption *option = nullptr) const override; - - int styleHint(StyleHint hint, const QStyleOption *opt = nullptr, - QStyleHintReturn *returnData = nullptr) const override; - - QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt) const override; - - QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = nullptr) const override; - -protected: -// bool eventFilter(QObject *o, QEvent *e) override; - QWindowsStyle(QWindowsStylePrivate &dd); - -private: - Q_DISABLE_COPY_MOVE(QWindowsStyle) - Q_DECLARE_PRIVATE(QWindowsStyle) -}; - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif // QQUICKWINDOWSSTYLE_P_H diff --git a/src/quicknativestyle/qstyle/windows/qquickwindowsstyle_p_p.h b/src/quicknativestyle/qstyle/windows/qquickwindowsstyle_p_p.h deleted file mode 100644 index 64b95a40..00000000 --- a/src/quicknativestyle/qstyle/windows/qquickwindowsstyle_p_p.h +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKWINDOWSSTYLE_P_P_H -#define QQUICKWINDOWSSTYLE_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of XX. This header -// file may change from version to version without notice, or even be removed. -// -// We mean it. -// - -#include "qquickwindowsstyle_p.h" -#include "qquickcommonstyle_p.h" -#include "qquickstylehelper_p.h" - -QT_BEGIN_NAMESPACE - -namespace QQC2 { - -class QStyleOptionButton; -class QWindowsStylePrivate; - -#include <qlist.h> - -class QTime; - -class QWindowsStylePrivate : public QCommonStylePrivate -{ - Q_DECLARE_PUBLIC(QWindowsStyle) -public: - enum { InvalidMetric = -23576 }; - - QWindowsStylePrivate(); - static int pixelMetricFromSystemDp(QStyle::PixelMetric pm, const QStyleOption *option = nullptr); - static int fixedPixelMetric(QStyle::PixelMetric pm); - static qreal devicePixelRatio(const QStyleOption *option = nullptr) - { - return devicePixelRatio(option ? option->window : nullptr); - } - - static qreal devicePixelRatio(const QWindow *win) - { return win ? win->devicePixelRatio() : QWindowsStylePrivate::appDevicePixelRatio(); } - static qreal nativeMetricScaleFactor(const QStyleOption *option = nullptr); - static qreal nativeMetricScaleFactor(const QWindow *win); - static bool isDarkMode(); - -#if 0 - bool hasSeenAlt(const QWidget *widget) const; - bool altDown() const { return alt_down; } - bool alt_down = false; -#endif - QList<const QWidget *> seenAlt; - int menuBarTimer = 0; - - QColor inactiveCaptionText; - QColor activeCaptionColor; - QColor activeGradientCaptionColor; - QColor inactiveCaptionColor; - QColor inactiveGradientCaptionColor; - - enum { - windowsItemFrame = 2, // menu item frame width - windowsSepHeight = 9, // separator item height - windowsItemHMargin = 3, // menu item hor text margin - windowsItemVMargin = 2, // menu item ver text margin - windowsArrowHMargin = 6, // arrow horizontal margin - windowsRightBorder = 15, // right border on windows - windowsCheckMarkWidth = 12 // checkmarks width on windows - }; - -private: - static qreal appDevicePixelRatio(); -}; - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif //QQUICKWINDOWSSTYLE_P_P_H - diff --git a/src/quicknativestyle/qstyle/windows/qquickwindowsvistastyle.cpp b/src/quicknativestyle/qstyle/windows/qquickwindowsvistastyle.cpp deleted file mode 100644 index 512f8291..00000000 --- a/src/quicknativestyle/qstyle/windows/qquickwindowsvistastyle.cpp +++ /dev/null @@ -1,2509 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickwindowsvistastyle_p.h" -#include "qquickwindowsvistastyle_p_p.h" -#include <qoperatingsystemversion.h> -#include <qscreen.h> -#include <qwindow.h> -#include <private/qstyleanimation_p.h> -#include <private/qstylehelper_p.h> -#include <qpa/qplatformnativeinterface.h> - -QT_BEGIN_NAMESPACE - -static const int windowsItemFrame = 2; // menu item frame width -static const int windowsItemHMargin = 3; // menu item hor text margin -static const int windowsItemVMargin = 4; // menu item ver text margin -static const int windowsArrowHMargin = 6; // arrow horizontal margin -static const int windowsRightBorder = 15; // right border on windows - -#ifndef TMT_CONTENTMARGINS -# define TMT_CONTENTMARGINS 3602 -#endif -#ifndef TMT_SIZINGMARGINS -# define TMT_SIZINGMARGINS 3601 -#endif -#ifndef LISS_NORMAL -# define LISS_NORMAL 1 -# define LISS_HOT 2 -# define LISS_SELECTED 3 -# define LISS_DISABLED 4 -# define LISS_SELECTEDNOTFOCUS 5 -# define LISS_HOTSELECTED 6 -#endif -#ifndef BP_COMMANDLINK -# define BP_COMMANDLINK 6 -# define BP_COMMANDLINKGLYPH 7 -# define CMDLGS_NORMAL 1 -# define CMDLGS_HOT 2 -# define CMDLGS_PRESSED 3 -# define CMDLGS_DISABLED 4 -#endif - -/* \internal - Checks if we should use Vista style , or if we should - fall back to Windows style. -*/ -bool QWindowsVistaStylePrivate::useVista() -{ - return QWindowsVistaStylePrivate::useXP(); -} - -/* \internal - Checks and returns the style object -*/ -inline QObject *styleObject(const QStyleOption *option) { - return option ? option->styleObject : nullptr; -} - -/* \internal - Checks if we can animate on a style option -*/ -bool canAnimate(const QStyleOption *option) { - return option - && option->styleObject - && !option->styleObject->property("_q_no_animation").toBool(); -} - -static inline QImage createAnimationBuffer(const QStyleOption *option, const QWidget *widget) -{ - const int devicePixelRatio = widget ? widget->devicePixelRatio() : 1; - QImage result(option->rect.size() * devicePixelRatio, QImage::Format_ARGB32_Premultiplied); - result.setDevicePixelRatio(devicePixelRatio); - result.fill(0); - return result; -} - -/* \internal - Used by animations to clone a styleoption and shift its offset -*/ -QStyleOption *clonedAnimationStyleOption(const QStyleOption*option) { - QStyleOption *styleOption = nullptr; - if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider*>(option)) - styleOption = new QStyleOptionSlider(*slider); - else if (const QStyleOptionSpinBox *spinbox = qstyleoption_cast<const QStyleOptionSpinBox*>(option)) - styleOption = new QStyleOptionSpinBox(*spinbox); - else if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox*>(option)) - styleOption = new QStyleOptionGroupBox(*groupBox); - else if (const QStyleOptionComboBox *combo = qstyleoption_cast<const QStyleOptionComboBox*>(option)) - styleOption = new QStyleOptionComboBox(*combo); - else if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton*>(option)) - styleOption = new QStyleOptionButton(*button); - else - styleOption = new QStyleOption(*option); - styleOption->rect = QRect(QPoint(0,0), option->rect.size()); - return styleOption; -} - -/* \internal - Used by animations to delete cloned styleoption -*/ -void deleteClonedAnimationStyleOption(const QStyleOption *option) -{ - if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider*>(option)) - delete slider; - else if (const QStyleOptionSpinBox *spinbox = qstyleoption_cast<const QStyleOptionSpinBox*>(option)) - delete spinbox; - else if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox*>(option)) - delete groupBox; - else if (const QStyleOptionComboBox *combo = qstyleoption_cast<const QStyleOptionComboBox*>(option)) - delete combo; - else if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton*>(option)) - delete button; - else - delete option; -} - -/*! - \class QWindowsVistaStyle - \brief The QWindowsVistaStyle class provides a look and feel suitable for applications on Microsoft Windows Vista. - \since 4.3 - \ingroup appearance - \inmodule QtWidgets - \internal - - \warning This style is only available on the Windows Vista platform - because it makes use of Windows Vista's style engine. - - \sa QMacStyle, QWindowsXPStyle, QFusionStyle -*/ - -/*! - Constructs a QWindowsVistaStyle object. -*/ -QWindowsVistaStyle::QWindowsVistaStyle() - : QWindowsXPStyle(*new QWindowsVistaStylePrivate) -{ -} - -/*! - Destructor. -*/ -QWindowsVistaStyle::~QWindowsVistaStyle() = default; - -//convert Qt state flags to uxtheme button states -static int buttonStateId(int flags, int partId) -{ - int stateId = 0; - if (partId == BP_RADIOBUTTON || partId == BP_CHECKBOX) { - if (!(flags & QStyle::State_Enabled)) - stateId = RBS_UNCHECKEDDISABLED; - else if (flags & QStyle::State_Sunken) - stateId = RBS_UNCHECKEDPRESSED; - else if (flags & QStyle::State_MouseOver) - stateId = RBS_UNCHECKEDHOT; - else - stateId = RBS_UNCHECKEDNORMAL; - - if (flags & QStyle::State_On) - stateId += RBS_CHECKEDNORMAL-1; - - } else if (partId == BP_PUSHBUTTON) { - if (!(flags & QStyle::State_Enabled)) - stateId = PBS_DISABLED; - else if (flags & (QStyle::State_Sunken | QStyle::State_On)) - stateId = PBS_PRESSED; - else if (flags & QStyle::State_MouseOver) - stateId = PBS_HOT; - else - stateId = PBS_NORMAL; - } else { - Q_ASSERT(1); - } - return stateId; -} - -bool QWindowsVistaAnimation::isUpdateNeeded() const -{ - return QWindowsVistaStylePrivate::useVista(); -} - -void QWindowsVistaAnimation::paint(QPainter *painter, const QStyleOption *option) -{ - painter->drawImage(option->rect, currentImage()); -} - -static inline bool supportsStateTransition(QStyle::PrimitiveElement element, - const QStyleOption *option, - const QWidget *widget) -{ - bool result = false; - switch (element) { - case QStyle::PE_IndicatorRadioButton: - case QStyle::PE_IndicatorCheckBox: - result = true; - break; - // QTBUG-40634, do not animate when color is set in palette for PE_PanelLineEdit. - case QStyle::PE_FrameLineEdit: - result = !QWindowsXPStylePrivate::isLineEditBaseColorSet(option, widget); - break; - default: - break; - } - return result; -} - -/*! - \internal - - Animations are used for some state transitions on specific widgets. - - Only one running animation can exist for a widget at any specific - time. Animations can be added through - QWindowsVistaStylePrivate::startAnimation(Animation *) and any - existing animation on a widget can be retrieved with - QWindowsVistaStylePrivate::widgetAnimation(Widget *). - - Once an animation has been started, - QWindowsVistaStylePrivate::timerEvent(QTimerEvent *) will - continuously call update() on the widget until it is stopped, - meaning that drawPrimitive will be called many times until the - transition has completed. During this time, the result will be - retrieved by the Animation::paint(...) function and not by the style - itself. - - To determine if a transition should occur, the style needs to know - the previous state of the widget as well as the current one. This is - solved by updating dynamic properties on the widget every time the - function is called. - - Transitions interrupting existing transitions should always be - smooth, so whenever a hover-transition is started on a pulsating - button, it uses the current frame of the pulse-animation as the - starting image for the hover transition. - - */ - -void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option, - QPainter *painter, const QWidget *widget) const -{ - QWindowsVistaStylePrivate *d = const_cast<QWindowsVistaStylePrivate*>(d_func()); - - int state = option->state; - if (!QWindowsVistaStylePrivate::useVista()) { - QWindowsStyle::drawPrimitive(element, option, painter, widget); - return; - } - - if ((option->state & State_Enabled) && d->transitionsEnabled() && canAnimate(option)) { - { - QRect oldRect; - QRect newRect; - - if (supportsStateTransition(element, option, widget)) { - // Retrieve and update the dynamic properties tracking - // the previous state of the widget: - QObject *styleObject = option->styleObject; - styleObject->setProperty("_q_no_animation", true); - - int oldState = styleObject->property("_q_stylestate").toInt(); - oldRect = styleObject->property("_q_stylerect").toRect(); - newRect = option->rect; - styleObject->setProperty("_q_stylestate", int(option->state)); - styleObject->setProperty("_q_stylerect", option->rect); - - bool doTransition = oldState && - ((state & State_Sunken) != (oldState & State_Sunken) || - (state & State_On) != (oldState & State_On) || - (state & State_MouseOver) != (oldState & State_MouseOver)); - - if (oldRect != newRect || - (state & State_Enabled) != (oldState & State_Enabled) || - (state & State_Active) != (oldState & State_Active)) - d->stopAnimation(styleObject); - - if (option->state & State_ReadOnly && element == PE_FrameLineEdit) // Do not animate read only line edits - doTransition = false; - - if (doTransition) { - QStyleOption *styleOption = clonedAnimationStyleOption(option); - styleOption->state = QStyle::State(oldState); - - QWindowsVistaAnimation *anim = qobject_cast<QWindowsVistaAnimation *>(d->animation(styleObject)); - QWindowsVistaTransition *t = new QWindowsVistaTransition(styleObject); - - // We create separate images for the initial and final transition states and store them in the - // Transition object. - QImage startImage = createAnimationBuffer(option, widget); - QPainter startPainter(&startImage); - - QImage endImage = createAnimationBuffer(option, widget); - QPainter endPainter(&endImage); - - // If we have a running animation on the widget already, we will use that to paint the initial - // state of the new transition, this ensures a smooth transition from a current animation such as a - // pulsating default button into the intended target state. - if (!anim) - proxy()->drawPrimitive(element, styleOption, &startPainter, widget); - else - anim->paint(&startPainter, styleOption); - - t->setStartImage(startImage); - - // The end state of the transition is simply the result we would have painted - // if the style was not animated. - styleOption->styleObject = nullptr; - styleOption->state = option->state; - proxy()->drawPrimitive(element, styleOption, &endPainter, widget); - - - t->setEndImage(endImage); - - HTHEME theme; - int partId; - DWORD duration; - int fromState = 0; - int toState = 0; - - //translate state flags to UXTHEME states : - if (element == PE_FrameLineEdit) { - theme = OpenThemeData(nullptr, L"Edit"); - partId = EP_EDITBORDER_NOSCROLL; - - if (oldState & State_MouseOver) - fromState = ETS_HOT; - else if (oldState & State_HasFocus) - fromState = ETS_FOCUSED; - else - fromState = ETS_NORMAL; - - if (state & State_MouseOver) - toState = ETS_HOT; - else if (state & State_HasFocus) - toState = ETS_FOCUSED; - else - toState = ETS_NORMAL; - - } else { - theme = OpenThemeData(nullptr, L"Button"); - if (element == PE_IndicatorRadioButton) - partId = BP_RADIOBUTTON; - else if (element == PE_IndicatorCheckBox) - partId = BP_CHECKBOX; - else - partId = BP_PUSHBUTTON; - - fromState = buttonStateId(oldState, partId); - toState = buttonStateId(option->state, partId); - } - - // Retrieve the transition time between the states from the system. - if (theme - && SUCCEEDED(GetThemeTransitionDuration(theme, partId, fromState, toState, - TMT_TRANSITIONDURATIONS, &duration))) { - t->setDuration(int(duration)); - } - t->setStartTime(QTime::currentTime()); - - deleteClonedAnimationStyleOption(styleOption); - d->startAnimation(t); - } - styleObject->setProperty("_q_no_animation", false); - } - - } // End of animation part - } - - QRect rect = option->rect; - - switch (element) { - case PE_IndicatorHeaderArrow: - if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) { - int stateId = HSAS_SORTEDDOWN; - if (header->sortIndicator & QStyleOptionHeader::SortDown) - stateId = HSAS_SORTEDUP; //note that the uxtheme sort down indicator is the inverse of ours - XPThemeData theme(widget, painter, - QWindowsXPStylePrivate::HeaderTheme, - HP_HEADERSORTARROW, stateId, option->rect); - d->drawBackground(theme); - } - break; - - case PE_IndicatorBranch: - { - XPThemeData theme(widget, painter, QWindowsXPStylePrivate::VistaTreeViewTheme); - static int decoration_size = 0; - if (!decoration_size && theme.isValid()) { - XPThemeData themeSize = theme; - themeSize.partId = TVP_HOTGLYPH; - themeSize.stateId = GLPS_OPENED; - const QSizeF size = themeSize.size() * QWindowsStylePrivate::nativeMetricScaleFactor(widget); - decoration_size = qRound(qMax(size.width(), size.height())); - } - int mid_h = option->rect.x() + option->rect.width() / 2; - int mid_v = option->rect.y() + option->rect.height() / 2; - int bef_h = mid_h; - int bef_v = mid_v; - int aft_h = mid_h; - int aft_v = mid_v; - if (option->state & State_Children) { - int delta = decoration_size / 2; - theme.rect = QRect(bef_h - delta, bef_v - delta, decoration_size, decoration_size); - theme.partId = option->state & State_MouseOver ? TVP_HOTGLYPH : TVP_GLYPH; - theme.stateId = option->state & QStyle::State_Open ? GLPS_OPENED : GLPS_CLOSED; - if (option->direction == Qt::RightToLeft) - theme.mirrorHorizontally = true; - d->drawBackground(theme); - bef_h -= delta + 2; - bef_v -= delta + 2; - aft_h += delta - 2; - aft_v += delta - 2; - } -#if 0 - QBrush brush(option->palette.dark().color(), Qt::Dense4Pattern); - if (option->state & State_Item) { - if (option->direction == Qt::RightToLeft) - painter->fillRect(option->rect.left(), mid_v, bef_h - option->rect.left(), 1, brush); - else - painter->fillRect(aft_h, mid_v, option->rect.right() - aft_h + 1, 1, brush); - } - if (option->state & State_Sibling && option->rect.bottom() > aft_v) - painter->fillRect(mid_h, aft_v, 1, option->rect.bottom() - aft_v + 1, brush); - if (option->state & (State_Open | State_Children | State_Item | State_Sibling) && (bef_v > option->rect.y())) - painter->fillRect(mid_h, option->rect.y(), 1, bef_v - option->rect.y(), brush); -#endif - } - break; - - case PE_PanelButtonBevel: - case PE_IndicatorCheckBox: - case PE_IndicatorRadioButton: - { - if (QWindowsVistaAnimation *a = - qobject_cast<QWindowsVistaAnimation *>(d->animation(styleObject(option)))){ - a->paint(painter, option); - } else { - QWindowsXPStyle::drawPrimitive(element, option, painter, widget); - } - } - break; - - case PE_FrameMenu: - { - int stateId = option->state & State_Active ? MB_ACTIVE : MB_INACTIVE; - XPThemeData theme(widget, painter, - QWindowsXPStylePrivate::MenuTheme, - MENU_POPUPBORDERS, stateId, option->rect); - d->drawBackground(theme); - } - break; - case PE_Frame: { -#ifndef QT_NO_ACCESSIBILITY - if (QStyleHelper::isInstanceOf(option->styleObject, QAccessible::EditableText) - || QStyleHelper::isInstanceOf(option->styleObject, QAccessible::StaticText) || -#else - if ( -#endif - (widget && widget->inherits("QTextEdit"))) { - painter->save(); - int stateId = ETS_NORMAL; - if (!(state & State_Enabled)) - stateId = ETS_DISABLED; - else if (state & State_ReadOnly) - stateId = ETS_READONLY; - else if (state & State_HasFocus) - stateId = ETS_SELECTED; - XPThemeData theme(widget, painter, - QWindowsXPStylePrivate::EditTheme, - EP_EDITBORDER_HVSCROLL, stateId, option->rect); - // Since EP_EDITBORDER_HVSCROLL does not us borderfill, theme.noContent cannot be used for clipping - int borderSize = 1; - GetThemeInt(theme.handle(), theme.partId, theme.stateId, TMT_BORDERSIZE, &borderSize); - QRegion clipRegion = option->rect; - QRegion content = option->rect.adjusted(borderSize, borderSize, -borderSize, -borderSize); - clipRegion ^= content; - painter->setClipRegion(clipRegion); - d->drawBackground(theme); - painter->restore(); - } else { - QWindowsXPStyle::drawPrimitive(element, option, painter, widget); - } - } - break; - - case PE_PanelLineEdit: - if (const QStyleOptionFrame *panel = qstyleoption_cast<const QStyleOptionFrame *>(option)) { - bool isEnabled = option->state & State_Enabled; - if (QWindowsXPStylePrivate::isLineEditBaseColorSet(option, widget)) { - painter->fillRect(panel->rect, panel->palette.brush(QPalette::Base)); - } else { - int partId = EP_BACKGROUND; - int stateId = EBS_NORMAL; - if (!isEnabled) - stateId = EBS_DISABLED; - else if (state & State_ReadOnly) - stateId = EBS_READONLY; - else if (state & State_MouseOver) - stateId = EBS_HOT; - - XPThemeData theme(nullptr, painter, QWindowsXPStylePrivate::EditTheme, - partId, stateId, rect); - if (!theme.isValid()) { - QWindowsStyle::drawPrimitive(element, option, painter, widget); - return; - } - int bgType; - GetThemeEnumValue(theme.handle(), partId, stateId, TMT_BGTYPE, &bgType); - if ( bgType == BT_IMAGEFILE ) { - d->drawBackground(theme); - } else { - QBrush fillColor = option->palette.brush(QPalette::Base); - if (!isEnabled) { - PROPERTYORIGIN origin = PO_NOTFOUND; - GetThemePropertyOrigin(theme.handle(), theme.partId, theme.stateId, TMT_FILLCOLOR, &origin); - // Use only if the fill property comes from our part - if ((origin == PO_PART || origin == PO_STATE)) { - COLORREF bgRef; - GetThemeColor(theme.handle(), partId, stateId, TMT_FILLCOLOR, &bgRef); - fillColor = QBrush(qRgb(GetRValue(bgRef), GetGValue(bgRef), GetBValue(bgRef))); - } - } - painter->fillRect(option->rect, fillColor); - } - } - if (panel->lineWidth > 0) - proxy()->drawPrimitive(PE_FrameLineEdit, panel, painter, widget); - return; - } - break; - - case PE_FrameLineEdit: - if (QWindowsVistaAnimation *anim = qobject_cast<QWindowsVistaAnimation *>(d->animation(styleObject(option)))) { - anim->paint(painter, option); - } else { - QPainter *p = painter; - if (QWindowsXPStylePrivate::isItemViewDelegateLineEdit(widget)) { - // we try to check if this lineedit is a delegate on a QAbstractItemView-derived class. - QPen oldPen = p->pen(); - // Inner white border - p->setPen(QPen(option->palette.base().color(), 1)); - p->drawRect(option->rect.adjusted(1, 1, -2, -2)); - // Outer dark border - p->setPen(QPen(option->palette.shadow().color(), 1)); - p->drawRect(option->rect.adjusted(0, 0, -1, -1)); - p->setPen(oldPen); - return; - } - int stateId = ETS_NORMAL; - if (!(state & State_Enabled)) - stateId = ETS_DISABLED; - else if (state & State_ReadOnly) - stateId = ETS_READONLY; - else if (state & State_MouseOver) - stateId = ETS_HOT; - else if (state & State_HasFocus) - stateId = ETS_SELECTED; - XPThemeData theme(widget, painter, - QWindowsXPStylePrivate::EditTheme, - EP_EDITBORDER_NOSCROLL, stateId, option->rect); - theme.noContent = true; - painter->save(); - QRegion clipRegion = option->rect; - clipRegion -= option->rect.adjusted(2, 2, -2, -2); - painter->setClipRegion(clipRegion); - d->drawBackground(theme); - painter->restore(); - } - break; - - case PE_IndicatorToolBarHandle: - { - XPThemeData theme; - QRect rect; - if (option->state & State_Horizontal) { - theme = XPThemeData(widget, painter, - QWindowsXPStylePrivate::RebarTheme, - RP_GRIPPER, ETS_NORMAL, option->rect.adjusted(0, 1, -2, -2)); - rect = option->rect.adjusted(0, 1, 0, -2); - rect.setWidth(4); - } else { - theme = XPThemeData(widget, painter, QWindowsXPStylePrivate::RebarTheme, - RP_GRIPPERVERT, ETS_NORMAL, option->rect.adjusted(0, 1, -2, -2)); - rect = option->rect.adjusted(1, 0, -1, 0); - rect.setHeight(4); - } - theme.rect = rect; - d->drawBackground(theme); - } - break; - - case PE_IndicatorToolBarSeparator: - { - QPen pen = painter->pen(); - int margin = 3; - painter->setPen(option->palette.window().color().darker(114)); - if (option->state & State_Horizontal) { - int x1 = option->rect.center().x(); - painter->drawLine(QPoint(x1, option->rect.top() + margin), QPoint(x1, option->rect.bottom() - margin)); - } else { - int y1 = option->rect.center().y(); - painter->drawLine(QPoint(option->rect.left() + margin, y1), QPoint(option->rect.right() - margin, y1)); - } - painter->setPen(pen); - } - break; - - case PE_PanelTipLabel: { - XPThemeData theme(widget, painter, - QWindowsXPStylePrivate::ToolTipTheme, - TTP_STANDARD, TTSS_NORMAL, option->rect); - d->drawBackground(theme); - break; - } - - case PE_PanelItemViewItem: - { - const QStyleOptionViewItem *vopt; - bool newStyle = true; - QAbstractItemView::SelectionBehavior selectionBehavior = QAbstractItemView::SelectRows; - QAbstractItemView::SelectionMode selectionMode = QAbstractItemView::NoSelection; - if (const QAbstractItemView *view = qobject_cast<const QAbstractItemView *>(widget)) { - newStyle = !qobject_cast<const QTableView*>(view); - selectionBehavior = view->selectionBehavior(); - selectionMode = view->selectionMode(); -#ifndef QT_NO_ACCESSIBILITY - } else if (!widget) { - newStyle = !QStyleHelper::hasAncestor(option->styleObject, QAccessible::MenuItem) ; -#endif - } - - if (newStyle && (vopt = qstyleoption_cast<const QStyleOptionViewItem *>(option))) { - bool selected = vopt->state & QStyle::State_Selected; - const bool hover = selectionMode != QAbstractItemView::NoSelection && (vopt->state & QStyle::State_MouseOver); - bool active = vopt->state & QStyle::State_Active; - - if (vopt->features & QStyleOptionViewItem::Alternate) - painter->fillRect(vopt->rect, vopt->palette.alternateBase()); - - QPalette::ColorGroup cg = vopt->state & QStyle::State_Enabled - ? QPalette::Normal : QPalette::Disabled; - if (cg == QPalette::Normal && !(vopt->state & QStyle::State_Active)) - cg = QPalette::Inactive; - - QRect itemRect = subElementRect(QStyle::SE_ItemViewItemFocusRect, option, widget).adjusted(-1, 0, 1, 0); - itemRect.setTop(vopt->rect.top()); - itemRect.setBottom(vopt->rect.bottom()); - - QSize sectionSize = itemRect.size(); - if (vopt->showDecorationSelected) - sectionSize = vopt->rect.size(); - - if (selectionBehavior == QAbstractItemView::SelectRows) - sectionSize.setWidth(vopt->rect.width()); - QPixmap pixmap; - - if (vopt->backgroundBrush.style() != Qt::NoBrush) { - const QPointF oldBrushOrigin = painter->brushOrigin(); - painter->setBrushOrigin(vopt->rect.topLeft()); - painter->fillRect(vopt->rect, vopt->backgroundBrush); - painter->setBrushOrigin(oldBrushOrigin); - } - - if (hover || selected) { - if (sectionSize.width() > 0 && sectionSize.height() > 0) { - QString key = QString::fromLatin1("qvdelegate-%1-%2-%3-%4-%5").arg(sectionSize.width()) - .arg(sectionSize.height()).arg(selected).arg(active).arg(hover); - if (!QPixmapCache::find(key, &pixmap)) { - pixmap = QPixmap(sectionSize); - pixmap.fill(Qt::transparent); - - int state; - if (selected && hover) - state = LISS_HOTSELECTED; - else if (selected && !active) - state = LISS_SELECTEDNOTFOCUS; - else if (selected) - state = LISS_SELECTED; - else - state = LISS_HOT; - - QPainter pixmapPainter(&pixmap); - XPThemeData theme(widget, &pixmapPainter, - QWindowsXPStylePrivate::VistaTreeViewTheme, - LVP_LISTITEM, state, QRect(0, 0, sectionSize.width(), sectionSize.height())); - if (theme.isValid()) { - d->drawBackground(theme); - } else { - QWindowsXPStyle::drawPrimitive(PE_PanelItemViewItem, option, painter, widget); - break; - } - QPixmapCache::insert(key, pixmap); - } - } - - if (vopt->showDecorationSelected) { - const int frame = 2; //Assumes a 2 pixel pixmap border - QRect srcRect = QRect(0, 0, sectionSize.width(), sectionSize.height()); - QRect pixmapRect = vopt->rect; - bool reverse = vopt->direction == Qt::RightToLeft; - bool leftSection = vopt->viewItemPosition == QStyleOptionViewItem::Beginning; - bool rightSection = vopt->viewItemPosition == QStyleOptionViewItem::End; - if (vopt->viewItemPosition == QStyleOptionViewItem::OnlyOne - || vopt->viewItemPosition == QStyleOptionViewItem::Invalid) - painter->drawPixmap(pixmapRect.topLeft(), pixmap); - else if (reverse ? rightSection : leftSection){ - painter->drawPixmap(QRect(pixmapRect.topLeft(), - QSize(frame, pixmapRect.height())), pixmap, - QRect(QPoint(0, 0), QSize(frame, pixmapRect.height()))); - painter->drawPixmap(pixmapRect.adjusted(frame, 0, 0, 0), - pixmap, srcRect.adjusted(frame, 0, -frame, 0)); - } else if (reverse ? leftSection : rightSection) { - painter->drawPixmap(QRect(pixmapRect.topRight() - QPoint(frame - 1, 0), - QSize(frame, pixmapRect.height())), pixmap, - QRect(QPoint(pixmapRect.width() - frame, 0), - QSize(frame, pixmapRect.height()))); - painter->drawPixmap(pixmapRect.adjusted(0, 0, -frame, 0), - pixmap, srcRect.adjusted(frame, 0, -frame, 0)); - } else if (vopt->viewItemPosition == QStyleOptionViewItem::Middle) - painter->drawPixmap(pixmapRect, pixmap, - srcRect.adjusted(frame, 0, -frame, 0)); - } else { - if (vopt->text.isEmpty() && vopt->icon.isNull()) - break; - painter->drawPixmap(itemRect.topLeft(), pixmap); - } - } - } else { - QWindowsXPStyle::drawPrimitive(element, option, painter, widget); - } - break; - } - case PE_Widget: - { -#if QT_CONFIG(dialogbuttonbox) - const QDialogButtonBox *buttonBox = nullptr; - - if (qobject_cast<const QMessageBox *> (widget)) - buttonBox = widget->findChild<const QDialogButtonBox *>(QLatin1String("qt_msgbox_buttonbox")); -#if QT_CONFIG(inputdialog) - else if (qobject_cast<const QInputDialog *> (widget)) - buttonBox = widget->findChild<const QDialogButtonBox *>(QLatin1String("qt_inputdlg_buttonbox")); -#endif // QT_CONFIG(inputdialog) - - if (buttonBox) { - //draw white panel part - XPThemeData theme(widget, painter, - QWindowsXPStylePrivate::TaskDialogTheme, - TDLG_PRIMARYPANEL, 0, option->rect); - QRect toprect = option->rect; - toprect.setBottom(buttonBox->geometry().top()); - theme.rect = toprect; - d->drawBackground(theme); - - //draw bottom panel part - QRect buttonRect = option->rect; - buttonRect.setTop(buttonBox->geometry().top()); - theme.rect = buttonRect; - theme.partId = TDLG_SECONDARYPANEL; - d->drawBackground(theme); - } -#endif - } - break; - default: - QWindowsXPStyle::drawPrimitive(element, option, painter, widget); - break; - } -} - - -/*! - \internal - - see drawPrimitive for comments on the animation support - */ -void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption *option, - QPainter *painter, const QWidget *widget) const -{ - QWindowsVistaStylePrivate *d = const_cast<QWindowsVistaStylePrivate*>(d_func()); - - if (!QWindowsVistaStylePrivate::useVista()) { - QWindowsStyle::drawControl(element, option, painter, widget); - return; - } - - bool selected = option->state & State_Selected; - bool pressed = option->state & State_Sunken; - bool disabled = !(option->state & State_Enabled); - - int state = option->state; - int themeNumber = -1; - - QRect rect(option->rect); - State flags = option->state; - int partId = 0; - int stateId = 0; - - if (d->transitionsEnabled() && canAnimate(option)) - { - if (element == CE_PushButtonBevel) { - QRect oldRect; - QRect newRect; - - QObject *styleObject = option->styleObject; - - int oldState = styleObject->property("_q_stylestate").toInt(); - oldRect = styleObject->property("_q_stylerect").toRect(); - newRect = option->rect; - styleObject->setProperty("_q_stylestate", int(option->state)); - styleObject->setProperty("_q_stylerect", option->rect); - - bool wasDefault = false; - bool isDefault = false; - if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) { - wasDefault = styleObject->property("_q_isdefault").toBool(); - isDefault = button->features & QStyleOptionButton::DefaultButton; - styleObject->setProperty("_q_isdefault", isDefault); - } - - bool doTransition = ((state & State_Sunken) != (oldState & State_Sunken) || - (state & State_On) != (oldState & State_On) || - (state & State_MouseOver) != (oldState & State_MouseOver)); - - if (oldRect != newRect || (wasDefault && !isDefault)) { - doTransition = false; - d->stopAnimation(styleObject); - } - - if (doTransition) { - styleObject->setProperty("_q_no_animation", true); - - QWindowsVistaTransition *t = new QWindowsVistaTransition(styleObject); - QWindowsVistaAnimation *anim = qobject_cast<QWindowsVistaAnimation *>(d->animation(styleObject)); - QStyleOption *styleOption = clonedAnimationStyleOption(option); - styleOption->state = QStyle::State(oldState); - - QImage startImage = createAnimationBuffer(option, widget); - QPainter startPainter(&startImage); - - // Use current state of existing animation if already one is running - if (!anim) { - proxy()->drawControl(element, styleOption, &startPainter, widget); - } else { - anim->paint(&startPainter, styleOption); - d->stopAnimation(styleObject); - } - - t->setStartImage(startImage); - QImage endImage = createAnimationBuffer(option, widget); - QPainter endPainter(&endImage); - styleOption->state = option->state; - proxy()->drawControl(element, styleOption, &endPainter, widget); - t->setEndImage(endImage); - - - DWORD duration = 0; - const HTHEME theme = OpenThemeData(nullptr, L"Button"); - - int fromState = buttonStateId(oldState, BP_PUSHBUTTON); - int toState = buttonStateId(option->state, BP_PUSHBUTTON); - if (GetThemeTransitionDuration(theme, BP_PUSHBUTTON, fromState, toState, TMT_TRANSITIONDURATIONS, &duration) == S_OK) - t->setDuration(int(duration)); - else - t->setDuration(0); - t->setStartTime(QTime::currentTime()); - styleObject->setProperty("_q_no_animation", false); - - deleteClonedAnimationStyleOption(styleOption); - d->startAnimation(t); - } - - QWindowsVistaAnimation *anim = qobject_cast<QWindowsVistaAnimation *>(d->animation(styleObject)); - if (anim) { - anim->paint(painter, option); - return; - } - - } - } - switch (element) { - case CE_PushButtonBevel: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(option)) - { - themeNumber = QWindowsXPStylePrivate::ButtonTheme; - partId = BP_PUSHBUTTON; - if (btn->features & QStyleOptionButton::CommandLinkButton) - partId = BP_COMMANDLINK; - bool justFlat = (btn->features & QStyleOptionButton::Flat) && !(flags & (State_On|State_Sunken)); - if (!(flags & State_Enabled) && !(btn->features & QStyleOptionButton::Flat)) - stateId = PBS_DISABLED; - else if (justFlat) - ; - else if (flags & (State_Sunken | State_On)) - stateId = PBS_PRESSED; - else if (flags & State_MouseOver) - stateId = PBS_HOT; - else if (btn->features & QStyleOptionButton::DefaultButton && (state & State_Active)) - stateId = PBS_DEFAULTED; - else - stateId = PBS_NORMAL; - - if (!justFlat) { - - if (d->transitionsEnabled() && (btn->features & QStyleOptionButton::DefaultButton) && - !(state & (State_Sunken | State_On)) && !(state & State_MouseOver) && - (state & State_Enabled) && (state & State_Active)) - { - QWindowsVistaAnimation *anim = qobject_cast<QWindowsVistaAnimation *>(d->animation(styleObject(option))); - - if (!anim) { - QImage startImage = createAnimationBuffer(option, widget); - QImage alternateImage = createAnimationBuffer(option, widget); - - QWindowsVistaPulse *pulse = new QWindowsVistaPulse(styleObject(option)); - - QPainter startPainter(&startImage); - stateId = PBS_DEFAULTED; - XPThemeData theme(widget, &startPainter, themeNumber, partId, stateId, rect); - d->drawBackground(theme); - - QPainter alternatePainter(&alternateImage); - theme.stateId = PBS_DEFAULTED_ANIMATING; - theme.painter = &alternatePainter; - d->drawBackground(theme); - pulse->setStartImage(startImage); - pulse->setEndImage(alternateImage); - pulse->setStartTime(QTime::currentTime()); - pulse->setDuration(2000); - d->startAnimation(pulse); - anim = pulse; - } - - if (anim) - anim->paint(painter, option); - else { - XPThemeData theme(widget, painter, themeNumber, partId, stateId, rect); - d->drawBackground(theme); - } - } - else { - XPThemeData theme(widget, painter, themeNumber, partId, stateId, rect); - d->drawBackground(theme); - } - } - - if (btn->features & QStyleOptionButton::HasMenu) { - int mbiw = 0, mbih = 0; - XPThemeData theme(widget, nullptr, QWindowsXPStylePrivate::ToolBarTheme, - TP_DROPDOWNBUTTON); - if (theme.isValid()) { - const QSizeF size = theme.size() * QStyleHelper::dpiScaled(1, option); - if (!size.isEmpty()) { - mbiw = qRound(size.width()); - mbih = qRound(size.height()); - } - } - QRect ir = subElementRect(SE_PushButtonContents, option, nullptr); - QStyleOptionButton newBtn = *btn; - newBtn.rect = QStyle::visualRect(option->direction, option->rect, - QRect(ir.right() - mbiw - 2, - option->rect.top() + (option->rect.height()/2) - (mbih/2), - mbiw + 1, mbih + 1)); - proxy()->drawPrimitive(PE_IndicatorArrowDown, &newBtn, painter, widget); - } - return; - } - break; - - case CE_ProgressBarContents: - if (const QStyleOptionProgressBar *bar - = qstyleoption_cast<const QStyleOptionProgressBar *>(option)) { - bool isIndeterminate = (bar->minimum == 0 && bar->maximum == 0); - const bool vertical = bar->orientation == Qt::Vertical; - const bool inverted = bar->invertedAppearance; - - if (isIndeterminate || (bar->progress > 0 && (bar->progress < bar->maximum) && d->transitionsEnabled())) { - if (!d->animation(styleObject(option))) - d->startAnimation(new QProgressStyleAnimation(d->animationFps, styleObject(option))); - } else { - d->stopAnimation(styleObject(option)); - } - - XPThemeData theme(widget, painter, - QWindowsXPStylePrivate::ProgressTheme, - vertical ? PP_FILLVERT : PP_FILL); - theme.rect = option->rect; - bool reverse = (bar->direction == Qt::LeftToRight && inverted) || (bar->direction == Qt::RightToLeft && !inverted); - QTime current = QTime::currentTime(); - - if (isIndeterminate) { - if (QProgressStyleAnimation *a = qobject_cast<QProgressStyleAnimation *>(d->animation(styleObject(option)))) { - int glowSize = 120; - int animationWidth = glowSize * 2 + (vertical ? theme.rect.height() : theme.rect.width()); - int animOffset = a->startTime().msecsTo(current) / 4; - if (animOffset > animationWidth) - a->setStartTime(QTime::currentTime()); - painter->save(); - painter->setClipRect(theme.rect); - QRect animRect; - QSize pixmapSize(14, 14); - if (vertical) { - animRect = QRect(theme.rect.left(), - inverted ? rect.top() - glowSize + animOffset : - rect.bottom() + glowSize - animOffset, - rect.width(), glowSize); - pixmapSize.setHeight(animRect.height()); - } else { - animRect = QRect(rect.left() - glowSize + animOffset, - rect.top(), glowSize, rect.height()); - animRect = QStyle::visualRect(reverse ? Qt::RightToLeft : Qt::LeftToRight, - option->rect, animRect); - pixmapSize.setWidth(animRect.width()); - } - QString name = QString::fromLatin1("qiprogress-%1-%2").arg(pixmapSize.width()).arg(pixmapSize.height()); - QPixmap pixmap; - if (!QPixmapCache::find(name, &pixmap)) { - QImage image(pixmapSize, QImage::Format_ARGB32); - image.fill(Qt::transparent); - QPainter imagePainter(&image); - theme.painter = &imagePainter; - theme.partId = vertical ? PP_FILLVERT : PP_FILL; - theme.rect = QRect(QPoint(0,0), animRect.size()); - QLinearGradient alphaGradient(0, 0, vertical ? 0 : image.width(), - vertical ? image.height() : 0); - alphaGradient.setColorAt(0, QColor(0, 0, 0, 0)); - alphaGradient.setColorAt(0.5, QColor(0, 0, 0, 220)); - alphaGradient.setColorAt(1, QColor(0, 0, 0, 0)); - imagePainter.fillRect(image.rect(), alphaGradient); - imagePainter.setCompositionMode(QPainter::CompositionMode_SourceIn); - d->drawBackground(theme); - imagePainter.end(); - pixmap = QPixmap::fromImage(image); - QPixmapCache::insert(name, pixmap); - } - painter->drawPixmap(animRect, pixmap); - painter->restore(); - } - } - else { - qint64 progress = qMax<qint64>(bar->progress, bar->minimum); // workaround for bug in QProgressBar - - if (vertical) { - int maxHeight = option->rect.height(); - int minHeight = 0; - double vc6_workaround = ((progress - qint64(bar->minimum)) / qMax(double(1.0), double(qint64(bar->maximum) - qint64(bar->minimum))) * maxHeight); - int height = isIndeterminate ? maxHeight: qMax(int(vc6_workaround), minHeight); - theme.rect.setHeight(height); - if (!inverted) - theme.rect.moveTop(rect.height() - theme.rect.height()); - } else { - int maxWidth = option->rect.width(); - int minWidth = 0; - double vc6_workaround = ((progress - qint64(bar->minimum)) / qMax(double(1.0), double(qint64(bar->maximum) - qint64(bar->minimum))) * maxWidth); - int width = isIndeterminate ? maxWidth : qMax(int(vc6_workaround), minWidth); - theme.rect.setWidth(width); - theme.rect = QStyle::visualRect(reverse ? Qt::RightToLeft : Qt::LeftToRight, - option->rect, theme.rect); - } - d->drawBackground(theme); - - if (QProgressStyleAnimation *a = qobject_cast<QProgressStyleAnimation *>(d->animation(styleObject(option)))) { - int glowSize = 140; - int animationWidth = glowSize * 2 + (vertical ? theme.rect.height() : theme.rect.width()); - int animOffset = a->startTime().msecsTo(current) / 4; - theme.partId = vertical ? PP_MOVEOVERLAYVERT : PP_MOVEOVERLAY; - if (animOffset > animationWidth) { - if (bar->progress < bar->maximum) - a->setStartTime(QTime::currentTime()); - else - d->stopAnimation(styleObject(option)); //we stop the glow motion only after it has - //moved out of view - } - painter->save(); - painter->setClipRect(theme.rect); - if (vertical) { - theme.rect = QRect(theme.rect.left(), - inverted ? rect.top() - glowSize + animOffset : - rect.bottom() + glowSize - animOffset, - rect.width(), glowSize); - } else { - theme.rect = QRect(rect.left() - glowSize + animOffset,rect.top(), glowSize, rect.height()); - theme.rect = QStyle::visualRect(reverse ? Qt::RightToLeft : Qt::LeftToRight, option->rect, theme.rect); - } - d->drawBackground(theme); - painter->restore(); - } - } - } - break; - - case CE_MenuBarItem: - { - - if (const QStyleOptionMenuItem *mbi = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) - { - if (mbi->menuItemType == QStyleOptionMenuItem::DefaultItem) - break; - - QPalette::ColorRole textRole = disabled ? QPalette::Text : QPalette::ButtonText; - QPixmap pix = mbi->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, option, widget), QIcon::Normal); - - int alignment = Qt::AlignCenter | Qt::TextShowMnemonic | Qt::TextDontClip | Qt::TextSingleLine; - if (!proxy()->styleHint(SH_UnderlineShortcut, mbi, widget)) - alignment |= Qt::TextHideMnemonic; - - if (widget && mbi->palette.color(QPalette::Window) != Qt::transparent) { // Not needed for QtQuick Controls - //The rect adjustment is a workaround for the menu not really filling its background. - XPThemeData theme(widget, painter, - QWindowsXPStylePrivate::MenuTheme, - MENU_BARBACKGROUND, 0, option->rect.adjusted(-1, 0, 2, 1)); - d->drawBackground(theme); - } - - int stateId = MBI_NORMAL; - if (disabled) - stateId = MBI_DISABLED; - else if (pressed) - stateId = MBI_PUSHED; - else if (selected) - stateId = MBI_HOT; - - XPThemeData theme2(widget, painter, - QWindowsXPStylePrivate::MenuTheme, - MENU_BARITEM, stateId, option->rect); - d->drawBackground(theme2); - - if (!pix.isNull()) - drawItemPixmap(painter, mbi->rect, alignment, pix); - else - drawItemText(painter, mbi->rect, alignment, mbi->palette, mbi->state & State_Enabled, mbi->text, textRole); - } - } - break; -#if QT_CONFIG(menu) - case CE_MenuItem: - if (const QStyleOptionMenuItem *menuitem = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) { - // windows always has a check column, regardless whether we have an icon or not - const qreal factor = QWindowsXPStylePrivate::nativeMetricScaleFactor(widget); - int checkcol = qRound(qreal(25) * factor); - const int gutterWidth = qRound(qreal(3) * factor); - { - XPThemeData theme(widget, nullptr, QWindowsXPStylePrivate::MenuTheme, - MENU_POPUPCHECKBACKGROUND, MBI_HOT); - XPThemeData themeSize = theme; - themeSize.partId = MENU_POPUPCHECK; - themeSize.stateId = 0; - const QSizeF size = themeSize.size() * QWindowsStylePrivate::nativeMetricScaleFactor(widget); - const QMarginsF margins = themeSize.margins() * QWindowsStylePrivate::nativeMetricScaleFactor(widget); - checkcol = qMax(menuitem->maxIconWidth, qRound(gutterWidth + size.width() + margins.left() + margins.right())); - } - QRect rect = option->rect; - - //draw vertical menu line - if (option->direction == Qt::LeftToRight) - checkcol += rect.x(); - QPoint p1 = QStyle::visualPos(option->direction, menuitem->rect, QPoint(checkcol, rect.top())); - QPoint p2 = QStyle::visualPos(option->direction, menuitem->rect, QPoint(checkcol, rect.bottom())); - QRect gutterRect(p1.x(), p1.y(), gutterWidth, p2.y() - p1.y() + 1); - XPThemeData theme2(widget, painter, QWindowsXPStylePrivate::MenuTheme, - MENU_POPUPGUTTER, stateId, gutterRect); - d->drawBackground(theme2); - - int x, y, w, h; - menuitem->rect.getRect(&x, &y, &w, &h); - int tab = menuitem->tabWidth; - bool dis = !(menuitem->state & State_Enabled); - bool checked = menuitem->checkType != QStyleOptionMenuItem::NotCheckable - ? menuitem->checked : false; - bool act = menuitem->state & State_Selected; - - if (menuitem->menuItemType == QStyleOptionMenuItem::Separator) { - int yoff = y-2 + h / 2; - const int separatorSize = qRound(qreal(6) * QWindowsStylePrivate::nativeMetricScaleFactor(widget)); - QPoint p1 = QPoint(x + checkcol, yoff); - QPoint p2 = QPoint(x + w + separatorSize, yoff); - stateId = MBI_HOT; - QRect subRect(p1.x() + (gutterWidth - menuitem->rect.x()), p1.y(), - p2.x() - p1.x(), separatorSize); - subRect = QStyle::visualRect(option->direction, option->rect, subRect ); - XPThemeData theme2(widget, painter, - QWindowsXPStylePrivate::MenuTheme, - MENU_POPUPSEPARATOR, stateId, subRect); - d->drawBackground(theme2); - return; - } - - QRect vCheckRect = visualRect(option->direction, menuitem->rect, QRect(menuitem->rect.x(), - menuitem->rect.y(), checkcol - (gutterWidth + menuitem->rect.x()), menuitem->rect.height())); - - if (act) { - stateId = dis ? MBI_DISABLED : MBI_HOT; - XPThemeData theme2(widget, painter, - QWindowsXPStylePrivate::MenuTheme, - MENU_POPUPITEM, stateId, option->rect); - d->drawBackground(theme2); - } - - if (checked) { - XPThemeData theme(widget, painter, - QWindowsXPStylePrivate::MenuTheme, - MENU_POPUPCHECKBACKGROUND, - menuitem->icon.isNull() ? MBI_HOT : MBI_PUSHED, vCheckRect); - XPThemeData themeSize = theme; - themeSize.partId = MENU_POPUPCHECK; - themeSize.stateId = 0; - const QSizeF size = themeSize.size() * QWindowsStylePrivate::nativeMetricScaleFactor(widget); - const QMarginsF margins = themeSize.margins() * QWindowsStylePrivate::nativeMetricScaleFactor(widget); - QRect checkRect(0, 0, qRound(size.width() + margins.left() + margins.right()), - qRound(size.height() + margins.bottom() + margins.top())); - checkRect.moveCenter(vCheckRect.center()); - theme.rect = checkRect; - - d->drawBackground(theme); - - if (menuitem->icon.isNull()) { - checkRect = QRect(QPoint(0, 0), size.toSize()); - checkRect.moveCenter(theme.rect.center()); - theme.rect = checkRect; - - theme.partId = MENU_POPUPCHECK; - bool bullet = menuitem->checkType & QStyleOptionMenuItem::Exclusive; - if (dis) - theme.stateId = bullet ? MC_BULLETDISABLED: MC_CHECKMARKDISABLED; - else - theme.stateId = bullet ? MC_BULLETNORMAL: MC_CHECKMARKNORMAL; - d->drawBackground(theme); - } - } - - if (!menuitem->icon.isNull()) { - QIcon::Mode mode = dis ? QIcon::Disabled : QIcon::Normal; - if (act && !dis) - mode = QIcon::Active; - QPixmap pixmap; - if (checked) - pixmap = menuitem->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, option, widget), mode, QIcon::On); - else - pixmap = menuitem->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, option, widget), mode); - const int pixw = pixmap.width() / pixmap.devicePixelRatio(); - const int pixh = pixmap.height() / pixmap.devicePixelRatio(); - QRect pmr(0, 0, pixw, pixh); - pmr.moveCenter(vCheckRect.center()); - painter->setPen(menuitem->palette.text().color()); - painter->drawPixmap(pmr.topLeft(), pixmap); - } - - painter->setPen(menuitem->palette.buttonText().color()); - - const QColor textColor = menuitem->palette.text().color(); - if (dis) - painter->setPen(textColor); - - int xm = windowsItemFrame + checkcol + windowsItemHMargin + (gutterWidth - menuitem->rect.x()) - 1; - int xpos = menuitem->rect.x() + xm; - QRect textRect(xpos, y + windowsItemVMargin, w - xm - windowsRightBorder - tab + 1, h - 2 * windowsItemVMargin); - QRect vTextRect = visualRect(option->direction, menuitem->rect, textRect); - QString s = menuitem->text; - if (!s.isEmpty()) { // draw text - painter->save(); - int t = s.indexOf(QLatin1Char('\t')); - int text_flags = Qt::AlignVCenter | Qt::TextShowMnemonic | Qt::TextDontClip | Qt::TextSingleLine; - if (!proxy()->styleHint(SH_UnderlineShortcut, menuitem, widget)) - text_flags |= Qt::TextHideMnemonic; - text_flags |= Qt::AlignLeft; - if (t >= 0) { - QRect vShortcutRect = visualRect(option->direction, menuitem->rect, - QRect(textRect.topRight(), QPoint(menuitem->rect.right(), textRect.bottom()))); - painter->drawText(vShortcutRect, text_flags, s.mid(t + 1)); - s = s.left(t); - } - QFont font = menuitem->font; - if (menuitem->menuItemType == QStyleOptionMenuItem::DefaultItem) - font.setBold(true); - painter->setFont(font); - painter->setPen(textColor); - painter->drawText(vTextRect, text_flags, s.left(t)); - painter->restore(); - } - if (menuitem->menuItemType == QStyleOptionMenuItem::SubMenu) {// draw sub menu arrow - int dim = (h - 2 * windowsItemFrame) / 2; - PrimitiveElement arrow; - arrow = (option->direction == Qt::RightToLeft) ? PE_IndicatorArrowLeft : PE_IndicatorArrowRight; - xpos = x + w - windowsArrowHMargin - windowsItemFrame - dim; - QRect vSubMenuRect = visualRect(option->direction, menuitem->rect, QRect(xpos, y + h / 2 - dim / 2, dim, dim)); - QStyleOptionMenuItem newMI = *menuitem; - newMI.rect = vSubMenuRect; - newMI.state = dis ? State_None : State_Enabled; - proxy()->drawPrimitive(arrow, &newMI, painter, widget); - } - } - break; -#endif // QT_CONFIG(menu) - case CE_HeaderSection: - if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) { - partId = HP_HEADERITEM; - if (flags & State_Sunken) - stateId = HIS_PRESSED; - else if (flags & State_MouseOver) - stateId = HIS_HOT; - else - stateId = HIS_NORMAL; - - if (header->sortIndicator != QStyleOptionHeader::None) - stateId += 3; - - XPThemeData theme(widget, painter, - QWindowsXPStylePrivate::HeaderTheme, - partId, stateId, option->rect); - d->drawBackground(theme); - } - break; - case CE_MenuBarEmptyArea: - { - stateId = MBI_NORMAL; - if (!(state & State_Enabled)) - stateId = MBI_DISABLED; - XPThemeData theme(widget, painter, - QWindowsXPStylePrivate::MenuTheme, - MENU_BARBACKGROUND, stateId, option->rect); - d->drawBackground(theme); - } - break; - case CE_ToolBar: - if (const QStyleOptionToolBar *toolbar = qstyleoption_cast<const QStyleOptionToolBar *>(option)) { - QPalette pal = option->palette; - pal.setColor(QPalette::Dark, option->palette.window().color().darker(130)); - QStyleOptionToolBar copyOpt = *toolbar; - copyOpt.palette = pal; - QWindowsStyle::drawControl(element, ©Opt, painter, widget); - } - break; -#if QT_CONFIG(dockwidget) - case CE_DockWidgetTitle: - if (const QStyleOptionDockWidget *dwOpt = qstyleoption_cast<const QStyleOptionDockWidget *>(option)) { - const QDockWidget *dockWidget = qobject_cast<const QDockWidget *>(widget); - QRect rect = option->rect; - if (dockWidget && dockWidget->isFloating()) { - QWindowsXPStyle::drawControl(element, option, painter, widget); - break; //otherwise fall through - } - - const bool verticalTitleBar = dwOpt->verticalTitleBar; - - if (verticalTitleBar) { - rect = rect.transposed(); - - painter->translate(rect.left() - 1, rect.top() + rect.width()); - painter->rotate(-90); - painter->translate(-rect.left() + 1, -rect.top()); - } - - painter->setBrush(option->palette.window().color().darker(110)); - painter->setPen(option->palette.window().color().darker(130)); - painter->drawRect(rect.adjusted(0, 1, -1, -3)); - - int buttonMargin = 4; - int mw = proxy()->pixelMetric(QStyle::PM_DockWidgetTitleMargin, dwOpt, widget); - int fw = proxy()->pixelMetric(PM_DockWidgetFrameWidth, dwOpt, widget); - const QDockWidget *dw = qobject_cast<const QDockWidget *>(widget); - bool isFloating = dw && dw->isFloating(); - - QRect r = option->rect.adjusted(0, 2, -1, -3); - QRect titleRect = r; - - if (dwOpt->closable) { - QSize sz = proxy()->standardIcon(QStyle::SP_TitleBarCloseButton, dwOpt, widget).actualSize(QSize(10, 10)); - titleRect.adjust(0, 0, -sz.width() - mw - buttonMargin, 0); - } - - if (dwOpt->floatable) { - QSize sz = proxy()->standardIcon(QStyle::SP_TitleBarMaxButton, dwOpt, widget).actualSize(QSize(10, 10)); - titleRect.adjust(0, 0, -sz.width() - mw - buttonMargin, 0); - } - - if (isFloating) { - titleRect.adjust(0, -fw, 0, 0); - if (widget && widget->windowIcon().cacheKey() != QApplication::windowIcon().cacheKey()) - titleRect.adjust(titleRect.height() + mw, 0, 0, 0); - } else { - titleRect.adjust(mw, 0, 0, 0); - if (!dwOpt->floatable && !dwOpt->closable) - titleRect.adjust(0, 0, -mw, 0); - } - if (!verticalTitleBar) - titleRect = visualRect(dwOpt->direction, r, titleRect); - - if (!dwOpt->title.isEmpty()) { - QString titleText = painter->fontMetrics().elidedText(dwOpt->title, Qt::ElideRight, - verticalTitleBar ? titleRect.height() : titleRect.width()); - const int indent = 4; - drawItemText(painter, rect.adjusted(indent + 1, 1, -indent - 1, -1), - Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic, - dwOpt->palette, - dwOpt->state & State_Enabled, titleText, - QPalette::WindowText); - } - } - break; -#endif // QT_CONFIG(dockwidget) -#if QT_CONFIG(itemviews) - case CE_ItemViewItem: - { - const QStyleOptionViewItem *vopt; - - const QAbstractItemView *view = qobject_cast<const QAbstractItemView *>(widget); - bool newStyle = true; - - if (qobject_cast<const QTableView*>(widget)) - newStyle = false; - - if (newStyle && view && (vopt = qstyleoption_cast<const QStyleOptionViewItem *>(option))) { - /* - // We cannot currently get the correct selection color for "explorer style" views - COLORREF cref = 0; - XPThemeData theme(d->treeViewHelper(), 0, QLatin1String("LISTVIEW"), 0, 0); - unsigned int res = GetThemeColor(theme.handle(), LVP_LISTITEM, LISS_SELECTED, TMT_TEXTCOLOR, &cref); - QColor textColor(GetRValue(cref), GetGValue(cref), GetBValue(cref)); - */ - QPalette palette = vopt->palette; - palette.setColor(QPalette::All, QPalette::HighlightedText, palette.color(QPalette::Active, QPalette::Text)); - // Note that setting a saturated color here results in ugly XOR colors in the focus rect - palette.setColor(QPalette::All, QPalette::Highlight, palette.base().color().darker(108)); - QStyleOptionViewItem adjustedOption = *vopt; - adjustedOption.palette = palette; - // We hide the focusrect in singleselection as it is not required - if ((view->selectionMode() == QAbstractItemView::SingleSelection) - && !(vopt->state & State_KeyboardFocusChange)) - adjustedOption.state &= ~State_HasFocus; - QWindowsXPStyle::drawControl(element, &adjustedOption, painter, widget); - } else { - QWindowsXPStyle::drawControl(element, option, painter, widget); - } - break; - } -#endif // QT_CONFIG(itemviews) -#if QT_CONFIG(combobox) - case CE_ComboBoxLabel: - QCommonStyle::drawControl(element, option, painter, widget); - break; -#endif // QT_CONFIG(combobox) - default: - QWindowsXPStyle::drawControl(element, option, painter, widget); - break; - } -} - -/*! - \internal - - see drawPrimitive for comments on the animation support - - */ -void QWindowsVistaStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, - QPainter *painter, const QWidget *widget) const -{ - QWindowsVistaStylePrivate *d = const_cast<QWindowsVistaStylePrivate*>(d_func()); - if (!QWindowsVistaStylePrivate::useVista()) { - QWindowsStyle::drawComplexControl(control, option, painter, widget); - return; - } - - State state = option->state; - SubControls sub = option->subControls; - QRect r = option->rect; - - int partId = 0; - int stateId = 0; - - State flags = option->state; - if (widget && widget->testAttribute(Qt::WA_UnderMouse) && widget->isActiveWindow()) - flags |= State_MouseOver; - - if (d->transitionsEnabled() && canAnimate(option)) - { - - if (control == CC_ScrollBar || control == CC_SpinBox || control == CC_ComboBox) { - - QObject *styleObject = option->styleObject; // Can be widget or qquickitem - - int oldState = styleObject->property("_q_stylestate").toInt(); - int oldActiveControls = styleObject->property("_q_stylecontrols").toInt(); - - QRect oldRect = styleObject->property("_q_stylerect").toRect(); - styleObject->setProperty("_q_stylestate", int(option->state)); - styleObject->setProperty("_q_stylecontrols", int(option->activeSubControls)); - styleObject->setProperty("_q_stylerect", option->rect); - - bool doTransition = ((state & State_Sunken) != (oldState & State_Sunken) || - (state & State_On) != (oldState & State_On) || - (state & State_MouseOver) != (oldState & State_MouseOver) || - oldActiveControls != int(option->activeSubControls)); - - if (qstyleoption_cast<const QStyleOptionSlider *>(option)) { - QRect oldSliderPos = styleObject->property("_q_stylesliderpos").toRect(); - QRect currentPos = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarSlider, widget); - styleObject->setProperty("_q_stylesliderpos", currentPos); - if (oldSliderPos != currentPos) { - doTransition = false; - d->stopAnimation(styleObject); - } - } else if (control == CC_SpinBox) { - //spinboxes have a transition when focus changes - if (!doTransition) - doTransition = (state & State_HasFocus) != (oldState & State_HasFocus); - } - - if (oldRect != option->rect) { - doTransition = false; - d->stopAnimation(styleObject); - } - - if (doTransition) { - QImage startImage = createAnimationBuffer(option, widget); - QPainter startPainter(&startImage); - - QImage endImage = createAnimationBuffer(option, widget); - QPainter endPainter(&endImage); - - QWindowsVistaAnimation *anim = qobject_cast<QWindowsVistaAnimation *>(d->animation(styleObject)); - QWindowsVistaTransition *t = new QWindowsVistaTransition(styleObject); - - // Draw the image that ends the animation by using the current styleoption - QStyleOptionComplex *styleOption = qstyleoption_cast<QStyleOptionComplex*>(clonedAnimationStyleOption(option)); - - styleObject->setProperty("_q_no_animation", true); - - // Draw transition source - if (!anim) { - styleOption->state = QStyle::State(oldState); - styleOption->activeSubControls = QStyle::SubControl(oldActiveControls); - proxy()->drawComplexControl(control, styleOption, &startPainter, widget); - } else { - anim->paint(&startPainter, option); - } - t->setStartImage(startImage); - - // Draw transition target - styleOption->state = option->state; - styleOption->activeSubControls = option->activeSubControls; - proxy()->drawComplexControl(control, styleOption, &endPainter, widget); - - styleObject->setProperty("_q_no_animation", false); - - t->setEndImage(endImage); - t->setStartTime(QTime::currentTime()); - - if (option->state & State_MouseOver || option->state & State_Sunken) - t->setDuration(150); - else - t->setDuration(500); - - deleteClonedAnimationStyleOption(styleOption); - d->startAnimation(t); - } - if (QWindowsVistaAnimation *anim = qobject_cast<QWindowsVistaAnimation *>(d->animation(styleObject))) { - anim->paint(painter, option); - return; - } - } - } - - switch (control) { - case CC_ComboBox: - if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(option)) - { - if (cmb->editable) { - if (sub & SC_ComboBoxEditField) { - partId = EP_EDITBORDER_NOSCROLL; - if (!(flags & State_Enabled)) - stateId = ETS_DISABLED; - else if (flags & State_MouseOver) - stateId = ETS_HOT; - else if (flags & State_HasFocus) - stateId = ETS_FOCUSED; - else - stateId = ETS_NORMAL; - - XPThemeData theme(widget, painter, - QWindowsXPStylePrivate::EditTheme, - partId, stateId, r); - - d->drawBackground(theme); - } - if (sub & SC_ComboBoxArrow) { - QRect subRect = proxy()->subControlRect(CC_ComboBox, option, SC_ComboBoxArrow, widget); - XPThemeData theme(widget, painter, QWindowsXPStylePrivate::ComboboxTheme); - theme.rect = subRect; - partId = option->direction == Qt::RightToLeft ? CP_DROPDOWNBUTTONLEFT : CP_DROPDOWNBUTTONRIGHT; - - if (!(cmb->state & State_Enabled)) - stateId = CBXS_DISABLED; - else if (cmb->state & State_Sunken || cmb->state & State_On) - stateId = CBXS_PRESSED; - else if (cmb->state & State_MouseOver && option->activeSubControls & SC_ComboBoxArrow) - stateId = CBXS_HOT; - else - stateId = CBXS_NORMAL; - - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - - } else { - if (sub & SC_ComboBoxFrame) { - XPThemeData theme(widget, painter, QWindowsXPStylePrivate::ComboboxTheme); - theme.rect = option->rect; - theme.partId = CP_READONLY; - if (!(cmb->state & State_Enabled)) - theme.stateId = CBXS_DISABLED; - else if (cmb->state & State_Sunken || cmb->state & State_On) - theme.stateId = CBXS_PRESSED; - else if (cmb->state & State_MouseOver) - theme.stateId = CBXS_HOT; - else - theme.stateId = CBXS_NORMAL; - d->drawBackground(theme); - } - if (sub & SC_ComboBoxArrow) { - XPThemeData theme(widget, painter, QWindowsXPStylePrivate::ComboboxTheme); - theme.rect = proxy()->subControlRect(CC_ComboBox, option, SC_ComboBoxArrow, widget); - theme.partId = option->direction == Qt::RightToLeft ? CP_DROPDOWNBUTTONLEFT : CP_DROPDOWNBUTTONRIGHT; - if (!(cmb->state & State_Enabled)) - theme.stateId = CBXS_DISABLED; - else - theme.stateId = CBXS_NORMAL; - d->drawBackground(theme); - } - if ((sub & SC_ComboBoxEditField) && (flags & State_HasFocus)) { - QStyleOptionFocusRect fropt; - fropt.QStyleOption::operator=(*cmb); - fropt.rect = proxy()->subControlRect(CC_ComboBox, option, SC_ComboBoxEditField, widget); - proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget); - } - } - } - break; - case CC_ScrollBar: - if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(option)) - { - XPThemeData theme(widget, painter, QWindowsXPStylePrivate::ScrollBarTheme); - bool maxedOut = (scrollbar->maximum == scrollbar->minimum); - if (maxedOut) - flags &= ~State_Enabled; - - bool isHorz = flags & State_Horizontal; - bool isRTL = option->direction == Qt::RightToLeft; - if (sub & SC_ScrollBarAddLine) { - theme.rect = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarAddLine, widget); - partId = SBP_ARROWBTN; - if (!(flags & State_Enabled)) - stateId = (isHorz ? (isRTL ? ABS_LEFTDISABLED : ABS_RIGHTDISABLED) : ABS_DOWNDISABLED); - else if (scrollbar->activeSubControls & SC_ScrollBarAddLine && (scrollbar->state & State_Sunken)) - stateId = (isHorz ? (isRTL ? ABS_LEFTPRESSED : ABS_RIGHTPRESSED) : ABS_DOWNPRESSED); - else if (scrollbar->activeSubControls & SC_ScrollBarAddLine && (scrollbar->state & State_MouseOver)) - stateId = (isHorz ? (isRTL ? ABS_LEFTHOT : ABS_RIGHTHOT) : ABS_DOWNHOT); - else if (scrollbar->state & State_MouseOver) - stateId = (isHorz ? (isRTL ? ABS_LEFTHOVER : ABS_RIGHTHOVER) : ABS_DOWNHOVER); - else - stateId = (isHorz ? (isRTL ? ABS_LEFTNORMAL : ABS_RIGHTNORMAL) : ABS_DOWNNORMAL); - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - if (sub & SC_ScrollBarSubLine) { - theme.rect = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarSubLine, widget); - partId = SBP_ARROWBTN; - if (!(flags & State_Enabled)) - stateId = (isHorz ? (isRTL ? ABS_RIGHTDISABLED : ABS_LEFTDISABLED) : ABS_UPDISABLED); - else if (scrollbar->activeSubControls & SC_ScrollBarSubLine && (scrollbar->state & State_Sunken)) - stateId = (isHorz ? (isRTL ? ABS_RIGHTPRESSED : ABS_LEFTPRESSED) : ABS_UPPRESSED); - else if (scrollbar->activeSubControls & SC_ScrollBarSubLine && (scrollbar->state & State_MouseOver)) - stateId = (isHorz ? (isRTL ? ABS_RIGHTHOT : ABS_LEFTHOT) : ABS_UPHOT); - else if (scrollbar->state & State_MouseOver) - stateId = (isHorz ? (isRTL ? ABS_RIGHTHOVER : ABS_LEFTHOVER) : ABS_UPHOVER); - else - stateId = (isHorz ? (isRTL ? ABS_RIGHTNORMAL : ABS_LEFTNORMAL) : ABS_UPNORMAL); - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - if (maxedOut) { - theme.rect = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarSlider, widget); - theme.rect = theme.rect.united(proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarSubPage, widget)); - theme.rect = theme.rect.united(proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarAddPage, widget)); - partId = flags & State_Horizontal ? SBP_LOWERTRACKHORZ : SBP_LOWERTRACKVERT; - stateId = SCRBS_DISABLED; - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } else { - if (sub & SC_ScrollBarSubPage) { - theme.rect = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarSubPage, widget); - partId = flags & State_Horizontal ? SBP_UPPERTRACKHORZ : SBP_UPPERTRACKVERT; - if (!(flags & State_Enabled)) - stateId = SCRBS_DISABLED; - else if (scrollbar->activeSubControls & SC_ScrollBarSubPage && (scrollbar->state & State_Sunken)) - stateId = SCRBS_PRESSED; - else if (scrollbar->activeSubControls & SC_ScrollBarSubPage && (scrollbar->state & State_MouseOver)) - stateId = SCRBS_HOT; - else - stateId = SCRBS_NORMAL; - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - if (sub & SC_ScrollBarAddPage) { - theme.rect = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarAddPage, widget); - partId = flags & State_Horizontal ? SBP_LOWERTRACKHORZ : SBP_LOWERTRACKVERT; - if (!(flags & State_Enabled)) - stateId = SCRBS_DISABLED; - else if (scrollbar->activeSubControls & SC_ScrollBarAddPage && (scrollbar->state & State_Sunken)) - stateId = SCRBS_PRESSED; - else if (scrollbar->activeSubControls & SC_ScrollBarAddPage && (scrollbar->state & State_MouseOver)) - stateId = SCRBS_HOT; - else - stateId = SCRBS_NORMAL; - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - if (sub & SC_ScrollBarSlider) { - theme.rect = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarSlider, widget); - if (!(flags & State_Enabled)) - stateId = SCRBS_DISABLED; - else if (scrollbar->activeSubControls & SC_ScrollBarSlider && (scrollbar->state & State_Sunken)) - stateId = SCRBS_PRESSED; - else if (scrollbar->activeSubControls & SC_ScrollBarSlider && (scrollbar->state & State_MouseOver)) - stateId = SCRBS_HOT; - else if (option->state & State_MouseOver) - stateId = SCRBS_HOVER; - else - stateId = SCRBS_NORMAL; - - // Draw handle - theme.partId = flags & State_Horizontal ? SBP_THUMBBTNHORZ : SBP_THUMBBTNVERT; - theme.stateId = stateId; - d->drawBackground(theme); - - if (QOperatingSystemVersion::current() < QOperatingSystemVersion::Windows8) { - const QRect gripperBounds = QWindowsXPStylePrivate::scrollBarGripperBounds(flags, widget, &theme); - // Draw gripper if there is enough space - if (!gripperBounds.isEmpty() && flags & State_Enabled) { - painter->save(); - XPThemeData grippBackground = theme; - grippBackground.partId = flags & State_Horizontal ? SBP_LOWERTRACKHORZ : SBP_LOWERTRACKVERT; - theme.rect = gripperBounds; - painter->setClipRegion(d->region(theme));// Only change inside the region of the gripper - d->drawBackground(grippBackground);// The gutter is the grippers background - d->drawBackground(theme); // Transparent gripper ontop of background - painter->restore(); - } - } - } - } - } - break; -#if QT_CONFIG(spinbox) - case CC_SpinBox: - if (const QStyleOptionSpinBox *sb = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) - { - XPThemeData theme(widget, painter, QWindowsXPStylePrivate::SpinTheme); - if (sb->frame && (sub & SC_SpinBoxFrame)) { - partId = EP_EDITBORDER_NOSCROLL; - if (!(flags & State_Enabled)) - stateId = ETS_DISABLED; - else if (flags & State_MouseOver) - stateId = ETS_HOT; - else if (flags & State_HasFocus) - stateId = ETS_SELECTED; - else - stateId = ETS_NORMAL; - - XPThemeData ftheme(widget, painter, - QWindowsXPStylePrivate::EditTheme, - partId, stateId, r); - // The spinbox in Windows QStyle is drawn with frameless QLineEdit inside it - // That however breaks with QtQuickControls where this results in transparent - // spinbox background, so if there's no "widget" passed (QtQuickControls case), - // let ftheme.noContent be false, which fixes the spinbox rendering in QQC - ftheme.noContent = (widget != nullptr); - d->drawBackground(ftheme); - } - if (sub & SC_SpinBoxUp) { - theme.rect = proxy()->subControlRect(CC_SpinBox, option, SC_SpinBoxUp, widget).adjusted(0, 0, 0, 1); - partId = SPNP_UP; - if (!(sb->stepEnabled & QAbstractSpinBox::StepUpEnabled) || !(flags & State_Enabled)) - stateId = UPS_DISABLED; - else if (sb->activeSubControls == SC_SpinBoxUp && (sb->state & State_Sunken)) - stateId = UPS_PRESSED; - else if (sb->activeSubControls == SC_SpinBoxUp && (sb->state & State_MouseOver)) - stateId = UPS_HOT; - else - stateId = UPS_NORMAL; - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - if (sub & SC_SpinBoxDown) { - theme.rect = proxy()->subControlRect(CC_SpinBox, option, SC_SpinBoxDown, widget); - partId = SPNP_DOWN; - if (!(sb->stepEnabled & QAbstractSpinBox::StepDownEnabled) || !(flags & State_Enabled)) - stateId = DNS_DISABLED; - else if (sb->activeSubControls == SC_SpinBoxDown && (sb->state & State_Sunken)) - stateId = DNS_PRESSED; - else if (sb->activeSubControls == SC_SpinBoxDown && (sb->state & State_MouseOver)) - stateId = DNS_HOT; - else - stateId = DNS_NORMAL; - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - } - break; -#endif // QT_CONFIG(spinbox) - default: - QWindowsXPStyle::drawComplexControl(control, option, painter, widget); - break; - } -} - -/*! - \internal - */ -QSize QWindowsVistaStyle::sizeFromContents(ContentsType type, const QStyleOption *option, - const QSize &size, const QWidget *widget) const -{ - if (!QWindowsVistaStylePrivate::useVista()) - return QWindowsStyle::sizeFromContents(type, option, size, widget); - - QSize sz(size); - switch (type) { - case CT_MenuItem: - sz = QWindowsXPStyle::sizeFromContents(type, option, size, widget); - int minimumHeight; - { - XPThemeData theme(widget, nullptr, - QWindowsXPStylePrivate::MenuTheme, - MENU_POPUPCHECKBACKGROUND, MBI_HOT); - XPThemeData themeSize = theme; - themeSize.partId = MENU_POPUPCHECK; - themeSize.stateId = 0; - const QSizeF size = themeSize.size() * QWindowsStylePrivate::nativeMetricScaleFactor(widget); - const QMarginsF margins = themeSize.margins() * QWindowsStylePrivate::nativeMetricScaleFactor(widget); - minimumHeight = qMax(qRound(size.height() + margins.bottom() + margins.top()), sz.height()); - sz.rwidth() += qRound(size.width() + margins.left() + margins.right()); - } - - if (const QStyleOptionMenuItem *menuitem = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) { - if (menuitem->menuItemType != QStyleOptionMenuItem::Separator) - sz.setHeight(minimumHeight); - } - return sz; -#if QT_CONFIG(menubar) - case CT_MenuBarItem: - if (!sz.isEmpty()) - sz += QSize(windowsItemHMargin * 5 + 1, 5); - return sz; -#endif - case CT_ItemViewItem: - sz = QWindowsXPStyle::sizeFromContents(type, option, size, widget); - sz.rheight() += 2; - return sz; - case CT_SpinBox: - { - //Spinbox adds frame twice - sz = QWindowsStyle::sizeFromContents(type, option, size, widget); - int border = proxy()->pixelMetric(PM_SpinBoxFrameWidth, option, widget); - sz -= QSize(2*border, 2*border); - } - return sz; - case CT_HeaderSection: - { - // When there is a sort indicator it adds to the width but it is shown - // above the text natively and not on the side - if (QStyleOptionHeader *hdr = qstyleoption_cast<QStyleOptionHeader *>(const_cast<QStyleOption *>(option))) { - QStyleOptionHeader::SortIndicator sortInd = hdr->sortIndicator; - hdr->sortIndicator = QStyleOptionHeader::None; - sz = QWindowsXPStyle::sizeFromContents(type, hdr, size, widget); - hdr->sortIndicator = sortInd; - return sz; - } - break; - } - default: - break; - } - return QWindowsXPStyle::sizeFromContents(type, option, size, widget); -} - -/*! - \internal - */ -QRect QWindowsVistaStyle::subElementRect(SubElement element, const QStyleOption *option, const QWidget *widget) const -{ - if (!QWindowsVistaStylePrivate::useVista()) - return QWindowsStyle::subElementRect(element, option, widget); - - QRect rect = QWindowsXPStyle::subElementRect(element, option, widget); - switch (element) { - - case SE_PushButtonContents: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(option)) { - MARGINS borderSize; - const HTHEME theme = OpenThemeData(widget ? QWindowsVistaStylePrivate::winId(widget) : nullptr, L"Button"); - if (theme) { - int stateId = PBS_NORMAL; - if (!(option->state & State_Enabled)) - stateId = PBS_DISABLED; - else if (option->state & State_Sunken) - stateId = PBS_PRESSED; - else if (option->state & State_MouseOver) - stateId = PBS_HOT; - else if (btn->features & QStyleOptionButton::DefaultButton) - stateId = PBS_DEFAULTED; - - int border = proxy()->pixelMetric(PM_DefaultFrameWidth, btn, widget); - rect = option->rect.adjusted(border, border, -border, -border); - - if (SUCCEEDED(GetThemeMargins(theme, nullptr, BP_PUSHBUTTON, stateId, TMT_CONTENTMARGINS, nullptr, &borderSize))) { - rect.adjust(borderSize.cxLeftWidth, borderSize.cyTopHeight, - -borderSize.cxRightWidth, -borderSize.cyBottomHeight); - rect = visualRect(option->direction, option->rect, rect); - } - } - } - break; - - case SE_HeaderArrow: - { - QRect r = rect; - int h = option->rect.height(); - int w = option->rect.width(); - int x = option->rect.x(); - int y = option->rect.y(); - int margin = proxy()->pixelMetric(QStyle::PM_HeaderMargin, option, widget); - - XPThemeData theme(widget, nullptr, - QWindowsXPStylePrivate::HeaderTheme, - HP_HEADERSORTARROW, HSAS_SORTEDDOWN, option->rect); - - int arrowWidth = 13; - int arrowHeight = 5; - if (theme.isValid()) { - const QSizeF size = theme.size() * QWindowsStylePrivate::nativeMetricScaleFactor(widget); - if (!size.isEmpty()) { - arrowWidth = qRound(size.width()); - arrowHeight = qRound(size.height()); - } - } - if (option->state & State_Horizontal) { - r.setRect(x + w/2 - arrowWidth/2, y , arrowWidth, arrowHeight); - } else { - int vert_size = w / 2; - r.setRect(x + 5, y + h - margin * 2 - vert_size, - w - margin * 2 - 5, vert_size); - } - rect = visualRect(option->direction, option->rect, r); - } - break; - - case SE_HeaderLabel: - { - int margin = proxy()->pixelMetric(QStyle::PM_HeaderMargin, option, widget); - QRect r = option->rect; - r.setRect(option->rect.x() + margin, option->rect.y() + margin, - option->rect.width() - margin * 2, option->rect.height() - margin * 2); - if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) { - // Subtract width needed for arrow, if there is one - if (header->sortIndicator != QStyleOptionHeader::None) { - if (!(option->state & State_Horizontal)) //horizontal arrows are positioned on top - r.setHeight(r.height() - (option->rect.width() / 2) - (margin * 2)); - } - } - rect = visualRect(option->direction, option->rect, r); - } - break; - case SE_ProgressBarContents: - rect = QCommonStyle::subElementRect(SE_ProgressBarGroove, option, widget); - break; - case SE_ItemViewItemDecoration: - if (qstyleoption_cast<const QStyleOptionViewItem *>(option)) - rect.adjust(-2, 0, 2, 0); - break; - case SE_ItemViewItemFocusRect: - if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(option)) { - QRect textRect = subElementRect(QStyle::SE_ItemViewItemText, option, widget); - QRect displayRect = subElementRect(QStyle::SE_ItemViewItemDecoration, option, widget); - if (!vopt->icon.isNull()) - rect = textRect.united(displayRect); - else - rect = textRect; - rect = rect.adjusted(1, 0, -1, 0); - } - break; - default: - break; - } - return rect; -} - - -/* - This function is used by subControlRect to check if a button - should be drawn for the given subControl given a set of window flags. -*/ -static bool buttonVisible(const QStyle::SubControl sc, const QStyleOptionTitleBar *tb){ - - bool isMinimized = tb->titleBarState & Qt::WindowMinimized; - bool isMaximized = tb->titleBarState & Qt::WindowMaximized; - const auto flags = tb->titleBarFlags; - bool retVal = false; - switch (sc) { - case QStyle::SC_TitleBarContextHelpButton: - if (flags & Qt::WindowContextHelpButtonHint) - retVal = true; - break; - case QStyle::SC_TitleBarMinButton: - if (!isMinimized && (flags & Qt::WindowMinimizeButtonHint)) - retVal = true; - break; - case QStyle::SC_TitleBarNormalButton: - if (isMinimized && (flags & Qt::WindowMinimizeButtonHint)) - retVal = true; - else if (isMaximized && (flags & Qt::WindowMaximizeButtonHint)) - retVal = true; - break; - case QStyle::SC_TitleBarMaxButton: - if (!isMaximized && (flags & Qt::WindowMaximizeButtonHint)) - retVal = true; - break; - case QStyle::SC_TitleBarShadeButton: - if (!isMinimized && flags & Qt::WindowShadeButtonHint) - retVal = true; - break; - case QStyle::SC_TitleBarUnshadeButton: - if (isMinimized && flags & Qt::WindowShadeButtonHint) - retVal = true; - break; - case QStyle::SC_TitleBarCloseButton: - if (flags & Qt::WindowSystemMenuHint) - retVal = true; - break; - case QStyle::SC_TitleBarSysMenu: - if (flags & Qt::WindowSystemMenuHint) - retVal = true; - break; - default : - retVal = true; - } - return retVal; -} - - -/*! \internal */ -int QWindowsVistaStyle::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, - QStyleHintReturn *returnData) const -{ - QWindowsVistaStylePrivate *d = const_cast<QWindowsVistaStylePrivate*>(d_func()); - int ret = 0; - switch (hint) { - case SH_MessageBox_CenterButtons: - ret = false; - break; - case SH_ToolTip_Mask: - if (option) { - if (QStyleHintReturnMask *mask = qstyleoption_cast<QStyleHintReturnMask*>(returnData)) { - ret = true; - XPThemeData themeData(widget, nullptr, - QWindowsXPStylePrivate::ToolTipTheme, - TTP_STANDARD, TTSS_NORMAL, option->rect); - mask->region = d->region(themeData); - } - } - break; - case SH_Table_GridLineColor: - if (option) - ret = int(option->palette.color(QPalette::Base).darker(118).rgba()); - else - ret = -1; - break; - case SH_Header_ArrowAlignment: - ret = Qt::AlignTop | Qt::AlignHCenter; - break; - default: - ret = QWindowsXPStyle::styleHint(hint, option, widget, returnData); - break; - } - return ret; -} - - -/*! - \internal - */ -QRect QWindowsVistaStyle::subControlRect(ComplexControl control, const QStyleOptionComplex *option, - SubControl subControl, const QWidget *widget) const -{ - if (!QWindowsVistaStylePrivate::useVista()) - return QWindowsStyle::subControlRect(control, option, subControl, widget); - - QRect rect = QWindowsXPStyle::subControlRect(control, option, subControl, widget); - switch (control) { -#if QT_CONFIG(combobox) - case CC_ComboBox: - if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(option)) { - const int x = cb->rect.x(), y = cb->rect.y(), wi = cb->rect.width(), he = cb->rect.height(); - const int margin = cb->frame ? 3 : 0; - const int bmarg = cb->frame ? 2 : 0; - const int arrowWidth = qRound(QStyleHelper::dpiScaled(16, option)); - const int arrowButtonWidth = bmarg + arrowWidth; - const int xpos = x + wi - arrowButtonWidth; - - switch (subControl) { - case SC_ComboBoxFrame: - rect = cb->rect; - break; - case SC_ComboBoxArrow: - rect.setRect(xpos, y , arrowButtonWidth, he); - break; - case SC_ComboBoxEditField: - rect.setRect(x + margin, y + margin, wi - 2 * margin - arrowWidth, he - 2 * margin); - break; - case SC_ComboBoxListBoxPopup: - rect = cb->rect; - break; - default: - break; - } - rect = visualRect(cb->direction, cb->rect, rect); - return rect; - } - break; -#endif // QT_CONFIG(combobox) - case CC_TitleBar: - if (const QStyleOptionTitleBar *tb = qstyleoption_cast<const QStyleOptionTitleBar *>(option)) { - if (!buttonVisible(subControl, tb)) - return rect; - const qreal factor = QWindowsStylePrivate::nativeMetricScaleFactor(widget); - const bool isToolTitle = false; - const int height = tb->rect.height(); - const int width = tb->rect.width(); - const int buttonWidth = - qRound(qreal(GetSystemMetrics(SM_CXSIZE)) * factor - QStyleHelper::dpiScaled(4, option)); - - const int frameWidth = proxy()->pixelMetric(PM_MdiSubWindowFrameWidth, option, widget); - const bool sysmenuHint = (tb->titleBarFlags & Qt::WindowSystemMenuHint) != 0; - const bool minimizeHint = (tb->titleBarFlags & Qt::WindowMinimizeButtonHint) != 0; - const bool maximizeHint = (tb->titleBarFlags & Qt::WindowMaximizeButtonHint) != 0; - const bool contextHint = (tb->titleBarFlags & Qt::WindowContextHelpButtonHint) != 0; - const bool shadeHint = (tb->titleBarFlags & Qt::WindowShadeButtonHint) != 0; - - switch (subControl) { - case SC_TitleBarLabel: - rect = QRect(frameWidth, 0, width - (buttonWidth + frameWidth + 10), height); - if (isToolTitle) { - if (sysmenuHint) { - rect.adjust(0, 0, int(-buttonWidth - 3 * factor), 0); - } - if (minimizeHint || maximizeHint) - rect.adjust(0, 0, int(-buttonWidth - 2 * factor), 0); - } else { - if (sysmenuHint) { - const int leftOffset = int(height - 8 * factor); - rect.adjust(leftOffset, 0, 0, int(4 * factor)); - } - if (minimizeHint) - rect.adjust(0, 0, int(-buttonWidth - 2 * factor), 0); - if (maximizeHint) - rect.adjust(0, 0, int(-buttonWidth - 2 * factor), 0); - if (contextHint) - rect.adjust(0, 0, int(-buttonWidth - 2 * factor), 0); - if (shadeHint) - rect.adjust(0, 0, int(-buttonWidth - 2 * factor), 0); - } - rect.translate(0, int(2 * factor)); - rect = visualRect(option->direction, option->rect, rect); - break; - case SC_TitleBarSysMenu: - { - const int controlTop = int(6 * factor); - const int controlHeight = int(height - controlTop - 3 * factor); - int iconExtent = proxy()->pixelMetric(PM_SmallIconSize, option); - QSize iconSize = tb->icon.actualSize(QSize(iconExtent, iconExtent)); - if (tb->icon.isNull()) - iconSize = QSize(controlHeight, controlHeight); - int hPad = (controlHeight - iconSize.height())/2; - int vPad = (controlHeight - iconSize.width())/2; - rect = QRect(frameWidth + hPad, controlTop + vPad, iconSize.width(), iconSize.height()); - rect.translate(0, int(3 * factor)); - rect = visualRect(option->direction, option->rect, rect); - } - break; - default: - break; - } - } - break; - default: - break; - } - return rect; -} - -/*! - \internal - */ -QStyle::SubControl QWindowsVistaStyle::hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, - const QPoint &pos, const QWidget *widget) const -{ - if (!QWindowsVistaStylePrivate::useVista()) { - return QWindowsStyle::hitTestComplexControl(control, option, pos, widget); - } - return QWindowsXPStyle::hitTestComplexControl(control, option, pos, widget); -} - -int QWindowsVistaStylePrivate::fixedPixelMetric(QStyle::PixelMetric pm) -{ - switch (pm) { - case QStyle::PM_DockWidgetTitleBarButtonMargin: - return 5; - case QStyle::PM_ScrollBarSliderMin: - return 18; - case QStyle::PM_MenuHMargin: - case QStyle::PM_MenuVMargin: - return 0; - case QStyle::PM_MenuPanelWidth: - return 3; - default: - break; - } - return QWindowsVistaStylePrivate::InvalidMetric; -} - -/*! - \internal - */ -int QWindowsVistaStyle::pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const -{ - if (!QWindowsVistaStylePrivate::useVista()) - return QWindowsStyle::pixelMetric(metric, option, widget); - - int ret = QWindowsVistaStylePrivate::fixedPixelMetric(metric); - if (ret != QWindowsStylePrivate::InvalidMetric) - return int(QStyleHelper::dpiScaled(ret, option)); - - return QWindowsXPStyle::pixelMetric(metric, option, widget); -} - -/*! - \internal - */ -QPalette QWindowsVistaStyle::standardPalette() const -{ - return QWindowsXPStyle::standardPalette(); -} - -/*! - \internal - */ -void QWindowsVistaStyle::polish(QApplication *app) -{ - QWindowsXPStyle::polish(app); -} - -/*! - \internal - */ -void QWindowsVistaStyle::polish(QWidget *widget) -{ - QWindowsXPStyle::polish(widget); -#if QT_CONFIG(lineedit) - if (qobject_cast<QLineEdit*>(widget)) - widget->setAttribute(Qt::WA_Hover); - else -#endif // QT_CONFIG(lineedit) - if (qobject_cast<QGroupBox*>(widget)) - widget->setAttribute(Qt::WA_Hover); -#if QT_CONFIG(commandlinkbutton) - else if (qobject_cast<QCommandLinkButton*>(widget)) { - QFont buttonFont = widget->font(); - buttonFont.setFamilies(QStringList{QLatin1String("Segoe UI")}); - widget->setFont(buttonFont); - } -#endif // QT_CONFIG(commandlinkbutton) - else if (widget->inherits("QTipLabel")){ - //note that since tooltips are not reused - //we do not have to care about unpolishing - widget->setContentsMargins(3, 0, 4, 0); - COLORREF bgRef; - HTHEME theme = OpenThemeData(widget ? QWindowsVistaStylePrivate::winId(widget) : nullptr, L"TOOLTIP"); - if (theme && SUCCEEDED(GetThemeColor(theme, TTP_STANDARD, TTSS_NORMAL, TMT_TEXTCOLOR, &bgRef))) { - QColor textColor = QColor::fromRgb(bgRef); - QPalette pal; - pal.setColor(QPalette::All, QPalette::ToolTipText, textColor); - widget->setPalette(pal); - } - } else if (qobject_cast<QMessageBox *> (widget)) { - widget->setAttribute(Qt::WA_StyledBackground); -#if QT_CONFIG(dialogbuttonbox) - QDialogButtonBox *buttonBox = widget->findChild<QDialogButtonBox *>(QLatin1String("qt_msgbox_buttonbox")); - if (buttonBox) - buttonBox->setContentsMargins(0, 9, 0, 0); -#endif - } -#if QT_CONFIG(inputdialog) - else if (qobject_cast<QInputDialog *> (widget)) { - widget->setAttribute(Qt::WA_StyledBackground); -#if QT_CONFIG(dialogbuttonbox) - QDialogButtonBox *buttonBox = widget->findChild<QDialogButtonBox *>(QLatin1String("qt_inputdlg_buttonbox")); - if (buttonBox) - buttonBox->setContentsMargins(0, 9, 0, 0); -#endif - } -#endif // QT_CONFIG(inputdialog) - else if (QTreeView *tree = qobject_cast<QTreeView *> (widget)) { - tree->viewport()->setAttribute(Qt::WA_Hover); - } - else if (QListView *list = qobject_cast<QListView *> (widget)) { - list->viewport()->setAttribute(Qt::WA_Hover); - } -} - -/*! - \internal - */ -void QWindowsVistaStyle::unpolish(QWidget *widget) -{ - QWindowsXPStyle::unpolish(widget); - - QWindowsVistaStylePrivate *d = d_func(); - - d->stopAnimation(widget); - -#if QT_CONFIG(lineedit) - if (qobject_cast<QLineEdit*>(widget)) - widget->setAttribute(Qt::WA_Hover, false); - else -#endif // QT_CONFIG(lineedit) - if (qobject_cast<QGroupBox*>(widget)) - widget->setAttribute(Qt::WA_Hover, false); - else if (qobject_cast<QMessageBox *> (widget)) { - widget->setAttribute(Qt::WA_StyledBackground, false); -#if QT_CONFIG(dialogbuttonbox) - QDialogButtonBox *buttonBox = widget->findChild<QDialogButtonBox *>(QLatin1String("qt_msgbox_buttonbox")); - if (buttonBox) - buttonBox->setContentsMargins(0, 0, 0, 0); -#endif - } -#if QT_CONFIG(inputdialog) - else if (qobject_cast<QInputDialog *> (widget)) { - widget->setAttribute(Qt::WA_StyledBackground, false); -#if QT_CONFIG(dialogbuttonbox) - QDialogButtonBox *buttonBox = widget->findChild<QDialogButtonBox *>(QLatin1String("qt_inputdlg_buttonbox")); - if (buttonBox) - buttonBox->setContentsMargins(0, 0, 0, 0); -#endif - } -#endif // QT_CONFIG(inputdialog) - else if (QTreeView *tree = qobject_cast<QTreeView *> (widget)) { - tree->viewport()->setAttribute(Qt::WA_Hover, false); - } -#if QT_CONFIG(commandlinkbutton) - else if (qobject_cast<QCommandLinkButton*>(widget)) { - QFont font = QApplication::font("QCommandLinkButton"); - QFont widgetFont = widget->font(); - widgetFont.setFamilies(font.families()); //Only family set by polish - widget->setFont(widgetFont); - } -#endif // QT_CONFIG(commandlinkbutton) -} - - -/*! - \internal - */ -void QWindowsVistaStyle::unpolish(QApplication *app) -{ - QWindowsXPStyle::unpolish(app); -} - -/*! - \internal - */ -void QWindowsVistaStyle::polish(QPalette &pal) -{ - QWindowsStyle::polish(pal); - pal.setBrush(QPalette::AlternateBase, pal.base().color().darker(104)); -} - -/*! - \internal - */ -QPixmap QWindowsVistaStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOption *option, - const QWidget *widget) const -{ - if (!QWindowsVistaStylePrivate::useVista()) { - return QWindowsStyle::standardPixmap(standardPixmap, option, widget); - } - return QWindowsXPStyle::standardPixmap(standardPixmap, option, widget); -} - -QWindowsVistaStylePrivate::QWindowsVistaStylePrivate() : - QWindowsXPStylePrivate() -{ -} - -bool QWindowsVistaStylePrivate::transitionsEnabled() const -{ - BOOL animEnabled = false; - if (SystemParametersInfo(SPI_GETCLIENTAREAANIMATION, 0, &animEnabled, 0)) - { - if (animEnabled) - return true; - } - return false; -} - -/*! -\reimp -*/ -QIcon QWindowsVistaStyle::standardIcon(StandardPixmap standardIcon, - const QStyleOption *option, - const QWidget *widget) const -{ - if (!QWindowsVistaStylePrivate::useVista()) { - return QWindowsStyle::standardIcon(standardIcon, option, widget); - } - - QWindowsVistaStylePrivate *d = const_cast<QWindowsVistaStylePrivate *>(d_func()); - switch (standardIcon) { - case SP_CommandLink: - { - XPThemeData theme(nullptr, nullptr, - QWindowsXPStylePrivate::ButtonTheme, - BP_COMMANDLINKGLYPH, CMDLGS_NORMAL); - if (theme.isValid()) { - const QSize size = (theme.size() * QWindowsStylePrivate::nativeMetricScaleFactor(widget)).toSize(); - QIcon linkGlyph; - QPixmap pm(size); - pm.fill(Qt::transparent); - QPainter p(&pm); - theme.painter = &p; - theme.rect = QRect(QPoint(0, 0), size); - d->drawBackground(theme); - linkGlyph.addPixmap(pm, QIcon::Normal, QIcon::Off); // Normal - pm.fill(Qt::transparent); - - theme.stateId = CMDLGS_PRESSED; - d->drawBackground(theme); - linkGlyph.addPixmap(pm, QIcon::Normal, QIcon::On); // Pressed - pm.fill(Qt::transparent); - - theme.stateId = CMDLGS_HOT; - d->drawBackground(theme); - linkGlyph.addPixmap(pm, QIcon::Active, QIcon::Off); // Hover - pm.fill(Qt::transparent); - - theme.stateId = CMDLGS_DISABLED; - d->drawBackground(theme); - linkGlyph.addPixmap(pm, QIcon::Disabled, QIcon::Off); // Disabled - return linkGlyph; - } - } - break; - default: - break; - } - return QWindowsXPStyle::standardIcon(standardIcon, option, widget); -} - -QT_END_NAMESPACE diff --git a/src/quicknativestyle/qstyle/windows/qquickwindowsvistastyle_p.h b/src/quicknativestyle/qstyle/windows/qquickwindowsvistastyle_p.h deleted file mode 100644 index 07cd2b8a..00000000 --- a/src/quicknativestyle/qstyle/windows/qquickwindowsvistastyle_p.h +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWINDOWSVISTASTYLE_P_H -#define QWINDOWSVISTASTYLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtWidgets/private/qtwidgetsglobal_p.h> -#include "qquickwindowsxpstyle_p.h" - -QT_BEGIN_NAMESPACE - -class QWindowsVistaStylePrivate; -class QWindowsVistaStyle : public QWindowsXPStyle -{ - Q_OBJECT -public: - QWindowsVistaStyle(); - ~QWindowsVistaStyle() override; - - void drawPrimitive(PrimitiveElement element, const QStyleOption *option, - QPainter *painter, - const QWidget *widget = nullptr) const override; - void drawControl(ControlElement element, const QStyleOption *option, - QPainter *painter, const QWidget *widget) const override; - void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, - QPainter *painter, const QWidget *widget) const override; - QSize sizeFromContents(ContentsType type, const QStyleOption *option, - const QSize &size, const QWidget *widget) const override; - - QRect subElementRect(SubElement element, const QStyleOption *option, - const QWidget *widget) const override; - QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, - SubControl sc, const QWidget *widget) const override; - - SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex *option, - const QPoint &pos, const QWidget *widget = nullptr) const override; - - QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = nullptr, - const QWidget *widget = nullptr) const override; - QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, - const QWidget *widget = nullptr) const override; - int pixelMetric(PixelMetric metric, const QStyleOption *option = nullptr, - const QWidget *widget = nullptr) const override; - int styleHint(StyleHint hint, const QStyleOption *opt = nullptr, - const QWidget *widget = nullptr, QStyleHintReturn *returnData = nullptr) const override; - - void polish(QWidget *widget) override; - void unpolish(QWidget *widget) override; - void polish(QPalette &pal) override; - void polish(QApplication *app) override; - void unpolish(QApplication *app) override; - QPalette standardPalette() const override; - -private: - Q_DISABLE_COPY_MOVE(QWindowsVistaStyle) - Q_DECLARE_PRIVATE(QWindowsVistaStyle) - friend class QStyleFactory; -}; - -QT_END_NAMESPACE - -#endif // QWINDOWSVISTASTYLE_P_H diff --git a/src/quicknativestyle/qstyle/windows/qquickwindowsvistastyle_p_p.h b/src/quicknativestyle/qstyle/windows/qquickwindowsvistastyle_p_p.h deleted file mode 100644 index a5383175..00000000 --- a/src/quicknativestyle/qstyle/windows/qquickwindowsvistastyle_p_p.h +++ /dev/null @@ -1,204 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWINDOWSVISTASTYLE_P_P_H -#define QWINDOWSVISTASTYLE_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header -// file may change from version to version without notice, or even be removed. -// -// We mean it. -// - -#include <QtWidgets/private/qtwidgetsglobal_p.h> -#include "qquickwindowsvistastyle_p.h" -#include "qquickwindowsxpstyle_p_p.h" -#include <private/qstyleanimation_p.h> -#include <private/qpaintengine_raster_p.h> -#include <qpaintengine.h> -#include <qwidget.h> -#include <qapplication.h> -#include <qpixmapcache.h> -#include <qstyleoption.h> -#if QT_CONFIG(pushbutton) -#include <qpushbutton.h> -#endif -#include <qradiobutton.h> -#if QT_CONFIG(lineedit) -#include <qlineedit.h> -#endif -#include <qgroupbox.h> -#if QT_CONFIG(toolbutton) -#include <qtoolbutton.h> -#endif -#if QT_CONFIG(spinbox) -#include <qspinbox.h> -#endif -#if QT_CONFIG(toolbar) -#include <qtoolbar.h> -#endif -#if QT_CONFIG(combobox) -#include <qcombobox.h> -#endif -#if QT_CONFIG(scrollbar) -#include <qscrollbar.h> -#endif -#if QT_CONFIG(progressbar) -#include <qprogressbar.h> -#endif -#if QT_CONFIG(dockwidget) -#include <qdockwidget.h> -#endif -#if QT_CONFIG(listview) -#include <qlistview.h> -#endif -#if QT_CONFIG(treeview) -#include <qtreeview.h> -#endif -#include <qtextedit.h> -#include <qmessagebox.h> -#if QT_CONFIG(dialogbuttonbox) -#include <qdialogbuttonbox.h> -#endif -#include <qinputdialog.h> -#if QT_CONFIG(tableview) -#include <qtableview.h> -#endif -#include <qdatetime.h> -#if QT_CONFIG(commandlinkbutton) -#include <qcommandlinkbutton.h> -#endif - -QT_BEGIN_NAMESPACE - -#if !defined(SCHEMA_VERIFY_VSSYM32) -#define TMT_ANIMATIONDURATION 5006 -#define TMT_TRANSITIONDURATIONS 6000 -#define EP_EDITBORDER_NOSCROLL 6 -#define EP_EDITBORDER_HVSCROLL 9 -#define EP_BACKGROUND 3 -#define EBS_NORMAL 1 -#define EBS_HOT 2 -#define EBS_DISABLED 3 -#define EBS_READONLY 5 -#define PBS_DEFAULTED_ANIMATING 6 -#define MBI_NORMAL 1 -#define MBI_HOT 2 -#define MBI_PUSHED 3 -#define MBI_DISABLED 4 -#define MB_ACTIVE 1 -#define MB_INACTIVE 2 -#define PP_FILL 5 -#define PP_FILLVERT 6 -#define PP_MOVEOVERLAY 8 -#define PP_MOVEOVERLAYVERT 10 -#define MENU_BARBACKGROUND 7 -#define MENU_BARITEM 8 -#define MENU_POPUPCHECK 11 -#define MENU_POPUPCHECKBACKGROUND 12 -#define MENU_POPUPGUTTER 13 -#define MENU_POPUPITEM 14 -#define MENU_POPUPBORDERS 10 -#define MENU_POPUPSEPARATOR 15 -#define MC_CHECKMARKNORMAL 1 -#define MC_CHECKMARKDISABLED 2 -#define MC_BULLETNORMAL 3 -#define MC_BULLETDISABLED 4 -#define ABS_UPHOVER 17 -#define ABS_DOWNHOVER 18 -#define ABS_LEFTHOVER 19 -#define ABS_RIGHTHOVER 20 -#define CP_DROPDOWNBUTTONRIGHT 6 -#define CP_DROPDOWNBUTTONLEFT 7 -#define SCRBS_HOVER 5 -#define TVP_HOTGLYPH 4 -#define SPI_GETCLIENTAREAANIMATION 0x1042 -#define TDLG_PRIMARYPANEL 1 -#define TDLG_SECONDARYPANEL 8 -#endif - -class QWindowsVistaAnimation : public QBlendStyleAnimation -{ - Q_OBJECT -public: - QWindowsVistaAnimation(Type type, QObject *target) : QBlendStyleAnimation(type, target) { } - - bool isUpdateNeeded() const override; - void paint(QPainter *painter, const QStyleOption *option); -}; - - -// Handles state transition animations -class QWindowsVistaTransition : public QWindowsVistaAnimation -{ - Q_OBJECT -public: - QWindowsVistaTransition(QObject *target) : QWindowsVistaAnimation(Transition, target) {} -}; - - -// Handles pulse animations (default buttons) -class QWindowsVistaPulse: public QWindowsVistaAnimation -{ - Q_OBJECT -public: - QWindowsVistaPulse(QObject *target) : QWindowsVistaAnimation(Pulse, target) {} -}; - - -class QWindowsVistaStylePrivate : public QWindowsXPStylePrivate -{ - Q_DECLARE_PUBLIC(QWindowsVistaStyle) - -public: - QWindowsVistaStylePrivate(); - - static int fixedPixelMetric(QStyle::PixelMetric pm); - static inline bool useVista(); - bool transitionsEnabled() const; -}; - -QT_END_NAMESPACE - -#endif // QWINDOWSVISTASTYLE_P_P_H diff --git a/src/quicknativestyle/qstyle/windows/qquickwindowsxpstyle.cpp b/src/quicknativestyle/qstyle/windows/qquickwindowsxpstyle.cpp deleted file mode 100644 index a3e8ef20..00000000 --- a/src/quicknativestyle/qstyle/windows/qquickwindowsxpstyle.cpp +++ /dev/null @@ -1,4149 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "qquickstylehelper_p.h" -#include "qquickwindowsxpstyle_p.h" -#include "qquickwindowsxpstyle_p_p.h" - -#include <private/qobject_p.h> -#include <private/qpaintengine_raster_p.h> -#include <qpa/qplatformnativeinterface.h> -#include <qpainter.h> -#include <qpaintengine.h> -#include <qbackingstore.h> -#include <qpixmapcache.h> -#include <qpa/qplatformnativeinterface.h> -#include <qvarlengtharray.h> -#include <qdebug.h> - -#include <algorithm> - -QT_BEGIN_NAMESPACE - -namespace QQC2 { - -// General const values -static const int windowsItemFrame = 2; // menu item frame width -static const int windowsItemHMargin = 3; // menu item hor text margin -static const int windowsItemVMargin = 0; // menu item ver text margin -static const int windowsArrowHMargin = 6; // arrow horizontal margin -static const int windowsRightBorder = 12; // right border on windows - -// Theme names matching the QWindowsXPStylePrivate::Theme enumeration. -static const wchar_t *themeNames[QWindowsXPStylePrivate::NThemes] = -{ - L"BUTTON", L"COMBOBOX", L"EDIT", L"HEADER", L"LISTVIEW", - L"MENU", L"PROGRESS", L"REBAR", L"SCROLLBAR", L"SPIN", - L"TAB", L"TASKDIALOG", L"TOOLBAR", L"TOOLTIP", L"TRACKBAR", - L"TREEVIEW", L"WINDOW", L"STATUS", L"TREEVIEW" -}; - -// Theme data helper ------------------------------------------------------------------------------ -/* \internal - Returns \c true if the themedata is valid for use. -*/ -bool XPThemeData::isValid() -{ - return QWindowsXPStylePrivate::useXP() && theme >= 0 && handle(); -} - - -/* \internal - Returns the theme engine handle to the specific class. - If the handle hasn't been opened before, it opens the data, and - adds it to a static map, for caching. -*/ -HTHEME XPThemeData::handle() -{ - if (!QWindowsXPStylePrivate::useXP()) - return nullptr; - - if (!htheme) - htheme = QWindowsXPStylePrivate::createTheme(theme, QWindowsXPStylePrivate::winId(window)); - return htheme; -} - -/* \internal - Converts a QRect to the native RECT structure. -*/ -RECT XPThemeData::toRECT(const QRect &qr) -{ - RECT r; - r.left = qr.x(); - r.right = qr.x() + qr.width(); - r.top = qr.y(); - r.bottom = qr.y() + qr.height(); - return r; -} - -/* \internal - Returns the native region of a part, if the part is considered - transparent. The region is scaled to the parts size (rect). -*/ - -// QWindowsXPStylePrivate ------------------------------------------------------------------------- -// Static initializations -HWND QWindowsXPStylePrivate::m_vistaTreeViewHelper = nullptr; -HTHEME QWindowsXPStylePrivate::m_themes[NThemes]; -bool QWindowsXPStylePrivate::use_xp = false; -QBasicAtomicInt QWindowsXPStylePrivate::ref = Q_BASIC_ATOMIC_INITIALIZER(-1); // -1 based refcounting - -static void qt_add_rect(HRGN &winRegion, QRect r) -{ - HRGN rgn = CreateRectRgn(r.left(), r.top(), r.x() + r.width(), r.y() + r.height()); - if (rgn) { - HRGN dest = CreateRectRgn(0,0,0,0); - int result = CombineRgn(dest, winRegion, rgn, RGN_OR); - if (result) { - DeleteObject(winRegion); - winRegion = dest; - } - DeleteObject(rgn); - } -} - -static HRGN qt_hrgn_from_qregion(const QRegion ®ion) -{ - HRGN hRegion = CreateRectRgn(0,0,0,0); - if (region.rectCount() == 1) { - qt_add_rect(hRegion, region.boundingRect()); - return hRegion; - } - for (const QRect &rect : region) - qt_add_rect(hRegion, rect); - return hRegion; -} - -/* \internal - Checks if the theme engine can/should be used, or if we should - fall back to Windows style. -*/ -bool QWindowsXPStylePrivate::useXP(bool update) -{ - if (update) { - use_xp = IsThemeActive() && (IsAppThemed() || !QCoreApplication::instance()) - && !QWindowsStylePrivate::isDarkMode(); - } - return use_xp; -} - -/* \internal - Handles refcounting, and queries the theme engine for usage. -*/ -void QWindowsXPStylePrivate::init(bool force) -{ - if (ref.ref() && !force) - return; - if (!force) // -1 based atomic refcounting - ref.ref(); - - useXP(true); - std::fill(m_themes, m_themes + NThemes, nullptr); -} - -/* \internal - Cleans up all static data. -*/ -void QWindowsXPStylePrivate::cleanup(bool force) -{ - if (bufferBitmap) { - if (bufferDC && nullBitmap) - SelectObject(bufferDC, nullBitmap); - DeleteObject(bufferBitmap); - bufferBitmap = nullptr; - } - - if (bufferDC) - DeleteDC(bufferDC); - bufferDC = nullptr; - - if (ref.deref() && !force) - return; - if (!force) // -1 based atomic refcounting - ref.deref(); - - use_xp = false; - cleanupHandleMap(); -} - -/* In order to obtain the correct VistaTreeViewTheme (arrows for PE_IndicatorBranch), - * we need to set the windows "explorer" theme explicitly on a native - * window and open the "TREEVIEW" theme handle passing its window handle - * in order to get Vista-style item view themes (particulary drawBackground() - * for selected items needs this). - * We invoke a service of the native Windows interface to create - * a non-visible window handle, open the theme on it and insert it into - * the cache so that it is found by XPThemeData::handle() first. - */ - -static inline HWND createTreeViewHelperWindow() -{ - if (QPlatformNativeInterface *ni = QGuiApplication::platformNativeInterface()) { - void *hwnd = nullptr; - void *wndProc = reinterpret_cast<void *>(DefWindowProc); - if (QMetaObject::invokeMethod(ni, "createMessageWindow", Qt::DirectConnection, - Q_RETURN_ARG(void*, hwnd), - Q_ARG(QString, QStringLiteral("QTreeViewThemeHelperWindowClass")), - Q_ARG(QString, QStringLiteral("QTreeViewThemeHelperWindow")), - Q_ARG(void*, wndProc)) && hwnd) { - return reinterpret_cast<HWND>(hwnd); - } - } - return nullptr; -} - -bool QWindowsXPStylePrivate::initVistaTreeViewTheming() -{ - if (m_vistaTreeViewHelper) - return true; - - m_vistaTreeViewHelper = createTreeViewHelperWindow(); - if (!m_vistaTreeViewHelper) { - qWarning("Unable to create the treeview helper window."); - return false; - } - if (FAILED(SetWindowTheme(m_vistaTreeViewHelper, L"explorer", nullptr))) { - qErrnoWarning("SetWindowTheme() failed."); - cleanupVistaTreeViewTheming(); - return false; - } - return true; -} - -void QWindowsXPStylePrivate::cleanupVistaTreeViewTheming() -{ - if (m_vistaTreeViewHelper) { - DestroyWindow(m_vistaTreeViewHelper); - m_vistaTreeViewHelper = nullptr; - } -} - -/* \internal - Closes all open theme data handles to ensure that we don't leak - resources, and that we don't refere to old handles when for - example the user changes the theme style. -*/ -void QWindowsXPStylePrivate::cleanupHandleMap() -{ - for (auto &theme : m_themes) { - if (theme) { - CloseThemeData(theme); - theme = nullptr; - } - } - QWindowsXPStylePrivate::cleanupVistaTreeViewTheming(); -} - -HTHEME QWindowsXPStylePrivate::createTheme(int theme, HWND hwnd) -{ - if (Q_UNLIKELY(theme < 0 || theme >= NThemes || !hwnd)) { - qWarning("Invalid parameters #%d, %p", theme, hwnd); - return nullptr; - } - if (!m_themes[theme]) { - const wchar_t *name = themeNames[theme]; - if (theme == VistaTreeViewTheme && QWindowsXPStylePrivate::initVistaTreeViewTheming()) - hwnd = QWindowsXPStylePrivate::m_vistaTreeViewHelper; - m_themes[theme] = OpenThemeData(hwnd, name); - if (Q_UNLIKELY(!m_themes[theme])) - qErrnoWarning("OpenThemeData() failed for theme %d (%s).", - theme, qPrintable(themeName(theme))); - } - return m_themes[theme]; -} - -QString QWindowsXPStylePrivate::themeName(int theme) -{ - return theme >= 0 && theme < NThemes ? - QString::fromWCharArray(themeNames[theme]) : - QString(); -} - -/* -bool QWindowsXPStylePrivate::isItemViewDelegateLineEdit(const QWidget *widget) -{ - if (!widget) - return false; - const QWidget *parent1 = widget->parentWidget(); - // Exlude dialogs or other toplevels parented on item views. - if (!parent1 || parent1->isWindow()) - return false; - const QWidget *parent2 = parent1->parentWidget(); - return parent2 && widget->inherits("QLineEdit") - && parent2->inherits("QAbstractItemView"); -} -*/ - -/* -// Returns whether base color is set for this widget -bool QWindowsXPStylePrivate::isLineEditBaseColorSet(const QStyleOption *option, const QWidget *widget) -{ - uint resolveMask = option->palette.resolve(); - if (widget) { - // Since spin box includes a line edit we need to resolve the palette mask also from - // the parent, as while the color is always correct on the palette supplied by panel, - // the mask can still be empty. If either mask specifies custom base color, use that. -#if QT_CONFIG(spinbox) - if (const QAbstractSpinBox *spinbox = qobject_cast<QAbstractSpinBox*>(widget->parentWidget())) - resolveMask |= spinbox->palette().resolve(); -#endif // QT_CONFIG(spinbox) - } - return (resolveMask & (1 << QPalette::Base)) != 0; -} -*/ - -/*! \internal - This function will always return a valid window handle, and might - create a limbo widget to do so. - We often need a window handle to for example open theme data, so - this function ensures that we get one. -*/ -HWND QWindowsXPStylePrivate::winId(const QWindow *window) -{ - if (window) - if (const HWND hwnd = reinterpret_cast<HWND>(window->winId())) - return hwnd; - - // Find top level with native window (there might be dialogs that do not have one). - const auto allWindows = QGuiApplication::allWindows(); - for (const QWindow *window : allWindows) { - if (window->isTopLevel() && window->type() != Qt::Desktop && window->handle() != nullptr) - return reinterpret_cast<HWND>(window->winId()); - } - - return GetDesktopWindow(); -} - -/*! \internal - Returns a native buffer (DIB section) of at least the size of - ( \a x , \a y ). The buffer has a 32 bit depth, to not lose - the alpha values on proper alpha-pixmaps. -*/ -HBITMAP QWindowsXPStylePrivate::buffer(int w, int h) -{ - // If we already have a HBITMAP which is of adequate size, just return that - if (bufferBitmap) { - if (bufferW >= w && bufferH >= h) - return bufferBitmap; - // Not big enough, discard the old one - if (bufferDC && nullBitmap) - SelectObject(bufferDC, nullBitmap); - DeleteObject(bufferBitmap); - bufferBitmap = nullptr; - } - - w = qMax(bufferW, w); - h = qMax(bufferH, h); - - if (!bufferDC) { - HDC displayDC = GetDC(nullptr); - bufferDC = CreateCompatibleDC(displayDC); - ReleaseDC(nullptr, displayDC); - } - - // Define the header - BITMAPINFO bmi; - memset(&bmi, 0, sizeof(bmi)); - bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - bmi.bmiHeader.biWidth = w; - bmi.bmiHeader.biHeight = -h; - bmi.bmiHeader.biPlanes = 1; - bmi.bmiHeader.biBitCount = 32; - bmi.bmiHeader.biCompression = BI_RGB; - - // Create the pixmap - bufferPixels = nullptr; - bufferBitmap = CreateDIBSection(bufferDC, &bmi, DIB_RGB_COLORS, reinterpret_cast<void **>(&bufferPixels), nullptr, 0); - GdiFlush(); - nullBitmap = static_cast<HBITMAP>(SelectObject(bufferDC, bufferBitmap)); - - if (Q_UNLIKELY(!bufferBitmap)) { - qErrnoWarning("QWindowsXPStylePrivate::buffer(%dx%d), CreateDIBSection() failed.", w, h); - bufferW = 0; - bufferH = 0; - return nullptr; - } - if (Q_UNLIKELY(!bufferPixels)) { - qErrnoWarning("QWindowsXPStylePrivate::buffer(%dx%d), CreateDIBSection() did not allocate pixel data.", w, h); - bufferW = 0; - bufferH = 0; - return nullptr; - } - bufferW = w; - bufferH = h; -#ifdef DEBUG_XP_STYLE - qDebug("Creating new dib section (%d, %d)", w, h); -#endif - return bufferBitmap; -} - -/*! \internal - Returns \c true if the part contains any transparency at all. This does - not indicate what kind of transparency we're dealing with. It can be - - Alpha transparency - - Masked transparency -*/ -bool QWindowsXPStylePrivate::isTransparent(XPThemeData &themeData) -{ - return IsThemeBackgroundPartiallyTransparent(themeData.handle(), themeData.partId, - themeData.stateId); -} - - -/*! \internal - Returns a QRegion of the region of the part -*/ -QRegion QWindowsXPStylePrivate::region(XPThemeData &themeData) -{ - HRGN hRgn = nullptr; - const qreal factor = QWindowsStylePrivate::nativeMetricScaleFactor(themeData.window); - RECT rect = themeData.toRECT(QRect(themeData.rect.topLeft() / factor, themeData.rect.size() / factor)); - if (!SUCCEEDED(GetThemeBackgroundRegion(themeData.handle(), bufferHDC(), themeData.partId, - themeData.stateId, &rect, &hRgn))) { - return QRegion(); - } - - HRGN dest = CreateRectRgn(0, 0, 0, 0); - const bool success = CombineRgn(dest, hRgn, nullptr, RGN_COPY) != ERROR; - - QRegion region; - - if (success) { - const auto numBytes = GetRegionData(dest, 0, nullptr); - if (numBytes == 0) - return QRegion(); - - char *buf = new (std::nothrow) char[numBytes]; - if (!buf) - return QRegion(); - - RGNDATA *rd = reinterpret_cast<RGNDATA*>(buf); - if (GetRegionData(dest, numBytes, rd) == 0) { - delete [] buf; - return QRegion(); - } - - RECT *r = reinterpret_cast<RECT*>(rd->Buffer); - for (uint i = 0; i < rd->rdh.nCount; ++i) { - QRect rect; - rect.setCoords(int(r->left * factor), int(r->top * factor), int((r->right - 1) * factor), int((r->bottom - 1) * factor)); - ++r; - region |= rect; - } - - delete [] buf; - } - - DeleteObject(hRgn); - DeleteObject(dest); - - return region; -} - -/*! \internal - Returns \c true if the native doublebuffer contains pixels with - varying alpha value. -*/ -bool QWindowsXPStylePrivate::hasAlphaChannel(const QRect &rect) -{ - const int startX = rect.left(); - const int startY = rect.top(); - const int w = rect.width(); - const int h = rect.height(); - - int firstAlpha = -1; - for (int y = startY; y < h/2; ++y) { - auto buffer = reinterpret_cast<const DWORD *>(bufferPixels) + (y * bufferW); - for (int x = startX; x < w; ++x, ++buffer) { - int alpha = (*buffer) >> 24; - if (firstAlpha == -1) - firstAlpha = alpha; - else if (alpha != firstAlpha) - return true; - } - } - return false; -} - -/*! \internal - When the theme engine paints both a true alpha pixmap and a glyph - into our buffer, the glyph might not contain a proper alpha value. - The rule of thumb for premultiplied pixmaps is that the color - values of a pixel can never be higher than the alpha values, so - we use this to our advantage here, and fix all instances where - this occures. -*/ -bool QWindowsXPStylePrivate::fixAlphaChannel(const QRect &rect) -{ - const int startX = rect.left(); - const int startY = rect.top(); - const int w = rect.width(); - const int h = rect.height(); - bool hasFixedAlphaValue = false; - - for (int y = startY; y < h; ++y) { - auto buffer = reinterpret_cast<DWORD *>(bufferPixels) + (y * bufferW); - for (int x = startX; x < w; ++x, ++buffer) { - uint pixel = *buffer; - int alpha = qAlpha(pixel); - if (qRed(pixel) > alpha || qGreen(pixel) > alpha || qBlue(pixel) > alpha) { - *buffer |= 0xff000000; - hasFixedAlphaValue = true; - } - } - } - return hasFixedAlphaValue; -} - -/*! \internal - Swaps the alpha values on certain pixels: - 0xFF?????? -> 0x00?????? - 0x00?????? -> 0xFF?????? - Used to determin the mask of a non-alpha transparent pixmap in - the native doublebuffer, and swap the alphas so we may paint - the image as a Premultiplied QImage with drawImage(), and obtain - the mask transparency. -*/ -bool QWindowsXPStylePrivate::swapAlphaChannel(const QRect &rect, bool allPixels) -{ - const int startX = rect.left(); - const int startY = rect.top(); - const int w = rect.width(); - const int h = rect.height(); - bool valueChange = false; - - // Flip the alphas, so that 255-alpha pixels are 0, and 0-alpha are 255. - for (int y = startY; y < h; ++y) { - auto buffer = reinterpret_cast<DWORD *>(bufferPixels) + (y * bufferW); - for (int x = startX; x < w; ++x, ++buffer) { - if (allPixels) { - *buffer |= 0xFF000000; - continue; - } - unsigned int alphaValue = (*buffer) & 0xFF000000; - if (alphaValue == 0xFF000000) { - *buffer = 0; - valueChange = true; - } else if (alphaValue == 0) { - *buffer |= 0xFF000000; - valueChange = true; - } - } - } - return valueChange; -} - -enum TransformType { SimpleTransform, HighDpiScalingTransform, ComplexTransform }; - -static inline TransformType transformType(const QTransform &transform, qreal devicePixelRatio) -{ - if (transform.type() <= QTransform::TxTranslate) - return SimpleTransform; - if (transform.type() > QTransform::TxScale) - return ComplexTransform; - return qFuzzyCompare(transform.m11(), devicePixelRatio) - && qFuzzyCompare(transform.m22(), devicePixelRatio) - ? HighDpiScalingTransform : ComplexTransform; -} - -// QTBUG-60571: Exclude known fully opaque theme parts which produce values -// invalid in ARGB32_Premultiplied (for example, 0x00ffffff). -static inline bool isFullyOpaque(const XPThemeData &themeData) -{ - return themeData.theme == QWindowsXPStylePrivate::TaskDialogTheme && themeData.partId == TDLG_PRIMARYPANEL; -} - -/*! \internal - Main theme drawing function. - Determines the correct lowlevel drawing method depending on several - factors. - Use drawBackgroundThruNativeBuffer() if: - - Painter does not have an HDC - - Theme part is flipped (mirrored horizontally) - else use drawBackgroundDirectly(). - \note drawBackgroundThruNativeBuffer() can return false for large - sizes due to buffer()/CreateDIBSection() failing. -*/ -bool QWindowsXPStylePrivate::drawBackground(XPThemeData &themeData, qreal correctionFactor) -{ - if (themeData.rect.isEmpty()) - return true; - - QPainter *painter = themeData.painter; - Q_ASSERT_X(painter != nullptr, "QWindowsXPStylePrivate::drawBackground()", "Trying to draw a theme part without a painter"); - if (!painter || !painter->isActive()) - return false; - - painter->save(); - - // Access paintDevice via engine since the painter may - // return the clip device which can still be a widget device in case of grabWidget(). - - //bool translucentToplevel = false; - //const QPaintDevice *paintDevice = painter->device(); - const qreal additionalDevicePixelRatio = themeData.window ? themeData.window->devicePixelRatio() : qreal(1); - Q_ASSERT(painter->device()->devType() != QInternal::Widget); -/* - if (paintDevice->devType() == QInternal::Widget) { - const QWidget *window = static_cast<const QWidget *>(paintDevice)->window(); - translucentToplevel = window->testAttribute(Qt::WA_TranslucentBackground); - } - - const TransformType tt = transformType(painter->deviceTransform(), aditionalDevicePixelRatio); - - bool canDrawDirectly = false; - if (themeData.widget && painter->opacity() == 1.0 && !themeData.rotate - && !isFullyOpaque(themeData) - && tt != ComplexTransform && !themeData.mirrorVertically - && !translucentToplevel) { - // Draw on backing store DC only for real widgets or backing store images. - const QPaintDevice *enginePaintDevice = painter->paintEngine()->paintDevice(); - switch (enginePaintDevice->devType()) { - case QInternal::Widget: - canDrawDirectly = true; - break; - case QInternal::Image: - // Ensure the backing store has received as resize and is initialized. - if (QBackingStore *bs = backingStoreForWidget(themeData.widget)) - if (bs->size().isValid() && bs->paintDevice() == enginePaintDevice) - canDrawDirectly = true; - } - } - - const HDC dc = canDrawDirectly ? hdcForWidgetBackingStore(themeData.widget) : nullptr; - const bool result = dc && qFuzzyCompare(correctionFactor, qreal(1)) - ? drawBackgroundDirectly(dc, themeData, aditionalDevicePixelRatio) - : drawBackgroundThruNativeBuffer(themeData, aditionalDevicePixelRatio, correctionFactor); - */ - const bool result = drawBackgroundThruNativeBuffer(themeData, additionalDevicePixelRatio, correctionFactor); - painter->restore(); - return result; -} - -static inline QRectF scaleRect(const QRectF &r, qreal factor) -{ - return r.isValid() && factor > 1 - ? QRectF(r.topLeft() * factor, r.size() * factor) - : r; -} - -static QRegion scaleRegion(const QRegion ®ion, qreal factor) -{ - if (region.isEmpty() || qFuzzyCompare(factor, qreal(1))) - return region; - QRegion result; - for (const QRect &rect : region) - result += QRectF(QPointF(rect.topLeft()) * factor, QSizeF(rect.size() * factor)).toRect(); - return result; -} - -/*! \internal - This function draws the theme parts directly to the paintengines HDC. - Do not use this if you need to perform other transformations on the - resulting data. -*/ -bool QWindowsXPStylePrivate::drawBackgroundDirectly(HDC dc, XPThemeData &themeData, qreal additionalDevicePixelRatio) -{ - QPainter *painter = themeData.painter; - - const auto &deviceTransform = painter->deviceTransform(); - const QPointF redirectionDelta(deviceTransform.dx(), deviceTransform.dy()); - const QRect area = scaleRect(QRectF(themeData.rect), additionalDevicePixelRatio).translated(redirectionDelta).toRect(); - - QRegion sysRgn = painter->paintEngine()->systemClip(); - if (sysRgn.isEmpty()) - sysRgn = area; - else - sysRgn &= area; - if (painter->hasClipping()) - sysRgn &= scaleRegion(painter->clipRegion(), additionalDevicePixelRatio).translated(redirectionDelta.toPoint()); - HRGN hrgn = qt_hrgn_from_qregion(sysRgn); - SelectClipRgn(dc, hrgn); - -#ifdef DEBUG_XP_STYLE - printf("---[ DIRECT PAINTING ]------------------> Name(%-10s) Part(%d) State(%d)\n", - qPrintable(themeData.name), themeData.partId, themeData.stateId); - showProperties(themeData); -#endif - - RECT drawRECT = themeData.toRECT(area); - DTBGOPTS drawOptions; - memset(&drawOptions, 0, sizeof(drawOptions)); - drawOptions.dwSize = sizeof(drawOptions); - drawOptions.rcClip = themeData.toRECT(sysRgn.boundingRect()); - drawOptions.dwFlags = DTBG_CLIPRECT - | (themeData.noBorder ? DTBG_OMITBORDER : 0) - | (themeData.noContent ? DTBG_OMITCONTENT : 0) - | (themeData.mirrorHorizontally ? DTBG_MIRRORDC : 0); - - const HRESULT result = DrawThemeBackgroundEx(themeData.handle(), dc, themeData.partId, themeData.stateId, &(drawRECT), &drawOptions); - SelectClipRgn(dc, nullptr); - DeleteObject(hrgn); - return SUCCEEDED(result); -} - -/*! \internal - This function uses a secondary Native doublebuffer for painting parts. - It should only be used when the painteengine doesn't provide a proper - HDC for direct painting (e.g. when doing a grabWidget(), painting to - other pixmaps etc), or when special transformations are needed (e.g. - flips (horizonal mirroring only, vertical are handled by the theme - engine). - - \a correctionFactor is an additional factor used to scale up controls - that are too small on High DPI screens, as has been observed for - WP_MDICLOSEBUTTON, WP_MDIRESTOREBUTTON, WP_MDIMINBUTTON (QTBUG-75927). -*/ -bool QWindowsXPStylePrivate::drawBackgroundThruNativeBuffer(XPThemeData &themeData, - qreal additionalDevicePixelRatio, - qreal correctionFactor) -{ - QPainter *painter = themeData.painter; - QRectF rectF = scaleRect(QRectF(themeData.rect), additionalDevicePixelRatio); - - if ((themeData.rotate + 90) % 180 == 0) { // Catch 90,270,etc.. degree flips. - rectF = QRectF(0, 0, rectF.height(), rectF.width()); - } - rectF.moveTo(0, 0); - - const bool hasCorrectionFactor = !qFuzzyCompare(correctionFactor, qreal(1)); - QRect rect = rectF.toRect(); - QRect drawRect = hasCorrectionFactor - ? QRectF(rectF.topLeft() / correctionFactor, rectF.size() / correctionFactor).toRect() : rect; - int partId = themeData.partId; - int stateId = themeData.stateId; - int w = rect.width(); - int h = rect.height(); - - // Values initialized later, either from cached values, or from function calls - AlphaChannelType alphaType = UnknownAlpha; - bool stateHasData = true; // We assume so; - bool hasAlpha = false; - bool partIsTransparent; - bool potentialInvalidAlpha; - - QString pixmapCacheKey = QStringLiteral("$qt_xp_"); - pixmapCacheKey.append(themeName(themeData.theme)); - pixmapCacheKey.append(QLatin1Char('p')); - pixmapCacheKey.append(QString::number(partId)); - pixmapCacheKey.append(QLatin1Char('s')); - pixmapCacheKey.append(QString::number(stateId)); - pixmapCacheKey.append(QLatin1Char('s')); - pixmapCacheKey.append(themeData.noBorder ? QLatin1Char('0') : QLatin1Char('1')); - pixmapCacheKey.append(QLatin1Char('b')); - pixmapCacheKey.append(themeData.noContent ? QLatin1Char('0') : QLatin1Char('1')); - pixmapCacheKey.append(QString::number(w)); - pixmapCacheKey.append(QLatin1Char('w')); - pixmapCacheKey.append(QString::number(h)); - pixmapCacheKey.append(QLatin1Char('h')); - pixmapCacheKey.append(QString::number(additionalDevicePixelRatio)); - pixmapCacheKey.append(QLatin1Char('d')); - if (hasCorrectionFactor) { - pixmapCacheKey.append(QLatin1Char('c')); - pixmapCacheKey.append(QString::number(correctionFactor)); - } - - QPixmap cachedPixmap; - ThemeMapKey key(themeData); - ThemeMapData data = alphaCache.value(key); - - bool haveCachedPixmap = false; - bool isCached = data.dataValid; - if (isCached) { - partIsTransparent = data.partIsTransparent; - hasAlpha = data.hasAlphaChannel; - alphaType = data.alphaType; - potentialInvalidAlpha = data.hadInvalidAlpha; - - haveCachedPixmap = QPixmapCache::find(pixmapCacheKey, &cachedPixmap); - -#ifdef DEBUG_XP_STYLE - char buf[25]; - ::sprintf(buf, "+ Pixmap(%3d, %3d) ]", w, h); - printf("---[ CACHED %s--------> Name(%-10s) Part(%d) State(%d)\n", - haveCachedPixmap ? buf : "]-------------------", - qPrintable(themeData.name), themeData.partId, themeData.stateId); -#endif - } else { - // Not cached, so get values from Theme Engine - BOOL tmt_borderonly = false; - COLORREF tmt_transparentcolor = 0x0; - PROPERTYORIGIN proporigin = PO_NOTFOUND; - GetThemeBool(themeData.handle(), themeData.partId, themeData.stateId, TMT_BORDERONLY, &tmt_borderonly); - GetThemeColor(themeData.handle(), themeData.partId, themeData.stateId, TMT_TRANSPARENTCOLOR, &tmt_transparentcolor); - GetThemePropertyOrigin(themeData.handle(), themeData.partId, themeData.stateId, TMT_CAPTIONMARGINS, &proporigin); - - partIsTransparent = isTransparent(themeData); - - potentialInvalidAlpha = false; - GetThemePropertyOrigin(themeData.handle(), themeData.partId, themeData.stateId, TMT_GLYPHTYPE, &proporigin); - if (proporigin == PO_PART || proporigin == PO_STATE) { - int tmt_glyphtype = GT_NONE; - GetThemeEnumValue(themeData.handle(), themeData.partId, themeData.stateId, TMT_GLYPHTYPE, &tmt_glyphtype); - potentialInvalidAlpha = partIsTransparent && tmt_glyphtype == GT_IMAGEGLYPH; - } - -#ifdef DEBUG_XP_STYLE - printf("---[ NOT CACHED ]-----------------------> Name(%-10s) Part(%d) State(%d)\n", - qPrintable(themeData.name), themeData.partId, themeData.stateId); - printf("-->partIsTransparen = %d\n", partIsTransparent); - printf("-->potentialInvalidAlpha = %d\n", potentialInvalidAlpha); - showProperties(themeData); -#endif - } - bool wasAlphaSwapped = false; - bool wasAlphaFixed = false; - - // OLD PSDK Workaround ------------------------------------------------------------------------ - // See if we need extra clipping for the older PSDK, which does - // not have a DrawThemeBackgroundEx function for DTGB_OMITBORDER - // and DTGB_OMITCONTENT - bool addBorderContentClipping = false; - QRegion extraClip; - QRect area = drawRect; - if (themeData.noBorder || themeData.noContent) { - extraClip = area; - // We are running on a system where the uxtheme.dll does not have - // the DrawThemeBackgroundEx function, so we need to clip away - // borders or contents manually. - - int borderSize = 0; - PROPERTYORIGIN origin = PO_NOTFOUND; - GetThemePropertyOrigin(themeData.handle(), themeData.partId, themeData.stateId, TMT_BORDERSIZE, &origin); - GetThemeInt(themeData.handle(), themeData.partId, themeData.stateId, TMT_BORDERSIZE, &borderSize); - borderSize *= additionalDevicePixelRatio; - - // Clip away border region - if ((origin == PO_CLASS || origin == PO_PART || origin == PO_STATE) && borderSize > 0) { - if (themeData.noBorder) { - extraClip &= area; - area = area.adjusted(-borderSize, -borderSize, borderSize, borderSize); - } - - // Clip away content region - if (themeData.noContent) { - QRegion content = area.adjusted(borderSize, borderSize, -borderSize, -borderSize); - extraClip ^= content; - } - } - addBorderContentClipping = (themeData.noBorder | themeData.noContent); - } - - QImage img; - if (!haveCachedPixmap) { // If the pixmap is not cached, generate it! ------------------------- - if (!buffer(drawRect.width(), drawRect.height())) // Ensure a buffer of at least (w, h) in size - return false; - HDC dc = bufferHDC(); - - // Clear the buffer - if (alphaType != NoAlpha) { - // Consider have separate "memset" function for small chunks for more speedup - memset(bufferPixels, 0x00, bufferW * drawRect.height() * 4); - } - - // Difference between area and rect - int dx = area.x() - drawRect.x(); - int dy = area.y() - drawRect.y(); - - // Adjust so painting rect starts from Origo - rect.moveTo(0,0); - area.moveTo(dx,dy); - DTBGOPTS drawOptions; - drawOptions.dwSize = sizeof(drawOptions); - drawOptions.rcClip = themeData.toRECT(rect); - drawOptions.dwFlags = DTBG_CLIPRECT - | (themeData.noBorder ? DTBG_OMITBORDER : 0) - | (themeData.noContent ? DTBG_OMITCONTENT : 0); - - // Drawing the part into the backing store - RECT wRect(themeData.toRECT(area)); - DrawThemeBackgroundEx(themeData.handle(), dc, themeData.partId, themeData.stateId, &wRect, &drawOptions); - - // If not cached, analyze the buffer data to figure - // out alpha type, and if it contains data - if (!isCached) { - // SHORTCUT: If the part's state has no data, cache it for NOOP later - if (!stateHasData) { - memset(static_cast<void *>(&data), 0, sizeof(data)); - data.dataValid = true; - alphaCache.insert(key, data); - return true; - } - hasAlpha = hasAlphaChannel(rect); - if (!hasAlpha && partIsTransparent) - potentialInvalidAlpha = true; -#if defined(DEBUG_XP_STYLE) && 1 - dumpNativeDIB(drawRect.width(), drawRect.height()); -#endif - } - - // Fix alpha values, if needed - if (potentialInvalidAlpha) - wasAlphaFixed = fixAlphaChannel(drawRect); - - QImage::Format format; - if ((partIsTransparent && !wasAlphaSwapped) || (!partIsTransparent && hasAlpha)) { - format = QImage::Format_ARGB32_Premultiplied; - alphaType = RealAlpha; - } else if (wasAlphaSwapped) { - format = QImage::Format_ARGB32_Premultiplied; - alphaType = MaskAlpha; - } else { - format = QImage::Format_RGB32; - // The image data we got from the theme engine does not have any transparency, - // thus the alpha channel is set to 0. - // However, Format_RGB32 requires the alpha part to be set to 0xff, thus - // we must flip it from 0x00 to 0xff - swapAlphaChannel(rect, true); - alphaType = NoAlpha; - } -#if defined(DEBUG_XP_STYLE) && 1 - printf("Image format is: %s\n", alphaType == RealAlpha ? "Real Alpha" : alphaType == MaskAlpha ? "Masked Alpha" : "No Alpha"); -#endif - img = QImage(bufferPixels, bufferW, bufferH, format); - if (hasCorrectionFactor) - img = img.scaled(w, h, Qt::KeepAspectRatio, Qt::SmoothTransformation); - img.setDevicePixelRatio(additionalDevicePixelRatio); - } - - // Blitting backing store - bool useRegion = partIsTransparent && !hasAlpha && !wasAlphaSwapped; - - QRegion newRegion; - QRegion oldRegion; - if (useRegion) { - newRegion = region(themeData); - oldRegion = painter->clipRegion(); - painter->setClipRegion(newRegion); -#if defined(DEBUG_XP_STYLE) && 0 - printf("Using region:\n"); - for (const QRect &r : newRegion) - printf(" (%d, %d, %d, %d)\n", r.x(), r.y(), r.right(), r.bottom()); -#endif - } - - if (addBorderContentClipping) - painter->setClipRegion(scaleRegion(extraClip, 1.0 / additionalDevicePixelRatio), Qt::IntersectClip); - - if (!themeData.mirrorHorizontally && !themeData.mirrorVertically && !themeData.rotate) { - if (!haveCachedPixmap) - painter->drawImage(themeData.rect, img, rect); - else - painter->drawPixmap(themeData.rect, cachedPixmap); - } else { - // This is _slow_! - // Make a copy containing only the necessary data, and mirror - // on all wanted axes. Then draw the copy. - // If cached, the normal pixmap is cached, instead of caching - // all possible orientations for each part and state. - QImage imgCopy; - if (!haveCachedPixmap) - imgCopy = img.copy(rect); - else - imgCopy = cachedPixmap.toImage(); - - if (themeData.rotate) { - QTransform rotMatrix; - rotMatrix.rotate(themeData.rotate); - imgCopy = imgCopy.transformed(rotMatrix); - } - if (themeData.mirrorHorizontally || themeData.mirrorVertically) { - imgCopy = imgCopy.mirrored(themeData.mirrorHorizontally, themeData.mirrorVertically); - } - painter->drawImage(themeData.rect, - imgCopy); - } - - if (useRegion || addBorderContentClipping) { - if (oldRegion.isEmpty()) - painter->setClipping(false); - else - painter->setClipRegion(oldRegion); - } - - // Cache the pixmap to avoid expensive swapAlphaChannel() calls - if (!haveCachedPixmap && w && h) { - QPixmap pix = QPixmap::fromImage(img).copy(rect); - QPixmapCache::insert(pixmapCacheKey, pix); -#ifdef DEBUG_XP_STYLE - printf("+++Adding pixmap to cache, size(%d, %d), wasAlphaSwapped(%d), wasAlphaFixed(%d), name(%s)\n", - w, h, wasAlphaSwapped, wasAlphaFixed, qPrintable(pixmapCacheKey)); -#endif - } - - // Add to theme part cache - if (!isCached) { - memset(static_cast<void *>(&data), 0, sizeof(data)); - data.dataValid = true; - data.partIsTransparent = partIsTransparent; - data.alphaType = alphaType; - data.hasAlphaChannel = hasAlpha; - data.wasAlphaSwapped = wasAlphaSwapped; - data.hadInvalidAlpha = wasAlphaFixed; - alphaCache.insert(key, data); - } - return true; -} - - -// ------------------------------------------------------------------------------------------------ - -/*! - \class QWindowsXPStyle - \brief The QWindowsXPStyle class provides a Microsoft Windows XP-like look and feel. - - \ingroup appearance - \inmodule QtWidgets - \internal - - \warning This style is only available on the Windows XP platform - because it makes use of Windows XP's style engine. - - Most of the functions are documented in the base classes - QWindowsStyle, QCommonStyle, and QStyle, but the - QWindowsXPStyle overloads of drawComplexControl(), drawControl(), - drawControlMask(), drawPrimitive(), proxy()->subControlRect(), and - sizeFromContents(), are documented here. - - \image qwindowsxpstyle.png - \sa QMacStyle, QWindowsStyle, QFusionStyle -*/ - -/*! - Constructs a QWindowsStyle -*/ -QWindowsXPStyle::QWindowsXPStyle() - : QWindowsStyle(*new QWindowsXPStylePrivate) -{ -} - -/*! - Destroys the style. -*/ -QWindowsXPStyle::~QWindowsXPStyle() = default; - -/*! \reimp */ -QRect QWindowsXPStyle::subElementRect(SubElement sr, const QStyleOption *option) const -{ - if (!QWindowsXPStylePrivate::useXP()) { - return QWindowsStyle::subElementRect(sr, option); - } - - QRect rect(option->rect); - switch (sr) { - case SE_DockWidgetCloseButton: - case SE_DockWidgetFloatButton: - rect = QWindowsStyle::subElementRect(sr, option); - return rect.translated(0, 1); - break; -#if 0 - case SE_TabWidgetTabContents: - if (qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) - { - rect = QWindowsStyle::subElementRect(sr, option); - if (sr == SE_TabWidgetTabContents) { - if (const QTabWidget *tabWidget = qobject_cast<const QTabWidget *>(widget)) { - if (tabWidget->documentMode()) - break; - } - - rect.adjust(0, 0, -2, -2); - } - } - break; - case SE_TabWidgetTabBar: { - rect = QWindowsStyle::subElementRect(sr, option); - const QStyleOptionTabWidgetFrame *twfOption = - qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option); - if (twfOption && twfOption->direction == Qt::RightToLeft - && (twfOption->shape == QTabBar::RoundedNorth - || twfOption->shape == QTabBar::RoundedSouth)) - { - QStyleOptionTab otherOption; - otherOption.shape = (twfOption->shape == QTabBar::RoundedNorth - ? QTabBar::RoundedEast : QTabBar::RoundedSouth); - int overlap = proxy()->pixelMetric(PM_TabBarBaseOverlap, &otherOption); - int borderThickness = proxy()->pixelMetric(PM_DefaultFrameWidth, option); - rect.adjust(-overlap + borderThickness, 0, -overlap + borderThickness, 0); - } - break;} -#endif - case SE_PushButtonContents: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(option)) { - MARGINS borderSize; - if (option->window) { - XPThemeData buttontheme(option->window, nullptr, QWindowsXPStylePrivate::ButtonTheme); - HTHEME theme = buttontheme.handle(); - if (theme) { - int stateId; - if (!(option->state & State_Enabled)) - stateId = PBS_DISABLED; - else if (option->state & State_Sunken) - stateId = PBS_PRESSED; - else if (option->state & State_MouseOver) - stateId = PBS_HOT; - else if (btn->features & QStyleOptionButton::DefaultButton) - stateId = PBS_DEFAULTED; - else - stateId = PBS_NORMAL; - - int border = proxy()->pixelMetric(PM_DefaultFrameWidth, btn); - rect = option->rect.adjusted(border, border, -border, -border); - - if (SUCCEEDED(GetThemeMargins(theme, nullptr, BP_PUSHBUTTON, stateId, TMT_CONTENTMARGINS, nullptr, &borderSize))) { - rect.adjust(borderSize.cxLeftWidth, borderSize.cyTopHeight, - -borderSize.cxRightWidth, -borderSize.cyBottomHeight); - rect = visualRect(option->direction, option->rect, rect); - } - } - } - } - break; - case SE_ProgressBarContents: - rect = QCommonStyle::subElementRect(SE_ProgressBarGroove, option); - if (option->state & QStyle::State_Horizontal) - rect.adjust(4, 3, -4, -3); - else - rect.adjust(3, 2, -3, -2); - break; - default: - rect = QWindowsStyle::subElementRect(sr, option); - } - return rect; -} - -/*! - \reimp -*/ -void QWindowsXPStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *option, QPainter *p) const -{ - QWindowsXPStylePrivate *d = const_cast<QWindowsXPStylePrivate*>(d_func()); - - if (!QWindowsXPStylePrivate::useXP()) { - QWindowsStyle::drawPrimitive(pe, option, p); - return; - } - - int themeNumber = -1; - int partId = 0; - int stateId = 0; - QRect rect = option->rect; - State flags = option->state; - bool hMirrored = false; - bool vMirrored = false; - bool noBorder = false; - bool noContent = false; - int rotate = 0; - - switch (pe) { -#if 0 - case PE_FrameTabBarBase: - if (const QStyleOptionTabBarBase *tbb - = qstyleoption_cast<const QStyleOptionTabBarBase *>(option)) { - p->save(); - switch (tbb->shape) { - case QTabBar::RoundedNorth: - p->setPen(QPen(tbb->palette.dark(), 0)); - p->drawLine(tbb->rect.topLeft(), tbb->rect.topRight()); - break; - case QTabBar::RoundedWest: - p->setPen(QPen(tbb->palette.dark(), 0)); - p->drawLine(tbb->rect.left(), tbb->rect.top(), tbb->rect.left(), tbb->rect.bottom()); - break; - case QTabBar::RoundedSouth: - p->setPen(QPen(tbb->palette.dark(), 0)); - p->drawLine(tbb->rect.left(), tbb->rect.top(), - tbb->rect.right(), tbb->rect.top()); - break; - case QTabBar::RoundedEast: - p->setPen(QPen(tbb->palette.dark(), 0)); - p->drawLine(tbb->rect.topLeft(), tbb->rect.bottomLeft()); - break; - case QTabBar::TriangularNorth: - case QTabBar::TriangularEast: - case QTabBar::TriangularWest: - case QTabBar::TriangularSouth: - p->restore(); - QWindowsStyle::drawPrimitive(pe, option, p); - return; - } - p->restore(); - } - return; -#endif - case PE_PanelButtonBevel: - themeNumber = QWindowsXPStylePrivate::ButtonTheme; - partId = BP_PUSHBUTTON; - if (!(flags & State_Enabled)) - stateId = PBS_DISABLED; - else if ((flags & State_Sunken) || (flags & State_On)) - stateId = PBS_PRESSED; - else if (flags & State_MouseOver) - stateId = PBS_HOT; - //else if (flags & State_ButtonDefault) - // stateId = PBS_DEFAULTED; - else - stateId = PBS_NORMAL; - break; - - case PE_PanelButtonTool: -// if (widget && widget->inherits("QDockWidgetTitleButton")) { -// if (const QWidget *dw = widget->parentWidget()) -// if (dw->isWindow()) -// return; -// } - themeNumber = QWindowsXPStylePrivate::ToolBarTheme; - partId = TP_BUTTON; - if (!(flags & State_Enabled)) - stateId = TS_DISABLED; - else if (flags & State_Sunken) - stateId = TS_PRESSED; - else if (flags & State_MouseOver) - stateId = flags & State_On ? TS_HOTCHECKED : TS_HOT; - else if (flags & State_On) - stateId = TS_CHECKED; - else if (!(flags & State_AutoRaise)) - stateId = TS_HOT; - else - stateId = TS_NORMAL; - break; - - case PE_IndicatorButtonDropDown: - themeNumber = QWindowsXPStylePrivate::ToolBarTheme; - partId = TP_SPLITBUTTONDROPDOWN; - if (!(flags & State_Enabled)) - stateId = TS_DISABLED; - else if (flags & State_Sunken) - stateId = TS_PRESSED; - else if (flags & State_MouseOver) - stateId = flags & State_On ? TS_HOTCHECKED : TS_HOT; - else if (flags & State_On) - stateId = TS_CHECKED; - else if (!(flags & State_AutoRaise)) - stateId = TS_HOT; - else - stateId = TS_NORMAL; - if (option->direction == Qt::RightToLeft) - hMirrored = true; - break; - - case PE_IndicatorCheckBox: - themeNumber = QWindowsXPStylePrivate::ButtonTheme; - partId = BP_CHECKBOX; - if (!(flags & State_Enabled)) - stateId = CBS_UNCHECKEDDISABLED; - else if (flags & State_Sunken) - stateId = CBS_UNCHECKEDPRESSED; - else if (flags & State_MouseOver) - stateId = CBS_UNCHECKEDHOT; - else - stateId = CBS_UNCHECKEDNORMAL; - - if (flags & State_On) - stateId += CBS_CHECKEDNORMAL-1; - else if (flags & State_NoChange) - stateId += CBS_MIXEDNORMAL-1; - - break; - - case PE_IndicatorRadioButton: - themeNumber = QWindowsXPStylePrivate::ButtonTheme; - partId = BP_RADIOBUTTON; - if (!(flags & State_Enabled)) - stateId = RBS_UNCHECKEDDISABLED; - else if (flags & State_Sunken) - stateId = RBS_UNCHECKEDPRESSED; - else if (flags & State_MouseOver) - stateId = RBS_UNCHECKEDHOT; - else - stateId = RBS_UNCHECKEDNORMAL; - - if (flags & State_On) - stateId += RBS_CHECKEDNORMAL-1; - break; - - case PE_IndicatorDockWidgetResizeHandle: - return; - -case PE_Frame: - { - if (flags & State_Raised) - return; - themeNumber = QWindowsXPStylePrivate::ListViewTheme; - partId = LVP_LISTGROUP; - XPThemeData theme(option->window, nullptr, themeNumber, partId); - - if (!(flags & State_Enabled)) - stateId = ETS_DISABLED; - else - stateId = ETS_NORMAL; - int fillType; - if (GetThemeEnumValue(theme.handle(), partId, stateId, TMT_BGTYPE, &fillType) == S_OK) { - if (fillType == BT_BORDERFILL) { - COLORREF bcRef; - GetThemeColor(theme.handle(), partId, stateId, TMT_BORDERCOLOR, &bcRef); - QColor bordercolor(qRgb(GetRValue(bcRef), GetGValue(bcRef), GetBValue(bcRef))); - QPen oldPen = p->pen(); - // int borderSize = 1; - // GetThemeInt(theme.handle(), partId, stateId, TMT_BORDERCOLOR, &borderSize); - - // Inner white border - p->setPen(QPen(option->palette.base().color(), 0)); - const qreal dpi = QStyleHelper::dpi(option); - const auto topLevelAdjustment = QStyleHelper::dpiScaled(0.5, dpi); - const auto bottomRightAdjustment = QStyleHelper::dpiScaled(-1, dpi); - p->drawRect(QRectF(option->rect).adjusted(topLevelAdjustment, topLevelAdjustment, - bottomRightAdjustment, bottomRightAdjustment)); - // Outer dark border - p->setPen(QPen(bordercolor, 0)); - p->drawRect(QRectF(option->rect).adjusted(0, 0, -topLevelAdjustment, -topLevelAdjustment)); - p->setPen(oldPen); - return; - } - if (fillType == BT_NONE) - return; - } - break; - } - case PE_FrameLineEdit: { - // we try to check if this lineedit is a delegate on a QAbstractItemView-derived class. - /* - if (QWindowsXPStylePrivate::isItemViewDelegateLineEdit(widget)) { - QPen oldPen = p->pen(); - // Inner white border - p->setPen(QPen(option->palette.base().color(), 1)); - p->drawRect(option->rect.adjusted(1, 1, -2, -2)); - // Outer dark border - p->setPen(QPen(option->palette.shadow().color(), 1)); - p->drawRect(option->rect.adjusted(0, 0, -1, -1)); - p->setPen(oldPen); - return; - } - */ - if (qstyleoption_cast<const QStyleOptionFrame *>(option)) { - themeNumber = QWindowsXPStylePrivate::EditTheme; - partId = EP_EDITTEXT; - noContent = true; - if (!(flags & State_Enabled)) - stateId = ETS_DISABLED; - else - stateId = ETS_NORMAL; - } - break; - } - - case PE_PanelLineEdit: - if (const QStyleOptionFrame *panel = qstyleoption_cast<const QStyleOptionFrame *>(option)) { - themeNumber = QWindowsXPStylePrivate::EditTheme; - partId = EP_EDITTEXT; - noBorder = true; - bool isEnabled = flags & State_Enabled; - - stateId = isEnabled ? ETS_NORMAL : ETS_DISABLED; - - /*if (QWindowsXPStylePrivate::isLineEditBaseColorSet(option, widget)) { - p->fillRect(panel->rect, panel->palette.brush(QPalette::Base)); - } else*/ { - XPThemeData theme(nullptr, p, themeNumber, partId, stateId, rect); - if (!theme.isValid()) { - QWindowsStyle::drawPrimitive(pe, option, p); - return; - } - int bgType; - GetThemeEnumValue(theme.handle(), partId, stateId, TMT_BGTYPE, &bgType); - if ( bgType == BT_IMAGEFILE ) { - theme.mirrorHorizontally = hMirrored; - theme.mirrorVertically = vMirrored; - theme.noBorder = noBorder; - theme.noContent = noContent; - theme.rotate = rotate; - d->drawBackground(theme); - } else { - QBrush fillColor = option->palette.brush(QPalette::Base); - - if (!isEnabled) { - PROPERTYORIGIN origin = PO_NOTFOUND; - GetThemePropertyOrigin(theme.handle(), theme.partId, theme.stateId, TMT_FILLCOLOR, &origin); - // Use only if the fill property comes from our part - if ((origin == PO_PART || origin == PO_STATE)) { - COLORREF bgRef; - GetThemeColor(theme.handle(), partId, stateId, TMT_FILLCOLOR, &bgRef); - fillColor = QBrush(qRgb(GetRValue(bgRef), GetGValue(bgRef), GetBValue(bgRef))); - } - } - p->fillRect(option->rect, fillColor); - } - } - - if (panel->lineWidth > 0) - proxy()->drawPrimitive(PE_FrameLineEdit, panel, p); - return; - } - break; -#if 0 - case PE_FrameTabWidget: - if (const QStyleOptionTabWidgetFrame *tab = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) - { - themeNumber = QWindowsXPStylePrivate::TabTheme; - partId = TABP_PANE; - - if (option->window) { - bool useGradient = true; - const int maxlength = 256; - wchar_t themeFileName[maxlength]; - wchar_t themeColor[maxlength]; - // Due to a a scaling issue with the XP Silver theme, tab gradients are not used with it - if (GetCurrentThemeName(themeFileName, maxlength, themeColor, maxlength, nullptr, 0) == S_OK) { - wchar_t *offset = nullptr; - if ((offset = wcsrchr(themeFileName, QChar(QLatin1Char('\\')).unicode())) != nullptr) { - offset++; - if (!lstrcmp(offset, L"Luna.msstyles") && !lstrcmp(offset, L"Metallic")) { - useGradient = false; - } - } - } - // This should work, but currently there's an error in the ::drawBackgroundDirectly() - // code, when using the HDC directly.. - if (useGradient) { - QStyleOptionTabWidgetFrame frameOpt = *tab; - //frameOpt.rect = widget->rect(); - - QRect contentsRect = subElementRect(SE_TabWidgetTabContents, &frameOpt); - QRegion reg = option->rect; - reg -= contentsRect; - p->setClipRegion(reg); - XPThemeData theme(option->window, p, themeNumber, partId, stateId, rect); - theme.mirrorHorizontally = hMirrored; - theme.mirrorVertically = vMirrored; - d->drawBackground(theme); - p->setClipRect(contentsRect); - partId = TABP_BODY; - } - } - switch (tab->shape) { - case QTabBar::RoundedNorth: - case QTabBar::TriangularNorth: - break; - case QTabBar::RoundedSouth: - case QTabBar::TriangularSouth: - vMirrored = true; - break; - case QTabBar::RoundedEast: - case QTabBar::TriangularEast: - rotate = 90; - break; - case QTabBar::RoundedWest: - case QTabBar::TriangularWest: - rotate = 90; - hMirrored = true; - break; - default: - break; - } - } - break; -#endif - case PE_FrameMenu: - p->save(); - p->setPen(option->palette.dark().color()); - p->drawRect(rect.adjusted(0, 0, -1, -1)); - p->restore(); - return; - - case PE_PanelMenuBar: - break; - - case PE_FrameDockWidget: - if (const QStyleOptionFrame *frm = qstyleoption_cast<const QStyleOptionFrame *>(option)) - { - themeNumber = QWindowsXPStylePrivate::WindowTheme; - if (flags & State_Active) - stateId = FS_ACTIVE; - else - stateId = FS_INACTIVE; - - int fwidth = proxy()->pixelMetric(PM_DockWidgetFrameWidth, frm); - - XPThemeData theme(option->window, p, themeNumber, 0, stateId); - if (!theme.isValid()) - break; - theme.rect = QRect(frm->rect.x(), frm->rect.y(), frm->rect.x()+fwidth, frm->rect.height()-fwidth); theme.partId = WP_SMALLFRAMELEFT; - d->drawBackground(theme); - theme.rect = QRect(frm->rect.width()-fwidth, frm->rect.y(), fwidth, frm->rect.height()-fwidth); - theme.partId = WP_SMALLFRAMERIGHT; - d->drawBackground(theme); - theme.rect = QRect(frm->rect.x(), frm->rect.bottom()-fwidth+1, frm->rect.width(), fwidth); - theme.partId = WP_SMALLFRAMEBOTTOM; - d->drawBackground(theme); - return; - } - break; - - case PE_IndicatorHeaderArrow: - { -#if 0 // XP theme engine doesn't know about this :( - name = QWindowsXPStylePrivate::HeaderTheme; - partId = HP_HEADERSORTARROW; - if (flags & State_Down) - stateId = HSAS_SORTEDDOWN; - else - stateId = HSAS_SORTEDUP; -#else - if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option)) { - p->save(); - p->setPen(option->palette.dark().color()); - p->translate(0, option->rect.height()/2 - 4); - if (header->sortIndicator & QStyleOptionHeader::SortUp) { // invert logic to follow Windows style guide - p->drawLine(option->rect.x(), option->rect.y(), option->rect.x()+8, option->rect.y()); - p->drawLine(option->rect.x()+1, option->rect.y()+1, option->rect.x()+7, option->rect.y()+1); - p->drawLine(option->rect.x()+2, option->rect.y()+2, option->rect.x()+6, option->rect.y()+2); - p->drawLine(option->rect.x()+3, option->rect.y()+3, option->rect.x()+5, option->rect.y()+3); - p->drawPoint(option->rect.x()+4, option->rect.y()+4); - } else if (header->sortIndicator & QStyleOptionHeader::SortDown) { - p->drawLine(option->rect.x(), option->rect.y()+4, option->rect.x()+8, option->rect.y()+4); - p->drawLine(option->rect.x()+1, option->rect.y()+3, option->rect.x()+7, option->rect.y()+3); - p->drawLine(option->rect.x()+2, option->rect.y()+2, option->rect.x()+6, option->rect.y()+2); - p->drawLine(option->rect.x()+3, option->rect.y()+1, option->rect.x()+5, option->rect.y()+1); - p->drawPoint(option->rect.x()+4, option->rect.y()); - } - p->restore(); - return; - } -#endif - } - break; - - case PE_FrameStatusBarItem: - themeNumber = QWindowsXPStylePrivate::StatusTheme; - partId = SP_PANE; - break; - - case PE_FrameGroupBox: - themeNumber = QWindowsXPStylePrivate::ButtonTheme; - partId = BP_GROUPBOX; - if (!(flags & State_Enabled)) - stateId = GBS_DISABLED; - else - stateId = GBS_NORMAL; - if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(option)) { - if (frame->features & QStyleOptionFrame::Flat) { - // Windows XP does not have a theme part for a flat GroupBox, paint it with the windows style - QRect fr = frame->rect; - QPoint p1(fr.x(), fr.y() + 1); - QPoint p2(fr.x() + fr.width(), p1.y() + 1); - rect = QRect(p1, p2); - themeNumber = -1; - } - } - break; - - case PE_IndicatorProgressChunk: - { - Qt::Orientation orient = Qt::Horizontal; - bool inverted = false; - if (const QStyleOptionProgressBar *pb = qstyleoption_cast<const QStyleOptionProgressBar *>(option)) { - orient = pb->state & QStyle::State_Horizontal ? Qt::Horizontal : Qt::Vertical; - inverted = pb->invertedAppearance; - } - if (orient == Qt::Horizontal) { - partId = PP_CHUNK; - rect = QRect(option->rect.x(), option->rect.y(), option->rect.width(), option->rect.height() ); - if (inverted && option->direction == Qt::LeftToRight) - hMirrored = true; - } else { - partId = PP_CHUNKVERT; - rect = QRect(option->rect.x(), option->rect.y(), option->rect.width(), option->rect.height()); - } - themeNumber = QWindowsXPStylePrivate::ProgressTheme; - stateId = 1; - } - break; - - case PE_FrameWindow: - if (const QStyleOptionFrame *frm = qstyleoption_cast<const QStyleOptionFrame *>(option)) - { - themeNumber = QWindowsXPStylePrivate::WindowTheme; - if (flags & State_Active) - stateId = FS_ACTIVE; - else - stateId = FS_INACTIVE; - - int fwidth = int((frm->lineWidth + frm->midLineWidth) / QWindowsStylePrivate::nativeMetricScaleFactor(option)); - - XPThemeData theme(option->window, p, themeNumber, 0, stateId); - if (!theme.isValid()) - break; - - // May fail due to too-large buffers for large widgets, fall back to Windows style. - theme.rect = QRect(option->rect.x(), option->rect.y()+fwidth, option->rect.x()+fwidth, option->rect.height()-fwidth); - theme.partId = WP_FRAMELEFT; - if (!d->drawBackground(theme)) { - QWindowsStyle::drawPrimitive(pe, option, p); - return; - } - theme.rect = QRect(option->rect.width()-fwidth, option->rect.y()+fwidth, fwidth, option->rect.height()-fwidth); - theme.partId = WP_FRAMERIGHT; - if (!d->drawBackground(theme)) { - QWindowsStyle::drawPrimitive(pe, option, p); - return; - } - theme.rect = QRect(option->rect.x(), option->rect.height()-fwidth, option->rect.width(), fwidth); - theme.partId = WP_FRAMEBOTTOM; - if (!d->drawBackground(theme)) { - QWindowsStyle::drawPrimitive(pe, option, p); - return; - } - theme.rect = QRect(option->rect.x(), option->rect.y(), option->rect.width(), option->rect.y()+fwidth); - theme.partId = WP_CAPTION; - if (!d->drawBackground(theme)) - QWindowsStyle::drawPrimitive(pe, option, p); - return; - } - break; - - case PE_IndicatorBranch: - { - static const int decoration_size = 9; - int mid_h = option->rect.x() + option->rect.width() / 2; - int mid_v = option->rect.y() + option->rect.height() / 2; - int bef_h = mid_h; - int bef_v = mid_v; - int aft_h = mid_h; - int aft_v = mid_v; - QBrush brush(option->palette.dark().color(), Qt::Dense4Pattern); - if (option->state & State_Item) { - if (option->direction == Qt::RightToLeft) - p->fillRect(option->rect.left(), mid_v, bef_h - option->rect.left(), 1, brush); - else - p->fillRect(aft_h, mid_v, option->rect.right() - aft_h + 1, 1, brush); - } - if (option->state & State_Sibling) - p->fillRect(mid_h, aft_v, 1, option->rect.bottom() - aft_v + 1, brush); - if (option->state & (State_Open | State_Children | State_Item | State_Sibling)) - p->fillRect(mid_h, option->rect.y(), 1, bef_v - option->rect.y(), brush); - if (option->state & State_Children) { - int delta = decoration_size / 2; - bef_h -= delta; - bef_v -= delta; - aft_h += delta; - aft_v += delta; - XPThemeData theme(nullptr, p, QWindowsXPStylePrivate::XpTreeViewTheme); - theme.rect = QRect(bef_h, bef_v, decoration_size, decoration_size); - theme.partId = TVP_GLYPH; - theme.stateId = flags & QStyle::State_Open ? GLPS_OPENED : GLPS_CLOSED; - d->drawBackground(theme); - } - } - return; - - case PE_IndicatorToolBarSeparator: - if (option->rect.height() < 3) { - // XP style requires a few pixels for the separator - // to be visible. - QWindowsStyle::drawPrimitive(pe, option, p); - return; - } - themeNumber = QWindowsXPStylePrivate::ToolBarTheme; - partId = TP_SEPARATOR; - - if (option->state & State_Horizontal) - partId = TP_SEPARATOR; - else - partId = TP_SEPARATORVERT; - - break; - - case PE_IndicatorToolBarHandle: - - themeNumber = QWindowsXPStylePrivate::RebarTheme; - partId = RP_GRIPPER; - if (option->state & State_Horizontal) { - partId = RP_GRIPPER; - rect.adjust(0, 0, -2, 0); - } - else { - partId = RP_GRIPPERVERT; - rect.adjust(0, 0, 0, -2); - } - break; - - case PE_IndicatorItemViewItemCheck: { - QStyleOptionButton button; - button.QStyleOption::operator=(*option); - button.state &= ~State_MouseOver; - proxy()->drawPrimitive(PE_IndicatorCheckBox, &button, p); - return; - } - - default: - break; - } - - XPThemeData theme(option->window, p, themeNumber, partId, stateId, rect); - if (!theme.isValid()) { - QWindowsStyle::drawPrimitive(pe, option, p); - return; - } - theme.mirrorHorizontally = hMirrored; - theme.mirrorVertically = vMirrored; - theme.noBorder = noBorder; - theme.noContent = noContent; - theme.rotate = rotate; - d->drawBackground(theme); -} - -/*! - \reimp -*/ -void QWindowsXPStyle::drawControl(ControlElement element, const QStyleOption *option, QPainter *p) const -{ - QWindowsXPStylePrivate *d = const_cast<QWindowsXPStylePrivate*>(d_func()); - if (!QWindowsXPStylePrivate::useXP()) { - QWindowsStyle::drawControl(element, option, p); - return; - } - - QRect rect(option->rect); - State flags = option->state; - - int rotate = 0; - bool hMirrored = false; - bool vMirrored = false; - - int themeNumber = -1; - int partId = 0; - int stateId = 0; - switch (element) { - case CE_SizeGrip: - { - themeNumber = QWindowsXPStylePrivate::StatusTheme; - partId = SP_GRIPPER; - XPThemeData theme(nullptr, p, themeNumber, partId); - QSize size = (theme.size() * QWindowsStylePrivate::nativeMetricScaleFactor(option)).toSize(); - size.rheight()--; - if (const QStyleOptionSizeGrip *sg = qstyleoption_cast<const QStyleOptionSizeGrip *>(option)) { - switch (sg->corner) { - case Qt::BottomRightCorner: - rect = QRect(QPoint(rect.right() - size.width(), rect.bottom() - size.height()), size); - break; - case Qt::BottomLeftCorner: - rect = QRect(QPoint(rect.left() + 1, rect.bottom() - size.height()), size); - hMirrored = true; - break; - case Qt::TopRightCorner: - rect = QRect(QPoint(rect.right() - size.width(), rect.top() + 1), size); - vMirrored = true; - break; - case Qt::TopLeftCorner: - rect = QRect(rect.topLeft() + QPoint(1, 1), size); - hMirrored = vMirrored = true; - } - } - } - break; - - case CE_HeaderSection: - themeNumber = QWindowsXPStylePrivate::HeaderTheme; - partId = HP_HEADERITEM; - if (flags & State_Sunken) - stateId = HIS_PRESSED; - else if (flags & State_MouseOver) - stateId = HIS_HOT; - else - stateId = HIS_NORMAL; - break; - - case CE_Splitter: - p->eraseRect(option->rect); - return; - - case CE_PushButtonBevel: - if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(option)) - { - themeNumber = QWindowsXPStylePrivate::ButtonTheme; - partId = BP_PUSHBUTTON; - bool justFlat = ((btn->features & QStyleOptionButton::Flat) && !(flags & (State_On|State_Sunken))) - || ((btn->features & QStyleOptionButton::CommandLinkButton) - && !(flags & State_MouseOver) - && !(btn->features & QStyleOptionButton::DefaultButton)); - if (!(flags & State_Enabled) && !(btn->features & QStyleOptionButton::Flat)) - stateId = PBS_DISABLED; - else if (justFlat) - ; - else if (flags & (State_Sunken | State_On)) - stateId = PBS_PRESSED; - else if (flags & State_MouseOver) - stateId = PBS_HOT; - else if (btn->features & QStyleOptionButton::DefaultButton) - stateId = PBS_DEFAULTED; - else - stateId = PBS_NORMAL; - - if (!justFlat) { - XPThemeData theme(option->window, p, themeNumber, partId, stateId, rect); - d->drawBackground(theme); - } - - if (btn->features & QStyleOptionButton::HasMenu) { - int mbiw = 0, mbih = 0; - XPThemeData theme(option->window, nullptr, - QWindowsXPStylePrivate::ToolBarTheme, - TP_SPLITBUTTONDROPDOWN); - if (theme.isValid()) { - const QSize size = (theme.size() * QWindowsStylePrivate::nativeMetricScaleFactor(option)).toSize(); - mbiw = size.width(); - mbih = size.height(); - } - - QRect ir = btn->rect; - QStyleOptionButton newBtn = *btn; - newBtn.rect = QRect(ir.right() - mbiw - 1, 1 + (ir.height()/2) - (mbih/2), mbiw, mbih); - proxy()->drawPrimitive(PE_IndicatorArrowDown, &newBtn, p); - } - return; - } - break; - case CE_TabBarTab: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) - { - stateId = tab->state & State_Enabled ? TIS_NORMAL : TIS_DISABLED; - } - break; -#if 0 - case CE_TabBarTabShape: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) - { - themeNumber = QWindowsXPStylePrivate::TabTheme; - bool isDisabled = !(tab->state & State_Enabled); - bool hasFocus = tab->state & State_HasFocus; - bool isHot = tab->state & State_MouseOver; - bool selected = tab->state & State_Selected; - bool lastTab = tab->position == QStyleOptionTab::End; - bool firstTab = tab->position == QStyleOptionTab::Beginning; - bool onlyOne = tab->position == QStyleOptionTab::OnlyOneTab; - bool leftAligned = proxy()->styleHint(SH_TabBar_Alignment, tab) == Qt::AlignLeft; - bool centerAligned = proxy()->styleHint(SH_TabBar_Alignment, tab) == Qt::AlignCenter; - int borderThickness = proxy()->pixelMetric(PM_DefaultFrameWidth, option); - int tabOverlap = proxy()->pixelMetric(PM_TabBarTabOverlap, option); - - if (isDisabled) - stateId = TIS_DISABLED; - else if (selected) - stateId = TIS_SELECTED; - else if (hasFocus) - stateId = TIS_FOCUSED; - else if (isHot) - stateId = TIS_HOT; - else - stateId = TIS_NORMAL; - - // Selecting proper part depending on position - if (firstTab || onlyOne) { - if (leftAligned) { - partId = TABP_TABITEMLEFTEDGE; - } else if (centerAligned) { - partId = TABP_TABITEM; - } else { // rightAligned - partId = TABP_TABITEMRIGHTEDGE; - } - } else { - partId = TABP_TABITEM; - } - - if (tab->direction == Qt::RightToLeft - && (tab->shape == QTabBar::RoundedNorth - || tab->shape == QTabBar::RoundedSouth)) { - bool temp = firstTab; - firstTab = lastTab; - lastTab = temp; - } - bool begin = firstTab || onlyOne; - bool end = lastTab || onlyOne; - switch (tab->shape) { - case QTabBar::RoundedNorth: - if (selected) - rect.adjust(begin ? 0 : -tabOverlap, 0, end ? 0 : tabOverlap, borderThickness); - else - rect.adjust(begin? tabOverlap : 0, tabOverlap, end ? -tabOverlap : 0, 0); - break; - case QTabBar::RoundedSouth: - //vMirrored = true; - rotate = 180; // Not 100% correct, but works - if (selected) - rect.adjust(begin ? 0 : -tabOverlap , -borderThickness, end ? 0 : tabOverlap, 0); - else - rect.adjust(begin ? tabOverlap : 0, 0, end ? -tabOverlap : 0 , -tabOverlap); - break; - case QTabBar::RoundedEast: - rotate = 90; - if (selected) { - rect.adjust(-borderThickness, begin ? 0 : -tabOverlap, 0, end ? 0 : tabOverlap); - }else{ - rect.adjust(0, begin ? tabOverlap : 0, -tabOverlap, end ? -tabOverlap : 0); - } - break; - case QTabBar::RoundedWest: - hMirrored = true; - rotate = 90; - if (selected) { - rect.adjust(0, begin ? 0 : -tabOverlap, borderThickness, end ? 0 : tabOverlap); - }else{ - rect.adjust(tabOverlap, begin ? tabOverlap : 0, 0, end ? -tabOverlap : 0); - } - break; - default: - themeNumber = -1; // Do our own painting for triangular - break; - } - - if (!selected) { - switch (tab->shape) { - case QTabBar::RoundedNorth: - rect.adjust(0,0, 0,-1); - break; - case QTabBar::RoundedSouth: - rect.adjust(0,1, 0,0); - break; - case QTabBar::RoundedEast: - rect.adjust( 1,0, 0,0); - break; - case QTabBar::RoundedWest: - rect.adjust(0,0, -1,0); - break; - default: - break; - } - } - } - break; -#endif - case CE_ProgressBarGroove: - { - Qt::Orientation orient = Qt::Horizontal; - if (const QStyleOptionProgressBar *pb = qstyleoption_cast<const QStyleOptionProgressBar *>(option)) - orient = pb->state & QStyle::State_Horizontal ? Qt::Horizontal : Qt::Vertical; - partId = (orient == Qt::Horizontal) ? PP_BAR : PP_BARVERT; - themeNumber = QWindowsXPStylePrivate::ProgressTheme; - stateId = 1; - } - break; - - case CE_MenuEmptyArea: - case CE_MenuItem: - if (const QStyleOptionMenuItem *menuitem = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) - { - int tab = menuitem->tabWidth; - bool dis = !(menuitem->state & State_Enabled); - bool act = menuitem->state & State_Selected; - bool checkable = menuitem->menuHasCheckableItems; - bool checked = checkable ? menuitem->checked : false; - - // windows always has a check column, regardless whether we have an icon or not - int checkcol = qMax(menuitem->maxIconWidth, 12); - - int x, y, w, h; - rect.getRect(&x, &y, &w, &h); - - QBrush fill = menuitem->palette.brush(act ? QPalette::Highlight : QPalette::Button); - p->fillRect(rect, fill); - - if (element == CE_MenuEmptyArea) - break; - - // draw separator ------------------------------------------------- - if (menuitem->menuItemType == QStyleOptionMenuItem::Separator) { - int yoff = y-1 + h / 2; - p->setPen(menuitem->palette.dark().color()); - p->drawLine(x, yoff, x+w, yoff); - ++yoff; - p->setPen(menuitem->palette.light().color()); - p->drawLine(x, yoff, x+w, yoff); - return; - } - - int xpos = x; - - // draw icon ------------------------------------------------------ - if (!menuitem->icon.isNull()) { - QIcon::Mode mode = dis ? QIcon::Disabled : QIcon::Normal; - if (act && !dis) - mode = QIcon::Active; - QPixmap pixmap = checked ? - menuitem->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, option), mode, QIcon::On) : - menuitem->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, option), mode); - const int pixw = pixmap.width() / pixmap.devicePixelRatio(); - const int pixh = pixmap.height() / pixmap.devicePixelRatio(); - QRect iconRect(0, 0, pixw, pixh); - iconRect.moveCenter(QRect(xpos, y, checkcol, h).center()); - QRect vIconRect = visualRect(option->direction, option->rect, iconRect); - p->setPen(menuitem->palette.text().color()); - p->setBrush(Qt::NoBrush); - if (checked) - p->drawRect(vIconRect.adjusted(-1, -1, 0, 0)); - p->drawPixmap(vIconRect.topLeft(), pixmap); - - // draw checkmark ------------------------------------------------- - } else if (checked) { - QStyleOptionMenuItem newMi = *menuitem; - newMi.state = State_None; - if (!dis) - newMi.state |= State_Enabled; - if (act) - newMi.state |= State_On; - - QRect checkMarkRect = QRect(menuitem->rect.x() + windowsItemFrame, - menuitem->rect.y() + windowsItemFrame, - checkcol - 2 * windowsItemFrame, - menuitem->rect.height() - 2*windowsItemFrame); - newMi.rect = visualRect(option->direction, option->rect, checkMarkRect); - proxy()->drawPrimitive(PE_IndicatorMenuCheckMark, &newMi, p); - } - - QColor textColor = dis ? menuitem->palette.text().color() : - act ? menuitem->palette.highlightedText().color() : menuitem->palette.buttonText().color(); - p->setPen(textColor); - - // draw text ------------------------------------------------------ - int xm = windowsItemFrame + checkcol + windowsItemHMargin; - xpos = menuitem->rect.x() + xm; - QRect textRect(xpos, y + windowsItemVMargin, w - xm - windowsRightBorder - tab + 1, h - 2 * windowsItemVMargin); - QRect vTextRect = visualRect(option->direction, option->rect, textRect); - QString s = menuitem->text; - if (!s.isEmpty()) { - p->save(); - int t = s.indexOf(QLatin1Char('\t')); - int text_flags = Qt::AlignVCenter|Qt::TextShowMnemonic | Qt::TextDontClip | Qt::TextSingleLine | Qt::AlignLeft; - if (!proxy()->styleHint(SH_UnderlineShortcut, menuitem)) - text_flags |= Qt::TextHideMnemonic; - // draw tab text ---------------- - if (t >= 0) { - QRect vShortcutRect = visualRect(option->direction, option->rect, QRect(textRect.topRight(), menuitem->rect.bottomRight())); - if (dis && !act && proxy()->styleHint(SH_EtchDisabledText, option)) { - p->setPen(menuitem->palette.light().color()); - p->drawText(vShortcutRect.adjusted(1,1,1,1), text_flags, s.mid(t + 1)); - p->setPen(textColor); - } - p->drawText(vShortcutRect, text_flags, s.mid(t + 1)); - s = s.left(t); - } - QFont font = menuitem->font; - if (menuitem->menuItemType == QStyleOptionMenuItem::DefaultItem) - font.setBold(true); - p->setFont(font); - if (dis && !act && proxy()->styleHint(SH_EtchDisabledText, option)) { - p->setPen(menuitem->palette.light().color()); - p->drawText(vTextRect.adjusted(1,1,1,1), text_flags, s.left(t)); - p->setPen(textColor); - } - p->drawText(vTextRect, text_flags, s); - p->restore(); - } - - // draw sub menu arrow -------------------------------------------- - if (menuitem->menuItemType == QStyleOptionMenuItem::SubMenu) { - int dim = (h - 2) / 2; - PrimitiveElement arrow; - arrow = (option->direction == Qt::RightToLeft) ? PE_IndicatorArrowLeft : PE_IndicatorArrowRight; - xpos = x + w - windowsArrowHMargin - windowsItemFrame - dim; - QRect vSubMenuRect = visualRect(option->direction, option->rect, QRect(xpos, y + h / 2 - dim / 2, dim, dim)); - QStyleOptionMenuItem newMI = *menuitem; - newMI.rect = vSubMenuRect; - newMI.state = dis ? State_None : State_Enabled; - if (act) - newMI.palette.setColor(QPalette::ButtonText, newMI.palette.highlightedText().color()); - proxy()->drawPrimitive(arrow, &newMI, p); - } - } - return; - - case CE_MenuBarItem: - if (const QStyleOptionMenuItem *mbi = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) - { - if (mbi->menuItemType == QStyleOptionMenuItem::DefaultItem) - break; - - bool act = mbi->state & State_Selected; - bool dis = !(mbi->state & State_Enabled); - - QBrush fill = mbi->palette.brush(act ? QPalette::Highlight : QPalette::Button); - QPalette::ColorRole textRole = dis ? QPalette::Text: - act ? QPalette::HighlightedText : QPalette::ButtonText; - QPixmap pix = mbi->icon.pixmap(proxy()->pixelMetric(PM_SmallIconSize, option), QIcon::Normal); - - uint alignment = Qt::AlignCenter | Qt::TextShowMnemonic | Qt::TextDontClip | Qt::TextSingleLine; - if (!proxy()->styleHint(SH_UnderlineShortcut, mbi)) - alignment |= Qt::TextHideMnemonic; - - p->fillRect(rect, fill); - if (!pix.isNull()) - drawItemPixmap(p, mbi->rect, alignment, pix); - else - drawItemText(p, mbi->rect, alignment, mbi->palette, mbi->state & State_Enabled, mbi->text, textRole); - } - return; -#if 0 && QT_CONFIG(dockwidget) - case CE_DockWidgetTitle: - if (const QStyleOptionDockWidget *dwOpt = qstyleoption_cast<const QStyleOptionDockWidget *>(option)) - { - int buttonMargin = 4; - int mw = proxy()->pixelMetric(QStyle::PM_DockWidgetTitleMargin, dwOpt); - int fw = proxy()->pixelMetric(PM_DockWidgetFrameWidth, dwOpt); - bool isFloating = false; // widget && widget->isWindow(); - bool isActive = dwOpt->state & State_Active; - - const bool verticalTitleBar = dwOpt->verticalTitleBar; - - if (verticalTitleBar) { - rect = rect.transposed(); - - p->translate(rect.left() - 1, rect.top() + rect.width()); - p->rotate(-90); - p->translate(-rect.left() + 1, -rect.top()); - } - QRect r = rect.adjusted(0, 2, -1, -3); - QRect titleRect = r; - - if (dwOpt->closable) { - QSize sz = proxy()->standardIcon(QStyle::SP_TitleBarCloseButton, dwOpt).actualSize(QSize(10, 10)); - titleRect.adjust(0, 0, -sz.width() - mw - buttonMargin, 0); - } - - if (dwOpt->floatable) { - QSize sz = proxy()->standardIcon(QStyle::SP_TitleBarMaxButton, dwOpt).actualSize(QSize(10, 10)); - titleRect.adjust(0, 0, -sz.width() - mw - buttonMargin, 0); - } - - if (isFloating) { - titleRect.adjust(0, -fw, 0, 0); - if (option->window && option->window->icon().cacheKey() != QApplication::windowIcon().cacheKey()) - titleRect.adjust(titleRect.height() + mw, 0, 0, 0); - } else { - titleRect.adjust(mw, 0, 0, 0); - if (!dwOpt->floatable && !dwOpt->closable) - titleRect.adjust(0, 0, -mw, 0); - } - - if (!verticalTitleBar) - titleRect = visualRect(dwOpt->direction, r, titleRect); - - if (!isFloating) { - QPen oldPen = p->pen(); - QString titleText = p->fontMetrics().elidedText(dwOpt->title, Qt::ElideRight, titleRect.width()); - p->setPen(dwOpt->palette.color(QPalette::Dark)); - p->drawRect(r); - - if (!titleText.isEmpty()) { - drawItemText(p, titleRect, - Qt::AlignLeft | Qt::AlignVCenter | Qt::TextShowMnemonic, dwOpt->palette, - dwOpt->state & State_Enabled, titleText, - QPalette::WindowText); - } - - p->setPen(oldPen); - } else { - themeNumber = QWindowsXPStylePrivate::WindowTheme; - if (isActive) - stateId = CS_ACTIVE; - else - stateId = CS_INACTIVE; - - int titleHeight = rect.height() - 2; - rect = rect.adjusted(-fw, -fw, fw, 0); - - XPThemeData theme(option->window, p, themeNumber, 0, stateId); - if (!theme.isValid()) - break; - - // Draw small type title bar - theme.rect = rect; - theme.partId = WP_SMALLCAPTION; - d->drawBackground(theme); - - // Figure out maximal button space on title bar - - QIcon ico = option->window->icon(); - bool hasIcon = (ico.cacheKey() != QApplication::windowIcon().cacheKey()); - if (hasIcon) { - QPixmap pxIco = ico.pixmap(titleHeight); - if (!verticalTitleBar && dwOpt->direction == Qt::RightToLeft) - p->drawPixmap(rect.width() - titleHeight - pxIco.width(), rect.bottom() - titleHeight - 2, pxIco); - else - p->drawPixmap(fw, rect.bottom() - titleHeight - 2, pxIco); - } - if (!dwOpt->title.isEmpty()) { - QPen oldPen = p->pen(); - QFont oldFont = p->font(); - QFont titleFont = oldFont; - titleFont.setBold(true); - p->setFont(titleFont); - QString titleText - = p->fontMetrics().elidedText(dwOpt->title, Qt::ElideRight, titleRect.width()); - - int result = TST_NONE; - GetThemeEnumValue(theme.handle(), WP_SMALLCAPTION, isActive ? CS_ACTIVE : CS_INACTIVE, TMT_TEXTSHADOWTYPE, &result); - if (result != TST_NONE) { - COLORREF textShadowRef; - GetThemeColor(theme.handle(), WP_SMALLCAPTION, isActive ? CS_ACTIVE : CS_INACTIVE, TMT_TEXTSHADOWCOLOR, &textShadowRef); - QColor textShadow = qRgb(GetRValue(textShadowRef), GetGValue(textShadowRef), GetBValue(textShadowRef)); - p->setPen(textShadow); - drawItemText(p, titleRect.adjusted(1, 1, 1, 1), - Qt::AlignLeft | Qt::AlignBottom, dwOpt->palette, - dwOpt->state & State_Enabled, titleText); - } - - COLORREF captionText = GetSysColor(isActive ? COLOR_CAPTIONTEXT : COLOR_INACTIVECAPTIONTEXT); - QColor textColor = qRgb(GetRValue(captionText), GetGValue(captionText), GetBValue(captionText)); - p->setPen(textColor); - drawItemText(p, titleRect, - Qt::AlignLeft | Qt::AlignBottom, dwOpt->palette, - dwOpt->state & State_Enabled, titleText); - p->setFont(oldFont); - p->setPen(oldPen); - } - - } - - return; - } - break; -#endif // QT_CONFIG(dockwidget) -#if 0 && QT_CONFIG(rubberband) - case CE_RubberBand: - if (qstyleoption_cast<const QStyleOptionRubberBand *>(option)) { - QColor highlight = option->palette.color(QPalette::Active, QPalette::Highlight); - p->save(); - p->setPen(highlight.darker(120)); - QColor dimHighlight(qMin(highlight.red()/2 + 110, 255), - qMin(highlight.green()/2 + 110, 255), - qMin(highlight.blue()/2 + 110, 255), - 127); - //(widget && widget->isTopLevel())? 255 : 127); - p->setBrush(dimHighlight); - p->drawRect(option->rect.adjusted(0, 0, -1, -1)); - p->restore(); - return; - } - break; -#endif // QT_CONFIG(rubberband) - case CE_HeaderEmptyArea: - if (option->state & State_Horizontal) - { - themeNumber = QWindowsXPStylePrivate::HeaderTheme; - stateId = HIS_NORMAL; - } - else { - QWindowsStyle::drawControl(CE_HeaderEmptyArea, option, p); - return; - } - break; - default: - break; - } - - XPThemeData theme(option->window, p, themeNumber, partId, stateId, rect); - if (!theme.isValid()) { - QWindowsStyle::drawControl(element, option, p); - return; - } - - theme.rotate = rotate; - theme.mirrorHorizontally = hMirrored; - theme.mirrorVertically = vMirrored; - d->drawBackground(theme); -} - -QRect QWindowsXPStylePrivate::scrollBarGripperBounds(QStyle::State flags, XPThemeData *theme) -{ - const bool horizontal = flags & QStyle::State_Horizontal; - const qreal factor = QWindowsStylePrivate::nativeMetricScaleFactor(theme->window); - const QMargins contentsMargin = - (theme->margins(theme->rect, TMT_SIZINGMARGINS) * factor).toMargins(); - theme->partId = horizontal ? SBP_GRIPPERHORZ : SBP_GRIPPERVERT; - const QSize size = (theme->size() * factor).toSize(); - - const int hSpace = theme->rect.width() - size.width(); - const int vSpace = theme->rect.height() - size.height(); - const bool sufficientSpace = (horizontal && hSpace > (contentsMargin.left() + contentsMargin.right())) - || vSpace > contentsMargin.top() + contentsMargin.bottom(); - return sufficientSpace ? QRect(theme->rect.topLeft() + QPoint(hSpace, vSpace) / 2, size) : QRect(); -} - -#if 0 && QT_CONFIG(mdiarea) -// Helper for drawing MDI buttons into the corner widget of QMenuBar in case a -// QMdiSubWindow is maximized. -static void populateMdiButtonTheme(const QStyle *proxy, - const QStyleOptionComplex *option, - QStyle::SubControl subControl, int part, - XPThemeData *theme) -{ - theme->partId = part; - theme->rect = proxy->subControlRect(QStyle::CC_MdiControls, option, subControl); - if (!option->state.testFlag(QStyle::State_Enabled)) - theme->stateId = CBS_INACTIVE; - else if (option->state.testFlag(QStyle::State_Sunken) && option->activeSubControls.testFlag(subControl)) - theme->stateId = CBS_PUSHED; - else if (option->state.testFlag(QStyle::State_MouseOver) && option->activeSubControls.testFlag(subControl)) - theme->stateId = CBS_HOT; - else - theme->stateId = CBS_NORMAL; -} - -// Calculate an small (max 2), empirical correction factor for scaling up -// WP_MDICLOSEBUTTON, WP_MDIRESTOREBUTTON, WP_MDIMINBUTTON, which are too -// small on High DPI screens (QTBUG-75927). -qreal mdiButtonCorrectionFactor(XPThemeData &theme, const QPaintDevice *pd = nullptr) -{ - const auto dpr = pd ? pd->devicePixelRatioF() : qApp->devicePixelRatio(); - const QSizeF nativeSize = QSizeF(theme.size()) / dpr; - const QSizeF requestedSize(theme.rect.size()); - const auto rawFactor = qMin(requestedSize.width() / nativeSize.width(), - requestedSize.height() / nativeSize.height()); - const auto factor = rawFactor >= qreal(2) ? qreal(2) : qreal(1); - return factor; -} -#endif // QT_CONFIG(mdiarea) - -static void populateTitleBarButtonTheme(const QStyle *proxy, - const QStyleOptionComplex *option, - QStyle::SubControl subControl, - bool isTitleBarActive, int part, - XPThemeData *theme) -{ - theme->rect = proxy->subControlRect(QStyle::CC_TitleBar, option, subControl); - theme->partId = part; - if (!(option->state & QStyle::State_Enabled)) - theme->stateId = RBS_DISABLED; - else if (option->activeSubControls == subControl && option->state.testFlag(QStyle::State_Sunken)) - theme->stateId = RBS_PUSHED; - else if (option->activeSubControls == subControl && option->state.testFlag(QStyle::State_MouseOver)) - theme->stateId = RBS_HOT; - else if (!isTitleBarActive) - theme->stateId = RBS_INACTIVE; - else - theme->stateId = RBS_NORMAL; -} - -/*! - \reimp -*/ -void QWindowsXPStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *option, - QPainter *p) const -{ - QWindowsXPStylePrivate *d = const_cast<QWindowsXPStylePrivate*>(d_func()); - - if (!QWindowsXPStylePrivate::useXP()) { - QWindowsStyle::drawComplexControl(cc, option, p); - return; - } - - State flags = option->state; - SubControls sub = option->subControls; - QRect r = option->rect; - - int partId = 0; - int stateId = 0; - if (option->window && option->window->isActive()) - flags |= State_MouseOver; - - switch (cc) { -//#if QT_CONFIG(spinbox) - case CC_SpinBox: - if (const QStyleOptionSpinBox *sb = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) - { - XPThemeData theme(option->window, p, QWindowsXPStylePrivate::SpinTheme); - - if (sb->frame && (sub & SC_SpinBoxFrame)) { - partId = EP_EDITTEXT; - if (!(flags & State_Enabled)) - stateId = ETS_DISABLED; - else if (flags & State_HasFocus) - stateId = ETS_FOCUSED; - else - stateId = ETS_NORMAL; - - XPThemeData ftheme(option->window, p, QWindowsXPStylePrivate::EditTheme, - partId, stateId, r); - ftheme.noContent = true; - d->drawBackground(ftheme); - } - if (sub & SC_SpinBoxUp) { - theme.rect = proxy()->subControlRect(CC_SpinBox, option, SC_SpinBoxUp); - partId = SPNP_UP; - if (!(sb->stepEnabled & QStyleOptionSpinBox::StepUpEnabled) || !(flags & State_Enabled)) - stateId = UPS_DISABLED; - else if (sb->activeSubControls == SC_SpinBoxUp && (sb->state & State_Sunken)) - stateId = UPS_PRESSED; - else if (sb->activeSubControls == SC_SpinBoxUp && (sb->state & State_MouseOver)) - stateId = UPS_HOT; - else - stateId = UPS_NORMAL; - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - if (sub & SC_SpinBoxDown) { - theme.rect = proxy()->subControlRect(CC_SpinBox, option, SC_SpinBoxDown); - partId = SPNP_DOWN; - if (!(sb->stepEnabled & QStyleOptionSpinBox::StepDownEnabled) || !(flags & State_Enabled)) - stateId = DNS_DISABLED; - else if (sb->activeSubControls == SC_SpinBoxDown && (sb->state & State_Sunken)) - stateId = DNS_PRESSED; - else if (sb->activeSubControls == SC_SpinBoxDown && (sb->state & State_MouseOver)) - stateId = DNS_HOT; - else - stateId = DNS_NORMAL; - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - } - break; -//#endif // QT_CONFIG(spinbox) -//#if QT_CONFIG(combobox) - case CC_ComboBox: - if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(option)) - { - if (cmb->editable) { - if (sub & SC_ComboBoxEditField) { - partId = EP_EDITBORDER_NOSCROLL; - if (!(flags & State_Enabled)) - stateId = ETS_DISABLED; - else if (flags & State_MouseOver) - stateId = ETS_HOT; - else if (flags & State_HasFocus) - stateId = ETS_FOCUSED; - else - stateId = ETS_NORMAL; - - XPThemeData theme(option->window, p, - QWindowsXPStylePrivate::EditTheme, - partId, stateId, r); - - d->drawBackground(theme); - } - if (sub & SC_ComboBoxArrow) { - QRect subRect = proxy()->subControlRect(CC_ComboBox, option, SC_ComboBoxArrow); - XPThemeData theme(option->window, p, QWindowsXPStylePrivate::ComboboxTheme); - theme.rect = subRect; - partId = option->direction == Qt::RightToLeft ? CP_DROPDOWNBUTTONLEFT : CP_DROPDOWNBUTTONRIGHT; - - if (!(cmb->state & State_Enabled)) - stateId = CBXS_DISABLED; - else if (cmb->state & State_Sunken || cmb->state & State_On) - stateId = CBXS_PRESSED; - else if (cmb->state & State_MouseOver && option->activeSubControls & SC_ComboBoxArrow) - stateId = CBXS_HOT; - else - stateId = CBXS_NORMAL; - - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - - } else { - if (sub & SC_ComboBoxFrame) { - XPThemeData theme(option->window, p, QWindowsXPStylePrivate::ComboboxTheme); - theme.rect = option->rect; - theme.partId = CP_READONLY; - if (!(cmb->state & State_Enabled)) - theme.stateId = CBXS_DISABLED; - else if (cmb->state & State_Sunken || cmb->state & State_On) - theme.stateId = CBXS_PRESSED; - else if (cmb->state & State_MouseOver) - theme.stateId = CBXS_HOT; - else - theme.stateId = CBXS_NORMAL; - d->drawBackground(theme); - } - if (sub & SC_ComboBoxArrow) { - XPThemeData theme(option->window, p, QWindowsXPStylePrivate::ComboboxTheme); - theme.rect = proxy()->subControlRect(CC_ComboBox, option, SC_ComboBoxArrow); - theme.partId = option->direction == Qt::RightToLeft ? CP_DROPDOWNBUTTONLEFT : CP_DROPDOWNBUTTONRIGHT; - if (!(cmb->state & State_Enabled)) - theme.stateId = CBXS_DISABLED; - else - theme.stateId = CBXS_NORMAL; - d->drawBackground(theme); - } - if ((sub & SC_ComboBoxEditField) && (flags & State_HasFocus)) { - QStyleOptionFocusRect fropt; - fropt.QStyleOption::operator=(*cmb); - fropt.rect = proxy()->subControlRect(CC_ComboBox, option, SC_ComboBoxEditField); - proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, p); - } - } - } - break; -//#endif // QT_CONFIG(combobox) - case CC_ScrollBar: - if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(option)) - { - XPThemeData theme(option->window, p, QWindowsXPStylePrivate::ScrollBarTheme); - bool maxedOut = (scrollbar->maximum == scrollbar->minimum); - if (maxedOut) - flags &= ~State_Enabled; - - bool isHorz = flags & State_Horizontal; - bool isRTL = option->direction == Qt::RightToLeft; - if (sub & SC_ScrollBarAddLine) { - theme.rect = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarAddLine); - partId = SBP_ARROWBTN; - if (!(flags & State_Enabled)) - stateId = (isHorz ? (isRTL ? ABS_LEFTDISABLED : ABS_RIGHTDISABLED) : ABS_DOWNDISABLED); - else if (scrollbar->activeSubControls & SC_ScrollBarAddLine && (scrollbar->state & State_Sunken)) - stateId = (isHorz ? (isRTL ? ABS_LEFTPRESSED : ABS_RIGHTPRESSED) : ABS_DOWNPRESSED); - else if (scrollbar->activeSubControls & SC_ScrollBarAddLine && (scrollbar->state & State_MouseOver)) - stateId = (isHorz ? (isRTL ? ABS_LEFTHOT : ABS_RIGHTHOT) : ABS_DOWNHOT); - else - stateId = (isHorz ? (isRTL ? ABS_LEFTNORMAL : ABS_RIGHTNORMAL) : ABS_DOWNNORMAL); - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - if (sub & SC_ScrollBarSubLine) { - theme.rect = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarSubLine); - partId = SBP_ARROWBTN; - if (!(flags & State_Enabled)) - stateId = (isHorz ? (isRTL ? ABS_RIGHTDISABLED : ABS_LEFTDISABLED) : ABS_UPDISABLED); - else if (scrollbar->activeSubControls & SC_ScrollBarSubLine && (scrollbar->state & State_Sunken)) - stateId = (isHorz ? (isRTL ? ABS_RIGHTPRESSED : ABS_LEFTPRESSED) : ABS_UPPRESSED); - else if (scrollbar->activeSubControls & SC_ScrollBarSubLine && (scrollbar->state & State_MouseOver)) - stateId = (isHorz ? (isRTL ? ABS_RIGHTHOT : ABS_LEFTHOT) : ABS_UPHOT); - else - stateId = (isHorz ? (isRTL ? ABS_RIGHTNORMAL : ABS_LEFTNORMAL) : ABS_UPNORMAL); - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - if (maxedOut) { - if (sub & SC_ScrollBarSlider) { - theme.rect = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarSlider); - theme.rect = theme.rect.united(proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarSubPage)); - theme.rect = theme.rect.united(proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarAddPage)); - partId = scrollbar->orientation == Qt::Horizontal ? SBP_LOWERTRACKHORZ : SBP_LOWERTRACKVERT; - stateId = SCRBS_DISABLED; - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - } else { - if (sub & SC_ScrollBarSubPage) { - theme.rect = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarSubPage); - partId = flags & State_Horizontal ? SBP_UPPERTRACKHORZ : SBP_UPPERTRACKVERT; - if (!(flags & State_Enabled)) - stateId = SCRBS_DISABLED; - else if (scrollbar->activeSubControls & SC_ScrollBarSubPage && (scrollbar->state & State_Sunken)) - stateId = SCRBS_PRESSED; - else if (scrollbar->activeSubControls & SC_ScrollBarSubPage && (scrollbar->state & State_MouseOver)) - stateId = SCRBS_HOT; - else - stateId = SCRBS_NORMAL; - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - if (sub & SC_ScrollBarAddPage) { - theme.rect = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarAddPage); - partId = flags & State_Horizontal ? SBP_LOWERTRACKHORZ : SBP_LOWERTRACKVERT; - if (!(flags & State_Enabled)) - stateId = SCRBS_DISABLED; - else if (scrollbar->activeSubControls & SC_ScrollBarAddPage && (scrollbar->state & State_Sunken)) - stateId = SCRBS_PRESSED; - else if (scrollbar->activeSubControls & SC_ScrollBarAddPage && (scrollbar->state & State_MouseOver)) - stateId = SCRBS_HOT; - else - stateId = SCRBS_NORMAL; - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - if (sub & SC_ScrollBarSlider) { - QRect rect = proxy()->subControlRect(CC_ScrollBar, option, SC_ScrollBarSlider); - // The style paint the slider handle so that it is surrounded by transparent areas - // on each side. These areas have the same size as the Left/Right (or Top/Left) buttons. - // This is probaly done in order for the handle to travel all along the geometry - // of the slider, while the handle still not occluding the buttons. - // We do not want those transparent areas, so we clip them off here. - const QSize handleSize = proxy()->subControlRect(QStyle::CC_ScrollBar, scrollbar, QStyle::SC_ScrollBarAddLine).size(); - - if (scrollbar->orientation == Qt::Vertical) { - const int handleHeight = handleSize.height(); - rect.setBottom(rect.bottom() + 2 * handleHeight); - p->setClipRect(r.adjusted(0, 0, 0, handleHeight)); - p->translate(0, -handleHeight); - } else { - const int handleWidth = handleSize.width(); - rect.setRight(rect.right() + 2 * handleWidth); - p->setClipRect(r.adjusted(0, 0, handleWidth, 0)); - p->translate(-handleWidth, 0); - } - - theme.rect = rect; - if (!(flags & State_Enabled)) - stateId = SCRBS_DISABLED; - else if (scrollbar->activeSubControls & SC_ScrollBarSlider && (scrollbar->state & State_Sunken)) - stateId = SCRBS_PRESSED; - else if (scrollbar->activeSubControls & SC_ScrollBarSlider && (scrollbar->state & State_MouseOver)) - stateId = SCRBS_HOT; - else - stateId = SCRBS_NORMAL; - - // Draw handle - theme.partId = flags & State_Horizontal ? SBP_THUMBBTNHORZ : SBP_THUMBBTNVERT; - theme.stateId = stateId; - d->drawBackground(theme); - - const QRect gripperBounds = QWindowsXPStylePrivate::scrollBarGripperBounds(flags, &theme); - // Draw gripper if there is enough space - if (!gripperBounds.isEmpty()) { - p->save(); - theme.rect = gripperBounds; - p->setClipRegion(d->region(theme));// Only change inside the region of the gripper - d->drawBackground(theme); // Transparent gripper ontop of background - p->restore(); - } - } - } - } - break; - -//#if QT_CONFIG(slider) - case CC_Slider: - if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) - { - XPThemeData theme(option->window, p, QWindowsXPStylePrivate::TrackBarTheme); - QRect slrect = slider->rect; - QRegion tickreg = slrect; - if (sub & SC_SliderGroove) { - theme.rect = proxy()->subControlRect(CC_Slider, option, SC_SliderGroove); - if (slider->orientation == Qt::Horizontal) { - partId = TKP_TRACK; - stateId = TRS_NORMAL; - theme.rect = QRect(slrect.left(), theme.rect.center().y() - 2, slrect.width(), 4); - } else { - partId = TKP_TRACKVERT; - stateId = TRVS_NORMAL; - theme.rect = QRect(theme.rect.center().x() - 2, slrect.top(), 4, slrect.height()); - } - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - tickreg -= theme.rect; - } - if (sub & SC_SliderTickmarks) { - int tickOffset = proxy()->pixelMetric(PM_SliderTickmarkOffset, slider); - int ticks = slider->tickPosition; - int thickness = proxy()->pixelMetric(PM_SliderControlThickness, slider); - int len = proxy()->pixelMetric(PM_SliderLength, slider); - int available = proxy()->pixelMetric(PM_SliderSpaceAvailable, slider); - int interval = slider->tickInterval; - if (interval <= 0) { - interval = slider->singleStep; - if (QStyle::sliderPositionFromValue(slider->minimum, slider->maximum, interval, - available) - - QStyle::sliderPositionFromValue(slider->minimum, slider->maximum, - 0, available) < 3) - interval = slider->pageStep; - } - if (!interval) - interval = 1; - int fudge = len / 2; - int pos; - int bothOffset = (ticks & QStyleOptionSlider::TicksAbove && ticks & QStyleOptionSlider::TicksBelow) ? 1 : 0; - p->setPen(d->sliderTickColor); - QVarLengthArray<QLine, 32> lines; - int v = slider->minimum; - while (v <= slider->maximum + 1) { - if (v == slider->maximum + 1 && interval == 1) - break; - const int v_ = qMin(v, slider->maximum); - int tickLength = (v_ == slider->minimum || v_ >= slider->maximum) ? 4 : 3; - pos = QStyle::sliderPositionFromValue(slider->minimum, slider->maximum, - v_, available) + fudge; - if (slider->orientation == Qt::Horizontal) { - if (ticks & QStyleOptionSlider::TicksAbove) - lines.append(QLine(pos, tickOffset - 1 - bothOffset, - pos, tickOffset - 1 - bothOffset - tickLength)); - - if (ticks & QStyleOptionSlider::TicksBelow) - lines.append(QLine(pos, tickOffset + thickness + bothOffset, - pos, tickOffset + thickness + bothOffset + tickLength)); - } else { - if (ticks & QStyleOptionSlider::TicksAbove) - lines.append(QLine(tickOffset - 1 - bothOffset, pos, - tickOffset - 1 - bothOffset - tickLength, pos)); - - if (ticks & QStyleOptionSlider::TicksBelow) - lines.append(QLine(tickOffset + thickness + bothOffset, pos, - tickOffset + thickness + bothOffset + tickLength, pos)); - } - // in the case where maximum is max int - int nextInterval = v + interval; - if (nextInterval < v) - break; - v = nextInterval; - } - if (!lines.isEmpty()) { - p->save(); - p->translate(slrect.topLeft()); - p->drawLines(lines.constData(), lines.size()); - p->restore(); - } - } - if (sub & SC_SliderHandle) { - theme.rect = proxy()->subControlRect(CC_Slider, option, SC_SliderHandle); - if (slider->orientation == Qt::Horizontal) { - if (slider->tickPosition == QStyleOptionSlider::TicksAbove) - partId = TKP_THUMBTOP; - else if (slider->tickPosition == QStyleOptionSlider::TicksBelow) - partId = TKP_THUMBBOTTOM; - else - partId = TKP_THUMB; - - if (!(slider->state & State_Enabled)) - stateId = TUS_DISABLED; - else if (slider->activeSubControls & SC_SliderHandle && (slider->state & State_Sunken)) - stateId = TUS_PRESSED; - else if (slider->activeSubControls & SC_SliderHandle && (slider->state & State_MouseOver)) - stateId = TUS_HOT; - else if (flags & State_HasFocus) - stateId = TUS_FOCUSED; - else - stateId = TUS_NORMAL; - } else { - if (slider->tickPosition == QStyleOptionSlider::TicksLeft) - partId = TKP_THUMBLEFT; - else if (slider->tickPosition == QStyleOptionSlider::TicksRight) - partId = TKP_THUMBRIGHT; - else - partId = TKP_THUMBVERT; - - if (!(slider->state & State_Enabled)) - stateId = TUVS_DISABLED; - else if (slider->activeSubControls & SC_SliderHandle && (slider->state & State_Sunken)) - stateId = TUVS_PRESSED; - else if (slider->activeSubControls & SC_SliderHandle && (slider->state & State_MouseOver)) - stateId = TUVS_HOT; - else if (flags & State_HasFocus) - stateId = TUVS_FOCUSED; - else - stateId = TUVS_NORMAL; - } - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - } - if (sub & SC_SliderGroove && slider->state & State_HasFocus) { - QStyleOptionFocusRect fropt; - fropt.QStyleOption::operator=(*slider); - fropt.rect = subElementRect(SE_SliderFocusRect, slider); - proxy()->drawPrimitive(PE_FrameFocusRect, &fropt, p); - } - } - break; -//#endif -#if 0 && QT_CONFIG(toolbutton) - case CC_ToolButton: - if (const QStyleOptionToolButton *toolbutton - = qstyleoption_cast<const QStyleOptionToolButton *>(option)) { - QRect button, menuarea; - button = proxy()->subControlRect(cc, toolbutton, SC_ToolButton); - menuarea = proxy()->subControlRect(cc, toolbutton, SC_ToolButtonMenu); - - State bflags = toolbutton->state & ~State_Sunken; - State mflags = bflags; - bool autoRaise = flags & State_AutoRaise; - if (autoRaise) { - if (!(bflags & State_MouseOver) || !(bflags & State_Enabled)) { - bflags &= ~State_Raised; - } - } - - if (toolbutton->state & State_Sunken) { - if (toolbutton->activeSubControls & SC_ToolButton) { - bflags |= State_Sunken; - mflags |= State_MouseOver | State_Sunken; - } else if (toolbutton->activeSubControls & SC_ToolButtonMenu) { - mflags |= State_Sunken; - bflags |= State_MouseOver; - } - } - - QStyleOption tool = *toolbutton; - if (toolbutton->subControls & SC_ToolButton) { - if (flags & (State_Sunken | State_On | State_Raised) || !autoRaise) { - if (toolbutton->features & QStyleOptionToolButton::MenuButtonPopup && autoRaise) { - XPThemeData theme(option->window, p, QWindowsXPStylePrivate::ToolBarTheme); - theme.partId = TP_SPLITBUTTON; - theme.rect = button; - if (!(bflags & State_Enabled)) - stateId = TS_DISABLED; - else if (bflags & State_Sunken) - stateId = TS_PRESSED; - else if (bflags & State_MouseOver || !(flags & State_AutoRaise)) - stateId = flags & State_On ? TS_HOTCHECKED : TS_HOT; - else if (bflags & State_On) - stateId = TS_CHECKED; - else - stateId = TS_NORMAL; - if (option->direction == Qt::RightToLeft) - theme.mirrorHorizontally = true; - theme.stateId = stateId; - d->drawBackground(theme); - } else { - tool.rect = option->rect; - tool.state = bflags; - if (autoRaise) // for tool bars - proxy()->drawPrimitive(PE_PanelButtonTool, &tool, p); - else - proxy()->drawPrimitive(PE_PanelButtonBevel, &tool, p); - } - } - } - - if (toolbutton->state & State_HasFocus) { - QStyleOptionFocusRect fr; - fr.QStyleOption::operator=(*toolbutton); - fr.rect.adjust(3, 3, -3, -3); - if (toolbutton->features & QStyleOptionToolButton::MenuButtonPopup) - fr.rect.adjust(0, 0, -proxy()->pixelMetric(QStyle::PM_MenuButtonIndicator, - toolbutton), 0); - proxy()->drawPrimitive(PE_FrameFocusRect, &fr, p); - } - QStyleOptionToolButton label = *toolbutton; - label.state = bflags; - int fw = 2; - if (!autoRaise) - label.state &= ~State_Sunken; - label.rect = button.adjusted(fw, fw, -fw, -fw); - proxy()->drawControl(CE_ToolButtonLabel, &label, p); - - if (toolbutton->subControls & SC_ToolButtonMenu) { - tool.rect = menuarea; - tool.state = mflags; - if (autoRaise) { - proxy()->drawPrimitive(PE_IndicatorButtonDropDown, &tool, p); - } else { - tool.state = mflags; - menuarea.adjust(-2, 0, 0, 0); - // Draw menu button - if ((bflags & State_Sunken) != (mflags & State_Sunken)){ - p->save(); - p->setClipRect(menuarea); - tool.rect = option->rect; - proxy()->drawPrimitive(PE_PanelButtonBevel, &tool, p); - p->restore(); - } - // Draw arrow - p->save(); - p->setPen(option->palette.dark().color()); - p->drawLine(menuarea.left(), menuarea.top() + 3, - menuarea.left(), menuarea.bottom() - 3); - p->setPen(option->palette.light().color()); - p->drawLine(menuarea.left() - 1, menuarea.top() + 3, - menuarea.left() - 1, menuarea.bottom() - 3); - - tool.rect = menuarea.adjusted(2, 3, -2, -1); - proxy()->drawPrimitive(PE_IndicatorArrowDown, &tool, p); - p->restore(); - } - } else if (toolbutton->features & QStyleOptionToolButton::HasMenu) { - int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, toolbutton); - QRect ir = toolbutton->rect; - QStyleOptionToolButton newBtn = *toolbutton; - newBtn.rect = QRect(ir.right() + 4 - mbi, ir.height() - mbi + 4, mbi - 5, mbi - 5); - proxy()->drawPrimitive(PE_IndicatorArrowDown, &newBtn, p); - } - } - break; -#endif // QT_CONFIG(toolbutton) - - case CC_TitleBar: - { - if (const QStyleOptionTitleBar *tb = qstyleoption_cast<const QStyleOptionTitleBar *>(option)) - { - const qreal factor = QWindowsStylePrivate::nativeMetricScaleFactor(option); - bool isActive = tb->titleBarState & QStyle::State_Active; - XPThemeData theme(option->window, p, QWindowsXPStylePrivate::WindowTheme); - if (sub & SC_TitleBarLabel) { - - partId = (tb->titleBarState & Qt::WindowMinimized) ? WP_MINCAPTION : WP_CAPTION; - theme.rect = option->rect; - if (!(option->state & QStyle::State_Enabled)) - stateId = CS_DISABLED; - else if (isActive) - stateId = CS_ACTIVE; - else - stateId = CS_INACTIVE; - - theme.partId = partId; - theme.stateId = stateId; - d->drawBackground(theme); - - QRect ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarLabel); - - int result = TST_NONE; - GetThemeEnumValue(theme.handle(), WP_CAPTION, isActive ? CS_ACTIVE : CS_INACTIVE, TMT_TEXTSHADOWTYPE, &result); - if (result != TST_NONE) { - COLORREF textShadowRef; - GetThemeColor(theme.handle(), WP_CAPTION, isActive ? CS_ACTIVE : CS_INACTIVE, TMT_TEXTSHADOWCOLOR, &textShadowRef); - QColor textShadow = qRgb(GetRValue(textShadowRef), GetGValue(textShadowRef), GetBValue(textShadowRef)); - p->setPen(textShadow); - p->drawText(int(ir.x() + 3 * factor), int(ir.y() + 2 * factor), - int(ir.width() - 1 * factor), ir.height(), - Qt::AlignLeft | Qt::AlignVCenter | Qt::TextSingleLine, tb->text); - } - COLORREF captionText = GetSysColor(isActive ? COLOR_CAPTIONTEXT : COLOR_INACTIVECAPTIONTEXT); - QColor textColor = qRgb(GetRValue(captionText), GetGValue(captionText), GetBValue(captionText)); - p->setPen(textColor); - p->drawText(int(ir.x() + 2 * factor), int(ir.y() + 1 * factor), - int(ir.width() - 2 * factor), ir.height(), - Qt::AlignLeft | Qt::AlignVCenter | Qt::TextSingleLine, tb->text); - } - if (sub & SC_TitleBarSysMenu && tb->titleBarFlags & Qt::WindowSystemMenuHint) { - theme.rect = proxy()->subControlRect(CC_TitleBar, option, SC_TitleBarSysMenu); - partId = WP_SYSBUTTON; - if (!(option->state & QStyle::State_Enabled) || !isActive) - stateId = SBS_DISABLED; - else if (option->activeSubControls == SC_TitleBarSysMenu && (option->state & State_Sunken)) - stateId = SBS_PUSHED; - else if (option->activeSubControls == SC_TitleBarSysMenu && (option->state & State_MouseOver)) - stateId = SBS_HOT; - else - stateId = SBS_NORMAL; - if (!tb->icon.isNull()) { - tb->icon.paint(p, theme.rect); - } else { - theme.partId = partId; - theme.stateId = stateId; - if (theme.size().isEmpty()) { - int iconSize = proxy()->pixelMetric(PM_SmallIconSize, tb); - QPixmap pm = proxy()->standardIcon(SP_TitleBarMenuButton, tb).pixmap(iconSize, iconSize); - p->save(); - drawItemPixmap(p, theme.rect, Qt::AlignCenter, pm); - p->restore(); - } else { - d->drawBackground(theme); - } - } - } - - if (sub & SC_TitleBarMinButton && tb->titleBarFlags & Qt::WindowMinimizeButtonHint - && !(tb->titleBarState & Qt::WindowMinimized)) { - populateTitleBarButtonTheme(proxy(), option, SC_TitleBarMinButton, isActive, WP_MINBUTTON, &theme); - d->drawBackground(theme); - } - if (sub & SC_TitleBarMaxButton && tb->titleBarFlags & Qt::WindowMaximizeButtonHint - && !(tb->titleBarState & Qt::WindowMaximized)) { - populateTitleBarButtonTheme(proxy(), option, SC_TitleBarMaxButton, isActive, WP_MAXBUTTON, &theme); - d->drawBackground(theme); - } - if (sub & SC_TitleBarContextHelpButton - && tb->titleBarFlags & Qt::WindowContextHelpButtonHint) { - populateTitleBarButtonTheme(proxy(), option, SC_TitleBarContextHelpButton, isActive, WP_HELPBUTTON, &theme); - d->drawBackground(theme); - } - bool drawNormalButton = (sub & SC_TitleBarNormalButton) - && (((tb->titleBarFlags & Qt::WindowMinimizeButtonHint) - && (tb->titleBarState & Qt::WindowMinimized)) - || ((tb->titleBarFlags & Qt::WindowMaximizeButtonHint) - && (tb->titleBarState & Qt::WindowMaximized))); - if (drawNormalButton) { - populateTitleBarButtonTheme(proxy(), option, SC_TitleBarNormalButton, isActive, WP_RESTOREBUTTON, &theme); - d->drawBackground(theme); - } - if (sub & SC_TitleBarShadeButton && tb->titleBarFlags & Qt::WindowShadeButtonHint - && !(tb->titleBarState & Qt::WindowMinimized)) { - populateTitleBarButtonTheme(proxy(), option, SC_TitleBarShadeButton, isActive, WP_MINBUTTON, &theme); - d->drawBackground(theme); - } - if (sub & SC_TitleBarUnshadeButton && tb->titleBarFlags & Qt::WindowShadeButtonHint - && tb->titleBarState & Qt::WindowMinimized) { - populateTitleBarButtonTheme(proxy(), option, SC_TitleBarUnshadeButton, isActive, WP_RESTOREBUTTON, &theme); - d->drawBackground(theme); - } - if (sub & SC_TitleBarCloseButton && tb->titleBarFlags & Qt::WindowSystemMenuHint) { - populateTitleBarButtonTheme(proxy(), option, SC_TitleBarCloseButton, isActive, WP_CLOSEBUTTON, &theme); - d->drawBackground(theme); - } - } - } - break; - -#if 0 && QT_CONFIG(mdiarea) - case CC_MdiControls: - { - XPThemeData theme(option->window, p, QWindowsXPStylePrivate::WindowTheme, WP_MDICLOSEBUTTON, CBS_NORMAL); - if (Q_UNLIKELY(!theme.isValid())) - return; - - if (option->subControls.testFlag(SC_MdiCloseButton)) { - populateMdiButtonTheme(proxy(), option, SC_MdiCloseButton, WP_MDICLOSEBUTTON, &theme); - d->drawBackground(theme, mdiButtonCorrectionFactor(theme)); - } - if (option->subControls.testFlag(SC_MdiNormalButton)) { - populateMdiButtonTheme(proxy(), option, SC_MdiNormalButton, WP_MDIRESTOREBUTTON, &theme); - d->drawBackground(theme, mdiButtonCorrectionFactor(theme)); - } - if (option->subControls.testFlag(QStyle::SC_MdiMinButton)) { - populateMdiButtonTheme(proxy(), option, SC_MdiMinButton, WP_MDIMINBUTTON, &theme); - d->drawBackground(theme, mdiButtonCorrectionFactor(theme)); - } - } - break; -#endif // QT_CONFIG(mdiarea) -#if 0 && QT_CONFIG(dial) - case CC_Dial: - if (const QStyleOptionSlider *dial = qstyleoption_cast<const QStyleOptionSlider *>(option)) - QStyleHelper::drawDial(dial, p); - break; -#endif // QT_CONFIG(dial) - default: - QWindowsStyle::drawComplexControl(cc, option, p); - break; - } -} - -static inline Qt::Orientation progressBarOrientation(const QStyleOption *option = nullptr) -{ - if (const QStyleOptionProgressBar *pb = qstyleoption_cast<const QStyleOptionProgressBar *>(option)) - return pb->state & QStyle::State_Horizontal ? Qt::Horizontal : Qt::Vertical; - return Qt::Horizontal; -} - -int QWindowsXPStylePrivate::pixelMetricFromSystemDp(QStyle::PixelMetric pm, const QStyleOption *option) -{ - switch (pm) { - case QStyle::PM_IndicatorWidth: - return XPThemeData::themeSize(option->window, nullptr, QWindowsXPStylePrivate::ButtonTheme, BP_CHECKBOX, CBS_UNCHECKEDNORMAL).width(); - case QStyle::PM_IndicatorHeight: - return XPThemeData::themeSize(option->window, nullptr, QWindowsXPStylePrivate::ButtonTheme, BP_CHECKBOX, CBS_UNCHECKEDNORMAL).height(); - case QStyle::PM_ExclusiveIndicatorWidth: - return XPThemeData::themeSize(option->window, nullptr, QWindowsXPStylePrivate::ButtonTheme, BP_RADIOBUTTON, RBS_UNCHECKEDNORMAL).width(); - case QStyle::PM_ExclusiveIndicatorHeight: - return XPThemeData::themeSize(option->window, nullptr, QWindowsXPStylePrivate::ButtonTheme, BP_RADIOBUTTON, RBS_UNCHECKEDNORMAL).height(); - case QStyle::PM_ProgressBarChunkWidth: - return progressBarOrientation(option) == Qt::Horizontal - ? XPThemeData::themeSize(option->window, nullptr, QWindowsXPStylePrivate::ProgressTheme, PP_CHUNK).width() - : XPThemeData::themeSize(option->window, nullptr, QWindowsXPStylePrivate::ProgressTheme, PP_CHUNKVERT).height(); - case QStyle::PM_SliderThickness: - return XPThemeData::themeSize(option->window, nullptr, QWindowsXPStylePrivate::TrackBarTheme, TKP_THUMB).height(); - case QStyle::PM_TitleBarHeight: - return option->window && (option->window->type() == Qt::Tool) - ? GetSystemMetrics(SM_CYSMCAPTION) + GetSystemMetrics(SM_CXSIZEFRAME) - : GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CXSIZEFRAME); - case QStyle::PM_MdiSubWindowFrameWidth: - return XPThemeData::themeSize(option->window, nullptr, QWindowsXPStylePrivate::WindowTheme, WP_FRAMELEFT, FS_ACTIVE).width(); - case QStyle::PM_DockWidgetFrameWidth: - return XPThemeData::themeSize(option->window, nullptr, QWindowsXPStylePrivate::WindowTheme, WP_SMALLFRAMERIGHT, FS_ACTIVE).width(); - default: - break; - } - return QWindowsXPStylePrivate::InvalidMetric; -} - -/*! \reimp */ -int QWindowsXPStyle::pixelMetric(PixelMetric pm, const QStyleOption *option) const -{ - if (!QWindowsXPStylePrivate::useXP()) - return QWindowsStyle::pixelMetric(pm, option); - - int res = QWindowsXPStylePrivate::pixelMetricFromSystemDp(pm, option); - if (res != QWindowsStylePrivate::InvalidMetric) - return qRound(qreal(res) * QWindowsStylePrivate::nativeMetricScaleFactor(option)); - - res = 0; - switch (pm) { - case PM_MenuBarPanelWidth: - case PM_ButtonDefaultIndicator: - res = 0; - break; - - case PM_DefaultFrameWidth: - res = 1; - //res = qobject_cast<const QListView*>(widget) ? 2 : 1; - break; - case PM_MenuPanelWidth: - case PM_SpinBoxFrameWidth: - res = 1; - break; - - case PM_TabBarTabOverlap: - case PM_MenuHMargin: - case PM_MenuVMargin: - res = 2; - break; -#if 0 - case PM_TabBarBaseOverlap: - if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) { - switch (tab->shape) { - case QTabBar::RoundedNorth: - case QTabBar::TriangularNorth: - case QTabBar::RoundedWest: - case QTabBar::TriangularWest: - res = 1; - break; - case QTabBar::RoundedSouth: - case QTabBar::TriangularSouth: - res = 2; - break; - case QTabBar::RoundedEast: - case QTabBar::TriangularEast: - res = 3; - break; - } - } - break; -#endif - case PM_SplitterWidth: - res = QStyleHelper::dpiScaled(5., option); - break; - - case PM_MdiSubWindowMinimizedWidth: - res = 160; - break; - -#if 0 && QT_CONFIG(toolbar) - case PM_ToolBarHandleExtent: - res = int(QStyleHelper::dpiScaled(8., option)); - break; - -#endif // QT_CONFIG(toolbar) - case PM_DockWidgetSeparatorExtent: - case PM_DockWidgetTitleMargin: - res = int(QStyleHelper::dpiScaled(4., option)); - break; - - case PM_ButtonShiftHorizontal: - case PM_ButtonShiftVertical: - res = qstyleoption_cast<const QStyleOptionToolButton *>(option) ? 1 : 0; - break; - - default: - res = QWindowsStyle::pixelMetric(pm, option); - } - - return res; -} - -/* - This function is used by subControlRect to check if a button - should be drawn for the given subControl given a set of window flags. -*/ -static bool buttonVisible(const QStyle::SubControl sc, const QStyleOptionTitleBar *tb){ - - bool isMinimized = tb->titleBarState & Qt::WindowMinimized; - bool isMaximized = tb->titleBarState & Qt::WindowMaximized; - const uint flags = tb->titleBarFlags; - bool retVal = false; - switch (sc) { - case QStyle::SC_TitleBarContextHelpButton: - if (flags & Qt::WindowContextHelpButtonHint) - retVal = true; - break; - case QStyle::SC_TitleBarMinButton: - if (!isMinimized && (flags & Qt::WindowMinimizeButtonHint)) - retVal = true; - break; - case QStyle::SC_TitleBarNormalButton: - if (isMinimized && (flags & Qt::WindowMinimizeButtonHint)) - retVal = true; - else if (isMaximized && (flags & Qt::WindowMaximizeButtonHint)) - retVal = true; - break; - case QStyle::SC_TitleBarMaxButton: - if (!isMaximized && (flags & Qt::WindowMaximizeButtonHint)) - retVal = true; - break; - case QStyle::SC_TitleBarShadeButton: - if (!isMinimized && flags & Qt::WindowShadeButtonHint) - retVal = true; - break; - case QStyle::SC_TitleBarUnshadeButton: - if (isMinimized && flags & Qt::WindowShadeButtonHint) - retVal = true; - break; - case QStyle::SC_TitleBarCloseButton: - if (flags & Qt::WindowSystemMenuHint) - retVal = true; - break; - case QStyle::SC_TitleBarSysMenu: - if (flags & Qt::WindowSystemMenuHint) - retVal = true; - break; - default : - retVal = true; - } - return retVal; -} - -/*! - \reimp -*/ -QRect QWindowsXPStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *option, - SubControl subControl) const -{ - if (!QWindowsXPStylePrivate::useXP()) - return QWindowsStyle::subControlRect(cc, option, subControl); - - QRect rect; - - switch (cc) { - case CC_GroupBox: - rect = visualRect(option->direction, option->rect, - QWindowsStyle::subControlRect(cc, option, subControl)); - if (subControl == QStyle::SC_GroupBoxContents) { - // This will add the margins that was added by QLayouts in QtWidgets - // (default to 9 for layouts inside a QGroupBox) - rect.adjust(9, 9, -9, -9); - } - break; - case CC_TitleBar: - if (const QStyleOptionTitleBar *tb = qstyleoption_cast<const QStyleOptionTitleBar *>(option)) { - if (!buttonVisible(subControl, tb)) - return rect; - const bool isToolTitle = false; - const int height = tb->rect.height(); - const int width = tb->rect.width(); - const int buttonMargin = int(QStyleHelper::dpiScaled(4, option)); - const qreal factor = QWindowsStylePrivate::nativeMetricScaleFactor(option); - int buttonHeight = qRound(qreal(GetSystemMetrics(SM_CYSIZE)) * factor) - - buttonMargin; - int buttonWidth = qRound(qreal(GetSystemMetrics(SM_CXSIZE)) * factor) - - buttonMargin; - const int delta = buttonWidth + 2; - int controlTop = option->rect.bottom() - buttonHeight - 2; - const int frameWidth = proxy()->pixelMetric(PM_MdiSubWindowFrameWidth, option); - const bool sysmenuHint = (tb->titleBarFlags & Qt::WindowSystemMenuHint) != 0; - const bool minimizeHint = (tb->titleBarFlags & Qt::WindowMinimizeButtonHint) != 0; - const bool maximizeHint = (tb->titleBarFlags & Qt::WindowMaximizeButtonHint) != 0; - const bool contextHint = (tb->titleBarFlags & Qt::WindowContextHelpButtonHint) != 0; - const bool shadeHint = (tb->titleBarFlags & Qt::WindowShadeButtonHint) != 0; - bool isMinimized = tb->titleBarState & Qt::WindowMinimized; - bool isMaximized = tb->titleBarState & Qt::WindowMaximized; - int offset = 0; - - switch (subControl) { - case SC_TitleBarLabel: - rect = QRect(frameWidth, 0, width - (buttonWidth + frameWidth + 10), height); - if (isToolTitle) { - if (sysmenuHint) { - rect.adjust(0, 0, -buttonWidth - 3, 0); - } - if (minimizeHint || maximizeHint) - rect.adjust(0, 0, -buttonWidth - 2, 0); - } else { - if (sysmenuHint) { - const int leftOffset = height - 8; - rect.adjust(leftOffset, 0, 0, 0); - } - if (minimizeHint) - rect.adjust(0, 0, -buttonWidth - 2, 0); - if (maximizeHint) - rect.adjust(0, 0, -buttonWidth - 2, 0); - if (contextHint) - rect.adjust(0, 0, -buttonWidth - 2, 0); - if (shadeHint) - rect.adjust(0, 0, -buttonWidth - 2, 0); - } - break; - - case SC_TitleBarContextHelpButton: - if (tb->titleBarFlags & Qt::WindowContextHelpButtonHint) - offset += delta; - Q_FALLTHROUGH(); - case SC_TitleBarMinButton: - if (!isMinimized && (tb->titleBarFlags & Qt::WindowMinimizeButtonHint)) - offset += delta; - else if (subControl == SC_TitleBarMinButton) - break; - Q_FALLTHROUGH(); - case SC_TitleBarNormalButton: - if (isMinimized && (tb->titleBarFlags & Qt::WindowMinimizeButtonHint)) - offset += delta; - else if (isMaximized && (tb->titleBarFlags & Qt::WindowMaximizeButtonHint)) - offset += delta; - else if (subControl == SC_TitleBarNormalButton) - break; - Q_FALLTHROUGH(); - case SC_TitleBarMaxButton: - if (!isMaximized && (tb->titleBarFlags & Qt::WindowMaximizeButtonHint)) - offset += delta; - else if (subControl == SC_TitleBarMaxButton) - break; - Q_FALLTHROUGH(); - case SC_TitleBarShadeButton: - if (!isMinimized && (tb->titleBarFlags & Qt::WindowShadeButtonHint)) - offset += delta; - else if (subControl == SC_TitleBarShadeButton) - break; - Q_FALLTHROUGH(); - case SC_TitleBarUnshadeButton: - if (isMinimized && (tb->titleBarFlags & Qt::WindowShadeButtonHint)) - offset += delta; - else if (subControl == SC_TitleBarUnshadeButton) - break; - Q_FALLTHROUGH(); - case SC_TitleBarCloseButton: - if (tb->titleBarFlags & Qt::WindowSystemMenuHint) - offset += delta; - else if (subControl == SC_TitleBarCloseButton) - break; - - rect.setRect(width - offset - controlTop + 1, controlTop, - buttonWidth, buttonHeight); - break; - - case SC_TitleBarSysMenu: - { - const int controlTop = 6; - const int controlHeight = height - controlTop - 3; - const int iconExtent = proxy()->pixelMetric(PM_SmallIconSize, option); - QSize iconSize = tb->icon.actualSize(QSize(iconExtent, iconExtent)); - if (tb->icon.isNull()) - iconSize = QSize(controlHeight, controlHeight); - int hPad = (controlHeight - iconSize.height())/2; - int vPad = (controlHeight - iconSize.width())/2; - rect = QRect(frameWidth + hPad, controlTop + vPad, iconSize.width(), iconSize.height()); - } - break; - default: - break; - } - } - break; - - case CC_ComboBox: - if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(option)) { - const int x = cmb->rect.x(), y = cmb->rect.y(), wi = cmb->rect.width(), he = cmb->rect.height(); - const int xpos = x + wi - qRound(QStyleHelper::dpiScaled(1 + 16, option)); - - switch (subControl) { - case SC_ComboBoxFrame: - rect = cmb->rect; - break; - - case SC_ComboBoxArrow: { - const qreal dpi = QStyleHelper::dpi(option); - rect = QRect(xpos, y + qRound(QStyleHelper::dpiScaled(1, dpi)), - qRound(QStyleHelper::dpiScaled(16, dpi)), - he - qRound(QStyleHelper::dpiScaled(2, dpi))); - } - break; - - case SC_ComboBoxEditField: { - const qreal dpi = QStyleHelper::dpi(option); - const int frame = qRound(QStyleHelper::dpiScaled(2, dpi)); - rect = QRect(x + frame, y + frame, - wi - qRound(QStyleHelper::dpiScaled(3 + 16, dpi)), - he - qRound(QStyleHelper::dpiScaled(4, dpi))); - } - break; - - case SC_ComboBoxListBoxPopup: - rect = cmb->rect; - break; - - default: - break; - } - } - break; -#if 0 && QT_CONFIG(mdiarea) - case CC_MdiControls: - { - int numSubControls = 0; - if (option->subControls & SC_MdiCloseButton) - ++numSubControls; - if (option->subControls & SC_MdiMinButton) - ++numSubControls; - if (option->subControls & SC_MdiNormalButton) - ++numSubControls; - if (numSubControls == 0) - break; - - int buttonWidth = option->rect.width() / numSubControls; - int offset = 0; - switch (subControl) { - case SC_MdiCloseButton: - // Only one sub control, no offset needed. - if (numSubControls == 1) - break; - offset += buttonWidth; - Q_FALLTHROUGH(); - case SC_MdiNormalButton: - // No offset needed if - // 1) There's only one sub control - // 2) We have a close button and a normal button (offset already added in SC_MdiClose) - if (numSubControls == 1 || (numSubControls == 2 && !(option->subControls & SC_MdiMinButton))) - break; - if (option->subControls & SC_MdiNormalButton) - offset += buttonWidth; - break; - default: - break; - } - rect = QRect(offset, 0, buttonWidth, option->rect.height()); - break; - } -#endif // QT_CONFIG(mdiarea) - - default: - rect = visualRect(option->direction, option->rect, - QWindowsStyle::subControlRect(cc, option, subControl)); - break; - } - return visualRect(option->direction, option->rect, rect); -} - -/*! - \reimp -*/ -QSize QWindowsXPStyle::sizeFromContents(ContentsType ct, const QStyleOption *option, - const QSize &contentsSize) const -{ - if (!QWindowsXPStylePrivate::useXP()) - return QWindowsStyle::sizeFromContents(ct, option, contentsSize); - - QSize sz(contentsSize); - switch (ct) { - case CT_LineEdit: - case CT_ComboBox: - { - if (contentsSize.isEmpty()) { - // Minimum size - return QSize(20, 20); - } - XPThemeData buttontheme(option->window, nullptr, QWindowsXPStylePrivate::ButtonTheme, BP_PUSHBUTTON, PBS_NORMAL); - if (buttontheme.isValid()) { - const QMarginsF borderSize = buttontheme.margins(); - if (!borderSize.isNull()) { - const qreal margin = qreal(2); - sz.rwidth() += qRound(borderSize.left() + borderSize.right() - margin); - sz.rheight() += int(borderSize.bottom() + borderSize.top() - margin); - } - const int textMargins = 2*(proxy()->pixelMetric(PM_FocusFrameHMargin, option) + 1); - sz += QSize(qMax(pixelMetric(QStyle::PM_ScrollBarExtent, option) - + textMargins, 23), 0); //arrow button - } - } - break; - case CT_TabWidget: - sz += QSize(6, 6); - break; - case CT_Menu: - sz += QSize(1, 0); - break; -#if 0 && QT_CONFIG(menubar) - case CT_MenuBarItem: - if (!sz.isEmpty()) - sz += QSize(windowsItemHMargin * 5 + 1, 6); - break; -#endif - case CT_MenuItem: - if (const QStyleOptionMenuItem *menuitem = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) - { - if (menuitem->menuItemType != QStyleOptionMenuItem::Separator) { - sz = QWindowsStyle::sizeFromContents(ct, option, sz); - sz.setHeight(sz.height() - 2); - return sz; - } - } - sz = QWindowsStyle::sizeFromContents(ct, option, sz); - break; - - case CT_MdiControls: { - sz.setHeight(int(QStyleHelper::dpiScaled(19, option))); - int width = 54; - if (const QStyleOptionComplex *styleOpt = qstyleoption_cast<const QStyleOptionComplex *>(option)) { - width = 0; - if (styleOpt->subControls & SC_MdiMinButton) - width += 17 + 1; - if (styleOpt->subControls & SC_MdiNormalButton) - width += 17 + 1; - if (styleOpt->subControls & SC_MdiCloseButton) - width += 17 + 1; - } - sz.setWidth(int(QStyleHelper::dpiScaled(width, option))); - } - break; - - case CT_Slider: - if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) { - QStyle::SubControls sub = slider->subControls; - const int TickSpace = 5; - int thick = proxy()->pixelMetric(QStyle::PM_SliderThickness, slider); - - if (slider->tickPosition & QStyleOptionSlider::TicksAbove) - thick += TickSpace; - if (slider->tickPosition & QStyleOptionSlider::TicksBelow) - thick += TickSpace; - sz.setWidth(thick); - - if (sub & SC_SliderGroove) { - const int SliderLength = 84; - sz.setHeight(SliderLength); - } - if (slider->orientation == Qt::Horizontal) - sz.transpose(); - if (sub & SC_SliderHandle) { - const QSize s = proxy()->subControlRect(CC_Slider, slider, SC_SliderHandle).size(); - sz = sz.expandedTo(s); - } - } - break; - case CT_ScrollBar : - // Make sure that the scroll bar is large enough to display the thumb indicator. - if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(option)) { - const int scrollBarHeight = proxy()->pixelMetric(QStyle::PM_ScrollBarExtent, slider); - const int scrollBarSliderMin = proxy()->pixelMetric(QStyle::PM_ScrollBarSliderMin, slider); - int &szw = slider->orientation == Qt::Horizontal ? sz.rwidth() : sz.rheight(); - int &szh = slider->orientation == Qt::Horizontal ? sz.rheight() : sz.rwidth(); - if (slider->subControls & (SC_ScrollBarSlider | SC_ScrollBarGroove)) { - szw = qMax(szw, scrollBarSliderMin + 2 * scrollBarHeight); - szh = scrollBarHeight; - } else if (slider->subControls & (SC_ScrollBarAddLine| SC_ScrollBarSubLine)) { - // Assume that the AddLine and SubLine buttons have the same size, and just query - // for the size of AddLine - const QSize s = proxy()->subControlRect(CC_ScrollBar, slider, SC_ScrollBarAddLine).size(); - szw = qMax(szw, s.width()); - szh = scrollBarHeight; - } - } - break; - default: - sz = QWindowsStyle::sizeFromContents(ct, option, sz); - break; - } - - return sz; -} - - -/*! \reimp */ -int QWindowsXPStyle::styleHint(StyleHint hint, const QStyleOption *option, - QStyleHintReturn *returnData) const -{ - QWindowsXPStylePrivate *d = const_cast<QWindowsXPStylePrivate*>(d_func()); - if (!QWindowsXPStylePrivate::useXP()) - return QWindowsStyle::styleHint(hint, option, returnData); - - int res = 0; - switch (hint) { - - case SH_EtchDisabledText: - //res = (qobject_cast<const QLabel*>(widget) != 0); - res = 0; - break; - - case SH_SpinControls_DisableOnBounds: - res = 0; - break; - - case SH_TitleBar_AutoRaise: - case SH_TitleBar_NoBorder: - res = 1; - break; - - case SH_GroupBox_TextLabelColor: - if (option->state & QStyle::State_Enabled) - res = d->groupBoxTextColor; - else - res = d->groupBoxTextColorDisabled; - break; - - case SH_Table_GridLineColor: - res = 0xC0C0C0; - break; - - case SH_WindowFrame_Mask: - { - res = 1; - QStyleHintReturnMask *mask = qstyleoption_cast<QStyleHintReturnMask *>(returnData); - const QStyleOptionTitleBar *titlebar = qstyleoption_cast<const QStyleOptionTitleBar *>(option); - if (mask && titlebar) { - // Note certain themes will not return the whole window frame but only the titlebar part when - // queried This function needs to return the entire window mask, hence we will only fetch the mask for the - // titlebar itself and add the remaining part of the window rect at the bottom. - int tbHeight = proxy()->pixelMetric(PM_TitleBarHeight, option); - QRect titleBarRect = option->rect; - titleBarRect.setHeight(tbHeight); - XPThemeData themeData; - if (titlebar->titleBarState & Qt::WindowMinimized) { - themeData = XPThemeData(option->window, nullptr, - QWindowsXPStylePrivate::WindowTheme, - WP_MINCAPTION, CS_ACTIVE, titleBarRect); - } else { - themeData = XPThemeData(option->window, nullptr, - QWindowsXPStylePrivate::WindowTheme, - WP_CAPTION, CS_ACTIVE, titleBarRect); - } - mask->region = d->region(themeData) + - QRect(0, tbHeight, option->rect.width(), option->rect.height() - tbHeight); - } - } - break; -#if 0 && QT_CONFIG(rubberband) - case SH_RubberBand_Mask: - if (qstyleoption_cast<const QStyleOptionRubberBand *>(option)) - res = 0; - break; -#endif // QT_CONFIG(rubberband) - - case SH_ItemView_DrawDelegateFrame: - res = 1; - break; - - default: - res =QWindowsStyle::styleHint(hint, option, returnData); - } - - return res; -} - -QMargins QWindowsXPStyle::ninePatchMargins(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QSize &imageSize) const -{ - QMargins margins; - - switch (cc) { - case CC_ScrollBar: { - margins = QWindowsStyle::ninePatchMargins(cc, opt, imageSize); - if (const auto option = qstyleoption_cast<const QStyleOptionSlider *>(opt)) { - if (option->orientation == Qt::Horizontal) { - margins.setTop(-1); - margins.setBottom(-1); - } else { - margins.setLeft(-1); - margins.setRight(-1); - } - } - break; } - default: - margins = QWindowsStyle::ninePatchMargins(cc, opt, imageSize); - break; - } - - return margins; -} - - -/*! \reimp */ -QPalette QWindowsXPStyle::standardPalette() const -{ - return QWindowsXPStylePrivate::useXP() ? QPalette() : QWindowsStyle::standardPalette(); -} - -/*! - \reimp -*/ -QPixmap QWindowsXPStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOption *option) const -{ - if (!QWindowsXPStylePrivate::useXP()) - return QWindowsStyle::standardPixmap(standardPixmap, option); - -#if 0 - switch (standardPixmap) { - case SP_TitleBarMaxButton: - case SP_TitleBarCloseButton: - if (qstyleoption_cast<const QStyleOptionDockWidget *>(option)) - { - if (widget && widget->isWindow()) { - XPThemeData theme(widget, nullptr, QWindowsXPStylePrivate::WindowTheme, WP_SMALLCLOSEBUTTON, CBS_NORMAL); - if (theme.isValid()) { - const QSize size = (theme.size() * QWindowsStylePrivate::nativeMetricScaleFactor(option)).toSize(); - return QIcon(QWindowsStyle::standardPixmap(standardPixmap, option, widget)).pixmap(size); - } - } - } - break; - default: - break; - } -#endif - return QWindowsStyle::standardPixmap(standardPixmap, option); -} - -/*! - \reimp -*/ -QIcon QWindowsXPStyle::standardIcon(StandardPixmap standardIcon, - const QStyleOption *option) const -{ - if (!QWindowsXPStylePrivate::useXP()) { - return QWindowsStyle::standardIcon(standardIcon, option); - } -#if 0 - QWindowsXPStylePrivate *d = const_cast<QWindowsXPStylePrivate*>(d_func()); - switch (standardIcon) { - case SP_TitleBarMaxButton: - if (qstyleoption_cast<const QStyleOptionDockWidget *>(option)) - { - if (d->dockFloat.isNull()) { - XPThemeData themeSize(nullptr, nullptr, QWindowsXPStylePrivate::WindowTheme, - WP_SMALLCLOSEBUTTON, CBS_NORMAL); - XPThemeData theme(nullptr, nullptr, QWindowsXPStylePrivate::WindowTheme, - WP_MAXBUTTON, MAXBS_NORMAL); - if (theme.isValid()) { - const QSize size = (themeSize.size() * QWindowsStylePrivate::nativeMetricScaleFactor(option)).toSize(); - QPixmap pm(size); - pm.fill(Qt::transparent); - QPainter p(&pm); - theme.painter = &p; - theme.rect = QRect(QPoint(0, 0), size); - d->drawBackground(theme); - d->dockFloat.addPixmap(pm, QIcon::Normal, QIcon::Off); // Normal - pm.fill(Qt::transparent); - theme.stateId = MAXBS_PUSHED; - d->drawBackground(theme); - d->dockFloat.addPixmap(pm, QIcon::Normal, QIcon::On); // Pressed - pm.fill(Qt::transparent); - theme.stateId = MAXBS_HOT; - d->drawBackground(theme); - d->dockFloat.addPixmap(pm, QIcon::Active, QIcon::Off); // Hover - pm.fill(Qt::transparent); - theme.stateId = MAXBS_INACTIVE; - d->drawBackground(theme); - d->dockFloat.addPixmap(pm, QIcon::Disabled, QIcon::Off); // Disabled - } - } - if (widget && widget->isWindow()) - return d->dockFloat; - - } - break; - case SP_TitleBarCloseButton: - if (qstyleoption_cast<const QStyleOptionDockWidget *>(option)) - { - if (d->dockClose.isNull()) { - XPThemeData theme(nullptr, nullptr, QWindowsXPStylePrivate::WindowTheme, - WP_SMALLCLOSEBUTTON, CBS_NORMAL); - if (theme.isValid()) { - const QSize size = (theme.size() * QWindowsStylePrivate::nativeMetricScaleFactor(option)).toSize(); - QPixmap pm(size); - pm.fill(Qt::transparent); - QPainter p(&pm); - theme.painter = &p; - theme.partId = WP_CLOSEBUTTON; // #### - theme.rect = QRect(QPoint(0, 0), size); - d->drawBackground(theme); - d->dockClose.addPixmap(pm, QIcon::Normal, QIcon::Off); // Normal - pm.fill(Qt::transparent); - theme.stateId = CBS_PUSHED; - d->drawBackground(theme); - d->dockClose.addPixmap(pm, QIcon::Normal, QIcon::On); // Pressed - pm.fill(Qt::transparent); - theme.stateId = CBS_HOT; - d->drawBackground(theme); - d->dockClose.addPixmap(pm, QIcon::Active, QIcon::Off); // Hover - pm.fill(Qt::transparent); - theme.stateId = CBS_INACTIVE; - d->drawBackground(theme); - d->dockClose.addPixmap(pm, QIcon::Disabled, QIcon::Off); // Disabled - } - } - if (widget && widget->isWindow()) - return d->dockClose; - } - break; - case SP_TitleBarNormalButton: - if (qstyleoption_cast<const QStyleOptionDockWidget *>(option)) - { - if (d->dockFloat.isNull()) { - XPThemeData themeSize(nullptr, nullptr, QWindowsXPStylePrivate::WindowTheme, - WP_SMALLCLOSEBUTTON, CBS_NORMAL); - XPThemeData theme(nullptr, nullptr, QWindowsXPStylePrivate::WindowTheme, - WP_RESTOREBUTTON, RBS_NORMAL); - if (theme.isValid()) { - const QSize size = (themeSize.size() * QWindowsStylePrivate::nativeMetricScaleFactor(option)).toSize(); - QPixmap pm(size); - pm.fill(Qt::transparent); - QPainter p(&pm); - theme.painter = &p; - theme.rect = QRect(QPoint(0, 0), size); - d->drawBackground(theme); - d->dockFloat.addPixmap(pm, QIcon::Normal, QIcon::Off); // Normal - pm.fill(Qt::transparent); - theme.stateId = RBS_PUSHED; - d->drawBackground(theme); - d->dockFloat.addPixmap(pm, QIcon::Normal, QIcon::On); // Pressed - pm.fill(Qt::transparent); - theme.stateId = RBS_HOT; - d->drawBackground(theme); - d->dockFloat.addPixmap(pm, QIcon::Active, QIcon::Off); // Hover - pm.fill(Qt::transparent); - theme.stateId = RBS_INACTIVE; - d->drawBackground(theme); - d->dockFloat.addPixmap(pm, QIcon::Disabled, QIcon::Off); // Disabled - } - } - if (widget && widget->isWindow()) - return d->dockFloat; - - } - break; - default: - break; - } -#endif - return QWindowsStyle::standardIcon(standardIcon, option); -} - -/*! - \internal - - Constructs a QWindowsXPStyle object. -*/ -QWindowsXPStyle::QWindowsXPStyle(QWindowsXPStylePrivate &dd) : QWindowsStyle(dd) -{ -} - -#ifndef QT_NO_DEBUG_STREAM -QDebug operator<<(QDebug d, const XPThemeData &t) -{ - QDebugStateSaver saver(d); - d.nospace(); - d << "XPThemeData(" << t.window << ", theme=#" << t.theme << ", " << t.htheme - << ", partId=" << t.partId << ", stateId=" << t.stateId << ", rect=" << t.rect - << ", mirrorHorizontally=" << t.mirrorHorizontally << ", mirrorVertically=" - << t.mirrorVertically << ", noBorder=" << t.noBorder << ", noContent=" << t.noContent - << ", rotate=" << t.rotate << ')'; - return d; -} - -QDebug operator<<(QDebug d, const ThemeMapKey &k) -{ - QDebugStateSaver saver(d); - d.nospace(); - d << "ThemeMapKey(theme=#" << k.theme - << ", partId=" << k.partId << ", stateId=" << k.stateId - << ", noBorder=" << k.noBorder << ", noContent=" << k.noContent << ')'; - return d; -} - -QDebug operator<<(QDebug d, const ThemeMapData &td) -{ - QDebugStateSaver saver(d); - d.nospace(); - d << "ThemeMapData(alphaType=" << td.alphaType - << ", dataValid=" << td.dataValid << ", partIsTransparent=" << td.partIsTransparent - << ", hasAlphaChannel=" << td.hasAlphaChannel << ", wasAlphaSwapped=" << td.wasAlphaSwapped - << ", hadInvalidAlpha=" << td.hadInvalidAlpha << ')'; - return d; -} -#endif // QT_NO_DEBUG_STREAM - -// Debugging code ---------------------------------------------------------------------[ START ]--- -// The code for this point on is not compiled by default, but only used as assisting -// debugging code when you uncomment the DEBUG_XP_STYLE define at the top of the file. - -#ifdef DEBUG_XP_STYLE -// The schema file expects these to be defined by the user. -#define TMT_ENUMDEF 8 -#define TMT_ENUMVAL TEXT('A') -#define TMT_ENUM TEXT('B') -#define SCHEMA_STRINGS // For 2nd pass on schema file -QT_BEGIN_INCLUDE_NAMESPACE -#include <tmschema.h> -QT_END_INCLUDE_NAMESPACE - -// A property's value, type and name combo -struct PropPair { - int propValue; - int propType; - LPCWSTR propName; -}; - -// Operator for sorting of PropPairs -bool operator<(PropPair a, PropPair b) { - return wcscmp(a.propName, b.propName) < 0; -} - -// Our list of all possible properties -static QList<PropPair> all_props; - - -/*! \internal - Dumps a portion of the full native DIB section double buffer. - The DIB section double buffer is only used when doing special - transformations to the theme part, or when the real double - buffer in the paintengine does not have an HDC we may use - directly. - Since we cannot rely on the pixel data we get from Microsoft - when drawing into the DIB section, we use this function to - see the actual data we got, and can determin the appropriate - action. -*/ -void QWindowsXPStylePrivate::dumpNativeDIB(int w, int h) -{ - if (w && h) { - static int pCount = 0; - DWORD *bufPix = (DWORD*)bufferPixels; - - char *bufferDump = new char[bufferH * bufferW * 16]; - char *bufferPos = bufferDump; - - memset(bufferDump, 0, sizeof(bufferDump)); - bufferPos += sprintf(bufferPos, "const int pixelBufferW%d = %d;\n", pCount, w); - bufferPos += sprintf(bufferPos, "const int pixelBufferH%d = %d;\n", pCount, h); - bufferPos += sprintf(bufferPos, "const unsigned DWORD pixelBuffer%d[] = {", pCount); - for (int iy = 0; iy < h; ++iy) { - bufferPos += sprintf(bufferPos, "\n "); - bufPix = (DWORD*)(bufferPixels + (iy * bufferW * 4)); - for (int ix = 0; ix < w; ++ix) { - bufferPos += sprintf(bufferPos, "0x%08x, ", *bufPix); - ++bufPix; - } - } - bufferPos += sprintf(bufferPos, "\n};\n\n"); - printf(bufferDump); - - delete[] bufferDump; - ++pCount; - } -} - -/*! \internal - Shows the value of a given property for a part. -*/ -static void showProperty(XPThemeData &themeData, const PropPair &prop) -{ - PROPERTYORIGIN origin = PO_NOTFOUND; - GetThemePropertyOrigin(themeData.handle(), themeData.partId, themeData.stateId, prop.propValue, &origin); - const char *originStr; - switch (origin) { - case PO_STATE: - originStr = "State "; - break; - case PO_PART: - originStr = "Part "; - break; - case PO_CLASS: - originStr = "Class "; - break; - case PO_GLOBAL: - originStr = "Globl "; - break; - case PO_NOTFOUND: - default: - originStr = "Unkwn "; - break; - } - - switch (prop.propType) { - case TMT_STRING: - { - wchar_t buffer[512]; - GetThemeString(themeData.handle(), themeData.partId, themeData.stateId, prop.propValue, buffer, 512); - printf(" (%sString) %-20S: %S\n", originStr, prop.propName, buffer); - } - break; - case TMT_ENUM: - { - int result = -1; - GetThemeEnumValue(themeData.handle(), themeData.partId, themeData.stateId, prop.propValue, &result); - printf(" (%sEnum) %-20S: %d\n", originStr, prop.propName, result); - } - break; - case TMT_INT: - { - int result = -1; - GetThemeInt(themeData.handle(), themeData.partId, themeData.stateId, prop.propValue, &result); - printf(" (%sint) %-20S: %d\n", originStr, prop.propName, result); - } - break; - case TMT_BOOL: - { - BOOL result = false; - GetThemeBool(themeData.handle(), themeData.partId, themeData.stateId, prop.propValue, &result); - printf(" (%sbool) %-20S: %d\n", originStr, prop.propName, result); - } - break; - case TMT_COLOR: - { - COLORREF result = 0; - GetThemeColor(themeData.handle(), themeData.partId, themeData.stateId, prop.propValue, &result); - printf(" (%scolor) %-20S: 0x%08X\n", originStr, prop.propName, result); - } - break; - case TMT_MARGINS: - { - MARGINS result; - memset(&result, 0, sizeof(result)); - GetThemeMargins(themeData.handle(), 0, themeData.partId, themeData.stateId, prop.propValue, 0, &result); - printf(" (%smargins) %-20S: (%d, %d, %d, %d)\n", originStr, - prop.propName, result.cxLeftWidth, result.cyTopHeight, result.cxRightWidth, result.cyBottomHeight); - } - break; - case TMT_FILENAME: - { - wchar_t buffer[512]; - GetThemeFilename(themeData.handle(), themeData.partId, themeData.stateId, prop.propValue, buffer, 512); - printf(" (%sfilename)%-20S: %S\n", originStr, prop.propName, buffer); - } - break; - case TMT_SIZE: - { - SIZE result1; - SIZE result2; - SIZE result3; - memset(&result1, 0, sizeof(result1)); - memset(&result2, 0, sizeof(result2)); - memset(&result3, 0, sizeof(result3)); - GetThemePartSize(themeData.handle(), 0, themeData.partId, themeData.stateId, 0, TS_MIN, &result1); - GetThemePartSize(themeData.handle(), 0, themeData.partId, themeData.stateId, 0, TS_TRUE, &result2); - GetThemePartSize(themeData.handle(), 0, themeData.partId, themeData.stateId, 0, TS_DRAW, &result3); - printf(" (%ssize) %-20S: Min (%d, %d), True(%d, %d), Draw(%d, %d)\n", originStr, prop.propName, - result1.cx, result1.cy, result2.cx, result2.cy, result3.cx, result3.cy); - } - break; - case TMT_POSITION: - { - POINT result; - memset(&result, 0, sizeof(result)); - GetThemePosition(themeData.handle(), themeData.partId, themeData.stateId, prop.propValue, &result); - printf(" (%sPosition)%-20S: (%d, %d)\n", originStr, prop.propName, result.x, result.y); - } - break; - case TMT_RECT: - { - RECT result; - memset(&result, 0, sizeof(result)); - GetThemeRect(themeData.handle(), themeData.partId, themeData.stateId, prop.propValue, &result); - printf(" (%sRect) %-20S: (%d, %d, %d, %d)\n", originStr, prop.propName, result.left, result.top, result.right, result.bottom); - } - break; - case TMT_FONT: - { - LOGFONT result; - memset(&result, 0, sizeof(result)); - GetThemeFont(themeData.handle(), 0, themeData.partId, themeData.stateId, prop.propValue, &result); - printf(" (%sFont) %-20S: %S height(%d) width(%d) weight(%d)\n", originStr, prop.propName, - result.lfFaceName, result.lfHeight, result.lfWidth, result.lfWeight); - } - break; - case TMT_INTLIST: - { - INTLIST result; - memset(&result, 0, sizeof(result)); - GetThemeIntList(themeData.handle(), themeData.partId, themeData.stateId, prop.propValue, &result); - printf(" (%sInt list)%-20S: { ", originStr, prop.propName); - for (int i = 0; i < result.iValueCount; ++i) - printf("%d ", result.iValues[i]); - printf("}\n"); - } - break; - default: - printf(" %s%S : Unknown property type (%d)!\n", originStr, prop.propName, prop.propType); - } -} - -/*! \internal - Dump all valid properties for a part. - If it's the first time this function is called, then the name, - enum value and documentation of all properties are shown, as - well as all global properties. -*/ -void QWindowsXPStylePrivate::showProperties(XPThemeData &themeData) -{ - if (!all_props.count()) { - const TMSCHEMAINFO *infoTable = GetSchemaInfo(); - for (int i = 0; i < infoTable->iPropCount; ++i) { - int propType = infoTable->pPropTable[i].bPrimVal; - int propValue = infoTable->pPropTable[i].sEnumVal; - LPCWSTR propName = infoTable->pPropTable[i].pszName; - - switch (propType) { - case TMT_ENUMDEF: - case TMT_ENUMVAL: - continue; - default: - if (propType != propValue) { - PropPair prop; - prop.propValue = propValue; - prop.propName = propName; - prop.propType = propType; - all_props.append(prop); - } - } - } - std::sort(all_props.begin(), all_props.end()); - - {// List all properties - printf("part properties count = %d:\n", all_props.count()); - printf(" Enum Property Name Description\n"); - printf("-----------------------------------------------------------\n"); - wchar_t themeName[256]; - pGetCurrentThemeName(themeName, 256, 0, 0, 0, 0); - for (int j = 0; j < all_props.count(); ++j) { - PropPair prop = all_props.at(j); - wchar_t buf[500]; - GetThemeDocumentationProperty(themeName, prop.propName, buf, 500); - printf("%3d: (%4d) %-20S %S\n", j, prop.propValue, prop.propName, buf); - } - } - - {// Show Global values - printf("Global Properties:\n"); - for (int j = 0; j < all_props.count(); ++j) { - PropPair prop = all_props.at(j); - PROPERTYORIGIN origin = PO_NOTFOUND; - GetThemePropertyOrigin(themeData.handle(), themeData.partId, themeData.stateId, prop.propValue, &origin); - if (origin == PO_GLOBAL) { - showProperty(themeData, prop); - } - } - } - } - - for (int j = 0; j < all_props.count(); ++j) { - PropPair prop = all_props.at(j); - PROPERTYORIGIN origin = PO_NOTFOUND; - GetThemePropertyOrigin(themeData.handle(), themeData.partId, themeData.stateId, prop.propValue, &origin); - if (origin != PO_NOTFOUND) - { - showProperty(themeData, prop); - } - } -} -#endif -// Debugging code -----------------------------------------------------------------------[ END ]--- - -} //namespace QQC2 - -QT_END_NAMESPACE diff --git a/src/quicknativestyle/qstyle/windows/qquickwindowsxpstyle_p.h b/src/quicknativestyle/qstyle/windows/qquickwindowsxpstyle_p.h deleted file mode 100644 index 5d8d5e20..00000000 --- a/src/quicknativestyle/qstyle/windows/qquickwindowsxpstyle_p.h +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKWINDOWSXPSTYLE_P_H -#define QQUICKWINDOWSXPSTYLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qquickwindowsstyle_p.h" - -QT_BEGIN_NAMESPACE - -namespace QQC2 { - -class QWindowsXPStylePrivate; -class QWindowsXPStyle : public QWindowsStyle -{ - Q_OBJECT -public: - QWindowsXPStyle(); - QWindowsXPStyle(QWindowsXPStylePrivate &dd); - ~QWindowsXPStyle() override; - -/* - void polish(QApplication*) override; - void unpolish(QApplication*) override; - void polish(QWidget*) override; - void unpolish(QWidget*) override; - void polish(QPalette&) override; -*/ - void drawPrimitive(PrimitiveElement pe, const QStyleOption *option, QPainter *p) const override; - void drawControl(ControlElement element, const QStyleOption *option, QPainter *p) const override; - QRect subElementRect(SubElement r, const QStyleOption *option) const override; - QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *option, SubControl sc) const override; - void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *option, QPainter *p) const override; - QSize sizeFromContents(ContentsType ct, const QStyleOption *option, const QSize &contentsSize) const override; - int pixelMetric(PixelMetric pm, const QStyleOption *option = nullptr) const override; - int styleHint(StyleHint hint, const QStyleOption *option = nullptr, - QStyleHintReturn *returnData = nullptr) const override; - - QPalette standardPalette() const override; - QPixmap standardPixmap(StandardPixmap standardIcon, const QStyleOption *option) const override; - QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = nullptr) const override; - - QMargins ninePatchMargins(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, const QSize &imageSize) const; - -private: - Q_DISABLE_COPY_MOVE(QWindowsXPStyle) - Q_DECLARE_PRIVATE(QWindowsXPStyle) - friend class QStyleFactory; -}; - -} // namespace QQC2 - -QT_END_NAMESPACE - -#endif // QQUICKWINDOWSXPSTYLE_P_H diff --git a/src/quicknativestyle/qstyle/windows/qquickwindowsxpstyle_p_p.h b/src/quicknativestyle/qstyle/windows/qquickwindowsxpstyle_p_p.h deleted file mode 100644 index a449ecdd..00000000 --- a/src/quicknativestyle/qstyle/windows/qquickwindowsxpstyle_p_p.h +++ /dev/null @@ -1,348 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKWINDOWSXPSTYLE_P_P_H -#define QQUICKWINDOWSXPSTYLE_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -//#include <QtWidgets/private/qtwidgetsglobal_p.h> -#include "qquickwindowsxpstyle_p.h" -#include "qquickwindowsstyle_p_p.h" -#include <QtCore/qmap.h> -#include <qt_windows.h> - -#include <uxtheme.h> -#include <vssym32.h> - -#include <limits.h> - -QT_BEGIN_NAMESPACE - -class QDebug; - -namespace QQC2 { - -// TMT_TEXTSHADOWCOLOR is wrongly defined in mingw -#if TMT_TEXTSHADOWCOLOR != 3818 -#undef TMT_TEXTSHADOWCOLOR -#define TMT_TEXTSHADOWCOLOR 3818 -#endif -#ifndef TST_NONE -# define TST_NONE 0 -#endif - -// These defines are missing from the tmschema, but still exist as -// states for their parts -#ifndef MINBS_INACTIVE -#define MINBS_INACTIVE 5 -#endif -#ifndef MAXBS_INACTIVE -#define MAXBS_INACTIVE 5 -#endif -#ifndef RBS_INACTIVE -#define RBS_INACTIVE 5 -#endif -#ifndef HBS_INACTIVE -#define HBS_INACTIVE 5 -#endif -#ifndef CBS_INACTIVE -#define CBS_INACTIVE 5 -#endif - -// Uncomment define below to build debug assisting code, and output -// #define DEBUG_XP_STYLE - -// Declarations ----------------------------------------------------------------------------------- -class XPThemeData -{ -public: - explicit XPThemeData(const QWindow *w = nullptr, QPainter *p = nullptr, int themeIn = -1, - int part = 0, int state = 0, const QRect &r = QRect()) - : window(w), painter(p), theme(themeIn), partId(part), stateId(state), - mirrorHorizontally(false), mirrorVertically(false), noBorder(false), - noContent(false), rect(r) - {} - - HTHEME handle(); - - static RECT toRECT(const QRect &qr); - bool isValid(); - - QSizeF size(); - QMarginsF margins(const QRect &rect, int propId = TMT_CONTENTMARGINS); - QMarginsF margins(int propId = TMT_CONTENTMARGINS); - - static QSizeF themeSize(const QWindow *w = nullptr, QPainter *p = nullptr, int themeIn = -1, int part = 0, int state = 0); - static QMarginsF themeMargins(const QRect &rect, const QWindow *w = nullptr, QPainter *p = nullptr, int themeIn = -1, - int part = 0, int state = 0, int propId = TMT_CONTENTMARGINS); - static QMarginsF themeMargins(const QWindow *w = nullptr, QPainter *p = nullptr, int themeIn = -1, - int part = 0, int state = 0, int propId = TMT_CONTENTMARGINS); - - const QWindow *window; - QPainter *painter; - - int theme; - HTHEME htheme = nullptr; - int partId; - int stateId; - - uint mirrorHorizontally : 1; - uint mirrorVertically : 1; - uint noBorder : 1; - uint noContent : 1; - uint rotate = 0; - QRect rect; -}; - -struct ThemeMapKey { - int theme = 0; - int partId = -1; - int stateId = -1; - bool noBorder = false; - bool noContent = false; - - ThemeMapKey() = default; - ThemeMapKey(const XPThemeData &data) - : theme(data.theme), partId(data.partId), stateId(data.stateId), - noBorder(data.noBorder), noContent(data.noContent) {} - -}; - -inline size_t qHash(const ThemeMapKey &key) -{ return key.theme ^ key.partId ^ key.stateId; } - -inline bool operator==(const ThemeMapKey &k1, const ThemeMapKey &k2) -{ - return k1.theme == k2.theme - && k1.partId == k2.partId - && k1.stateId == k2.stateId; -} - -enum AlphaChannelType { - UnknownAlpha = -1, // Alpha of part & state not yet known - NoAlpha, // Totally opaque, no need to touch alpha (RGB) - MaskAlpha, // Alpha channel must be fixed (ARGB) - RealAlpha // Proper alpha values from Windows (ARGB_Premultiplied) -}; - -struct ThemeMapData { - AlphaChannelType alphaType = UnknownAlpha; // Which type of alpha on part & state - - bool dataValid : 1; // Only used to detect if hash value is ok - bool partIsTransparent : 1; - bool hasAlphaChannel : 1; // True = part & state has real Alpha - bool wasAlphaSwapped : 1; // True = alpha channel needs to be swapped - bool hadInvalidAlpha : 1; // True = alpha channel contained invalid alpha values - - ThemeMapData() : dataValid(false), partIsTransparent(false), - hasAlphaChannel(false), wasAlphaSwapped(false), hadInvalidAlpha(false) {} -}; - -#ifndef QT_NO_DEBUG_STREAM -QDebug operator<<(QDebug d, const XPThemeData &t); -QDebug operator<<(QDebug d, const ThemeMapKey &k); -QDebug operator<<(QDebug d, const ThemeMapData &td); -#endif - -class QWindowsXPStylePrivate : public QWindowsStylePrivate -{ - Q_DECLARE_PUBLIC(QWindowsXPStyle) -public: - enum Theme { - ButtonTheme, - ComboboxTheme, - EditTheme, - HeaderTheme, - ListViewTheme, - MenuTheme, - ProgressTheme, - RebarTheme, - ScrollBarTheme, - SpinTheme, - TabTheme, - TaskDialogTheme, - ToolBarTheme, - ToolTipTheme, - TrackBarTheme, - XpTreeViewTheme, // '+'/'-' shape treeview indicators (XP) - WindowTheme, - StatusTheme, - VistaTreeViewTheme, // arrow shape treeview indicators (Vista) obtained from "explorer" theme. - NThemes - }; - - QWindowsXPStylePrivate() - { init(); } - - ~QWindowsXPStylePrivate() - { cleanup(); } - - static int pixelMetricFromSystemDp(QStyle::PixelMetric pm, const QStyleOption *option = nullptr); - static int fixedPixelMetric(QStyle::PixelMetric pm, const QStyleOption *option = nullptr, const QWidget *widget = nullptr); - - static HWND winId(const QWindow *window); - - void init(bool force = false); - void cleanup(bool force = false); - void cleanupHandleMap(); - - HBITMAP buffer(int w = 0, int h = 0); - HDC bufferHDC() - { return bufferDC;} - - static bool useXP(bool update = false); - static QRect scrollBarGripperBounds(QStyle::State flags, XPThemeData *theme); - - bool isTransparent(XPThemeData &themeData); - QRegion region(XPThemeData &themeData); - - bool drawBackground(XPThemeData &themeData, qreal correctionFactor = 1); - bool drawBackgroundThruNativeBuffer(XPThemeData &themeData, qreal aditionalDevicePixelRatio, qreal correctionFactor); - bool drawBackgroundDirectly(HDC dc, XPThemeData &themeData, qreal aditionalDevicePixelRatio); - - bool hasAlphaChannel(const QRect &rect); - bool fixAlphaChannel(const QRect &rect); - bool swapAlphaChannel(const QRect &rect, bool allPixels = false); - - QRgb groupBoxTextColor = 0; - QRgb groupBoxTextColorDisabled = 0; - QRgb sliderTickColor = 0; - bool hasInitColors = false; - - static HTHEME createTheme(int theme, HWND hwnd); - static QString themeName(int theme); - static inline bool hasTheme(int theme) { return theme >= 0 && theme < NThemes && m_themes[theme]; } - static bool isItemViewDelegateLineEdit(const QWidget *widget); - static bool isLineEditBaseColorSet(const QStyleOption *option, const QWidget *widget); - - QIcon dockFloat, dockClose; - -private: -#ifdef DEBUG_XP_STYLE - void dumpNativeDIB(int w, int h); - void showProperties(XPThemeData &themeData); -#endif - - static bool initVistaTreeViewTheming(); - static void cleanupVistaTreeViewTheming(); - - static QBasicAtomicInt ref; - static bool use_xp; - - QHash<ThemeMapKey, ThemeMapData> alphaCache; - HDC bufferDC = nullptr; - HBITMAP bufferBitmap = nullptr; - HBITMAP nullBitmap = nullptr; - uchar *bufferPixels = nullptr; - int bufferW = 0; - int bufferH = 0; - - static HWND m_vistaTreeViewHelper; - static HTHEME m_themes[NThemes]; -}; - -inline QSizeF XPThemeData::size() -{ - QSizeF result(0, 0); - if (isValid()) { - SIZE size; - if (SUCCEEDED(GetThemePartSize(handle(), nullptr, partId, stateId, nullptr, TS_TRUE, &size))) - result = QSize(size.cx, size.cy); - } - return result; -} - -inline QMarginsF XPThemeData::margins(const QRect &qRect, int propId) -{ - QMarginsF result(0, 0, 0 ,0); - if (isValid()) { - MARGINS margins; - RECT rect = XPThemeData::toRECT(qRect); - if (SUCCEEDED(GetThemeMargins(handle(), nullptr, partId, stateId, propId, &rect, &margins))) - result = QMargins(margins.cxLeftWidth, margins.cyTopHeight, margins.cxRightWidth, margins.cyBottomHeight); - } - return result; -} - -inline QMarginsF XPThemeData::margins(int propId) -{ - QMarginsF result(0, 0, 0 ,0); - if (isValid()) { - MARGINS margins; - if (SUCCEEDED(GetThemeMargins(handle(), nullptr, partId, stateId, propId, nullptr, &margins))) - result = QMargins(margins.cxLeftWidth, margins.cyTopHeight, margins.cxRightWidth, margins.cyBottomHeight); - } - return result; -} - -inline QSizeF XPThemeData::themeSize(const QWindow *w, QPainter *p, int themeIn, int part, int state) -{ - XPThemeData theme(w, p, themeIn, part, state); - return theme.size(); -} - -inline QMarginsF XPThemeData::themeMargins(const QRect &rect, const QWindow *w, QPainter *p, int themeIn, - int part, int state, int propId) -{ - XPThemeData theme(w, p, themeIn, part, state); - return theme.margins(rect, propId); -} - -inline QMarginsF XPThemeData::themeMargins(const QWindow *w, QPainter *p, int themeIn, - int part, int state, int propId) -{ - XPThemeData theme(w, p, themeIn, part, state); - return theme.margins(propId); -} - -} //namespace QQC2 - -QT_END_NAMESPACE - -#endif //QQUICKWINDOWSXPSTYLE_P_P_H diff --git a/src/quicknativestyle/qstyle/windows/windows.pri b/src/quicknativestyle/qstyle/windows/windows.pri deleted file mode 100644 index beb50a5b..00000000 --- a/src/quicknativestyle/qstyle/windows/windows.pri +++ /dev/null @@ -1,18 +0,0 @@ - -INCLUDEPATH += $$PWD - -HEADERS += \ - $$PWD/qquickwindowsstyle_p.h \ - $$PWD/qquickwindowsstyle_p_p.h \ -# $$PWD/qquickwindowsvistastyle_p.h \ -# $$PWD/qquickwindowsvistastyle_p_p.h \ - $$PWD/qquickwindowsxpstyle_p.h \ - $$PWD/qquickwindowsxpstyle_p_p.h - -SOURCES += \ - $$PWD/qquickwindowsstyle.cpp \ -# $$PWD/qquickwindowsvistastyle.cpp \ - $$PWD/qquickwindowsxpstyle.cpp - -QMAKE_USE_PRIVATE += user32 gdi32 -LIBS_PRIVATE *= -luxtheme diff --git a/src/quicknativestyle/qtquickcontrols2nativestyleplugin.cpp b/src/quicknativestyle/qtquickcontrols2nativestyleplugin.cpp deleted file mode 100644 index e09d327a..00000000 --- a/src/quicknativestyle/qtquickcontrols2nativestyleplugin.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtQml/qqml.h> -#include <QtQuickControls2/private/qquickstyleplugin_p.h> -#include <QtGui/qguiapplication.h> - -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -#include "qquicknativestyle.h" -#include "qquickcommonstyle.h" - -#if defined(Q_OS_MACOS) -#include "qquickmacstyle_mac_p.h" -#include "qquickmacfocusframe.h" -#elif defined(Q_OS_WINDOWS) -# include "qquickwindowsxpstyle_p.h" -#endif - -extern void qml_register_types_QtQuick_NativeStyle(); - -QT_BEGIN_NAMESPACE - -using namespace QQC2; - -class QtQuickControls2NativeStylePlugin : public QQuickStylePlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) - -public: - QtQuickControls2NativeStylePlugin(QObject *parent = nullptr); - ~QtQuickControls2NativeStylePlugin() override; - - void initializeEngine(QQmlEngine *engine, const char *uri) override; - void initializeTheme(QQuickTheme *theme) override; - QString name() const override; - -#if defined(Q_OS_MACOS) - QScopedPointer<QQuickMacFocusFrame> m_focusFrame; -#endif -}; - -static void deleteQStyle() -{ - // When we delete QStyle, it will free up it's own internal resources. Especially - // on macOS, this means releasing a lot of NSViews and NSCells from the QMacStyle - // destructor. If we did this from ~QtQuickControls2NativeStylePlugin, it would - // happen when the plugin was unloaded from a Q_DESTRUCTOR_FUNCTION in QLibrary, - // which is very late in the tear-down process, and after qGuiApp has been set to - // nullptr, NSApplication has stopped running, and perhaps also other static platform - // variables (e.g in AppKit?) has been deleted. And to our best guess, this is also why - // we see a crash in AppKit from the destructor in QMacStyle. So for this reason, we - // delete QStyle from a post routine rather than from the destructor. - QQuickNativeStyle::setStyle(nullptr); -} - -QtQuickControls2NativeStylePlugin::QtQuickControls2NativeStylePlugin(QObject *parent): - QQuickStylePlugin(parent) -{ - volatile auto registration = &qml_register_types_QtQuick_NativeStyle; - Q_UNUSED(registration); -} - -QtQuickControls2NativeStylePlugin::~QtQuickControls2NativeStylePlugin() -{ - if (!qGuiApp) - return; - - // QGuiApplication is still running, so we need to remove the post - // routine to not be called after we have been unloaded. - qRemovePostRoutine(deleteQStyle); - QQuickNativeStyle::setStyle(nullptr); -} - -QString QtQuickControls2NativeStylePlugin::name() const -{ - return QStringLiteral("NativeStyle"); -} - -void QtQuickControls2NativeStylePlugin::initializeEngine(QQmlEngine *engine, const char *uri) -{ - Q_UNUSED(engine); - Q_UNUSED(uri); - // Enable commonstyle as a reference style while - // the native styles are under development. - QStyle *style = nullptr; - if (qEnvironmentVariable("QQC2_COMMONSTYLE") == QStringLiteral("true")) { - style = new QCommonStyle; - } else { - const QString envStyle = qEnvironmentVariable("QQC2_STYLE"); - if (!envStyle.isNull()) { - if (envStyle == QLatin1String("common")) - style = new QCommonStyle; -#if defined(Q_OS_MACOS) - else if (envStyle == QLatin1String("mac")) - style = new QMacStyle; -#endif -#if defined(Q_OS_WINDOWS) - else if (envStyle == QLatin1String("windows")) - style = new QWindowsStyle; - else if (envStyle == QLatin1String("windowsxp")) - style = new QWindowsXPStyle; -#endif - } - if (!style) { -#if defined(Q_OS_MACOS) - style = new QMacStyle; -#elif defined(Q_OS_WINDOWS) - style = new QWindowsXPStyle; -#else - style = new QCommonStyle; -#endif - } - } - -#if defined(Q_OS_MACOS) - m_focusFrame.reset(new QQuickMacFocusFrame()); -#endif - - qAddPostRoutine(deleteQStyle); - QQuickNativeStyle::setStyle(style); -} - -void QtQuickControls2NativeStylePlugin::initializeTheme(QQuickTheme * /*theme*/) -{ -} - -QT_END_NAMESPACE - -#include "qtquickcontrols2nativestyleplugin.moc" diff --git a/src/quicknativestyle/util/FocusFrame.qml b/src/quicknativestyle/util/FocusFrame.qml deleted file mode 100644 index b3f3a80e..00000000 --- a/src/quicknativestyle/util/FocusFrame.qml +++ /dev/null @@ -1,118 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick -import QtQuick.Controls -import QtQuick.Layouts - -Item { - id: root - - // It's important that this item has a zero size. Otherwise, if the parent of the - // targetItem is e.g a layout, we will change the layout if we parent this item inside it. - width: 0 - height: 0 - // Stack on top of all siblings of the targetItem - z: 100 - - function moveToItem(item, margins, radius) { - parent = item.parent - targetItem = item - leftOffset = margins.left - rightOffset = margins.right - topOffset = margins.top - bottomOffset = margins.bottom - frameRadius = radius - animation.restart() - } - - property Item targetItem - property real leftOffset: 0 - property real rightOffset: 0 - property real topOffset: 0 - property real bottomOffset: 0 - property real frameOpacity: 0 - property real frameSize: 0 - property real frameRadius: 0 - - property point targetItemPos: { - if (!targetItem) - return Qt.point(0, 0) - // Force a reevaluation if - // the target item moves - targetItem.x - targetItem.y - mapFromItem(targetItem, Qt.point(0, 0)) - } - - // systemFrameColor is set to NSColor.keyboardFocusIndicatorColor from cpp - property color systemFrameColor - - Rectangle { - id: focusFrame - z: 10 - x: targetItemPos.x + leftOffset - frameSize - y: targetItemPos.y + topOffset - frameSize - width: targetItem ? targetItem.width - leftOffset - rightOffset + (frameSize * 2) : 0 - height: targetItem ? targetItem.height - topOffset - bottomOffset + (frameSize * 2) : 0 - radius: frameRadius - visible: targetItem && targetItem.visible - color: "transparent" - - border.color: systemFrameColor - border.width: frameSize - } - - ParallelAnimation { - id: animation - NumberAnimation { - target: root - property: "frameSize" - duration: 300 - from: 15 - to: 2.5 - easing.type: Easing.OutCubic - } - NumberAnimation { - target: focusFrame - property: "opacity" - duration: 300 - from: 0 - to: 0.55 - easing.type: Easing.OutCubic - } - } -} diff --git a/src/quicknativestyle/util/qquickmacfocusframe.h b/src/quicknativestyle/util/qquickmacfocusframe.h deleted file mode 100644 index 425b2a68..00000000 --- a/src/quicknativestyle/util/qquickmacfocusframe.h +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMACFOCUSFRAME_H -#define QQUICKMACFOCUSFRAME_H - -#include <QtQuick/qquickitem.h> -#include <QtQuick/private/qquicktextedit_p.h> -#include "qquickstyleitem.h" - -QT_BEGIN_NAMESPACE - -Q_DECLARE_LOGGING_CATEGORY(lcFocusFrame) - -struct QQuickFocusFrameDescription { - QQuickItem *target; - QQuickStyleMargins margins; - const qreal radius = 3; - bool isValid() const { return target != nullptr; } - static QQuickFocusFrameDescription Invalid; -}; - -class QQuickMacFocusFrame : public QObject -{ - Q_OBJECT - -public: - QQuickMacFocusFrame(); - -private: - static QScopedPointer<QQuickItem> m_focusFrame; - - void createFocusFrame(QQmlContext *context); - void moveToItem(QQuickItem *item); - QQuickFocusFrameDescription getDescriptionForItem(QQuickItem *focusItem) const; -}; - -QT_END_NAMESPACE - -#endif // QQUICKMACFOCUSFRAME_H diff --git a/src/quicknativestyle/util/qquickmacfocusframe.mm b/src/quicknativestyle/util/qquickmacfocusframe.mm deleted file mode 100644 index 75ef911b..00000000 --- a/src/quicknativestyle/util/qquickmacfocusframe.mm +++ /dev/null @@ -1,181 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmacfocusframe.h" - -#include <AppKit/AppKit.h> - -#include <QtCore/qmetaobject.h> - -#include <QtGui/qguiapplication.h> -#include <QtGui/private/qcoregraphics_p.h> - -#include <QtQml/qqmlengine.h> -#include <QtQml/qqmlcontext.h> -#include <QtQml/qqmlcomponent.h> - -#include <QtQuick/qquickitem.h> -#include <QtQuick/private/qquicktextinput_p.h> -#include <QtQuick/private/qquicktextedit_p.h> -#include <QtQuick/private/qquickflickable_p.h> - -#include <QtQuickTemplates2/private/qquickframe_p.h> -#include <QtQuickTemplates2/private/qquickbutton_p.h> -#include <QtQuickTemplates2/private/qquickscrollview_p.h> -#include <QtQuickTemplates2/private/qquickslider_p.h> -#include <QtQuickTemplates2/private/qquickcombobox_p.h> -#include <QtQuickTemplates2/private/qquickcheckbox_p.h> -#include <QtQuickTemplates2/private/qquickradiobutton_p.h> -#include <QtQuickTemplates2/private/qquickspinbox_p.h> -#include <QtQuickTemplates2/private/qquicktextfield_p.h> -#include <QtQuickTemplates2/private/qquicktextarea_p.h> - -#include "items/qquickstyleitem.h" -#include "qquicknativestyle.h" - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcFocusFrame, "qt.quick.controls.focusframe") - -QQuickFocusFrameDescription QQuickFocusFrameDescription::Invalid = { nullptr, QQuickStyleMargins(), 0 }; -QScopedPointer<QQuickItem> QQuickMacFocusFrame::m_focusFrame; - -QQuickMacFocusFrame::QQuickMacFocusFrame() -{ - connect(qGuiApp, &QGuiApplication::focusObjectChanged, [=]{ - if (auto item = qobject_cast<QQuickItem *>(qGuiApp->focusObject())) - moveToItem(item); - }); -} - -void QQuickMacFocusFrame::moveToItem(QQuickItem *item) -{ - if (!m_focusFrame) { - const auto context = QQmlEngine::contextForObject(item); - if (!context) - return; - createFocusFrame(context); - } - - const QQuickFocusFrameDescription &config = getDescriptionForItem(item); - if (!config.isValid()) { - m_focusFrame->setParentItem(nullptr); - m_focusFrame->setVisible(false); - return; - } - - m_focusFrame->setVisible(true); - QMetaObject::invokeMethod(m_focusFrame.data(), "moveToItem", - Q_ARG(QVariant, QVariant::fromValue(config.target)), - Q_ARG(QVariant, QVariant::fromValue(config.margins)), - Q_ARG(QVariant, QVariant::fromValue(config.radius))); -} - -void QQuickMacFocusFrame::createFocusFrame(QQmlContext *context) -{ - QQmlComponent component( - context->engine(), - QUrl(QStringLiteral( - "qrc:/qt-project.org/imports/QtQuick/NativeStyle/util/FocusFrame.qml"))); - m_focusFrame.reset(qobject_cast<QQuickItem *>(component.create())); - - auto indicatorColor = qt_mac_toQColor(NSColor.keyboardFocusIndicatorColor.CGColor); - indicatorColor.setAlpha(255); - m_focusFrame->setProperty("systemFrameColor", indicatorColor); -} - -QQuickFocusFrameDescription QQuickMacFocusFrame::getDescriptionForItem(QQuickItem *focusItem) const -{ - qCDebug(lcFocusFrame) << "new focusobject:" << focusItem; - const auto parentItem = focusItem->parentItem(); - if (!parentItem) - return QQuickFocusFrameDescription::Invalid; - - // The item that gets active focus can be a child of the control (e.g - // editable ComboBox). In that case, resolve the actual control first. - const auto proxy = focusItem->property("__focusFrameControl").value<QQuickItem *>(); - const auto control = proxy ? proxy : focusItem; - auto target = control->property("__focusFrameTarget").value<QQuickItem *>(); - qCDebug(lcFocusFrame) << "target:" << target; - qCDebug(lcFocusFrame) << "control:" << control; - - if (!target) { - // __focusFrameTarget points to the item in the control that should - // get the focus frame. This is usually the control itself, but can - // sometimes be a child (CheckBox). We anyway require - // this property to be set if we are to show the focus frame around - // the control in the first place. So for controls that don't want - // a frame (ProgressBar), we simply skip setting it. - // Also, we should never show a focus frame around custom controls. - // None of the built-in styles do that, so to be consistent, we - // shouldn't either. Besides, drawing a focus frame around an unknown - // item without any way to turn it off can easily be unwanted. A better - // way for custom controls to get a native focus frame is for us to offer - // a FocusFrame control (QTBUG-86818). - return QQuickFocusFrameDescription::Invalid; - } - - // If the control gives us a QQuickStyleItem, we use that to configure the focus frame. - // By default we assume that the background delegate is a QQuickStyleItem, but the - // control can override this by setting __focusFrameStyleItem. - const auto styleItemProperty = control->property("__focusFrameStyleItem"); - auto item = styleItemProperty.value<QQuickItem *>(); - if (!item) { - const auto styleItemProperty = control->property("background"); - item = styleItemProperty.value<QQuickItem *>(); - } - qCDebug(lcFocusFrame) << "styleItem:" << item; - if (!item) - return QQuickFocusFrameDescription::Invalid; - if (QQuickStyleItem *styleItem = qobject_cast<QQuickStyleItem *>(item)) - return { target, QQuickStyleMargins(styleItem->layoutMargins()), styleItem->focusFrameRadius() }; - - // Some controls don't have a QQuickStyleItem. But if the __focusFrameStyleItem - // has a "__isDefaultDelegate" property set, we show a default focus frame instead. - if (item->property("__isDefaultDelegate").toBool() == true) { - qCDebug(lcFocusFrame) << "'__isDefaultDelegate' property found, showing a default focus frame"; - const QStyleOption opt; - const qreal radius = QQuickNativeStyle::style()->pixelMetric(QStyle::PM_TextFieldFocusFrameRadius, &opt); - return { target, QQuickStyleMargins(), radius }; - } - - // The application has set a custom delegate on the control. In that - // case, it's the delegates responsibility to draw a focus frame. - qCDebug(lcFocusFrame) << "custom delegates in use, skip showing focus frame"; - return QQuickFocusFrameDescription::Invalid; -} - -QT_END_NAMESPACE diff --git a/src/quicknativestyle/util/util.pri b/src/quicknativestyle/util/util.pri deleted file mode 100644 index 96786eac..00000000 --- a/src/quicknativestyle/util/util.pri +++ /dev/null @@ -1,11 +0,0 @@ -INCLUDEPATH += $$PWD - -macos { - HEADERS += \ - $$PWD/qquickmacfocusframe.h \ - - SOURCES += \ - $$PWD/qquickmacfocusframe.mm \ - - RESOURCES += $$PWD/FocusFrame.qml -} diff --git a/src/quicktemplates2/CMakeLists.txt b/src/quicktemplates2/CMakeLists.txt deleted file mode 100644 index cf3d4410..00000000 --- a/src/quicktemplates2/CMakeLists.txt +++ /dev/null @@ -1,163 +0,0 @@ -##################################################################### -## QuickTemplates2 Module: -##################################################################### - -qt_internal_add_qml_module(QuickTemplates2 - URI "QtQuick.Templates" - VERSION "${PROJECT_VERSION}" - CLASSNAME QtQuickTemplates2Plugin - DEPENDENCIES - QtQuick/auto - PLUGIN_TARGET qtquicktemplates2plugin - NO_PLUGIN_OPTIONAL - NO_GENERATE_PLUGIN_SOURCE - SOURCES - accessible/qaccessiblequickpage.cpp accessible/qaccessiblequickpage_p.h - qquickabstractbutton.cpp qquickabstractbutton_p.h - qquickabstractbutton_p_p.h - qquickaction.cpp qquickaction_p.h - qquickactiongroup.cpp qquickactiongroup_p.h - qquickapplicationwindow.cpp qquickapplicationwindow_p.h - qquickbusyindicator.cpp qquickbusyindicator_p.h - qquickbutton.cpp qquickbutton_p.h - qquickbutton_p_p.h - qquickbuttongroup.cpp qquickbuttongroup_p.h - qquickcheckbox.cpp qquickcheckbox_p.h - qquickcheckdelegate.cpp qquickcheckdelegate_p.h - qquickcombobox.cpp qquickcombobox_p.h - qquickcontainer.cpp qquickcontainer_p.h - qquickcontainer_p_p.h - qquickcontentitem.cpp qquickcontentitem_p.h - qquickcontrol.cpp qquickcontrol_p.h - qquickcontrol_p_p.h - qquickdeferredexecute.cpp - qquickdeferredexecute_p_p.h - qquickdeferredpointer_p_p.h - qquickdelaybutton.cpp qquickdelaybutton_p.h - qquickdial.cpp qquickdial_p.h - qquickdialog.cpp qquickdialog_p.h - qquickdialog_p_p.h - qquickdialogbuttonbox.cpp qquickdialogbuttonbox_p.h - qquickdialogbuttonbox_p_p.h - qquickdrawer.cpp qquickdrawer_p.h - qquickdrawer_p_p.h - qquickframe.cpp qquickframe_p.h - qquickframe_p_p.h - qquickgroupbox.cpp qquickgroupbox_p.h - qquickicon.cpp qquickicon_p.h - qquickindicatorbutton_p.cpp qquickindicatorbutton_p.h - qquickitemdelegate.cpp qquickitemdelegate_p.h - qquickitemdelegate_p_p.h - qquicklabel.cpp qquicklabel_p.h - qquicklabel_p_p.h - qquickmenu.cpp qquickmenu_p.h - qquickmenu_p_p.h - qquickmenubar.cpp qquickmenubar_p.h - qquickmenubar_p_p.h - qquickmenubaritem.cpp qquickmenubaritem_p.h - qquickmenubaritem_p_p.h - qquickmenuitem.cpp qquickmenuitem_p.h - qquickmenuitem_p_p.h - qquickmenuseparator.cpp qquickmenuseparator_p.h - qquickoverlay.cpp qquickoverlay_p.h - qquickoverlay_p_p.h - qquickpage.cpp qquickpage_p.h - qquickpage_p_p.h - qquickpageindicator.cpp qquickpageindicator_p.h - qquickpane.cpp qquickpane_p.h - qquickpane_p_p.h - qquickpopup.cpp qquickpopup_p.h - qquickpopup_p_p.h - qquickpopupanchors.cpp qquickpopupanchors_p.h - qquickpopupanchors_p_p.h - qquickpopupitem.cpp - qquickpopupitem_p.h - qquickpopupitem_p_p.h - qquickpopuppositioner.cpp - qquickpopuppositioner_p_p.h - qquickpresshandler.cpp - qquickpresshandler_p_p.h - qquickprogressbar.cpp qquickprogressbar_p.h - qquickradiobutton.cpp qquickradiobutton_p.h - qquickradiodelegate.cpp qquickradiodelegate_p.h - qquickrangeslider.cpp qquickrangeslider_p.h - qquickroundbutton.cpp qquickroundbutton_p.h - qquickscrollbar.cpp qquickscrollbar_p.h - qquickscrollbar_p_p.h - qquickscrollindicator.cpp qquickscrollindicator_p.h - qquickscrollview.cpp qquickscrollview_p.h - qquickselectionrectangle.cpp qquickselectionrectangle_p.h - qquickselectionrectangle_p_p.h - qquickshortcutcontext.cpp - qquickshortcutcontext_p_p.h - qquickslider.cpp qquickslider_p.h - qquickspinbox.cpp qquickspinbox_p.h - qquicksplitview.cpp qquicksplitview_p.h - qquickstackelement.cpp - qquickstackelement_p_p.h - qquickstacktransition.cpp - qquickstacktransition_p_p.h - qquickstackview.cpp qquickstackview_p.cpp qquickstackview_p.h - qquickstackview_p_p.h - qquickswipe_p.h - qquickswipedelegate.cpp qquickswipedelegate_p.h - qquickswipedelegate_p_p.h - qquickswipeview.cpp qquickswipeview_p.h - qquickswitch.cpp qquickswitch_p.h - qquickswitchdelegate.cpp qquickswitchdelegate_p.h - qquicktabbar.cpp qquicktabbar_p.h - qquicktabbutton.cpp qquicktabbutton_p.h - qquicktextarea.cpp qquicktextarea_p.h - qquicktextarea_p_p.h - qquicktextfield.cpp qquicktextfield_p.h - qquicktextfield_p_p.h - qquicktheme.cpp qquicktheme_p.h - qquicktheme_p_p.h - qquicktoolbar.cpp qquicktoolbar_p.h - qquicktoolbutton.cpp qquicktoolbutton_p.h - qquicktoolseparator.cpp qquicktoolseparator_p.h - qquicktooltip.cpp qquicktooltip_p.h - qquicktooltippopupitem.cpp qquicktooltippopupitem_p_p.h - qquickvelocitycalculator.cpp - qquickvelocitycalculator_p_p.h - qtquicktemplates2global.cpp qtquicktemplates2global_p.h - DEFINES - QT_NO_CAST_FROM_ASCII - QT_NO_CAST_TO_ASCII - INCLUDE_DIRECTORIES - ${CMAKE_CURRENT_SOURCE_DIR} - LIBRARIES - Qt::CorePrivate - Qt::GuiPrivate - Qt::QmlPrivate - Qt::QuickPrivate -) - -qt_internal_extend_target(QuickTemplates2 CONDITION TARGET Qt::QmlModels - LIBRARIES - Qt::QmlModelsPrivate - PUBLIC_LIBRARIES - Qt::QmlModels - PRIVATE_MODULE_INTERFACE - Qt::QmlModelsPrivate -) - -qt_internal_extend_target(QuickTemplates2 CONDITION QT_FEATURE_quick_tableview - SOURCES - qquickheaderview.cpp qquickheaderview_p.h - qquickheaderview_p_p.h -) - -qt_internal_extend_target(QuickTemplates2 CONDITION QT_FEATURE_quick_listview AND QT_FEATURE_quick_pathview - SOURCES - qquicktumbler.cpp qquicktumbler_p.h - qquicktumbler_p_p.h -) - -qt_internal_extend_Target(qtquicktemplates2plugin - SOURCES - qtquicktemplates2plugin.cpp - LIBRARIES - Qt::Quick - Qt::QuickTemplates2Private -) diff --git a/src/quicktemplates2/accessible/accessible.pri b/src/quicktemplates2/accessible/accessible.pri deleted file mode 100644 index 0c855d34..00000000 --- a/src/quicktemplates2/accessible/accessible.pri +++ /dev/null @@ -1,4 +0,0 @@ -HEADERS += \ - $$PWD/qaccessiblequickpage_p.h \ -SOURCES += \ - $$PWD/qaccessiblequickpage.cpp \ diff --git a/src/quicktemplates2/accessible/qaccessiblequickpage.cpp b/src/quicktemplates2/accessible/qaccessiblequickpage.cpp deleted file mode 100644 index 90ac49f9..00000000 --- a/src/quicktemplates2/accessible/qaccessiblequickpage.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qaccessiblequickpage_p.h" -#include "qquickpage_p.h" - -QT_BEGIN_NAMESPACE - -QAccessibleQuickPage::QAccessibleQuickPage(QQuickPage *page) - : QAccessibleQuickItem(page) -{ -} - -QAccessibleInterface *QAccessibleQuickPage::child(int index) const -{ - const QList<QQuickItem*> kids = orderedChildItems(); - if (QQuickItem *item = kids.value(index)) - return QAccessible::queryAccessibleInterface(item); - return nullptr; -} - -int QAccessibleQuickPage::indexOfChild(const QAccessibleInterface *iface) const -{ - const QList<QQuickItem*> kids = orderedChildItems(); - return (int)kids.indexOf(static_cast<QQuickItem*>(iface->object())); -} - -QList<QQuickItem *> QAccessibleQuickPage::orderedChildItems() const -{ - // Just ensures that the header is first, and footer is last. Other existing order is kept. - const QQuickPage *p = page(); - QList<QQuickItem*> kids = childItems(); - const qsizetype hidx = kids.indexOf(p->header()); - if (hidx != -1) - kids.move(hidx, 0); - const qsizetype fidx = kids.indexOf(p->footer()); - if (fidx != -1) - kids.move(fidx, kids.count() - 1); - return kids; -} - -QQuickPage *QAccessibleQuickPage::page() const -{ - return static_cast<QQuickPage*>(object()); -} - -QT_END_NAMESPACE - diff --git a/src/quicktemplates2/accessible/qaccessiblequickpage_p.h b/src/quicktemplates2/accessible/qaccessiblequickpage_p.h deleted file mode 100644 index 9b208c14..00000000 --- a/src/quicktemplates2/accessible/qaccessiblequickpage_p.h +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QACCESSIBLEQUICKPAGE_H -#define QACCESSIBLEQUICKPAGE_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qaccessiblequickitem_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickPage; - -class QAccessibleQuickPage : public QAccessibleQuickItem -{ -public: - QAccessibleQuickPage(QQuickPage *page); - QAccessibleInterface *child(int index) const override; - int indexOfChild(const QAccessibleInterface *iface) const override; -private: - QQuickPage *page() const; - QList<QQuickItem *> orderedChildItems() const; -}; - -QT_END_NAMESPACE - -#endif // QACCESSIBLEQUICKPAGE_H diff --git a/src/quicktemplates2/configure.cmake b/src/quicktemplates2/configure.cmake deleted file mode 100644 index 4e097569..00000000 --- a/src/quicktemplates2/configure.cmake +++ /dev/null @@ -1,30 +0,0 @@ - - -#### Inputs - - - -#### Libraries - - - -#### Tests - - - -#### Features - -qt_feature("quicktemplates2-hover" PRIVATE - SECTION "Quick Templates 2" - LABEL "Hover support" - PURPOSE "Provides support for hover effects." -) -qt_feature("quicktemplates2-multitouch" PRIVATE - SECTION "Quick Templates 2" - LABEL "Multi-touch support" - PURPOSE "Provides support for multi-touch." -) -qt_configure_add_summary_section(NAME "Qt Quick Templates 2") -qt_configure_add_summary_entry(ARGS "quicktemplates2-hover") -qt_configure_add_summary_entry(ARGS "quicktemplates2-multitouch") -qt_configure_end_summary_section() # end of "Qt Quick Templates 2" section diff --git a/src/quicktemplates2/doc/src/qtquicktemplates2-index.qdoc b/src/quicktemplates2/doc/src/qtquicktemplates2-index.qdoc deleted file mode 100644 index c7e25548..00000000 --- a/src/quicktemplates2/doc/src/qtquicktemplates2-index.qdoc +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \page qtquicktemplates2-index.html - \title Qt Quick Templates 2 - \brief A set of templates to create user interface controls in Qt Quick - - Qt Quick Templates are the foundations of \l {Qt Quick Controls}. Templates - are non-visual implementations of controls' logic and behavior. They offer - an interface to visualize the controls in QML using \l {Qt Quick}. - - Even though the templates aim to be as style-agnostic as possible, in some - cases they have to make certain assumptions about the visual structure of - a control. For example, a spinbox has buttons that increment and decrement - the value of the spinbox. In order to implement the behavior of a spinbox, - the spinbox template needs to know if the user is interacting with the up - or down button. A visual implementation of the spinbox template merely needs - to position the up and down buttons and visualize them in normal, pressed, - and disabled states. Any input event handling and state processing is taken - care of by the underlying template. - - \section1 Module Evolution - \l{Changes to Qt Quick Controls} lists important changes in the - module API and functionality that were done for the Qt 6 series of Qt. - - \section1 Related Information - - \list - \li \l{Qt Quick} - \li \l{Qt Quick Controls} - \li \l{Qt Quick Templates 2 QML Types} - \endlist -*/ diff --git a/src/quicktemplates2/doc/src/qtquicktemplates2-qmltypes.qdoc b/src/quicktemplates2/doc/src/qtquicktemplates2-qmltypes.qdoc deleted file mode 100644 index 396dbdc5..00000000 --- a/src/quicktemplates2/doc/src/qtquicktemplates2-qmltypes.qdoc +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \qmlmodule QtQuick.Templates 2.\QtMinorVersion - \title Qt Quick Templates 2 QML Types - \ingroup qmlmodules - \brief Provides QML types for templates (Qt Quick Templates). - - The \l {Qt Quick Templates 2} module provides a set of non-visual templates - that can be used to build user interface controls in QML using \l {Qt Quick}. - - The QML types can be imported using the following import statement in your - \c .qml file: - - \qml - import QtQuick.Templates as T - \endqml - - For the sake of clarity, there is a one-to-one mapping between the types - provided by the \c QtQuick.Templates and \c QtQuick.Controls imports. For - every type available in the \c QtQuick.Controls import, a non-visual template - type by the same name exists in the \c QtQuick.Templates import. - - \note It is recommended to use a namespace for the templates import to avoid - overlap with the types provided by the \c QtQuick.Controls import. - - \section1 QML Types - - \generatelist {qmltypesbymodule QtQuick.Controls} - - \section1 Related Information - - \list - \li \l {Qt Quick Controls QML Types} - \li \l {Using Qt Quick Controls types in property declarations} - \endlist - - \noautolist -*/ diff --git a/src/quicktemplates2/qquickabstractbutton.cpp b/src/quicktemplates2/qquickabstractbutton.cpp deleted file mode 100644 index 61b358e0..00000000 --- a/src/quicktemplates2/qquickabstractbutton.cpp +++ /dev/null @@ -1,1216 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickabstractbutton_p.h" -#include "qquickabstractbutton_p_p.h" -#include "qquickbuttongroup_p.h" -#include "qquickaction_p.h" -#include "qquickaction_p_p.h" -#include "qquickshortcutcontext_p_p.h" -#include "qquickdeferredexecute_p_p.h" - -#include <QtGui/qstylehints.h> -#include <QtGui/qguiapplication.h> -#if QT_CONFIG(shortcut) -# include <QtGui/private/qshortcutmap_p.h> -#endif -#include <QtGui/private/qguiapplication_p.h> -#include <QtQuick/private/qquickevents_p_p.h> -#include <QtQml/qqmllist.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype AbstractButton - \inherits Control -//! \instantiates QQuickAbstractButton - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-buttons - \brief Abstract base type providing functionality common to buttons. - - AbstractButton provides the interface for controls with button-like - behavior; for example, push buttons and checkable controls like - radio buttons and check boxes. As an abstract control, it has no delegate - implementations, leaving them to the types that derive from it. - - \sa ButtonGroup, {Button Controls} -*/ - -/*! - \qmlsignal QtQuick.Controls::AbstractButton::pressed() - - This signal is emitted when the button is interactively pressed by the user via touch, mouse, or keyboard. -*/ - -/*! - \qmlsignal QtQuick.Controls::AbstractButton::released() - - This signal is emitted when the button is interactively released by the user via touch, mouse, or keyboard. -*/ - -/*! - \qmlsignal QtQuick.Controls::AbstractButton::canceled() - - This signal is emitted when the button loses mouse grab - while being pressed, or when it would emit the \l released - signal but the mouse cursor is not inside the button. -*/ - -/*! - \qmlsignal QtQuick.Controls::AbstractButton::clicked() - - This signal is emitted when the button is interactively clicked by the user via touch, mouse, or keyboard. -*/ - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlsignal QtQuick.Controls::AbstractButton::toggled() - - This signal is emitted when a checkable button is interactively toggled by the user via touch, mouse, or keyboard. -*/ - -/*! - \qmlsignal QtQuick.Controls::AbstractButton::pressAndHold() - - This signal is emitted when the button is interactively pressed and held down by the user via touch or mouse. - It is not emitted when \l autoRepeat is enabled. -*/ - -/*! - \qmlsignal QtQuick.Controls::AbstractButton::doubleClicked() - - This signal is emitted when the button is interactively double clicked by the user via touch or mouse. -*/ - -void QQuickAbstractButtonPrivate::setPressPoint(const QPointF &point) -{ - pressPoint = point; - setMovePoint(point); -} - -void QQuickAbstractButtonPrivate::setMovePoint(const QPointF &point) -{ - Q_Q(QQuickAbstractButton); - bool xChange = !qFuzzyCompare(point.x(), movePoint.x()); - bool yChange = !qFuzzyCompare(point.y(), movePoint.y()); - movePoint = point; - if (xChange) - emit q->pressXChanged(); - if (yChange) - emit q->pressYChanged(); -} - -void QQuickAbstractButtonPrivate::handlePress(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickAbstractButton); - QQuickControlPrivate::handlePress(point, timestamp); - setPressPoint(point); - q->setPressed(true); - - emit q->pressed(); - - if (autoRepeat) - startRepeatDelay(); - else if (touchId != -1 || Qt::LeftButton == (pressButtons & Qt::LeftButton)) - startPressAndHold(); - else - stopPressAndHold(); -} - -void QQuickAbstractButtonPrivate::handleMove(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickAbstractButton); - QQuickControlPrivate::handleMove(point, timestamp); - setMovePoint(point); - q->setPressed(keepPressed || q->contains(point)); - - if (!pressed && autoRepeat) - stopPressRepeat(); - else if (holdTimer > 0 && (!pressed || QLineF(pressPoint, point).length() > QGuiApplication::styleHints()->startDragDistance())) - stopPressAndHold(); -} - -void QQuickAbstractButtonPrivate::handleRelease(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickAbstractButton); - // Store this here since the base class' handleRelease clears it. - const int pressTouchId = touchId; - - QQuickControlPrivate::handleRelease(point, timestamp); - bool wasPressed = pressed; - setPressPoint(point); - q->setPressed(false); - pressButtons = Qt::NoButton; - - const bool touchDoubleClick = pressTouchId != -1 && lastTouchReleaseTimestamp != 0 - && timestamp - lastTouchReleaseTimestamp < qApp->styleHints()->mouseDoubleClickInterval(); - - if (!wasHeld && (keepPressed || q->contains(point))) - q->nextCheckState(); - - if (wasPressed) { - emit q->released(); - if (!wasHeld && !wasDoubleClick) - trigger(touchDoubleClick); - } else { - emit q->canceled(); - } - - if (autoRepeat) - stopPressRepeat(); - else - stopPressAndHold(); - - if (!touchDoubleClick) { - // This is not a double click yet, but it is potentially the - // first release before a double click. - if (pressTouchId != -1) { - // The corresponding press for this release was a touch press. - // Keep track of the timestamp of the release so that we can - // emit doubleClicked() if another one comes afterwards. - lastTouchReleaseTimestamp = timestamp; - } - } else { - // We just did a double click, so clear the release timestamp - // to prepare for any possible future double clicks. - lastTouchReleaseTimestamp = 0; - } - - wasDoubleClick = false; -} - -void QQuickAbstractButtonPrivate::handleUngrab() -{ - Q_Q(QQuickAbstractButton); - QQuickControlPrivate::handleUngrab(); - pressButtons = Qt::NoButton; - if (!pressed) - return; - - q->setPressed(false); - stopPressRepeat(); - stopPressAndHold(); - wasDoubleClick = false; - lastTouchReleaseTimestamp = 0; - emit q->canceled(); -} - -bool QQuickAbstractButtonPrivate::acceptKeyClick(Qt::Key key) const -{ - return key == Qt::Key_Space; -} - -bool QQuickAbstractButtonPrivate::isPressAndHoldConnected() -{ - Q_Q(QQuickAbstractButton); - const auto signal = &QQuickAbstractButton::pressAndHold; - const QMetaMethod method = QMetaMethod::fromSignal(signal); - return q->isSignalConnected(method); -} - -void QQuickAbstractButtonPrivate::startPressAndHold() -{ - Q_Q(QQuickAbstractButton); - wasHeld = false; - stopPressAndHold(); - if (isPressAndHoldConnected()) - holdTimer = q->startTimer(QGuiApplication::styleHints()->mousePressAndHoldInterval()); -} - -void QQuickAbstractButtonPrivate::stopPressAndHold() -{ - Q_Q(QQuickAbstractButton); - if (holdTimer > 0) { - q->killTimer(holdTimer); - holdTimer = 0; - } -} - -void QQuickAbstractButtonPrivate::startRepeatDelay() -{ - Q_Q(QQuickAbstractButton); - stopPressRepeat(); - delayTimer = q->startTimer(repeatDelay); -} - -void QQuickAbstractButtonPrivate::startPressRepeat() -{ - Q_Q(QQuickAbstractButton); - stopPressRepeat(); - repeatTimer = q->startTimer(repeatInterval); -} - -void QQuickAbstractButtonPrivate::stopPressRepeat() -{ - Q_Q(QQuickAbstractButton); - if (delayTimer > 0) { - q->killTimer(delayTimer); - delayTimer = 0; - } - if (repeatTimer > 0) { - q->killTimer(repeatTimer); - repeatTimer = 0; - } -} - -#if QT_CONFIG(shortcut) -void QQuickAbstractButtonPrivate::grabShortcut() -{ - Q_Q(QQuickAbstractButton); - if (shortcut.isEmpty()) - return; - - shortcutId = QGuiApplicationPrivate::instance()->shortcutMap.addShortcut(q, shortcut, Qt::WindowShortcut, QQuickShortcutContext::matcher); - - if (!q->isEnabled()) - QGuiApplicationPrivate::instance()->shortcutMap.setShortcutEnabled(false, shortcutId, q); -} - -void QQuickAbstractButtonPrivate::ungrabShortcut() -{ - Q_Q(QQuickAbstractButton); - if (!shortcutId) - return; - - QGuiApplicationPrivate::instance()->shortcutMap.removeShortcut(shortcutId, q); - shortcutId = 0; -} -#endif - -void QQuickAbstractButtonPrivate::actionTextChange() -{ - Q_Q(QQuickAbstractButton); - if (explicitText) - return; - - q->buttonChange(QQuickAbstractButton::ButtonTextChange); -} - -void QQuickAbstractButtonPrivate::setText(const QString &newText, bool isExplicit) -{ - Q_Q(QQuickAbstractButton); - const QString oldText = q->text(); - explicitText = isExplicit; - text = newText; - if (oldText == q->text()) - return; - - q->buttonChange(QQuickAbstractButton::ButtonTextChange); -} - -void QQuickAbstractButtonPrivate::updateEffectiveIcon() -{ - Q_Q(QQuickAbstractButton); - // We store effectiveIcon because we need to be able to tell if the icon has actually changed. - // If we only stored our icon and the action's icon, and resolved in the getter, we'd have - // no way of knowing what the old value was here. As an added benefit, we only resolve when - // something has changed, as opposed to doing it unconditionally in the icon() getter. - const QQuickIcon newEffectiveIcon = action ? icon.resolve(action->icon()) : icon; - if (newEffectiveIcon == effectiveIcon) - return; - - effectiveIcon = newEffectiveIcon; - emit q->iconChanged(); -} - -void QQuickAbstractButtonPrivate::click() -{ - Q_Q(QQuickAbstractButton); - if (effectiveEnable) - emit q->clicked(); -} - -void QQuickAbstractButtonPrivate::trigger(bool doubleClick) -{ - Q_Q(QQuickAbstractButton); - const bool wasEnabled = effectiveEnable; - if (action && action->isEnabled()) - QQuickActionPrivate::get(action)->trigger(q, false); - if (wasEnabled && (!action || !action->isEnabled())) { - if (!doubleClick) - emit q->clicked(); - else - emit q->doubleClicked(); - } -} - -void QQuickAbstractButtonPrivate::toggle(bool value) -{ - Q_Q(QQuickAbstractButton); - const bool wasChecked = checked; - q->setChecked(value); - if (wasChecked != checked) - emit q->toggled(); -} - -static inline QString indicatorName() { return QStringLiteral("indicator"); } - -void QQuickAbstractButtonPrivate::cancelIndicator() -{ - Q_Q(QQuickAbstractButton); - quickCancelDeferred(q, indicatorName()); -} - -void QQuickAbstractButtonPrivate::executeIndicator(bool complete) -{ - Q_Q(QQuickAbstractButton); - if (indicator.wasExecuted()) - return; - - if (!indicator || complete) - quickBeginDeferred(q, indicatorName(), indicator); - if (complete) - quickCompleteDeferred(q, indicatorName(), indicator); -} - -void QQuickAbstractButtonPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - Q_Q(QQuickAbstractButton); - QQuickControlPrivate::itemImplicitWidthChanged(item); - if (item == indicator) - emit q->implicitIndicatorWidthChanged(); -} - -void QQuickAbstractButtonPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - Q_Q(QQuickAbstractButton); - QQuickControlPrivate::itemImplicitHeightChanged(item); - if (item == indicator) - emit q->implicitIndicatorHeightChanged(); -} - -QQuickAbstractButton *QQuickAbstractButtonPrivate::findCheckedButton() const -{ - Q_Q(const QQuickAbstractButton); - if (group) - return qobject_cast<QQuickAbstractButton *>(group->checkedButton()); - - const QList<QQuickAbstractButton *> buttons = findExclusiveButtons(); - // TODO: A singular QRadioButton can be unchecked, which seems logical, - // because there's nothing to be exclusive with. However, a RadioButton - // from QtQuick.Controls 1.x can never be unchecked, which is the behavior - // that QQuickRadioButton adopted. Uncommenting the following count check - // gives the QRadioButton behavior. Notice that tst_radiobutton.qml needs - // to be updated. - if (!autoExclusive /*|| buttons.count() == 1*/) - return nullptr; - - for (QQuickAbstractButton *button : buttons) { - if (button->isChecked() && button != q) - return button; - } - return checked ? const_cast<QQuickAbstractButton *>(q) : nullptr; -} - -QList<QQuickAbstractButton *> QQuickAbstractButtonPrivate::findExclusiveButtons() const -{ - QList<QQuickAbstractButton *> buttons; - if (group) { - QQmlListProperty<QQuickAbstractButton> groupButtons = group->buttons(); - int count = groupButtons.count(&groupButtons); - for (int i = 0; i < count; ++i) { - QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(groupButtons.at(&groupButtons, i)); - if (button) - buttons += button; - } - } else if (parentItem) { - const auto childItems = parentItem->childItems(); - for (QQuickItem *child : childItems) { - QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(child); - if (button && button->autoExclusive() && !QQuickAbstractButtonPrivate::get(button)->group) - buttons += button; - } - } - return buttons; -} - -QQuickAbstractButton::QQuickAbstractButton(QQuickItem *parent) - : QQuickControl(*(new QQuickAbstractButtonPrivate), parent) -{ - setActiveFocusOnTab(true); -#ifdef Q_OS_MACOS - setFocusPolicy(Qt::TabFocus); -#else - setFocusPolicy(Qt::StrongFocus); -#endif - setAcceptedMouseButtons(Qt::LeftButton); - setAcceptTouchEvents(true); -#if QT_CONFIG(cursor) - setCursor(Qt::ArrowCursor); -#endif -} - -QQuickAbstractButton::QQuickAbstractButton(QQuickAbstractButtonPrivate &dd, QQuickItem *parent) - : QQuickControl(dd, parent) -{ - setActiveFocusOnTab(true); -#ifdef Q_OS_MACOS - setFocusPolicy(Qt::TabFocus); -#else - setFocusPolicy(Qt::StrongFocus); -#endif - setAcceptedMouseButtons(Qt::LeftButton); - setAcceptTouchEvents(true); -#if QT_CONFIG(cursor) - setCursor(Qt::ArrowCursor); -#endif -} - -QQuickAbstractButton::~QQuickAbstractButton() -{ - Q_D(QQuickAbstractButton); - d->removeImplicitSizeListener(d->indicator); - if (d->group) - d->group->removeButton(this); -#if QT_CONFIG(shortcut) - d->ungrabShortcut(); -#endif -} - -/*! - \qmlproperty string QtQuick.Controls::AbstractButton::text - - This property holds a textual description of the button. - - \note The text is used for accessibility purposes, so it makes sense to - set a textual description even if the content item is an image. - - \sa icon, display, {Control::contentItem}{contentItem} -*/ -QString QQuickAbstractButton::text() const -{ - Q_D(const QQuickAbstractButton); - return d->explicitText || !d->action ? d->text : d->action->text(); -} - -void QQuickAbstractButton::setText(const QString &text) -{ - Q_D(QQuickAbstractButton); - d->setText(text, true); -} - -void QQuickAbstractButton::resetText() -{ - Q_D(QQuickAbstractButton); - d->setText(QString(), false); -} - -/*! - \qmlproperty bool QtQuick.Controls::AbstractButton::down - - This property holds whether the button is visually down. - - Unless explicitly set, this property follows the value of \l pressed. To - return to the default value, set this property to \c undefined. - - \sa pressed -*/ -bool QQuickAbstractButton::isDown() const -{ - Q_D(const QQuickAbstractButton); - return d->down; -} - -void QQuickAbstractButton::setDown(bool down) -{ - Q_D(QQuickAbstractButton); - d->explicitDown = true; - - if (d->down == down) - return; - - d->down = down; - emit downChanged(); -} - -void QQuickAbstractButton::resetDown() -{ - Q_D(QQuickAbstractButton); - if (!d->explicitDown) - return; - - setDown(d->pressed); - d->explicitDown = false; -} - -/*! - \qmlproperty bool QtQuick.Controls::AbstractButton::pressed - \readonly - - This property holds whether the button is physically pressed. A button can - be pressed by either touch or key events. - - \sa down -*/ -bool QQuickAbstractButton::isPressed() const -{ - Q_D(const QQuickAbstractButton); - return d->pressed; -} - -void QQuickAbstractButton::setPressed(bool isPressed) -{ - Q_D(QQuickAbstractButton); - if (d->pressed == isPressed) - return; - - d->pressed = isPressed; - setAccessibleProperty("pressed", isPressed); - emit pressedChanged(); - buttonChange(ButtonPressedChanged); - - if (!d->explicitDown) { - setDown(d->pressed); - d->explicitDown = false; - } -} - -/*! - \qmlproperty bool QtQuick.Controls::AbstractButton::checked - - This property holds whether the button is checked. - - Since Qt 6.2, setting this property no longer affects the - \l {AbstractButton::}{checkable} property. Explicitly set the - \c checkable property if needed. - - \sa checkable -*/ -bool QQuickAbstractButton::isChecked() const -{ - Q_D(const QQuickAbstractButton); - return d->checked; -} - -void QQuickAbstractButton::setChecked(bool checked) -{ - Q_D(QQuickAbstractButton); - if (d->checked == checked) - return; - - d->checked = checked; - if (d->action) - d->action->setChecked(checked); - setAccessibleProperty("checked", checked); - buttonChange(ButtonCheckedChange); - emit checkedChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::AbstractButton::checkable - - This property holds whether the button is checkable. - - A checkable button toggles between checked (on) and unchecked (off) when - the user clicks on it or presses the space bar while the button has active - focus. - - The default value is \c false. - - \sa checked -*/ -bool QQuickAbstractButton::isCheckable() const -{ - Q_D(const QQuickAbstractButton); - return d->checkable; -} - -void QQuickAbstractButton::setCheckable(bool checkable) -{ - Q_D(QQuickAbstractButton); - if (d->checkable == checkable) - return; - - d->checkable = checkable; - if (d->action) - d->action->setCheckable(checkable); - setAccessibleProperty("checkable", checkable); - buttonChange(ButtonCheckableChange); - emit checkableChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::AbstractButton::autoExclusive - - This property holds whether auto-exclusivity is enabled. - - If auto-exclusivity is enabled, checkable buttons that belong to the same - parent item behave as if they were part of the same ButtonGroup. Only - one button can be checked at any time; checking another button automatically - unchecks the previously checked one. - - \note The property has no effect on buttons that belong to a ButtonGroup. - - RadioButton and TabButton are auto-exclusive by default. -*/ -bool QQuickAbstractButton::autoExclusive() const -{ - Q_D(const QQuickAbstractButton); - return d->autoExclusive; -} - -void QQuickAbstractButton::setAutoExclusive(bool exclusive) -{ - Q_D(QQuickAbstractButton); - if (d->autoExclusive == exclusive) - return; - - d->autoExclusive = exclusive; - emit autoExclusiveChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::AbstractButton::autoRepeat - - This property holds whether the button repeats \l pressed(), \l released() - and \l clicked() signals while the button is pressed and held down. - - If this property is set to \c true, the \l pressAndHold() signal will not - be emitted. - - The default value is \c false. - - The initial delay and the repetition interval are defined in milliseconds - by \l autoRepeatDelay and \l autoRepeatInterval. -*/ -bool QQuickAbstractButton::autoRepeat() const -{ - Q_D(const QQuickAbstractButton); - return d->autoRepeat; -} - -void QQuickAbstractButton::setAutoRepeat(bool repeat) -{ - Q_D(QQuickAbstractButton); - if (d->autoRepeat == repeat) - return; - - d->stopPressRepeat(); - d->autoRepeat = repeat; - emit autoRepeatChanged(); -} - -/*! - \qmlproperty Item QtQuick.Controls::AbstractButton::indicator - - This property holds the indicator item. -*/ -QQuickItem *QQuickAbstractButton::indicator() const -{ - QQuickAbstractButtonPrivate *d = const_cast<QQuickAbstractButtonPrivate *>(d_func()); - if (!d->indicator) - d->executeIndicator(); - return d->indicator; -} - -void QQuickAbstractButton::setIndicator(QQuickItem *indicator) -{ - Q_D(QQuickAbstractButton); - if (d->indicator == indicator) - return; - - if (!d->indicator.isExecuting()) - d->cancelIndicator(); - - const qreal oldImplicitIndicatorWidth = implicitIndicatorWidth(); - const qreal oldImplicitIndicatorHeight = implicitIndicatorHeight(); - - d->removeImplicitSizeListener(d->indicator); - QQuickControlPrivate::hideOldItem(d->indicator); - d->indicator = indicator; - - if (indicator) { - if (!indicator->parentItem()) - indicator->setParentItem(this); - indicator->setAcceptedMouseButtons(Qt::LeftButton); - d->addImplicitSizeListener(indicator); - } - - if (!qFuzzyCompare(oldImplicitIndicatorWidth, implicitIndicatorWidth())) - emit implicitIndicatorWidthChanged(); - if (!qFuzzyCompare(oldImplicitIndicatorHeight, implicitIndicatorHeight())) - emit implicitIndicatorHeightChanged(); - if (!d->indicator.isExecuting()) - emit indicatorChanged(); -} - -/*! - \qmlproperty string QtQuick.Controls::AbstractButton::icon.name - \qmlproperty url QtQuick.Controls::AbstractButton::icon.source - \qmlproperty int QtQuick.Controls::AbstractButton::icon.width - \qmlproperty int QtQuick.Controls::AbstractButton::icon.height - \qmlproperty color QtQuick.Controls::AbstractButton::icon.color - \qmlproperty bool QtQuick.Controls::AbstractButton::icon.cache - - This property group was added in QtQuick.Controls 2.3. - - \include qquickicon.qdocinc grouped-properties - - \sa text, display, {Icons in Qt Quick Controls} -*/ - -QQuickIcon QQuickAbstractButton::icon() const -{ - Q_D(const QQuickAbstractButton); - return d->effectiveIcon; -} - -void QQuickAbstractButton::setIcon(const QQuickIcon &icon) -{ - Q_D(QQuickAbstractButton); - d->icon = icon; - d->updateEffectiveIcon(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty enumeration QtQuick.Controls::AbstractButton::display - - This property determines how the \l icon and \l text are displayed within - the button. - - \table - \header \li Display \li Result - \row \li \c AbstractButton.IconOnly \li \image qtquickcontrols2-button-icononly.png - \row \li \c AbstractButton.TextOnly \li \image qtquickcontrols2-button-textonly.png - \row \li \c AbstractButton.TextBesideIcon \li \image qtquickcontrols2-button-textbesideicon.png - \row \li \c AbstractButton.TextUnderIcon \li \image qtquickcontrols2-button-textundericon.png - \endtable - - \sa {Control::}{spacing}, {Control::}{padding} -*/ -QQuickAbstractButton::Display QQuickAbstractButton::display() const -{ - Q_D(const QQuickAbstractButton); - return d->display; -} - -void QQuickAbstractButton::setDisplay(Display display) -{ - Q_D(QQuickAbstractButton); - if (display == d->display) - return; - - d->display = display; - emit displayChanged(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty Action QtQuick.Controls::AbstractButton::action - - This property holds the button action. - - \sa Action -*/ -QQuickAction *QQuickAbstractButton::action() const -{ - Q_D(const QQuickAbstractButton); - return d->action; -} - -void QQuickAbstractButton::setAction(QQuickAction *action) -{ - Q_D(QQuickAbstractButton); - if (d->action == action) - return; - - const QString oldText = text(); - - if (QQuickAction *oldAction = d->action.data()) { - QQuickActionPrivate::get(oldAction)->unregisterItem(this); - QObjectPrivate::disconnect(oldAction, &QQuickAction::triggered, d, &QQuickAbstractButtonPrivate::click); - QObjectPrivate::disconnect(oldAction, &QQuickAction::textChanged, d, &QQuickAbstractButtonPrivate::actionTextChange); - - QObjectPrivate::disconnect(oldAction, &QQuickAction::iconChanged, d, &QQuickAbstractButtonPrivate::updateEffectiveIcon); - disconnect(oldAction, &QQuickAction::checkedChanged, this, &QQuickAbstractButton::setChecked); - disconnect(oldAction, &QQuickAction::checkableChanged, this, &QQuickAbstractButton::setCheckable); - disconnect(oldAction, &QQuickAction::enabledChanged, this, &QQuickItem::setEnabled); - } - - if (action) { - QQuickActionPrivate::get(action)->registerItem(this); - QObjectPrivate::connect(action, &QQuickAction::triggered, d, &QQuickAbstractButtonPrivate::click); - QObjectPrivate::connect(action, &QQuickAction::textChanged, d, &QQuickAbstractButtonPrivate::actionTextChange); - - QObjectPrivate::connect(action, &QQuickAction::iconChanged, d, &QQuickAbstractButtonPrivate::updateEffectiveIcon); - connect(action, &QQuickAction::checkedChanged, this, &QQuickAbstractButton::setChecked); - connect(action, &QQuickAction::checkableChanged, this, &QQuickAbstractButton::setCheckable); - connect(action, &QQuickAction::enabledChanged, this, &QQuickItem::setEnabled); - - setChecked(action->isChecked()); - setCheckable(action->isCheckable()); - setEnabled(action->isEnabled()); - } - - d->action = action; - - if (oldText != text()) - buttonChange(ButtonTextChange); - - d->updateEffectiveIcon(); - - emit actionChanged(); -} - -/*! - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty int QtQuick.Controls::AbstractButton::autoRepeatDelay - - This property holds the initial delay of auto-repetition in milliseconds. - The default value is \c 300 ms. - - \sa autoRepeat, autoRepeatInterval -*/ -int QQuickAbstractButton::autoRepeatDelay() const -{ - Q_D(const QQuickAbstractButton); - return d->repeatDelay; -} - -void QQuickAbstractButton::setAutoRepeatDelay(int delay) -{ - Q_D(QQuickAbstractButton); - if (d->repeatDelay == delay) - return; - - d->repeatDelay = delay; - emit autoRepeatDelayChanged(); -} - -/*! - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty int QtQuick.Controls::AbstractButton::autoRepeatInterval - - This property holds the interval of auto-repetition in milliseconds. - The default value is \c 100 ms. - - \sa autoRepeat, autoRepeatDelay -*/ -int QQuickAbstractButton::autoRepeatInterval() const -{ - Q_D(const QQuickAbstractButton); - return d->repeatInterval; -} - -void QQuickAbstractButton::setAutoRepeatInterval(int interval) -{ - Q_D(QQuickAbstractButton); - if (d->repeatInterval == interval) - return; - - d->repeatInterval = interval; - emit autoRepeatIntervalChanged(); -} - -#if QT_CONFIG(shortcut) -QKeySequence QQuickAbstractButton::shortcut() const -{ - Q_D(const QQuickAbstractButton); - return d->shortcut; -} - -void QQuickAbstractButton::setShortcut(const QKeySequence &shortcut) -{ - Q_D(QQuickAbstractButton); - if (d->shortcut == shortcut) - return; - - d->ungrabShortcut(); - d->shortcut = shortcut; - if (isVisible()) - d->grabShortcut(); -} -#endif - -/*! - \readonly - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty real QtQuick.Controls::AbstractButton::pressX - - This property holds the x-coordinate of the last press. - - \note The value is updated on touch moves, but left intact after touch release. - - \sa pressY -*/ -qreal QQuickAbstractButton::pressX() const -{ - Q_D(const QQuickAbstractButton); - return d->movePoint.x(); -} - -/*! - \readonly - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty real QtQuick.Controls::AbstractButton::pressY - - This property holds the y-coordinate of the last press. - - \note The value is updated on touch moves, but left intact after touch release. - - \sa pressX -*/ -qreal QQuickAbstractButton::pressY() const -{ - Q_D(const QQuickAbstractButton); - return d->movePoint.y(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::AbstractButton::implicitIndicatorWidth - \readonly - - This property holds the implicit indicator width. - - The value is equal to \c {indicator ? indicator.implicitWidth : 0}. - - This is typically used, together with \l {Control::}{implicitContentWidth} and - \l {Control::}{implicitBackgroundWidth}, to calculate the \l {Item::}{implicitWidth}. - - \sa implicitIndicatorHeight -*/ -qreal QQuickAbstractButton::implicitIndicatorWidth() const -{ - Q_D(const QQuickAbstractButton); - if (!d->indicator) - return 0; - return d->indicator->implicitWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::AbstractButton::implicitIndicatorHeight - \readonly - - This property holds the implicit indicator height. - - The value is equal to \c {indicator ? indicator.implicitHeight : 0}. - - This is typically used, together with \l {Control::}{implicitContentHeight} and - \l {Control::}{implicitBackgroundHeight}, to calculate the \l {Item::}{implicitHeight}. - - \sa implicitIndicatorWidth -*/ -qreal QQuickAbstractButton::implicitIndicatorHeight() const -{ - Q_D(const QQuickAbstractButton); - if (!d->indicator) - return 0; - return d->indicator->implicitHeight(); -} - -/*! - \qmlmethod void QtQuick.Controls::AbstractButton::toggle() - - Toggles the checked state of the button. -*/ -void QQuickAbstractButton::toggle() -{ - Q_D(QQuickAbstractButton); - setChecked(!d->checked); -} - -void QQuickAbstractButton::componentComplete() -{ - Q_D(QQuickAbstractButton); - d->executeIndicator(true); - QQuickControl::componentComplete(); -} - -bool QQuickAbstractButton::event(QEvent *event) -{ -#if QT_CONFIG(shortcut) - Q_D(QQuickAbstractButton); - if (event->type() == QEvent::Shortcut) { - QShortcutEvent *se = static_cast<QShortcutEvent *>(event); - if (se->shortcutId() == d->shortcutId) { - d->trigger(); - return true; - } - } -#endif - return QQuickControl::event(event); -} - -void QQuickAbstractButton::focusOutEvent(QFocusEvent *event) -{ - Q_D(QQuickAbstractButton); - QQuickControl::focusOutEvent(event); - if (d->touchId == -1) // don't ungrab on multi-touch if another control gets focused - d->handleUngrab(); -} - -void QQuickAbstractButton::keyPressEvent(QKeyEvent *event) -{ - Q_D(QQuickAbstractButton); - QQuickControl::keyPressEvent(event); - if (d->acceptKeyClick(static_cast<Qt::Key>(event->key()))) { - d->setPressPoint(QPoint(qRound(width() / 2), qRound(height() / 2))); - setPressed(true); - - if (d->autoRepeat) - d->startRepeatDelay(); - - emit pressed(); - event->accept(); - } -} - -void QQuickAbstractButton::keyReleaseEvent(QKeyEvent *event) -{ - Q_D(QQuickAbstractButton); - QQuickControl::keyReleaseEvent(event); - if (d->pressed && d->acceptKeyClick(static_cast<Qt::Key>(event->key()))) { - setPressed(false); - - nextCheckState(); - emit released(); - d->trigger(); - - if (d->autoRepeat) - d->stopPressRepeat(); - event->accept(); - } -} - -void QQuickAbstractButton::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickAbstractButton); - d->pressButtons = event->buttons(); - QQuickControl::mousePressEvent(event); -} - -void QQuickAbstractButton::mouseDoubleClickEvent(QMouseEvent *event) -{ - Q_D(QQuickAbstractButton); - QQuickControl::mouseDoubleClickEvent(event); - emit doubleClicked(); - d->wasDoubleClick = true; -} - -void QQuickAbstractButton::timerEvent(QTimerEvent *event) -{ - Q_D(QQuickAbstractButton); - QQuickControl::timerEvent(event); - if (event->timerId() == d->holdTimer) { - d->stopPressAndHold(); - d->wasHeld = true; - emit pressAndHold(); - } else if (event->timerId() == d->delayTimer) { - d->startPressRepeat(); - } else if (event->timerId() == d->repeatTimer) { - emit released(); - d->trigger(); - emit pressed(); - } -} - -void QQuickAbstractButton::itemChange(ItemChange change, const ItemChangeData &value) -{ - QQuickControl::itemChange(change, value); -#if QT_CONFIG(shortcut) - Q_D(QQuickAbstractButton); - if (change == ItemVisibleHasChanged) { - if (value.boolValue) - d->grabShortcut(); - else - d->ungrabShortcut(); - } -#endif -} - -void QQuickAbstractButton::buttonChange(ButtonChange change) -{ - Q_D(QQuickAbstractButton); - switch (change) { - case ButtonCheckedChange: - if (d->checked) { - QQuickAbstractButton *button = d->findCheckedButton(); - if (button && button != this) - button->setChecked(false); - } - break; - case ButtonTextChange: { - const QString txt = text(); - maybeSetAccessibleName(txt); -#if QT_CONFIG(shortcut) - setShortcut(QKeySequence::mnemonic(txt)); -#endif - emit textChanged(); - break; - } - default: - break; - } -} - -void QQuickAbstractButton::nextCheckState() -{ - Q_D(QQuickAbstractButton); - if (d->checkable && (!d->checked || d->findCheckedButton() != this)) - d->toggle(!d->checked); -} - -#if QT_CONFIG(accessibility) -void QQuickAbstractButton::accessibilityActiveChanged(bool active) -{ - QQuickControl::accessibilityActiveChanged(active); - - Q_D(QQuickAbstractButton); - if (active) { - maybeSetAccessibleName(text()); - setAccessibleProperty("pressed", d->pressed); - setAccessibleProperty("checked", d->checked); - setAccessibleProperty("checkable", d->checkable); - } -} - -QAccessible::Role QQuickAbstractButton::accessibleRole() const -{ - Q_D(const QQuickAbstractButton); - if (d->checkable) { - return QAccessible::CheckBox; - } - return QAccessible::Button; -} -#endif - -QT_END_NAMESPACE - -#include "moc_qquickabstractbutton_p.cpp" diff --git a/src/quicktemplates2/qquickabstractbutton_p.h b/src/quicktemplates2/qquickabstractbutton_p.h deleted file mode 100644 index a5dbd733..00000000 --- a/src/quicktemplates2/qquickabstractbutton_p.h +++ /dev/null @@ -1,225 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKABSTRACTBUTTON_P_H -#define QQUICKABSTRACTBUTTON_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> -#include <QtQuickTemplates2/private/qquickicon_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickAction; -class QQuickAbstractButtonPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickAbstractButton : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(QString text READ text WRITE setText RESET resetText NOTIFY textChanged FINAL) - Q_PROPERTY(bool down READ isDown WRITE setDown NOTIFY downChanged RESET resetDown FINAL) - Q_PROPERTY(bool pressed READ isPressed NOTIFY pressedChanged FINAL) - Q_PROPERTY(bool checked READ isChecked WRITE setChecked NOTIFY checkedChanged FINAL) - Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable NOTIFY checkableChanged FINAL) - Q_PROPERTY(bool autoExclusive READ autoExclusive WRITE setAutoExclusive NOTIFY autoExclusiveChanged FINAL) - Q_PROPERTY(bool autoRepeat READ autoRepeat WRITE setAutoRepeat NOTIFY autoRepeatChanged FINAL) - Q_PROPERTY(QQuickItem *indicator READ indicator WRITE setIndicator NOTIFY indicatorChanged FINAL) - // 2.3 (Qt 5.10) - Q_PROPERTY(QQuickIcon icon READ icon WRITE setIcon NOTIFY iconChanged FINAL REVISION(2, 3)) - Q_PROPERTY(Display display READ display WRITE setDisplay NOTIFY displayChanged FINAL REVISION(2, 3)) - Q_PROPERTY(QQuickAction *action READ action WRITE setAction NOTIFY actionChanged FINAL REVISION(2, 3)) - // 2.4 (Qt 5.11) - Q_PROPERTY(int autoRepeatDelay READ autoRepeatDelay WRITE setAutoRepeatDelay NOTIFY autoRepeatDelayChanged FINAL REVISION(2, 4)) - Q_PROPERTY(int autoRepeatInterval READ autoRepeatInterval WRITE setAutoRepeatInterval NOTIFY autoRepeatIntervalChanged FINAL REVISION(2, 4)) - Q_PROPERTY(qreal pressX READ pressX NOTIFY pressXChanged FINAL REVISION(2, 4)) - Q_PROPERTY(qreal pressY READ pressY NOTIFY pressYChanged FINAL REVISION(2, 4)) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal implicitIndicatorWidth READ implicitIndicatorWidth NOTIFY implicitIndicatorWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitIndicatorHeight READ implicitIndicatorHeight NOTIFY implicitIndicatorHeightChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DeferredPropertyNames", "background,contentItem,indicator") - QML_NAMED_ELEMENT(AbstractButton) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickAbstractButton(QQuickItem *parent = nullptr); - ~QQuickAbstractButton(); - - QString text() const; - void setText(const QString &text); - void resetText(); - - bool isDown() const; - void setDown(bool down); - void resetDown(); - - bool isPressed() const; - void setPressed(bool pressed); - - bool isChecked() const; - void setChecked(bool checked); - - bool isCheckable() const; - void setCheckable(bool checkable); - - bool autoExclusive() const; - void setAutoExclusive(bool exclusive); - - bool autoRepeat() const; - void setAutoRepeat(bool repeat); - - QQuickItem *indicator() const; - void setIndicator(QQuickItem *indicator); - - // 2.3 (Qt 5.10) - QQuickIcon icon() const; - void setIcon(const QQuickIcon &icon); - - enum Display { - IconOnly, - TextOnly, - TextBesideIcon, - TextUnderIcon - }; - Q_ENUM(Display) - - Display display() const; - void setDisplay(Display display); - - QQuickAction *action() const; - void setAction(QQuickAction *action); - -#if QT_CONFIG(shortcut) - QKeySequence shortcut() const; - void setShortcut(const QKeySequence &shortcut); -#endif - - // 2.4 (Qt 5.11) - int autoRepeatDelay() const; - void setAutoRepeatDelay(int delay); - - int autoRepeatInterval() const; - void setAutoRepeatInterval(int interval); - - qreal pressX() const; - qreal pressY() const; - - // 2.5 (Qt 5.12) - qreal implicitIndicatorWidth() const; - qreal implicitIndicatorHeight() const; - -public Q_SLOTS: - void toggle(); - -Q_SIGNALS: - void pressed(); - void released(); - void canceled(); - void clicked(); - void pressAndHold(); - void doubleClicked(); - void textChanged(); - void downChanged(); - void pressedChanged(); - void checkedChanged(); - void checkableChanged(); - void autoExclusiveChanged(); - void autoRepeatChanged(); - void indicatorChanged(); - // 2.2 (Qt 5.9) - Q_REVISION(2, 2) void toggled(); - // 2.3 (Qt 5.10) - Q_REVISION(2, 3) void iconChanged(); - Q_REVISION(2, 3) void displayChanged(); - Q_REVISION(2, 3) void actionChanged(); - // 2.4 (Qt 5.11) - Q_REVISION(2, 4) void autoRepeatDelayChanged(); - Q_REVISION(2, 4) void autoRepeatIntervalChanged(); - Q_REVISION(2, 4) void pressXChanged(); - Q_REVISION(2, 4) void pressYChanged(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void implicitIndicatorWidthChanged(); - Q_REVISION(2, 5) void implicitIndicatorHeightChanged(); - -protected: - QQuickAbstractButton(QQuickAbstractButtonPrivate &dd, QQuickItem *parent); - - void componentComplete() override; - - bool event(QEvent *event) override; - void focusOutEvent(QFocusEvent *event) override; - void keyPressEvent(QKeyEvent *event) override; - void keyReleaseEvent(QKeyEvent *event) override; - void mousePressEvent(QMouseEvent *event) override; - void mouseDoubleClickEvent(QMouseEvent *event) override; - void timerEvent(QTimerEvent *event) override; - - void itemChange(ItemChange change, const ItemChangeData &value) override; - - enum ButtonChange { - ButtonCheckedChange, - ButtonCheckableChange, - ButtonPressedChanged, - ButtonTextChange - }; - virtual void buttonChange(ButtonChange change); - - virtual void nextCheckState(); - -#if QT_CONFIG(accessibility) - void accessibilityActiveChanged(bool active) override; - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickAbstractButton) - Q_DECLARE_PRIVATE(QQuickAbstractButton) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickAbstractButton) - -#endif // QQUICKABSTRACTBUTTON_P_H diff --git a/src/quicktemplates2/qquickabstractbutton_p_p.h b/src/quicktemplates2/qquickabstractbutton_p_p.h deleted file mode 100644 index 744d9e66..00000000 --- a/src/quicktemplates2/qquickabstractbutton_p_p.h +++ /dev/null @@ -1,152 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKABSTRACTBUTTON_P_P_H -#define QQUICKABSTRACTBUTTON_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> -#include <QtQuickTemplates2/private/qquickcontrol_p_p.h> -#if QT_CONFIG(shortcut) -# include <QtGui/qkeysequence.h> -#endif - -QT_BEGIN_NAMESPACE - -class QQuickAction; -class QQuickButtonGroup; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickAbstractButtonPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickAbstractButton) - -public: - static QQuickAbstractButtonPrivate *get(QQuickAbstractButton *button) - { - return button->d_func(); - } - - void setPressPoint(const QPointF &point); - void setMovePoint(const QPointF &point); - - void handlePress(const QPointF &point, ulong timestamp) override; - void handleMove(const QPointF &point, ulong timestamp) override; - void handleRelease(const QPointF &point, ulong timestamp) override; - void handleUngrab() override; - - virtual bool acceptKeyClick(Qt::Key key) const; - - bool isPressAndHoldConnected(); - void startPressAndHold(); - void stopPressAndHold(); - - void startRepeatDelay(); - void startPressRepeat(); - void stopPressRepeat(); - -#if QT_CONFIG(shortcut) - void grabShortcut(); - void ungrabShortcut(); -#endif - - QQuickAbstractButton *findCheckedButton() const; - QList<QQuickAbstractButton *> findExclusiveButtons() const; - - void actionTextChange(); - void setText(const QString &text, bool isExplicit); - - void updateEffectiveIcon(); - - void click(); - void trigger(bool doubleClick = false); - void toggle(bool value); - - void cancelIndicator(); - void executeIndicator(bool complete = false); - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - // copied from qabstractbutton.cpp - static const int AUTO_REPEAT_DELAY = 300; - static const int AUTO_REPEAT_INTERVAL = 100; - - bool explicitText = false; - bool down = false; - bool explicitDown = false; - bool pressed = false; - bool keepPressed = false; - bool checked = false; - bool checkable = false; - bool autoExclusive = false; - bool autoRepeat = false; - bool wasHeld = false; - bool wasDoubleClick = false; - int holdTimer = 0; - int delayTimer = 0; - int repeatTimer = 0; - int repeatDelay = AUTO_REPEAT_DELAY; - int repeatInterval = AUTO_REPEAT_INTERVAL; -#if QT_CONFIG(shortcut) - int shortcutId = 0; - QKeySequence shortcut; -#endif - qreal lastTouchReleaseTimestamp = 0; - QString text; - QQuickIcon icon; - QQuickIcon effectiveIcon; - QPointF pressPoint; - QPointF movePoint; - Qt::MouseButtons pressButtons = Qt::NoButton; - QQuickAbstractButton::Display display = QQuickAbstractButton::TextBesideIcon; - QQuickDeferredPointer<QQuickItem> indicator; - QQuickButtonGroup *group = nullptr; - QPointer<QQuickAction> action; -}; - -QT_END_NAMESPACE - -#endif // QQUICKABSTRACTBUTTON_P_P_H diff --git a/src/quicktemplates2/qquickaction.cpp b/src/quicktemplates2/qquickaction.cpp deleted file mode 100644 index e3eb9370..00000000 --- a/src/quicktemplates2/qquickaction.cpp +++ /dev/null @@ -1,586 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickaction_p.h" -#include "qquickaction_p_p.h" -#include "qquickactiongroup_p.h" -#include "qquickshortcutcontext_p_p.h" - -#include <QtGui/qevent.h> -#if QT_CONFIG(shortcut) -# include <QtGui/private/qshortcutmap_p.h> -#endif -#include <QtGui/private/qguiapplication_p.h> -#include <QtQuick/private/qquickitem_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Action - \inherits QtObject -//! \instantiates QQuickAction - \inqmlmodule QtQuick.Controls - \since 5.10 - \ingroup utilities - \brief Abstract user interface action. - - Action represents an abstract user interface action that can have shortcuts - and can be assigned to menu items and toolbar buttons. - - Actions may contain \l text, an \l icon, and a \l shortcut. Actions are normally - \l triggered by the user via menu items, toolbar buttons, or keyboard shortcuts. - A \l checkable Action toggles its \l checked state when triggered. - - \snippet qtquickcontrols2-action.qml action - - Action is commonly used to implement application commands that can be invoked - via menu items, toolbar buttons, and keyboard shortcuts. Since the user expects - the commands to be performed in the same way, regardless of the user interface - used, it is useful to represent the commands as shareable actions. - - Action can be also used to separate the logic and the visual presentation. For - example, when declaring buttons and menu items in \c .ui.qml files, actions can - be declared elsewhere and assigned from the outside. - - \snippet qtquickcontrols2-action.qml toolbutton - - When an action is paired with buttons and menu items, the \c enabled, \c checkable, - and \c checked states are synced automatically. For example, in a word processor, - if the user clicks a "Bold" toolbar button, the "Bold" menu item will automatically - be checked. Buttons and menu items get their \c text and \c icon from the action by - default. An action-specific \c text or \c icon can be overridden for a specific - control by specifying \c text or \c icon directly on the control. - - \snippet qtquickcontrols2-action.qml menuitem - - Since Action presents a user interface action, it is intended to be assigned to - a \l MenuItem, \l ToolButton, or any other control that inherits \l AbstractButton. - For keyboard shortcuts, the simpler \l Shortcut type is more appropriate. - - \sa MenuItem, ToolButton, Shortcut -*/ - -/*! - \qmlsignal QtQuick.Controls::Action::toggled(QtObject source) - - This signal is emitted when the action is toggled. The \a source argument - identifies the object that toggled the action. - - For example, if the action is assigned to a menu item and a toolbar button, the - action is toggled when the control is toggled, the shortcut is activated, or - when \l toggle() is called directly. -*/ - -/*! - \qmlsignal QtQuick.Controls::Action::triggered(QtObject source) - - This signal is emitted when the action is triggered. The \a source argument - identifies the object that triggered the action. - - For example, if the action is assigned to a menu item and a toolbar button, the - action is triggered when the control is clicked, the shortcut is activated, or - when \l trigger() is called directly. -*/ - -#if QT_CONFIG(shortcut) -static QKeySequence variantToKeySequence(const QVariant &var) -{ - if (var.metaType().id() == QMetaType::Int) - return QKeySequence(static_cast<QKeySequence::StandardKey>(var.toInt())); - return QKeySequence::fromString(var.toString()); -} - -QQuickActionPrivate::ShortcutEntry::ShortcutEntry(QObject *target) - : m_target(target) -{ -} - -QQuickActionPrivate::ShortcutEntry::~ShortcutEntry() -{ - ungrab(); -} - -QObject *QQuickActionPrivate::ShortcutEntry::target() const -{ - return m_target; -} - -int QQuickActionPrivate::ShortcutEntry::shortcutId() const -{ - return m_shortcutId; -} - -void QQuickActionPrivate::ShortcutEntry::grab(const QKeySequence &shortcut, bool enabled) -{ - if (shortcut.isEmpty()) - return; - - Qt::ShortcutContext context = Qt::WindowShortcut; // TODO - m_shortcutId = QGuiApplicationPrivate::instance()->shortcutMap.addShortcut(m_target, shortcut, context, QQuickShortcutContext::matcher); - - if (!enabled) - QGuiApplicationPrivate::instance()->shortcutMap.setShortcutEnabled(false, m_shortcutId, m_target); -} - -void QQuickActionPrivate::ShortcutEntry::ungrab() -{ - if (!m_shortcutId) - return; - - QGuiApplicationPrivate::instance()->shortcutMap.removeShortcut(m_shortcutId, m_target); - m_shortcutId = 0; -} - -void QQuickActionPrivate::ShortcutEntry::setEnabled(bool enabled) -{ - if (!m_shortcutId) - return; - - QGuiApplicationPrivate::instance()->shortcutMap.setShortcutEnabled(enabled, m_shortcutId, m_target); -} - -QVariant QQuickActionPrivate::shortcut() const -{ - return vshortcut; -} - -void QQuickActionPrivate::setShortcut(const QVariant &var) -{ - Q_Q(QQuickAction); - if (vshortcut == var) - return; - - defaultShortcutEntry->ungrab(); - for (QQuickActionPrivate::ShortcutEntry *entry : qAsConst(shortcutEntries)) - entry->ungrab(); - - vshortcut = var; - keySequence = variantToKeySequence(var); - - defaultShortcutEntry->grab(keySequence, enabled); - for (QQuickActionPrivate::ShortcutEntry *entry : qAsConst(shortcutEntries)) - entry->grab(keySequence, enabled); - - emit q->shortcutChanged(keySequence); -} -#endif // QT_CONFIG(shortcut) - -void QQuickActionPrivate::setEnabled(bool enable) -{ - Q_Q(QQuickAction); - if (enabled == enable) - return; - - enabled = enable; - -#if QT_CONFIG(shortcut) - defaultShortcutEntry->setEnabled(enable); - for (QQuickActionPrivate::ShortcutEntry *entry : qAsConst(shortcutEntries)) - entry->setEnabled(enable); -#endif - - emit q->enabledChanged(enable); -} - -bool QQuickActionPrivate::watchItem(QQuickItem *item) -{ - Q_Q(QQuickAction); - if (!item) - return false; - - item->installEventFilter(q); - QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::Visibility | QQuickItemPrivate::Destroyed); - return true; -} - -bool QQuickActionPrivate::unwatchItem(QQuickItem *item) -{ - Q_Q(QQuickAction); - if (!item) - return false; - - item->removeEventFilter(q); - QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::Visibility | QQuickItemPrivate::Destroyed); - return true; -} - -void QQuickActionPrivate::registerItem(QQuickItem *item) -{ - if (!watchItem(item)) - return; - -#if QT_CONFIG(shortcut) - QQuickActionPrivate::ShortcutEntry *entry = new QQuickActionPrivate::ShortcutEntry(item); - if (item->isVisible()) - entry->grab(keySequence, enabled); - shortcutEntries += entry; - - updateDefaultShortcutEntry(); -#endif -} - -void QQuickActionPrivate::unregisterItem(QQuickItem *item) -{ -#if QT_CONFIG(shortcut) - QQuickActionPrivate::ShortcutEntry *entry = findShortcutEntry(item); - if (!entry || !unwatchItem(item)) - return; - - shortcutEntries.removeOne(entry); - delete entry; - - updateDefaultShortcutEntry(); -#else - Q_UNUSED(item); -#endif -} - -void QQuickActionPrivate::itemVisibilityChanged(QQuickItem *item) -{ -#if QT_CONFIG(shortcut) - QQuickActionPrivate::ShortcutEntry *entry = findShortcutEntry(item); - if (!entry) - return; - - if (item->isVisible()) - entry->grab(keySequence, enabled); - else - entry->ungrab(); - - updateDefaultShortcutEntry(); -#else - Q_UNUSED(item); -#endif -} - -void QQuickActionPrivate::itemDestroyed(QQuickItem *item) -{ - unregisterItem(item); -} - -#if QT_CONFIG(shortcut) -bool QQuickActionPrivate::handleShortcutEvent(QObject *object, QShortcutEvent *event) -{ - Q_Q(QQuickAction); - if (event->key() != keySequence) - return false; - - QQuickActionPrivate::ShortcutEntry *entry = findShortcutEntry(object); - if (!entry || event->shortcutId() != entry->shortcutId()) - return false; - - q->trigger(entry->target()); - return true; -} - -QQuickActionPrivate::ShortcutEntry *QQuickActionPrivate::findShortcutEntry(QObject *target) const -{ - Q_Q(const QQuickAction); - if (target == q) - return defaultShortcutEntry; - for (QQuickActionPrivate::ShortcutEntry *entry : shortcutEntries) { - if (entry->target() == target) - return entry; - } - return nullptr; -} - -void QQuickActionPrivate::updateDefaultShortcutEntry() -{ - bool hasActiveShortcutEntries = false; - for (QQuickActionPrivate::ShortcutEntry *entry : qAsConst(shortcutEntries)) { - if (entry->shortcutId()) { - hasActiveShortcutEntries = true; - break; - } - } - - if (hasActiveShortcutEntries) - defaultShortcutEntry->ungrab(); - else if (!defaultShortcutEntry->shortcutId()) - defaultShortcutEntry->grab(keySequence, enabled); -} -#endif // QT_CONFIG(shortcut) - -QQuickAction::QQuickAction(QObject *parent) - : QObject(*(new QQuickActionPrivate), parent) -{ -#if QT_CONFIG(shortcut) - Q_D(QQuickAction); - d->defaultShortcutEntry = new QQuickActionPrivate::ShortcutEntry(this); -#endif -} - -QQuickAction::~QQuickAction() -{ - Q_D(QQuickAction); - if (d->group) - d->group->removeAction(this); - -#if QT_CONFIG(shortcut) - for (QQuickActionPrivate::ShortcutEntry *entry : qAsConst(d->shortcutEntries)) - d->unwatchItem(qobject_cast<QQuickItem *>(entry->target())); - - qDeleteAll(d->shortcutEntries); - delete d->defaultShortcutEntry; -#endif -} - -/*! - \qmlproperty string QtQuick.Controls::Action::text - - This property holds a textual description of the action. -*/ -QString QQuickAction::text() const -{ - Q_D(const QQuickAction); - return d->text; -} - -void QQuickAction::setText(const QString &text) -{ - Q_D(QQuickAction); - if (d->text == text) - return; - - d->text = text; - emit textChanged(text); -} - -/*! - \qmlproperty string QtQuick.Controls::Action::icon.name - \qmlproperty url QtQuick.Controls::Action::icon.source - \qmlproperty int QtQuick.Controls::Action::icon.width - \qmlproperty int QtQuick.Controls::Action::icon.height - \qmlproperty color QtQuick.Controls::Action::icon.color - \qmlproperty bool QtQuick.Controls::Action::icon.cache - - \include qquickicon.qdocinc grouped-properties -*/ -QQuickIcon QQuickAction::icon() const -{ - Q_D(const QQuickAction); - return d->icon; -} - -void QQuickAction::setIcon(const QQuickIcon &icon) -{ - Q_D(QQuickAction); - if (d->icon == icon) - return; - - d->icon = icon; - emit iconChanged(icon); -} - -/*! - \qmlproperty bool QtQuick.Controls::Action::enabled - - This property holds whether the action is enabled. The default value is \c true. -*/ -bool QQuickAction::isEnabled() const -{ - Q_D(const QQuickAction); - return d->enabled && (!d->group || d->group->isEnabled()); -} - -void QQuickAction::setEnabled(bool enabled) -{ - Q_D(QQuickAction); - d->explicitEnabled = true; - d->setEnabled(enabled); -} - -void QQuickAction::resetEnabled() -{ - Q_D(QQuickAction); - if (!d->explicitEnabled) - return; - - d->explicitEnabled = false; - d->setEnabled(true); -} - -/*! - \qmlproperty bool QtQuick.Controls::Action::checked - - This property holds whether the action is checked. - - \sa checkable -*/ -bool QQuickAction::isChecked() const -{ - Q_D(const QQuickAction); - return d->checked; -} - -void QQuickAction::setChecked(bool checked) -{ - Q_D(QQuickAction); - if (d->checked == checked) - return; - - d->checked = checked; - emit checkedChanged(checked); -} - -/*! - \qmlproperty bool QtQuick.Controls::Action::checkable - - This property holds whether the action is checkable. The default value is \c false. - - A checkable action toggles between checked (on) and unchecked (off) when triggered. - - \sa checked -*/ -bool QQuickAction::isCheckable() const -{ - Q_D(const QQuickAction); - return d->checkable; -} - -void QQuickAction::setCheckable(bool checkable) -{ - Q_D(QQuickAction); - if (d->checkable == checkable) - return; - - d->checkable = checkable; - emit checkableChanged(checkable); -} - -#if QT_CONFIG(shortcut) -/*! - \qmlproperty keysequence QtQuick.Controls::Action::shortcut - - This property holds the action's shortcut. The key sequence can be set - to one of the \l{QKeySequence::StandardKey}{standard keyboard shortcuts}, - or it can be described with a string containing a sequence of up to four - key presses that are needed to trigger the shortcut. - - \code - Action { - shortcut: "Ctrl+E,Ctrl+W" - onTriggered: edit.wrapMode = TextEdit.Wrap - } - \endcode -*/ -QKeySequence QQuickAction::shortcut() const -{ - Q_D(const QQuickAction); - return d->keySequence; -} - -void QQuickAction::setShortcut(const QKeySequence &shortcut) -{ - Q_D(QQuickAction); - d->setShortcut(shortcut.toString()); -} -#endif // QT_CONFIG(shortcut) - -/*! - \qmlmethod void QtQuick.Controls::Action::toggle(QtObject source) - - Toggles the action and emits \l toggled() if enabled, with an optional \a source object defined. -*/ -void QQuickAction::toggle(QObject *source) -{ - Q_D(QQuickAction); - if (!d->enabled) - return; - - if (d->checkable) - setChecked(!d->checked); - - emit toggled(source); -} - -/*! - \qmlmethod void QtQuick.Controls::Action::trigger(QtObject source) - - Triggers the action and emits \l triggered() if enabled, with an optional \a source object defined. -*/ -void QQuickAction::trigger(QObject *source) -{ - Q_D(QQuickAction); - d->trigger(source, true); -} - -void QQuickActionPrivate::trigger(QObject* source, bool doToggle) -{ - Q_Q(QQuickAction); - if (!enabled) - return; - - QPointer<QObject> guard = q; - // the checked action of an exclusive group cannot be unchecked - if (checkable && (!checked || !group || !group->isExclusive() || group->checkedAction() != q)) { - if (doToggle) - q->toggle(source); - else - emit q->toggled(source); - } - - if (!guard.isNull()) - emit q->triggered(source); -} - -bool QQuickAction::event(QEvent *event) -{ -#if QT_CONFIG(shortcut) - Q_D(QQuickAction); - if (event->type() == QEvent::Shortcut) - return d->handleShortcutEvent(this, static_cast<QShortcutEvent *>(event)); -#endif - return QObject::event(event); -} - -bool QQuickAction::eventFilter(QObject *object, QEvent *event) -{ -#if QT_CONFIG(shortcut) - Q_D(QQuickAction); - if (event->type() == QEvent::Shortcut) - return d->handleShortcutEvent(object, static_cast<QShortcutEvent *>(event)); -#else - Q_UNUSED(object); - Q_UNUSED(event); -#endif - return false; -} - -QT_END_NAMESPACE - -#include "moc_qquickaction_p.cpp" diff --git a/src/quicktemplates2/qquickaction_p.h b/src/quicktemplates2/qquickaction_p.h deleted file mode 100644 index f600d89e..00000000 --- a/src/quicktemplates2/qquickaction_p.h +++ /dev/null @@ -1,130 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKACTION_P_H -#define QQUICKACTION_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> -#include <QtQuickTemplates2/private/qquickicon_p.h> -#include <QtCore/qobject.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QQuickIcon; -class QQuickActionPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickAction : public QObject -{ - Q_OBJECT - Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged FINAL) - Q_PROPERTY(QQuickIcon icon READ icon WRITE setIcon NOTIFY iconChanged FINAL) - Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged RESET resetEnabled FINAL) - Q_PROPERTY(bool checked READ isChecked WRITE setChecked NOTIFY checkedChanged FINAL) - Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable NOTIFY checkableChanged FINAL) -#if QT_CONFIG(shortcut) - Q_PRIVATE_PROPERTY(QQuickAction::d_func(), QVariant shortcut READ shortcut WRITE setShortcut NOTIFY shortcutChanged FINAL) -#endif - QML_NAMED_ELEMENT(Action) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickAction(QObject *parent = nullptr); - ~QQuickAction(); - - QString text() const; - void setText(const QString &text); - - QQuickIcon icon() const; - void setIcon(const QQuickIcon &icon); - - bool isEnabled() const; - void setEnabled(bool enabled); - void resetEnabled(); - - bool isChecked() const; - void setChecked(bool checked); - - bool isCheckable() const; - void setCheckable(bool checkable); - -#if QT_CONFIG(shortcut) - QKeySequence shortcut() const; - void setShortcut(const QKeySequence &shortcut); -#endif - -public Q_SLOTS: - void toggle(QObject *source = nullptr); - void trigger(QObject *source = nullptr); - -Q_SIGNALS: - void textChanged(const QString &text); - void iconChanged(const QQuickIcon &icon); - void enabledChanged(bool enabled); - void checkedChanged(bool checked); - void checkableChanged(bool checkable); -#if QT_CONFIG(shortcut) - void shortcutChanged(const QKeySequence &shortcut); -#endif - - void toggled(QObject *source = nullptr); - void triggered(QObject *source = nullptr); - -protected: - bool event(QEvent *event) override; - bool eventFilter(QObject *object, QEvent *event) override; - -private: - Q_DISABLE_COPY(QQuickAction) - Q_DECLARE_PRIVATE(QQuickAction) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickAction) - -#endif // QQUICKACTION_P_H diff --git a/src/quicktemplates2/qquickaction_p_p.h b/src/quicktemplates2/qquickaction_p_p.h deleted file mode 100644 index d9b83548..00000000 --- a/src/quicktemplates2/qquickaction_p_p.h +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKACTION_P_P_H -#define QQUICKACTION_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/private/qobject_p.h> -#include <QtCore/qvariant.h> -#include <QtCore/qstring.h> -#if QT_CONFIG(shortcut) -# include <QtGui/qkeysequence.h> -#endif -#include <QtQuick/private/qquickitemchangelistener_p.h> - -QT_BEGIN_NAMESPACE - -class QShortcutEvent; -class QQuickActionGroup; - -class QQuickActionPrivate : public QObjectPrivate, public QQuickItemChangeListener -{ - Q_DECLARE_PUBLIC(QQuickAction) - -public: - static QQuickActionPrivate *get(QQuickAction *action) - { - return action->d_func(); - } - -#if QT_CONFIG(shortcut) - QVariant shortcut() const; - void setShortcut(const QVariant &shortcut); -#endif - - void setEnabled(bool enable); - - bool watchItem(QQuickItem *item); - bool unwatchItem(QQuickItem *item); - - void registerItem(QQuickItem *item); - void unregisterItem(QQuickItem *item); - - void itemVisibilityChanged(QQuickItem *item) override; - void itemDestroyed(QQuickItem *item) override; - - bool handleShortcutEvent(QObject *object, QShortcutEvent *event); - - void trigger(QObject*, bool doToggle); - -#if QT_CONFIG(shortcut) - class ShortcutEntry - { - public: - explicit ShortcutEntry(QObject *target); - ~ShortcutEntry(); - - QObject *target() const; - int shortcutId() const; - - void grab(const QKeySequence &vshortcut, bool enabled); - void ungrab(); - - void setEnabled(bool enabled); - - private: - int m_shortcutId = 0; - QObject *m_target = nullptr; - }; - - ShortcutEntry *findShortcutEntry(QObject *target) const; - void updateDefaultShortcutEntry(); -#endif // QT_CONFIG(shortcut) - - bool explicitEnabled = false; - bool enabled = true; - bool checked = false; - bool checkable = false; - QString text; - QQuickIcon icon; -#if QT_CONFIG(shortcut) - QKeySequence keySequence; - QVariant vshortcut; - ShortcutEntry *defaultShortcutEntry = nullptr; - QList<ShortcutEntry *> shortcutEntries; -#endif - QQuickActionGroup *group = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKACTION_P_P_H diff --git a/src/quicktemplates2/qquickactiongroup.cpp b/src/quicktemplates2/qquickactiongroup.cpp deleted file mode 100644 index 1656ecf5..00000000 --- a/src/quicktemplates2/qquickactiongroup.cpp +++ /dev/null @@ -1,471 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickactiongroup_p.h" - -#include <QtCore/private/qobject_p.h> -#include <QtCore/qmetaobject.h> -#include <QtCore/qvariant.h> -#include <QtQml/qqmlinfo.h> - -#include "qquickaction_p.h" -#include "qquickaction_p_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ActionGroup - \inherits QtObject -//! \instantiates QQuickActionGroup - \inqmlmodule QtQuick.Controls - \since 5.10 - \ingroup utilities - \brief Groups actions together. - - ActionGroup is a non-visual group of actions. A mutually \l exclusive - action group is used with actions where only one of the options can be - selected at a time. - - The most straight-forward way to use ActionGroup is to declare actions - as children of the group. - - \code - ActionGroup { - id: alignmentGroup - - Action { - checked: true - checkable: true - text: qsTr("Left") - } - - Action { - checkable: true - text: qsTr("Center") - } - - Action { - checkable: true - text: qsTr("Right") - } - } - \endcode - - Alternatively, the \l group attached property allows declaring the actions - elsewhere and assigning them to a specific group. - - \code - ActionGroup { id: alignmentGroup } - - Action { - checked: true - checkable: true - text: qsTr("Left") - ActionGroup.group: alignmentGroup - } - - Action { - checkable: true - text: qsTr("Center") - ActionGroup.group: alignmentGroup - } - - Action { - checkable: true - text: qsTr("Right") - ActionGroup.group: alignmentGroup - } - \endcode - - More advanced use cases can be handled using the \c addAction() and - \c removeAction() methods. - - \sa Action, ButtonGroup -*/ - -/*! - \qmlsignal QtQuick.Controls::ActionGroup::triggered(Action action) - - This signal is emitted when an \a action in the group has been triggered. - - This signal is convenient for implementing a common signal handler for - all actions in the same group. - - \code - ActionGroup { - onTriggered: console.log("triggered:", action.text) - - Action { text: "First" } - Action { text: "Second" } - Action { text: "Third" } - } - \endcode - - \sa Action::triggered() -*/ - -class QQuickActionGroupPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickActionGroup) - -public: - void clear(); - void actionTriggered(); - void _q_updateCurrent(); - - static bool changeEnabled(QQuickAction *action, bool enabled); - - static void actions_append(QQmlListProperty<QQuickAction> *prop, QQuickAction *obj); - static qsizetype actions_count(QQmlListProperty<QQuickAction> *prop); - static QQuickAction *actions_at(QQmlListProperty<QQuickAction> *prop, qsizetype index); - static void actions_clear(QQmlListProperty<QQuickAction> *prop); - - bool enabled = true; - bool exclusive = true; - QPointer<QQuickAction> checkedAction; - QList<QQuickAction*> actions; -}; - -void QQuickActionGroupPrivate::clear() -{ - for (QQuickAction *action : qAsConst(actions)) { - QQuickActionPrivate::get(action)->group = nullptr; - QObjectPrivate::disconnect(action, &QQuickAction::triggered, this, &QQuickActionGroupPrivate::actionTriggered); - QObjectPrivate::disconnect(action, &QQuickAction::checkedChanged, this, &QQuickActionGroupPrivate::_q_updateCurrent); - } - actions.clear(); -} - -void QQuickActionGroupPrivate::actionTriggered() -{ - Q_Q(QQuickActionGroup); - QQuickAction *action = qobject_cast<QQuickAction*>(q->sender()); - if (action) - emit q->triggered(action); -} - -void QQuickActionGroupPrivate::_q_updateCurrent() -{ - Q_Q(QQuickActionGroup); - if (!exclusive) - return; - QQuickAction *action = qobject_cast<QQuickAction*>(q->sender()); - if (action && action->isChecked()) - q->setCheckedAction(action); - else if (!actions.contains(checkedAction)) - q->setCheckedAction(nullptr); -} - -bool QQuickActionGroupPrivate::changeEnabled(QQuickAction *action, bool enabled) -{ - return action->isEnabled() != enabled && (!enabled || !QQuickActionPrivate::get(action)->explicitEnabled); -} - -void QQuickActionGroupPrivate::actions_append(QQmlListProperty<QQuickAction> *prop, QQuickAction *obj) -{ - QQuickActionGroup *q = static_cast<QQuickActionGroup *>(prop->object); - q->addAction(obj); -} - -qsizetype QQuickActionGroupPrivate::actions_count(QQmlListProperty<QQuickAction> *prop) -{ - QQuickActionGroupPrivate *p = static_cast<QQuickActionGroupPrivate *>(prop->data); - return p->actions.count(); -} - -QQuickAction *QQuickActionGroupPrivate::actions_at(QQmlListProperty<QQuickAction> *prop, qsizetype index) -{ - QQuickActionGroupPrivate *p = static_cast<QQuickActionGroupPrivate *>(prop->data); - return p->actions.value(index); -} - -void QQuickActionGroupPrivate::actions_clear(QQmlListProperty<QQuickAction> *prop) -{ - QQuickActionGroupPrivate *p = static_cast<QQuickActionGroupPrivate *>(prop->data); - if (!p->actions.isEmpty()) { - p->clear(); - QQuickActionGroup *q = static_cast<QQuickActionGroup *>(prop->object); - // QTBUG-52358: don't clear the checked action immediately - QMetaObject::invokeMethod(q, "_q_updateCurrent", Qt::QueuedConnection); - emit q->actionsChanged(); - } -} - -QQuickActionGroup::QQuickActionGroup(QObject *parent) - : QObject(*(new QQuickActionGroupPrivate), parent) -{ -} - -QQuickActionGroup::~QQuickActionGroup() -{ - Q_D(QQuickActionGroup); - d->clear(); -} - -QQuickActionGroupAttached *QQuickActionGroup::qmlAttachedProperties(QObject *object) -{ - return new QQuickActionGroupAttached(object); -} - -/*! - \qmlproperty Action QtQuick.Controls::ActionGroup::checkedAction - - This property holds the currently selected action in an exclusive group, - or \c null if there is none or the group is non-exclusive. - - By default, it is the first checked action added to an exclusive action group. - - \sa exclusive -*/ -QQuickAction *QQuickActionGroup::checkedAction() const -{ - Q_D(const QQuickActionGroup); - return d->checkedAction; -} - -void QQuickActionGroup::setCheckedAction(QQuickAction *checkedAction) -{ - Q_D(QQuickActionGroup); - if (d->checkedAction == checkedAction) - return; - - if (d->checkedAction) - d->checkedAction->setChecked(false); - d->checkedAction = checkedAction; - if (checkedAction) - checkedAction->setChecked(true); - emit checkedActionChanged(); -} - -/*! - \qmlproperty list<Action> QtQuick.Controls::ActionGroup::actions - \qmldefault - - This property holds the list of actions in the group. - - \sa group -*/ -QQmlListProperty<QQuickAction> QQuickActionGroup::actions() -{ - Q_D(QQuickActionGroup); - return QQmlListProperty<QQuickAction>(this, d, - QQuickActionGroupPrivate::actions_append, - QQuickActionGroupPrivate::actions_count, - QQuickActionGroupPrivate::actions_at, - QQuickActionGroupPrivate::actions_clear); -} - -/*! - \qmlproperty bool QtQuick.Controls::ActionGroup::exclusive - - This property holds whether the action group is exclusive. The default value is \c true. - - If this property is \c true, then only one action in the group can be checked at any given time. - The user can trigger any action to check it, and that action will replace the existing one as - the checked action in the group. - - In an exclusive group, the user cannot uncheck the currently checked action by triggering it; - instead, another action in the group must be triggered to set the new checked action for that - group. - - In a non-exclusive group, checking and unchecking actions does not affect the other actions in - the group. Furthermore, the value of the \l checkedAction property is \c null. -*/ -bool QQuickActionGroup::isExclusive() const -{ - Q_D(const QQuickActionGroup); - return d->exclusive; -} - -void QQuickActionGroup::setExclusive(bool exclusive) -{ - Q_D(QQuickActionGroup); - if (d->exclusive == exclusive) - return; - - d->exclusive = exclusive; - emit exclusiveChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::ActionGroup::enabled - - This property holds whether the action group is enabled. The default value is \c true. - - If this property is \c false, then all actions in the group are disabled. If this property - is \c true, all actions in the group are enabled, unless explicitly disabled. -*/ -bool QQuickActionGroup::isEnabled() const -{ - Q_D(const QQuickActionGroup); - return d->enabled; -} - -void QQuickActionGroup::setEnabled(bool enabled) -{ - Q_D(QQuickActionGroup); - if (d->enabled == enabled) - return; - - for (QQuickAction *action : qAsConst(d->actions)) { - if (d->changeEnabled(action, enabled)) - emit action->enabledChanged(enabled); - } - - d->enabled = enabled; - emit enabledChanged(); -} - -/*! - \qmlmethod void QtQuick.Controls::ActionGroup::addAction(Action action) - - Adds an \a action to the action group. - - \note Manually adding objects to a action group is typically unnecessary. - The \l actions property and the \l group attached property provide a - convenient and declarative syntax. - - \sa actions, group -*/ -void QQuickActionGroup::addAction(QQuickAction *action) -{ - Q_D(QQuickActionGroup); - if (!action || d->actions.contains(action)) - return; - - const bool enabledChange = d->changeEnabled(action, d->enabled); - - QQuickActionPrivate::get(action)->group = this; - QObjectPrivate::connect(action, &QQuickAction::triggered, d, &QQuickActionGroupPrivate::actionTriggered); - QObjectPrivate::connect(action, &QQuickAction::checkedChanged, d, &QQuickActionGroupPrivate::_q_updateCurrent); - - if (d->exclusive && action->isChecked()) - setCheckedAction(action); - if (enabledChange) - emit action->enabledChanged(action->isEnabled()); - - d->actions.append(action); - emit actionsChanged(); -} - -/*! - \qmlmethod void QtQuick.Controls::ActionGroup::removeAction(Action action) - - Removes an \a action from the action group. - - \note Manually removing objects from a action group is typically unnecessary. - The \l actions property and the \l group attached property provide a - convenient and declarative syntax. - - \sa actions, group -*/ -void QQuickActionGroup::removeAction(QQuickAction *action) -{ - Q_D(QQuickActionGroup); - if (!action || !d->actions.contains(action)) - return; - - const bool enabledChange = d->changeEnabled(action, d->enabled); - - QQuickActionPrivate::get(action)->group = nullptr; - QObjectPrivate::disconnect(action, &QQuickAction::triggered, d, &QQuickActionGroupPrivate::actionTriggered); - QObjectPrivate::disconnect(action, &QQuickAction::checkedChanged, d, &QQuickActionGroupPrivate::_q_updateCurrent); - - if (d->checkedAction == action) - setCheckedAction(nullptr); - if (enabledChange) - emit action->enabledChanged(action->isEnabled()); - - d->actions.removeOne(action); - emit actionsChanged(); -} - -class QQuickActionGroupAttachedPrivate : public QObjectPrivate -{ -public: - QQuickActionGroup *group = nullptr; -}; - -QQuickActionGroupAttached::QQuickActionGroupAttached(QObject *parent) - : QObject(*(new QQuickActionGroupAttachedPrivate), parent) -{ -} - -/*! - \qmlattachedproperty ActionGroup QtQuick.Controls::ActionGroup::group - - This property attaches an action to an action group. - - \code - ActionGroup { id: group } - - Action { - checked: true - text: qsTr("Option A") - ActionGroup.group: group - } - - Action { - text: qsTr("Option B") - ActionGroup.group: group - } - \endcode - - \sa actions -*/ -QQuickActionGroup *QQuickActionGroupAttached::group() const -{ - Q_D(const QQuickActionGroupAttached); - return d->group; -} - -void QQuickActionGroupAttached::setGroup(QQuickActionGroup *group) -{ - Q_D(QQuickActionGroupAttached); - if (d->group == group) - return; - - if (d->group) - d->group->removeAction(qobject_cast<QQuickAction*>(parent())); - d->group = group; - if (group) - group->addAction(qobject_cast<QQuickAction*>(parent())); - emit groupChanged(); -} - -QT_END_NAMESPACE - -#include "moc_qquickactiongroup_p.cpp" diff --git a/src/quicktemplates2/qquickactiongroup_p.h b/src/quicktemplates2/qquickactiongroup_p.h deleted file mode 100644 index d905f595..00000000 --- a/src/quicktemplates2/qquickactiongroup_p.h +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKACTIONGROUP_P_H -#define QQUICKACTIONGROUP_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QQuickAction; -class QQuickActionGroupPrivate; -class QQuickActionGroupAttached; -class QQuickActionGroupAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickActionGroup : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickAction *checkedAction READ checkedAction WRITE setCheckedAction NOTIFY checkedActionChanged FINAL) - Q_PROPERTY(QQmlListProperty<QQuickAction> actions READ actions NOTIFY actionsChanged FINAL) - Q_PROPERTY(bool exclusive READ isExclusive WRITE setExclusive NOTIFY exclusiveChanged FINAL) - Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged FINAL) - Q_CLASSINFO("DefaultProperty", "actions") - QML_NAMED_ELEMENT(ActionGroup) - QML_ATTACHED(QQuickActionGroupAttached) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickActionGroup(QObject *parent = nullptr); - ~QQuickActionGroup(); - - static QQuickActionGroupAttached *qmlAttachedProperties(QObject *object); - - QQuickAction *checkedAction() const; - void setCheckedAction(QQuickAction *checkedAction); - - QQmlListProperty<QQuickAction> actions(); - - bool isExclusive() const; - void setExclusive(bool exclusive); - - bool isEnabled() const; - void setEnabled(bool enabled); - -public Q_SLOTS: - void addAction(QQuickAction *action); - void removeAction(QQuickAction *action); - -Q_SIGNALS: - void checkedActionChanged(); - void actionsChanged(); - void exclusiveChanged(); - void enabledChanged(); - void triggered(QQuickAction *action); - -private: - Q_DISABLE_COPY(QQuickActionGroup) - Q_DECLARE_PRIVATE(QQuickActionGroup) - - Q_PRIVATE_SLOT(d_func(), void _q_updateCurrent()) -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickActionGroupAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickActionGroup *group READ group WRITE setGroup NOTIFY groupChanged FINAL) - -public: - explicit QQuickActionGroupAttached(QObject *parent = nullptr); - - QQuickActionGroup *group() const; - void setGroup(QQuickActionGroup *group); - -Q_SIGNALS: - void groupChanged(); - -private: - Q_DISABLE_COPY(QQuickActionGroupAttached) - Q_DECLARE_PRIVATE(QQuickActionGroupAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickActionGroup) -QML_DECLARE_TYPEINFO(QQuickActionGroup, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKACTIONGROUP_P_H diff --git a/src/quicktemplates2/qquickapplicationwindow.cpp b/src/quicktemplates2/qquickapplicationwindow.cpp deleted file mode 100644 index eb1d12c9..00000000 --- a/src/quicktemplates2/qquickapplicationwindow.cpp +++ /dev/null @@ -1,955 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickapplicationwindow_p.h" -#include "qquickcontentitem_p.h" -#include "qquickpopup_p_p.h" -#include "qquickcontrol_p_p.h" -#include "qquicktextarea_p.h" -#include "qquicktextfield_p.h" -#include "qquicktoolbar_p.h" -#include "qquicktabbar_p.h" -#include "qquickdialogbuttonbox_p.h" -#include "qquickdeferredexecute_p_p.h" -#include "qquickdeferredpointer_p_p.h" - -#include <QtCore/private/qobject_p.h> -#include <QtCore/qscopedvaluerollback.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> -#include <QtQuick/private/qquickwindowmodule_p_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ApplicationWindow - \inherits Window -//! \instantiates QQuickApplicationWindow - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-containers - \ingroup qtquickcontrols2-focusscopes - \brief Styled top-level window with support for a header and footer. - - ApplicationWindow is a \l Window which makes it convenient to add - a \l {menuBar}{menu bar}, \l header and \l footer item to the window. - - You can declare ApplicationWindow as the root item of your application, - and run it by using \l QQmlApplicationEngine. In this way you can control - the window's properties, appearance and layout from QML. - - \image qtquickcontrols2-applicationwindow-wireframe.png - - \qml - import QtQuick.Controls 2.12 - - ApplicationWindow { - visible: true - - menuBar: MenuBar { - // ... - } - - header: ToolBar { - // ... - } - - footer: TabBar { - // ... - } - - StackView { - anchors.fill: parent - } - } - \endqml - - \note By default, an ApplicationWindow is not visible. - - \section2 Attached ApplicationWindow Properties - - Due to how \l {Scope and Naming Resolution} works in QML, it is possible - to reference the \c id of the application root element anywhere in its - child QML objects. Even though this approach is fine for many applications - and use cases, for a generic QML component it may not be acceptable as it - creates a dependency to the surrounding environment. - - ApplicationWindow provides a set of attached properties that can be used - to access the window and its building blocks from places where no direct - access to the window is available, without creating a dependency to a - certain window \c id. A QML component that uses the ApplicationWindow - attached properties works in any window regardless of its \c id. - - \sa {Customizing ApplicationWindow}, Overlay, Page, {Container Controls}, - {Focus Management in Qt Quick Controls} -*/ - -static const QQuickItemPrivate::ChangeTypes ItemChanges = QQuickItemPrivate::Visibility - | QQuickItemPrivate::Geometry | QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickApplicationWindowPrivate - : public QQuickWindowQmlImplPrivate - , public QQuickItemChangeListener -{ - Q_DECLARE_PUBLIC(QQuickApplicationWindow) - -public: - QQuickApplicationWindowPrivate() - { - complete = true; - } - - static QQuickApplicationWindowPrivate *get(QQuickApplicationWindow *window) - { - return window->d_func(); - } - - QQmlListProperty<QObject> contentData(); - - void relayout(); - - void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override; - void itemVisibilityChanged(QQuickItem *item) override; - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - void updateFont(const QFont &f); - inline void setFont_helper(const QFont &f) { - if (font.resolveMask() == f.resolveMask() && font == f) - return; - updateFont(f); - } - void resolveFont(); - - void _q_updateActiveFocus(); - void setActiveFocusControl(QQuickItem *item); - - static void contentData_append(QQmlListProperty<QObject> *prop, QObject *obj); - - void cancelBackground(); - void executeBackground(bool complete = false); - - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::System); } - void updateChildrenPalettes(const QPalette &parentPalette) override - { - // Update regular children - QQuickWindowPrivate::updateChildrenPalettes(parentPalette); - - // And cover one special case - for (auto &&popup : q_func()->findChildren<QQuickPopup *>()) - QQuickPopupPrivate::get(popup)->inheritPalette(parentPalette); - } - - QQuickDeferredPointer<QQuickItem> background; - QQuickItem *appWindowContentItem = nullptr; - QQuickItem *menuBar = nullptr; - QQuickItem *header = nullptr; - QQuickItem *footer = nullptr; - QFont font; - QLocale locale; - QQuickItem *activeFocusControl = nullptr; - bool insideRelayout = false; -}; - -static void layoutItem(QQuickItem *item, qreal y, qreal width) -{ - if (!item) - return; - - item->setY(y); - QQuickItemPrivate *p = QQuickItemPrivate::get(item); - if (!p->widthValid()) { - item->setWidth(width); - p->widthValidFlag = false; - } -} - -void QQuickApplicationWindowPrivate::relayout() -{ - Q_Q(QQuickApplicationWindow); - if (!complete || insideRelayout) - return; - - QScopedValueRollback<bool> guard(insideRelayout, true); - QQuickItem *content = q->contentItem(); - qreal hh = header && header->isVisible() ? header->height() : 0; - qreal fh = footer && footer->isVisible() ? footer->height() : 0; - qreal mbh = menuBar && menuBar->isVisible() ? menuBar->height() : 0; - - content->setY(mbh + hh); - content->setWidth(q->width()); - content->setHeight(q->height() - mbh - hh - fh); - - layoutItem(menuBar, -mbh - hh, q->width()); - layoutItem(header, -hh, q->width()); - layoutItem(footer, content->height(), q->width()); - - if (background) { - QQuickItemPrivate *p = QQuickItemPrivate::get(background); - if (!p->widthValid() && qFuzzyIsNull(background->x())) { - background->setWidth(q->width()); - p->widthValidFlag = false; - } - if (!p->heightValid() && qFuzzyIsNull(background->y())) { - background->setHeight(q->height()); - p->heightValidFlag = false; - } - } -} - -void QQuickApplicationWindowPrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) -{ - Q_UNUSED(item); - Q_UNUSED(change); - Q_UNUSED(diff); - relayout(); -} - -void QQuickApplicationWindowPrivate::itemVisibilityChanged(QQuickItem *item) -{ - Q_UNUSED(item); - relayout(); -} - -void QQuickApplicationWindowPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - Q_UNUSED(item); - relayout(); -} - -void QQuickApplicationWindowPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - Q_UNUSED(item); - relayout(); -} - -void QQuickApplicationWindowPrivate::updateFont(const QFont &f) -{ - Q_Q(QQuickApplicationWindow); - const bool changed = font != f; - font = f; - - QQuickControlPrivate::updateFontRecur(q->QQuickWindow::contentItem(), f); - - const QList<QQuickPopup *> popups = q->findChildren<QQuickPopup *>(); - for (QQuickPopup *popup : popups) - QQuickControlPrivate::get(static_cast<QQuickControl *>(popup->popupItem()))->inheritFont(f); - - if (changed) - emit q->fontChanged(); -} - -void QQuickApplicationWindowPrivate::resolveFont() -{ - QFont resolvedFont = font.resolve(QQuickTheme::font(QQuickTheme::System)); - setFont_helper(resolvedFont); -} - -static QQuickItem *findActiveFocusControl(QQuickWindow *window) -{ - QQuickItem *item = window->activeFocusItem(); - while (item) { - if (qobject_cast<QQuickControl *>(item) || qobject_cast<QQuickTextField *>(item) || qobject_cast<QQuickTextArea *>(item)) - return item; - item = item->parentItem(); - } - return item; -} - -void QQuickApplicationWindowPrivate::_q_updateActiveFocus() -{ - Q_Q(QQuickApplicationWindow); - setActiveFocusControl(findActiveFocusControl(q)); -} - -void QQuickApplicationWindowPrivate::setActiveFocusControl(QQuickItem *control) -{ - Q_Q(QQuickApplicationWindow); - if (activeFocusControl != control) { - activeFocusControl = control; - emit q->activeFocusControlChanged(); - } -} - -void QQuickApplicationWindowPrivate::contentData_append(QQmlListProperty<QObject> *prop, QObject *obj) -{ - QQuickItemPrivate::data_append(prop, obj); - - // associate "top-level" popups with the window as soon as they are added to the default property - if (QQuickPopup *popup = qobject_cast<QQuickPopup *>(obj)) - QQuickPopupPrivate::get(popup)->setWindow(static_cast<QQuickApplicationWindow *>(prop->data)); -} - -static inline QString backgroundName() { return QStringLiteral("background"); } - -void QQuickApplicationWindowPrivate::cancelBackground() -{ - Q_Q(QQuickApplicationWindow); - quickCancelDeferred(q, backgroundName()); -} - -void QQuickApplicationWindowPrivate::executeBackground(bool complete) -{ - Q_Q(QQuickApplicationWindow); - if (background.wasExecuted()) - return; - - if (!background || complete) - quickBeginDeferred(q, backgroundName(), background); - if (complete) - quickCompleteDeferred(q, backgroundName(), background); -} - -QQuickApplicationWindow::QQuickApplicationWindow(QWindow *parent) - : QQuickWindowQmlImpl(*(new QQuickApplicationWindowPrivate), parent) -{ - connect(this, SIGNAL(activeFocusItemChanged()), this, SLOT(_q_updateActiveFocus())); -} - -QQuickApplicationWindow::~QQuickApplicationWindow() -{ - Q_D(QQuickApplicationWindow); - d->setActiveFocusControl(nullptr); - disconnect(this, SIGNAL(activeFocusItemChanged()), this, SLOT(_q_updateActiveFocus())); - if (d->menuBar) - QQuickItemPrivate::get(d->menuBar)->removeItemChangeListener(d, ItemChanges); - if (d->header) - QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, ItemChanges); - if (d->footer) - QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, ItemChanges); -} - -QQuickApplicationWindowAttached *QQuickApplicationWindow::qmlAttachedProperties(QObject *object) -{ - return new QQuickApplicationWindowAttached(object); -} - -/*! - \qmlproperty Item QtQuick.Controls::ApplicationWindow::background - - This property holds the background item. - - The background item is stacked under the \l {contentItem}{content item}, - but above the \l {Window::color}{background color} of the window. - - The background item is useful for images and gradients, for example, - but the \l {Window::}{color} property is preferable for solid colors, - as it doesn't need to create an item. - - \note If the background item has no explicit size specified, it automatically - follows the control's size. In most cases, there is no need to specify - width or height for a background item. - - \sa {Customizing ApplicationWindow}, contentItem, header, footer -*/ -QQuickItem *QQuickApplicationWindow::background() const -{ - QQuickApplicationWindowPrivate *d = const_cast<QQuickApplicationWindowPrivate *>(d_func()); - if (!d->background) - d->executeBackground(); - return d->background; -} - -void QQuickApplicationWindow::setBackground(QQuickItem *background) -{ - Q_D(QQuickApplicationWindow); - if (d->background == background) - return; - - if (!d->background.isExecuting()) - d->cancelBackground(); - - QQuickControlPrivate::hideOldItem(d->background); - d->background = background; - if (background) { - background->setParentItem(QQuickWindow::contentItem()); - if (qFuzzyIsNull(background->z())) - background->setZ(-1); - if (isComponentComplete()) - d->relayout(); - } - if (!d->background.isExecuting()) - emit backgroundChanged(); -} - -/*! - \qmlproperty Item QtQuick.Controls::ApplicationWindow::header - - This property holds the window header item. The header item is positioned at the - top of the window, below the menu bar, and resized to the width of the window. - The default value is \c null. - - \code - ApplicationWindow { - header: TabBar { - // ... - } - } - \endcode - - \note Assigning a ToolBar, TabBar, or DialogButtonBox as a window header - automatically sets the respective \l ToolBar::position, \l TabBar::position, - or \l DialogButtonBox::position property to \c Header. - - \sa menuBar, footer, Page::header -*/ -QQuickItem *QQuickApplicationWindow::header() const -{ - Q_D(const QQuickApplicationWindow); - return d->header; -} - -void QQuickApplicationWindow::setHeader(QQuickItem *header) -{ - Q_D(QQuickApplicationWindow); - if (d->header == header) - return; - - if (d->header) { - QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, ItemChanges); - d->header->setParentItem(nullptr); - } - d->header = header; - if (header) { - header->setParentItem(contentItem()); - QQuickItemPrivate *p = QQuickItemPrivate::get(header); - p->addItemChangeListener(d, ItemChanges); - if (qFuzzyIsNull(header->z())) - header->setZ(1); - if (QQuickToolBar *toolBar = qobject_cast<QQuickToolBar *>(header)) - toolBar->setPosition(QQuickToolBar::Header); - else if (QQuickTabBar *tabBar = qobject_cast<QQuickTabBar *>(header)) - tabBar->setPosition(QQuickTabBar::Header); - else if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(header)) - buttonBox->setPosition(QQuickDialogButtonBox::Header); - } - if (isComponentComplete()) - d->relayout(); - emit headerChanged(); -} - -/*! - \qmlproperty Item QtQuick.Controls::ApplicationWindow::footer - - This property holds the window footer item. The footer item is positioned to - the bottom, and resized to the width of the window. The default value is \c null. - - \code - ApplicationWindow { - footer: ToolBar { - // ... - } - } - \endcode - - \note Assigning a ToolBar, TabBar, or DialogButtonBox as a window footer - automatically sets the respective \l ToolBar::position, \l TabBar::position, - or \l DialogButtonBox::position property to \c Footer. - - \sa menuBar, header, Page::footer -*/ -QQuickItem *QQuickApplicationWindow::footer() const -{ - Q_D(const QQuickApplicationWindow); - return d->footer; -} - -void QQuickApplicationWindow::setFooter(QQuickItem *footer) -{ - Q_D(QQuickApplicationWindow); - if (d->footer == footer) - return; - - if (d->footer) { - QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, ItemChanges); - d->footer->setParentItem(nullptr); - } - d->footer = footer; - if (footer) { - footer->setParentItem(contentItem()); - QQuickItemPrivate *p = QQuickItemPrivate::get(footer); - p->addItemChangeListener(d, ItemChanges); - if (qFuzzyIsNull(footer->z())) - footer->setZ(1); - if (QQuickToolBar *toolBar = qobject_cast<QQuickToolBar *>(footer)) - toolBar->setPosition(QQuickToolBar::Footer); - else if (QQuickTabBar *tabBar = qobject_cast<QQuickTabBar *>(footer)) - tabBar->setPosition(QQuickTabBar::Footer); - else if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(footer)) - buttonBox->setPosition(QQuickDialogButtonBox::Footer); - } - if (isComponentComplete()) - d->relayout(); - emit footerChanged(); -} - -/*! - \qmlproperty list<Object> QtQuick.Controls::ApplicationWindow::contentData - \qmldefault - - This default property holds the list of all objects declared as children of - the window. - - The data property allows you to freely mix visual children, resources and - other windows in an ApplicationWindow. - - If you assign an Item to the contentData list, it becomes a child of the - window's contentItem, so that it appears inside the window. The item's - parent will be the window's \l contentItem. - - It should not generally be necessary to refer to the contentData property, - as it is the default property for ApplicationWindow and thus all child - items are automatically assigned to this property. - - \sa contentItem -*/ -QQmlListProperty<QObject> QQuickApplicationWindowPrivate::contentData() -{ - Q_Q(QQuickApplicationWindow); - return QQmlListProperty<QObject>(q->contentItem(), q, - QQuickApplicationWindowPrivate::contentData_append, - QQuickItemPrivate::data_count, - QQuickItemPrivate::data_at, - QQuickItemPrivate::data_clear); -} - -/*! - \qmlproperty Item QtQuick.Controls::ApplicationWindow::contentItem - \readonly - - This property holds the window content item. - - The content item is stacked above the \l background item, and under the - \l menuBar, \l header, and \l footer items. - - \sa background, menuBar, header, footer -*/ -QQuickItem *QQuickApplicationWindow::contentItem() const -{ - QQuickApplicationWindowPrivate *d = const_cast<QQuickApplicationWindowPrivate *>(d_func()); - if (!d->appWindowContentItem) { - d->appWindowContentItem = new QQuickContentItem(this, QQuickWindow::contentItem()); - d->appWindowContentItem->setFlag(QQuickItem::ItemIsFocusScope); - d->appWindowContentItem->setFocus(true); - d->relayout(); - } - return d->appWindowContentItem; -} - -/*! - \qmlproperty Control QtQuick.Controls::ApplicationWindow::activeFocusControl - \readonly - - This property holds the control that currently has active focus, or \c null if there is - no control with active focus. - - The difference between \l Window::activeFocusItem and ApplicationWindow::activeFocusControl - is that the former may point to a building block of a control, whereas the latter points - to the enclosing control. For example, when SpinBox has focus, activeFocusItem points to - the editor and activeFocusControl to the SpinBox itself. - - \sa Window::activeFocusItem -*/ -QQuickItem *QQuickApplicationWindow::activeFocusControl() const -{ - Q_D(const QQuickApplicationWindow); - return d->activeFocusControl; -} - -/*! - \qmlproperty font QtQuick.Controls::ApplicationWindow::font - - This property holds the font currently set for the window. - - The default font depends on the system environment. QGuiApplication maintains a system/theme - font which serves as a default for all application windows. You can also set the default font - for windows by passing a custom font to QGuiApplication::setFont(), before loading any QML. - Finally, the font is matched against Qt's font database to find the best match. - - ApplicationWindow propagates explicit font properties to child controls. If you change a specific - property on the window's font, that property propagates to all child controls in the window, - overriding any system defaults for that property. - - \sa Control::font -*/ -QFont QQuickApplicationWindow::font() const -{ - Q_D(const QQuickApplicationWindow); - return d->font; -} - -void QQuickApplicationWindow::setFont(const QFont &font) -{ - Q_D(QQuickApplicationWindow); - if (d->font.resolveMask() == font.resolveMask() && d->font == font) - return; - - QFont resolvedFont = font.resolve(QQuickTheme::font(QQuickTheme::System)); - d->setFont_helper(resolvedFont); -} - -void QQuickApplicationWindow::resetFont() -{ - setFont(QFont()); -} - -/*! - \qmlproperty Locale QtQuick.Controls::ApplicationWindow::locale - - This property holds the locale of the window. - - The default locale depends on the system environment. You can set the - default locale by calling QLocale::setDefault(), before loading any QML. - - ApplicationWindow propagates the locale to child controls. If you change - the window's locale, that locale propagates to all child controls in the - window, overriding the system default locale. - - \sa Control::locale -*/ -QLocale QQuickApplicationWindow::locale() const -{ - Q_D(const QQuickApplicationWindow); - return d->locale; -} - -void QQuickApplicationWindow::setLocale(const QLocale &locale) -{ - Q_D(QQuickApplicationWindow); - if (d->locale == locale) - return; - - d->locale = locale; - QQuickControlPrivate::updateLocaleRecur(QQuickWindow::contentItem(), locale); - - // TODO: internal QQuickPopupManager that provides reliable access to all QQuickPopup instances - const QList<QQuickPopup *> popups = QQuickWindow::contentItem()->findChildren<QQuickPopup *>(); - for (QQuickPopup *popup : popups) - QQuickControlPrivate::get(static_cast<QQuickControl *>(popup->popupItem()))->updateLocale(locale, false); // explicit=false - - emit localeChanged(); -} - -void QQuickApplicationWindow::resetLocale() -{ - setLocale(QLocale()); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty Item QtQuick.Controls::ApplicationWindow::menuBar - - This property holds the window menu bar. The menu bar is positioned at the - top of the window, above the header, and resized to the width of the window. - The default value is \c null. - - \code - ApplicationWindow { - menuBar: MenuBar { - // ... - } - } - \endcode - - \sa header, footer, MenuBar -*/ -QQuickItem *QQuickApplicationWindow::menuBar() const -{ - Q_D(const QQuickApplicationWindow); - return d->menuBar; -} - -void QQuickApplicationWindow::setMenuBar(QQuickItem *menuBar) -{ - Q_D(QQuickApplicationWindow); - if (d->menuBar == menuBar) - return; - - if (d->menuBar) { - QQuickItemPrivate::get(d->menuBar)->removeItemChangeListener(d, ItemChanges); - d->menuBar->setParentItem(nullptr); - } - d->menuBar = menuBar; - if (menuBar) { - menuBar->setParentItem(contentItem()); - QQuickItemPrivate *p = QQuickItemPrivate::get(menuBar); - p->addItemChangeListener(d, ItemChanges); - if (qFuzzyIsNull(menuBar->z())) - menuBar->setZ(2); - } - if (isComponentComplete()) - d->relayout(); - emit menuBarChanged(); -} - -bool QQuickApplicationWindow::isComponentComplete() const -{ - Q_D(const QQuickApplicationWindow); - return d->complete; -} - -void QQuickApplicationWindow::classBegin() -{ - Q_D(QQuickApplicationWindow); - d->complete = false; - QQuickWindowQmlImpl::classBegin(); - d->resolveFont(); -} - -void QQuickApplicationWindow::componentComplete() -{ - Q_D(QQuickApplicationWindow); - d->complete = true; - d->executeBackground(true); - QQuickWindowQmlImpl::componentComplete(); - d->relayout(); -} - -void QQuickApplicationWindow::resizeEvent(QResizeEvent *event) -{ - Q_D(QQuickApplicationWindow); - QQuickWindowQmlImpl::resizeEvent(event); - d->relayout(); -} - -class QQuickApplicationWindowAttachedPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickApplicationWindowAttached) - -public: - void windowChange(QQuickWindow *wnd); - void activeFocusChange(); - - QQuickWindow *window = nullptr; - QQuickItem *activeFocusControl = nullptr; -}; - -void QQuickApplicationWindowAttachedPrivate::windowChange(QQuickWindow *wnd) -{ - Q_Q(QQuickApplicationWindowAttached); - if (window == wnd) - return; - - QQuickApplicationWindow *oldWindow = qobject_cast<QQuickApplicationWindow *>(window); - if (oldWindow && !QQuickApplicationWindowPrivate::get(oldWindow)) - oldWindow = nullptr; // being deleted (QTBUG-52731) - - if (oldWindow) { - disconnect(oldWindow, &QQuickApplicationWindow::activeFocusControlChanged, - this, &QQuickApplicationWindowAttachedPrivate::activeFocusChange); - QObject::disconnect(oldWindow, &QQuickApplicationWindow::menuBarChanged, - q, &QQuickApplicationWindowAttached::menuBarChanged); - QObject::disconnect(oldWindow, &QQuickApplicationWindow::headerChanged, - q, &QQuickApplicationWindowAttached::headerChanged); - QObject::disconnect(oldWindow, &QQuickApplicationWindow::footerChanged, - q, &QQuickApplicationWindowAttached::footerChanged); - } else if (window) { - disconnect(window, &QQuickWindow::activeFocusItemChanged, - this, &QQuickApplicationWindowAttachedPrivate::activeFocusChange); - } - - QQuickApplicationWindow *newWindow = qobject_cast<QQuickApplicationWindow *>(wnd); - if (newWindow) { - connect(newWindow, &QQuickApplicationWindow::activeFocusControlChanged, - this, &QQuickApplicationWindowAttachedPrivate::activeFocusChange); - QObject::connect(newWindow, &QQuickApplicationWindow::menuBarChanged, - q, &QQuickApplicationWindowAttached::menuBarChanged); - QObject::connect(newWindow, &QQuickApplicationWindow::headerChanged, - q, &QQuickApplicationWindowAttached::headerChanged); - QObject::connect(newWindow, &QQuickApplicationWindow::footerChanged, - q, &QQuickApplicationWindowAttached::footerChanged); - } else if (wnd) { - connect(wnd, &QQuickWindow::activeFocusItemChanged, - this, &QQuickApplicationWindowAttachedPrivate::activeFocusChange); - } - - window = wnd; - emit q->windowChanged(); - emit q->contentItemChanged(); - - activeFocusChange(); - if ((oldWindow && oldWindow->menuBar()) || (newWindow && newWindow->menuBar())) - emit q->menuBarChanged(); - if ((oldWindow && oldWindow->header()) || (newWindow && newWindow->header())) - emit q->headerChanged(); - if ((oldWindow && oldWindow->footer()) || (newWindow && newWindow->footer())) - emit q->footerChanged(); -} - -void QQuickApplicationWindowAttachedPrivate::activeFocusChange() -{ - Q_Q(QQuickApplicationWindowAttached); - QQuickItem *control = nullptr; - if (QQuickApplicationWindow *appWindow = qobject_cast<QQuickApplicationWindow *>(window)) - control = appWindow->activeFocusControl(); - else if (window) - control = findActiveFocusControl(window); - if (activeFocusControl == control) - return; - - activeFocusControl = control; - emit q->activeFocusControlChanged(); -} - -QQuickApplicationWindowAttached::QQuickApplicationWindowAttached(QObject *parent) - : QObject(*(new QQuickApplicationWindowAttachedPrivate), parent) -{ - Q_D(QQuickApplicationWindowAttached); - if (QQuickItem *item = qobject_cast<QQuickItem *>(parent)) { - d->windowChange(item->window()); - QObjectPrivate::connect(item, &QQuickItem::windowChanged, d, &QQuickApplicationWindowAttachedPrivate::windowChange); - if (!d->window) { - QQuickItem *p = item; - while (p) { - if (QQuickPopup *popup = qobject_cast<QQuickPopup *>(p->parent())) { - d->windowChange(popup->window()); - QObjectPrivate::connect(popup, &QQuickPopup::windowChanged, d, &QQuickApplicationWindowAttachedPrivate::windowChange); - } - p = p->parentItem(); - } - } - } else if (QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent)) { - d->windowChange(popup->window()); - QObjectPrivate::connect(popup, &QQuickPopup::windowChanged, d, &QQuickApplicationWindowAttachedPrivate::windowChange); - } -} - -/*! - \qmlattachedproperty ApplicationWindow QtQuick.Controls::ApplicationWindow::window - \readonly - - This attached property holds the application window. The property can be attached - to any item. The value is \c null if the item is not in an ApplicationWindow. - - \sa {Attached ApplicationWindow Properties} -*/ -QQuickApplicationWindow *QQuickApplicationWindowAttached::window() const -{ - Q_D(const QQuickApplicationWindowAttached); - return qobject_cast<QQuickApplicationWindow *>(d->window); -} - -/*! - \qmlattachedproperty Item QtQuick.Controls::ApplicationWindow::contentItem - \readonly - - This attached property holds the window content item. The property can be attached - to any item. The value is \c null if the item is not in an ApplicationWindow. - - \sa {Attached ApplicationWindow Properties} -*/ -QQuickItem *QQuickApplicationWindowAttached::contentItem() const -{ - Q_D(const QQuickApplicationWindowAttached); - if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(d->window)) - return window->contentItem(); - return nullptr; -} - -/*! - \qmlattachedproperty Control QtQuick.Controls::ApplicationWindow::activeFocusControl - \readonly - - This attached property holds the control that currently has active focus, or \c null - if there is no control with active focus. The property can be attached to any item. - The value is \c null if the item is not in a window, or the window has no active focus. - - \sa Window::activeFocusItem, {Attached ApplicationWindow Properties} -*/ -QQuickItem *QQuickApplicationWindowAttached::activeFocusControl() const -{ - Q_D(const QQuickApplicationWindowAttached); - return d->activeFocusControl; -} - -/*! - \qmlattachedproperty Item QtQuick.Controls::ApplicationWindow::header - \readonly - - This attached property holds the window header item. The property can be attached - to any item. The value is \c null if the item is not in an ApplicationWindow, or - the window has no header item. - - \sa {Attached ApplicationWindow Properties} -*/ -QQuickItem *QQuickApplicationWindowAttached::header() const -{ - Q_D(const QQuickApplicationWindowAttached); - if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(d->window)) - return window->header(); - return nullptr; -} - -/*! - \qmlattachedproperty Item QtQuick.Controls::ApplicationWindow::footer - \readonly - - This attached property holds the window footer item. The property can be attached - to any item. The value is \c null if the item is not in an ApplicationWindow, or - the window has no footer item. - - \sa {Attached ApplicationWindow Properties} -*/ -QQuickItem *QQuickApplicationWindowAttached::footer() const -{ - Q_D(const QQuickApplicationWindowAttached); - if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(d->window)) - return window->footer(); - return nullptr; -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlattachedproperty Item QtQuick.Controls::ApplicationWindow::menuBar - \readonly - - This attached property holds the window menu bar. The property can be attached - to any item. The value is \c null if the item is not in an ApplicationWindow, or - the window has no menu bar. - - \sa {Attached ApplicationWindow Properties} -*/ -QQuickItem *QQuickApplicationWindowAttached::menuBar() const -{ - Q_D(const QQuickApplicationWindowAttached); - if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(d->window)) - return window->menuBar(); - return nullptr; -} - -QT_END_NAMESPACE - -#include "moc_qquickapplicationwindow_p.cpp" diff --git a/src/quicktemplates2/qquickapplicationwindow_p.h b/src/quicktemplates2/qquickapplicationwindow_p.h deleted file mode 100644 index 4e4f50ef..00000000 --- a/src/quicktemplates2/qquickapplicationwindow_p.h +++ /dev/null @@ -1,197 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKAPPLICATIONWINDOW_P_H -#define QQUICKAPPLICATIONWINDOW_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquickwindowmodule_p.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> -#include <QtGui/qfont.h> -#include <QtGui/qpalette.h> -#include <QtCore/qlocale.h> - -QT_BEGIN_NAMESPACE - -class QQuickApplicationWindowPrivate; -class QQuickApplicationWindowAttached; -class QQuickApplicationWindowAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickApplicationWindow : public QQuickWindowQmlImpl -{ - Q_OBJECT - Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL) - Q_PROPERTY(QQuickItem *contentItem READ contentItem CONSTANT FINAL) - Q_PRIVATE_PROPERTY(QQuickApplicationWindow::d_func(), QQmlListProperty<QObject> contentData READ contentData FINAL) - Q_PROPERTY(QQuickItem *activeFocusControl READ activeFocusControl NOTIFY activeFocusControlChanged FINAL) - Q_PROPERTY(QQuickItem *header READ header WRITE setHeader NOTIFY headerChanged FINAL) - Q_PROPERTY(QQuickItem *footer READ footer WRITE setFooter NOTIFY footerChanged FINAL) - Q_PROPERTY(QFont font READ font WRITE setFont RESET resetFont NOTIFY fontChanged FINAL) - Q_PROPERTY(QLocale locale READ locale WRITE setLocale RESET resetLocale NOTIFY localeChanged FINAL) - // 2.3 (Qt 5.10) - Q_PROPERTY(QQuickItem *menuBar READ menuBar WRITE setMenuBar NOTIFY menuBarChanged FINAL REVISION(2, 3)) - // 2.14 (Qt 6) - Q_PRIVATE_PROPERTY(QQuickApplicationWindow::d_func(), QQuickPalette *palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged REVISION(2, 3)) - Q_CLASSINFO("DeferredPropertyNames", "background") - Q_CLASSINFO("DefaultProperty", "contentData") - QML_NAMED_ELEMENT(ApplicationWindow) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickApplicationWindow(QWindow *parent = nullptr); - ~QQuickApplicationWindow(); - - static QQuickApplicationWindowAttached *qmlAttachedProperties(QObject *object); - - QQuickItem *background() const; - void setBackground(QQuickItem *background); - - QQuickItem *contentItem() const; - - QQuickItem *activeFocusControl() const; - - QQuickItem *header() const; - void setHeader(QQuickItem *header); - - QQuickItem *footer() const; - void setFooter(QQuickItem *footer); - - QFont font() const; - void setFont(const QFont &font); - void resetFont(); - - QLocale locale() const; - void setLocale(const QLocale &locale); - void resetLocale(); - - QQuickItem *menuBar() const; - void setMenuBar(QQuickItem *menuBar); - -Q_SIGNALS: - void backgroundChanged(); - void activeFocusControlChanged(); - void headerChanged(); - void footerChanged(); - void fontChanged(); - void localeChanged(); - Q_REVISION(2, 3) void menuBarChanged(); - -protected: - bool isComponentComplete() const; - void classBegin() override; - void componentComplete() override; - void resizeEvent(QResizeEvent *event) override; - -private: - Q_DISABLE_COPY(QQuickApplicationWindow) - Q_DECLARE_PRIVATE(QQuickApplicationWindow) - Q_PRIVATE_SLOT(d_func(), void _q_updateActiveFocus()) -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickApplicationWindowAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickApplicationWindow *window READ window NOTIFY windowChanged FINAL) - Q_PROPERTY(QQuickItem *contentItem READ contentItem NOTIFY contentItemChanged FINAL) - Q_PROPERTY(QQuickItem *activeFocusControl READ activeFocusControl NOTIFY activeFocusControlChanged FINAL) - Q_PROPERTY(QQuickItem *header READ header NOTIFY headerChanged FINAL) - Q_PROPERTY(QQuickItem *footer READ footer NOTIFY footerChanged FINAL) - Q_PROPERTY(QQuickItem *menuBar READ menuBar NOTIFY menuBarChanged FINAL) // REVISION(2, 3) - -public: - explicit QQuickApplicationWindowAttached(QObject *parent = nullptr); - - QQuickApplicationWindow *window() const; - QQuickItem *contentItem() const; - QQuickItem *activeFocusControl() const; - QQuickItem *header() const; - QQuickItem *footer() const; - QQuickItem *menuBar() const; - -Q_SIGNALS: - void windowChanged(); - void contentItemChanged(); - void activeFocusControlChanged(); - void headerChanged(); - void footerChanged(); - // 2.3 (Qt 5.10) - /*Q_REVISION(2, 3)*/ void menuBarChanged(); - -private: - Q_DISABLE_COPY(QQuickApplicationWindowAttached) - Q_DECLARE_PRIVATE(QQuickApplicationWindowAttached) -}; - -struct QWindowForeign2 -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QWindow) - QML_ADDED_IN_VERSION(2, 0) -}; - -struct QQuickWindowForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickWindow) - QML_ADDED_IN_VERSION(2, 0) -}; - -struct QQuickWindowQmlImplForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickWindowQmlImpl) - QML_ADDED_IN_VERSION(2, 2) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickApplicationWindow) -QML_DECLARE_TYPEINFO(QQuickApplicationWindow, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKAPPLICATIONWINDOW_P_H diff --git a/src/quicktemplates2/qquickbusyindicator.cpp b/src/quicktemplates2/qquickbusyindicator.cpp deleted file mode 100644 index cfc24b93..00000000 --- a/src/quicktemplates2/qquickbusyindicator.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickbusyindicator_p.h" -#include "qquickcontrol_p_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype BusyIndicator - \inherits Control -//! \instantiates QQuickBusyIndicator - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-indicators - \brief Indicates background activity, for example, while content is being loaded. - - \image qtquickcontrols2-busyindicator.gif - - The busy indicator should be used to indicate activity while content is - being loaded or the UI is blocked waiting for a resource to become available. - - The following snippet shows how to use the BusyIndicator: - - \qml - BusyIndicator { - running: image.status === Image.Loading - } - \endqml - - BusyIndicator is similar to an indeterminate \l ProgressBar. Both can be - used to indicate background activity. The main difference is visual, and - that ProgressBar can also present a concrete amount of progress (when it - can be determined). Due to the visual difference, busy indicators and - indeterminate progress bars fit different places in user interfaces. - Typical places for a busy indicator: - \list - \li in the corner of a \l ToolBar - \li as an overlay on top of a \l Page - \li on the side of an \l ItemDelegate - \endlist - - \sa {Customizing BusyIndicator}, {Indicator Controls}, ProgressBar -*/ - -class QQuickBusyIndicatorPrivate : public QQuickControlPrivate -{ -public: - bool running = true; -}; - -QQuickBusyIndicator::QQuickBusyIndicator(QQuickItem *parent) - : QQuickControl(*(new QQuickBusyIndicatorPrivate), parent) -{ -} - -/*! - \qmlproperty bool QtQuick.Controls::BusyIndicator::running - - This property holds whether the busy indicator is currently indicating - activity. - - \note The indicator is only visible when this property is set to \c true. - - The default value is \c true. -*/ -bool QQuickBusyIndicator::isRunning() const -{ - Q_D(const QQuickBusyIndicator); - return d->running; -} - -void QQuickBusyIndicator::setRunning(bool running) -{ - Q_D(QQuickBusyIndicator); - if (d->running == running) - return; - - d->running = running; - emit runningChanged(); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickBusyIndicator::touchEvent(QTouchEvent *event) -{ - event->ignore(); // QTBUG-61785 -} -#endif - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickBusyIndicator::accessibleRole() const -{ - return QAccessible::Indicator; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickbusyindicator_p.h b/src/quicktemplates2/qquickbusyindicator_p.h deleted file mode 100644 index bdb2eb24..00000000 --- a/src/quicktemplates2/qquickbusyindicator_p.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKBUSYINDICATOR_P_H -#define QQUICKBUSYINDICATOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickBusyIndicatorPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickBusyIndicator : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(bool running READ isRunning WRITE setRunning NOTIFY runningChanged FINAL) - QML_NAMED_ELEMENT(BusyIndicator) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickBusyIndicator(QQuickItem *parent = nullptr); - - bool isRunning() const; - void setRunning(bool running); - -Q_SIGNALS: - void runningChanged(); - -protected: -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; -#endif - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickBusyIndicator) - Q_DECLARE_PRIVATE(QQuickBusyIndicator) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickBusyIndicator) - -#endif // QQUICKBUSYINDICATOR_P_H diff --git a/src/quicktemplates2/qquickbutton.cpp b/src/quicktemplates2/qquickbutton.cpp deleted file mode 100644 index 5e8e6221..00000000 --- a/src/quicktemplates2/qquickbutton.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickbutton_p.h" -#include "qquickbutton_p_p.h" - -#include <QtGui/qpa/qplatformtheme.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Button - \inherits AbstractButton -//! \instantiates QQuickButton - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-buttons - \brief Push-button that can be clicked to perform a command or answer a question. - - \image qtquickcontrols2-button.gif - - Button presents a push-button control that can be pushed or clicked by - the user. Buttons are normally used to perform an action, or to answer - a question. Typical buttons are \e OK, \e Apply, \e Cancel, \e Close, - \e Yes, \e No, and \e Help. - - Button inherits its API from AbstractButton. For instance, you can set - \l {AbstractButton::text}{text}, display an \l {Icons in Qt Quick Controls}{icon}, - and react to \l {AbstractButton::clicked}{clicks} using the AbstractButton API. - - A button emits the signal \l {AbstractButton::}{clicked()} when it is activated by the user. - Connect to this signal to perform the button's action. Buttons also - provide the signals \l {AbstractButton::}{canceled()}, \l {AbstractButton::}{doubleClicked()}, \l {AbstractButton::}{pressed()}, - \l {AbstractButton::}{released()} and \l {AbstractButton::}{pressAndHold()} for long presses. - - See the snippet below on how to connect to the button's signals. - - \code - RowLayout { - Button { - text: "Ok" - onClicked: model.submit() - } - Button { - text: "Cancel" - onClicked: model.revert() - } - } - \endcode - - \sa {Customizing Button}, {Button Controls} -*/ - -QQuickButton::QQuickButton(QQuickItem *parent) - : QQuickAbstractButton(*(new QQuickButtonPrivate), parent) -{ -} - -QQuickButton::QQuickButton(QQuickButtonPrivate &dd, QQuickItem *parent) - : QQuickAbstractButton(dd, parent) -{ -} - -QFont QQuickButton::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::Button); -} - -/*! - \qmlproperty bool QtQuick.Controls::Button::highlighted - - This property holds whether the button is highlighted. - - \image qtquickcontrols2-button-highlighted.gif - - A button can be highlighted in order to draw the user's attention towards - it. It has no effect on keyboard interaction. - - The default value is \c false. -*/ -bool QQuickButton::isHighlighted() const -{ - Q_D(const QQuickButton); - return d->highlighted; -} - -void QQuickButton::setHighlighted(bool highlighted) -{ - Q_D(QQuickButton); - if (highlighted == d->highlighted) - return; - - d->highlighted = highlighted; - emit highlightedChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::Button::flat - - This property holds whether the button is flat. - - \image qtquickcontrols2-button-flat.gif - - A flat button typically does not draw a background unless it is pressed or checked. - - The default value is \c false. -*/ -bool QQuickButton::isFlat() const -{ - Q_D(const QQuickButton); - return d->flat; -} - -void QQuickButton::setFlat(bool flat) -{ - Q_D(QQuickButton); - if (flat == d->flat) - return; - - d->flat = flat; - emit flatChanged(); -} - -QPalette QQuickButtonPrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::Button); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickbutton_p.h b/src/quicktemplates2/qquickbutton_p.h deleted file mode 100644 index bfac5663..00000000 --- a/src/quicktemplates2/qquickbutton_p.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKBUTTON_P_H -#define QQUICKBUTTON_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickButtonPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickButton : public QQuickAbstractButton -{ - Q_OBJECT - Q_PROPERTY(bool highlighted READ isHighlighted WRITE setHighlighted NOTIFY highlightedChanged FINAL) - Q_PROPERTY(bool flat READ isFlat WRITE setFlat NOTIFY flatChanged FINAL) - QML_NAMED_ELEMENT(Button) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickButton(QQuickItem *parent = nullptr); - - bool isHighlighted() const; - void setHighlighted(bool highlighted); - - bool isFlat() const; - void setFlat(bool flat); - -Q_SIGNALS: - void highlightedChanged(); - void flatChanged(); - -protected: - QQuickButton(QQuickButtonPrivate &dd, QQuickItem *parent); - - QFont defaultFont() const override; - -private: - Q_DISABLE_COPY(QQuickButton) - Q_DECLARE_PRIVATE(QQuickButton) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickButton) - -#endif // QQUICKBUTTON_P_H diff --git a/src/quicktemplates2/qquickbutton_p_p.h b/src/quicktemplates2/qquickbutton_p_p.h deleted file mode 100644 index e83e3209..00000000 --- a/src/quicktemplates2/qquickbutton_p_p.h +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKBUTTON_P_P_H -#define QQUICKBUTTON_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickButtonPrivate : public QQuickAbstractButtonPrivate -{ - Q_DECLARE_PUBLIC(QQuickButton) - -public: - QPalette defaultPalette() const override; - - bool flat = false; - bool highlighted = false; -}; - -QT_END_NAMESPACE - -#endif // QQUICKBUTTON_P_P_H diff --git a/src/quicktemplates2/qquickbuttongroup.cpp b/src/quicktemplates2/qquickbuttongroup.cpp deleted file mode 100644 index f5e46cfc..00000000 --- a/src/quicktemplates2/qquickbuttongroup.cpp +++ /dev/null @@ -1,547 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickbuttongroup_p.h" - -#include <QtCore/private/qobject_p.h> -#include <QtCore/qmetaobject.h> -#include <QtCore/qvariant.h> -#include <QtQml/qqmlinfo.h> - -#include "qquickabstractbutton_p_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ButtonGroup - \inherits QtObject -//! \instantiates QQuickButtonGroup - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup utilities - \brief Mutually-exclusive group of checkable buttons. - - ButtonGroup is a non-visual, mutually exclusive group of buttons. - It is used with controls such as RadioButton, where only one of the options - can be selected at a time. - - The most straight-forward way to use ButtonGroup is to assign - a list of buttons. For example, the list of children of a - \l{Item Positioners}{positioner} or a \l{Qt Quick Layouts}{layout} - that manages a group of mutually exclusive buttons. - - \code - ButtonGroup { - buttons: column.children - } - - Column { - id: column - - RadioButton { - checked: true - text: qsTr("DAB") - } - - RadioButton { - text: qsTr("FM") - } - - RadioButton { - text: qsTr("AM") - } - } - \endcode - - Mutually exclusive buttons do not always share the same parent item, - or the parent layout may sometimes contain items that should not be - included in the button group. Such cases are best handled using - the \l group attached property. - - \code - ButtonGroup { id: radioGroup } - - Column { - Label { - text: qsTr("Radio:") - } - - RadioButton { - checked: true - text: qsTr("DAB") - ButtonGroup.group: radioGroup - } - - RadioButton { - text: qsTr("FM") - ButtonGroup.group: radioGroup - } - - RadioButton { - text: qsTr("AM") - ButtonGroup.group: radioGroup - } - } - \endcode - - More advanced use cases can be handled using the \c addButton() and - \c removeButton() methods. - - \sa RadioButton, {Button Controls} -*/ - -/*! - \qmlsignal QtQuick.Controls::ButtonGroup::clicked(AbstractButton button) - \since QtQuick.Controls 2.1 (Qt 5.8) - - This signal is emitted when a \a button in the group has been clicked. - - This signal is convenient for implementing a common signal handler for - all buttons in the same group. - - \code - ButtonGroup { - buttons: column.children - onClicked: console.log("clicked:", button.text) - } - - Column { - id: column - Button { text: "First" } - Button { text: "Second" } - Button { text: "Third" } - } - \endcode - - \sa AbstractButton::clicked() -*/ - -class QQuickButtonGroupPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickButtonGroup) - -public: - void clear(); - void buttonClicked(); - void _q_updateCurrent(); - void updateCheckState(); - void setCheckState(Qt::CheckState state); - - static void buttons_append(QQmlListProperty<QQuickAbstractButton> *prop, QQuickAbstractButton *obj); - static qsizetype buttons_count(QQmlListProperty<QQuickAbstractButton> *prop); - static QQuickAbstractButton *buttons_at(QQmlListProperty<QQuickAbstractButton> *prop, qsizetype index); - static void buttons_clear(QQmlListProperty<QQuickAbstractButton> *prop); - - bool complete = true; - bool exclusive = true; - bool settingCheckState = false; - Qt::CheckState checkState = Qt::Unchecked; - QPointer<QQuickAbstractButton> checkedButton; - QList<QQuickAbstractButton*> buttons; -}; - -void QQuickButtonGroupPrivate::clear() -{ - for (QQuickAbstractButton *button : qAsConst(buttons)) { - QQuickAbstractButtonPrivate::get(button)->group = nullptr; - QObjectPrivate::disconnect(button, &QQuickAbstractButton::clicked, this, &QQuickButtonGroupPrivate::buttonClicked); - QObjectPrivate::disconnect(button, &QQuickAbstractButton::checkedChanged, this, &QQuickButtonGroupPrivate::_q_updateCurrent); - } - buttons.clear(); -} - -void QQuickButtonGroupPrivate::buttonClicked() -{ - Q_Q(QQuickButtonGroup); - QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton*>(q->sender()); - if (button) - emit q->clicked(button); -} - -void QQuickButtonGroupPrivate::_q_updateCurrent() -{ - Q_Q(QQuickButtonGroup); - if (exclusive) { - QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton*>(q->sender()); - if (button && button->isChecked()) - q->setCheckedButton(button); - else if (!buttons.contains(checkedButton)) - q->setCheckedButton(nullptr); - } - updateCheckState(); -} - -void QQuickButtonGroupPrivate::updateCheckState() -{ - if (!complete || settingCheckState) - return; - - bool anyChecked = false; - bool allChecked = !buttons.isEmpty(); - for (QQuickAbstractButton *button : qAsConst(buttons)) { - const bool isChecked = button->isChecked(); - anyChecked |= isChecked; - allChecked &= isChecked; - } - setCheckState(Qt::CheckState(anyChecked + allChecked)); -} - -void QQuickButtonGroupPrivate::setCheckState(Qt::CheckState state) -{ - Q_Q(QQuickButtonGroup); - if (checkState == state) - return; - - checkState = state; - emit q->checkStateChanged(); -} - -void QQuickButtonGroupPrivate::buttons_append(QQmlListProperty<QQuickAbstractButton> *prop, QQuickAbstractButton *obj) -{ - QQuickButtonGroup *q = static_cast<QQuickButtonGroup *>(prop->object); - q->addButton(obj); -} - -qsizetype QQuickButtonGroupPrivate::buttons_count(QQmlListProperty<QQuickAbstractButton> *prop) -{ - QQuickButtonGroupPrivate *p = static_cast<QQuickButtonGroupPrivate *>(prop->data); - return p->buttons.count(); -} - -QQuickAbstractButton *QQuickButtonGroupPrivate::buttons_at(QQmlListProperty<QQuickAbstractButton> *prop, qsizetype index) -{ - QQuickButtonGroupPrivate *p = static_cast<QQuickButtonGroupPrivate *>(prop->data); - return p->buttons.value(index); -} - -void QQuickButtonGroupPrivate::buttons_clear(QQmlListProperty<QQuickAbstractButton> *prop) -{ - QQuickButtonGroupPrivate *p = static_cast<QQuickButtonGroupPrivate *>(prop->data); - if (!p->buttons.isEmpty()) { - p->clear(); - QQuickButtonGroup *q = static_cast<QQuickButtonGroup *>(prop->object); - // QTBUG-52358: don't clear the checked button immediately - QMetaObject::invokeMethod(q, "_q_updateCurrent", Qt::QueuedConnection); - emit q->buttonsChanged(); - } -} - -QQuickButtonGroup::QQuickButtonGroup(QObject *parent) - : QObject(*(new QQuickButtonGroupPrivate), parent) -{ -} - -QQuickButtonGroup::~QQuickButtonGroup() -{ - Q_D(QQuickButtonGroup); - d->clear(); -} - -QQuickButtonGroupAttached *QQuickButtonGroup::qmlAttachedProperties(QObject *object) -{ - return new QQuickButtonGroupAttached(object); -} - -/*! - \qmlproperty AbstractButton QtQuick.Controls::ButtonGroup::checkedButton - - This property holds the currently selected button in an exclusive group, - or \c null if there is none or the group is non-exclusive. - - By default, it is the first checked button added to an exclusive button group. - - \sa exclusive -*/ -QQuickAbstractButton *QQuickButtonGroup::checkedButton() const -{ - Q_D(const QQuickButtonGroup); - return d->checkedButton; -} - -void QQuickButtonGroup::setCheckedButton(QQuickAbstractButton *checkedButton) -{ - Q_D(QQuickButtonGroup); - if (d->checkedButton == checkedButton) - return; - - if (d->checkedButton) - d->checkedButton->setChecked(false); - d->checkedButton = checkedButton; - if (checkedButton) - checkedButton->setChecked(true); - emit checkedButtonChanged(); -} - -/*! - \qmlproperty list<AbstractButton> QtQuick.Controls::ButtonGroup::buttons - \qmldefault - - This property holds the list of buttons. - - \code - ButtonGroup { - buttons: column.children - } - - Column { - id: column - - RadioButton { - checked: true - text: qsTr("Option A") - } - - RadioButton { - text: qsTr("Option B") - } - } - \endcode - - \sa group -*/ -QQmlListProperty<QQuickAbstractButton> QQuickButtonGroup::buttons() -{ - Q_D(QQuickButtonGroup); - return QQmlListProperty<QQuickAbstractButton>(this, d, - QQuickButtonGroupPrivate::buttons_append, - QQuickButtonGroupPrivate::buttons_count, - QQuickButtonGroupPrivate::buttons_at, - QQuickButtonGroupPrivate::buttons_clear); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::ButtonGroup::exclusive - - This property holds whether the button group is exclusive. The default value is \c true. - - If this property is \c true, then only one button in the group can be checked at any given time. - The user can click on any button to check it, and that button will replace the existing one as - the checked button in the group. - - In an exclusive group, the user cannot uncheck the currently checked button by clicking on it; - instead, another button in the group must be clicked to set the new checked button for that group. - - In a non-exclusive group, checking and unchecking buttons does not affect the other buttons in - the group. Furthermore, the value of the \l checkedButton property is \c null. -*/ -bool QQuickButtonGroup::isExclusive() const -{ - Q_D(const QQuickButtonGroup); - return d->exclusive; -} - -void QQuickButtonGroup::setExclusive(bool exclusive) -{ - Q_D(QQuickButtonGroup); - if (d->exclusive == exclusive) - return; - - d->exclusive = exclusive; - emit exclusiveChanged(); -} - -/*! - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty enumeration QtQuick.Controls::ButtonGroup::checkState - - This property holds the combined check state of the button group. - - Available states: - \value Qt.Unchecked None of the buttons are checked. - \value Qt.PartiallyChecked Some of the buttons are checked. - \value Qt.Checked All of the buttons are checked. - - Setting the check state of a non-exclusive button group to \c Qt.Unchecked - or \c Qt.Checked unchecks or checks all buttons in the group, respectively. - \c Qt.PartiallyChecked is ignored. - - Setting the check state of an exclusive button group to \c Qt.Unchecked - unchecks the \l checkedButton. \c Qt.Checked and \c Qt.PartiallyChecked - are ignored. -*/ -Qt::CheckState QQuickButtonGroup::checkState() const -{ - Q_D(const QQuickButtonGroup); - return d->checkState; -} - -void QQuickButtonGroup::setCheckState(Qt::CheckState state) -{ - Q_D(QQuickButtonGroup); - if (d->checkState == state || state == Qt::PartiallyChecked) - return; - - d->settingCheckState = true; - if (d->exclusive) { - if (d->checkedButton && state == Qt::Unchecked) - setCheckedButton(nullptr); - } else { - for (QQuickAbstractButton *button : qAsConst(d->buttons)) - button->setChecked(state == Qt::Checked); - } - d->settingCheckState = false; - d->setCheckState(state); -} - -/*! - \qmlmethod void QtQuick.Controls::ButtonGroup::addButton(AbstractButton button) - - Adds a \a button to the button group. - - \note Manually adding objects to a button group is typically unnecessary. - The \l buttons property and the \l group attached property provide a - convenient and declarative syntax. - - \sa buttons, group -*/ -void QQuickButtonGroup::addButton(QQuickAbstractButton *button) -{ - Q_D(QQuickButtonGroup); - if (!button || d->buttons.contains(button)) - return; - - QQuickAbstractButtonPrivate::get(button)->group = this; - QObjectPrivate::connect(button, &QQuickAbstractButton::clicked, d, &QQuickButtonGroupPrivate::buttonClicked); - QObjectPrivate::connect(button, &QQuickAbstractButton::checkedChanged, d, &QQuickButtonGroupPrivate::_q_updateCurrent); - - if (d->exclusive && button->isChecked()) - setCheckedButton(button); - - d->buttons.append(button); - d->updateCheckState(); - emit buttonsChanged(); -} - -/*! - \qmlmethod void QtQuick.Controls::ButtonGroup::removeButton(AbstractButton button) - - Removes a \a button from the button group. - - \note Manually removing objects from a button group is typically unnecessary. - The \l buttons property and the \l group attached property provide a - convenient and declarative syntax. - - \sa buttons, group -*/ -void QQuickButtonGroup::removeButton(QQuickAbstractButton *button) -{ - Q_D(QQuickButtonGroup); - if (!button || !d->buttons.contains(button)) - return; - - QQuickAbstractButtonPrivate::get(button)->group = nullptr; - QObjectPrivate::disconnect(button, &QQuickAbstractButton::clicked, d, &QQuickButtonGroupPrivate::buttonClicked); - QObjectPrivate::disconnect(button, &QQuickAbstractButton::checkedChanged, d, &QQuickButtonGroupPrivate::_q_updateCurrent); - - if (d->checkedButton == button) - setCheckedButton(nullptr); - - d->buttons.removeOne(button); - d->updateCheckState(); - emit buttonsChanged(); -} - -void QQuickButtonGroup::classBegin() -{ - Q_D(QQuickButtonGroup); - d->complete = false; -} - -void QQuickButtonGroup::componentComplete() -{ - Q_D(QQuickButtonGroup); - d->complete = true; - if (!d->buttons.isEmpty()) - d->updateCheckState(); -} - -class QQuickButtonGroupAttachedPrivate : public QObjectPrivate -{ -public: - QQuickButtonGroup *group = nullptr; -}; - -QQuickButtonGroupAttached::QQuickButtonGroupAttached(QObject *parent) - : QObject(*(new QQuickButtonGroupAttachedPrivate), parent) -{ -} - -/*! - \qmlattachedproperty ButtonGroup QtQuick.Controls::ButtonGroup::group - - This property attaches a button to a button group. - - \code - ButtonGroup { id: group } - - RadioButton { - checked: true - text: qsTr("Option A") - ButtonGroup.group: group - } - - RadioButton { - text: qsTr("Option B") - ButtonGroup.group: group - } - \endcode - - \sa buttons -*/ -QQuickButtonGroup *QQuickButtonGroupAttached::group() const -{ - Q_D(const QQuickButtonGroupAttached); - return d->group; -} - -void QQuickButtonGroupAttached::setGroup(QQuickButtonGroup *group) -{ - Q_D(QQuickButtonGroupAttached); - if (d->group == group) - return; - - if (d->group) - d->group->removeButton(qobject_cast<QQuickAbstractButton*>(parent())); - d->group = group; - if (group) - group->addButton(qobject_cast<QQuickAbstractButton*>(parent())); - emit groupChanged(); -} - -QT_END_NAMESPACE - -#include "moc_qquickbuttongroup_p.cpp" diff --git a/src/quicktemplates2/qquickbuttongroup_p.h b/src/quicktemplates2/qquickbuttongroup_p.h deleted file mode 100644 index daff84f2..00000000 --- a/src/quicktemplates2/qquickbuttongroup_p.h +++ /dev/null @@ -1,144 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKBUTTONGROUP_P_H -#define QQUICKBUTTONGROUP_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> -#include <QtQml/qqml.h> -#include <QtQml/qqmlparserstatus.h> - -QT_BEGIN_NAMESPACE - -class QQuickAbstractButton; -class QQuickButtonGroupPrivate; -class QQuickButtonGroupAttached; -class QQuickButtonGroupAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickButtonGroup : public QObject, public QQmlParserStatus -{ - Q_OBJECT - Q_PROPERTY(QQuickAbstractButton *checkedButton READ checkedButton WRITE setCheckedButton NOTIFY checkedButtonChanged FINAL) - Q_PROPERTY(QQmlListProperty<QQuickAbstractButton> buttons READ buttons NOTIFY buttonsChanged FINAL) - // 2.3 (Qt 5.10) - Q_PROPERTY(bool exclusive READ isExclusive WRITE setExclusive NOTIFY exclusiveChanged FINAL REVISION(2, 3)) - // 2.4 (Qt 5.11) - Q_PROPERTY(Qt::CheckState checkState READ checkState WRITE setCheckState NOTIFY checkStateChanged FINAL REVISION(2, 4)) - Q_INTERFACES(QQmlParserStatus) - QML_NAMED_ELEMENT(ButtonGroup) - QML_ATTACHED(QQuickButtonGroupAttached) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickButtonGroup(QObject *parent = nullptr); - ~QQuickButtonGroup(); - - static QQuickButtonGroupAttached *qmlAttachedProperties(QObject *object); - - QQuickAbstractButton *checkedButton() const; - void setCheckedButton(QQuickAbstractButton *checkedButton); - - QQmlListProperty<QQuickAbstractButton> buttons(); - - bool isExclusive() const; - void setExclusive(bool exclusive); - - // 2.4 (Qt 5.11) - Qt::CheckState checkState() const; - void setCheckState(Qt::CheckState state); - -public Q_SLOTS: - void addButton(QQuickAbstractButton *button); - void removeButton(QQuickAbstractButton *button); - -Q_SIGNALS: - void checkedButtonChanged(); - void buttonsChanged(); - // 2.1 (Qt 5.8) - Q_REVISION(2, 1) void clicked(QQuickAbstractButton *button); - // 2.3 (Qt 5.10) - Q_REVISION(2, 3) void exclusiveChanged(); - // 2.4 (Qt 5.11) - Q_REVISION(2, 4) void checkStateChanged(); - -protected: - void classBegin() override; - void componentComplete() override; - -private: - Q_DISABLE_COPY(QQuickButtonGroup) - Q_DECLARE_PRIVATE(QQuickButtonGroup) - - Q_PRIVATE_SLOT(d_func(), void _q_updateCurrent()) -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickButtonGroupAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickButtonGroup *group READ group WRITE setGroup NOTIFY groupChanged FINAL) - -public: - explicit QQuickButtonGroupAttached(QObject *parent = nullptr); - - QQuickButtonGroup *group() const; - void setGroup(QQuickButtonGroup *group); - -Q_SIGNALS: - void groupChanged(); - -private: - Q_DISABLE_COPY(QQuickButtonGroupAttached) - Q_DECLARE_PRIVATE(QQuickButtonGroupAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickButtonGroup) -QML_DECLARE_TYPEINFO(QQuickButtonGroup, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKBUTTONGROUP_P_H diff --git a/src/quicktemplates2/qquickcheckbox.cpp b/src/quicktemplates2/qquickcheckbox.cpp deleted file mode 100644 index e3184ceb..00000000 --- a/src/quicktemplates2/qquickcheckbox.cpp +++ /dev/null @@ -1,245 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickcheckbox_p.h" -#include "qquickabstractbutton_p_p.h" - -#include <QtGui/qpa/qplatformtheme.h> -#include <QtQml/qjsvalue.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype CheckBox - \inherits AbstractButton -//! \instantiates QQuickCheckBox - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-buttons - \brief Check button that can be toggled on or off. - - \image qtquickcontrols2-checkbox.gif - - CheckBox presents an option button that can be toggled on (checked) or - off (unchecked). Check boxes are typically used to select one or more - options from a set of options. For larger sets of options, such as those - in a list, consider using \l CheckDelegate instead. - - CheckBox inherits its API from \l AbstractButton. For instance, the - state of the checkbox can be set with the \l {AbstractButton::}{checked} property. - - In addition to the checked and unchecked states, there is a third state: - partially checked. The partially checked state can be enabled using the - \l tristate property. This state indicates that the regular checked/unchecked - state can not be determined; generally because of other states that affect - the checkbox. This state is useful when several child nodes are selected - in a treeview, for example. - - \code - ColumnLayout { - CheckBox { - checked: true - text: qsTr("First") - } - CheckBox { - text: qsTr("Second") - } - CheckBox { - checked: true - text: qsTr("Third") - } - } - \endcode - - Hierarchical checkbox groups can be managed with a non-exclusive - \l ButtonGroup. - - \image qtquickcontrols2-checkbox-group.png - - The following example illustrates how the combined check state of - children can be bound to the check state of the parent checkbox: - - \snippet qtquickcontrols2-checkbox-group.qml 1 - - \sa {Customizing CheckBox}, ButtonGroup, {Button Controls} -*/ - -class QQuickCheckBoxPrivate : public QQuickAbstractButtonPrivate -{ - Q_DECLARE_PUBLIC(QQuickCheckBox) - -public: - void setNextCheckState(const QJSValue &callback); - - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::CheckBox); } - - bool tristate = false; - Qt::CheckState checkState = Qt::Unchecked; - QJSValue nextCheckState; -}; - -void QQuickCheckBoxPrivate::setNextCheckState(const QJSValue &callback) -{ - Q_Q(QQuickCheckBox); - nextCheckState = callback; - emit q->nextCheckStateChanged(); -} - -QQuickCheckBox::QQuickCheckBox(QQuickItem *parent) - : QQuickAbstractButton(*(new QQuickCheckBoxPrivate), parent) -{ - setCheckable(true); -} - -/*! - \qmlproperty bool QtQuick.Controls::CheckBox::tristate - - This property holds whether the checkbox is a tri-state checkbox. - - In the animation below, the first checkbox is tri-state: - - \image qtquickcontrols2-checkbox-tristate.gif - - The default is \c false, i.e., the checkbox has only two states. -*/ -bool QQuickCheckBox::isTristate() const -{ - Q_D(const QQuickCheckBox); - return d->tristate; -} - -void QQuickCheckBox::setTristate(bool tristate) -{ - Q_D(QQuickCheckBox); - if (d->tristate == tristate) - return; - - d->tristate = tristate; - emit tristateChanged(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::CheckBox::checkState - - This property holds the check state of the checkbox. - - Available states: - \value Qt.Unchecked The checkbox is unchecked. - \value Qt.PartiallyChecked The checkbox is partially checked. This state is only used when \l tristate is enabled. - \value Qt.Checked The checkbox is checked. - - \sa tristate, {AbstractButton::checked}{checked} -*/ -Qt::CheckState QQuickCheckBox::checkState() const -{ - Q_D(const QQuickCheckBox); - return d->checkState; -} - -void QQuickCheckBox::setCheckState(Qt::CheckState state) -{ - Q_D(QQuickCheckBox); - if (d->checkState == state) - return; - - bool wasChecked = isChecked(); - d->checked = state == Qt::Checked; - d->checkState = state; - emit checkStateChanged(); - if (d->checked != wasChecked) - emit checkedChanged(); -} - -QFont QQuickCheckBox::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::CheckBox); -} - -void QQuickCheckBox::buttonChange(ButtonChange change) -{ - if (change == ButtonCheckedChange) - setCheckState(isChecked() ? Qt::Checked : Qt::Unchecked); - else - QQuickAbstractButton::buttonChange(change); -} - -/*! - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty function QtQuick.Controls::CheckBox::nextCheckState - - This property holds a callback function that is called to determine - the next check state whenever the checkbox is interactively toggled - by the user via touch, mouse, or keyboard. - - By default, a normal checkbox cycles between \c Qt.Unchecked and - \c Qt.Checked states, and a tri-state checkbox cycles between - \c Qt.Unchecked, \c Qt.PartiallyChecked, and \c Qt.Checked states. - - The \c nextCheckState callback function can override the default behavior. - The following example implements a tri-state checkbox that can present - a partially checked state depending on external conditions, but never - cycles to the partially checked state when interactively toggled by - the user. - - \code - CheckBox { - tristate: true - checkState: allChildrenChecked ? Qt.Checked : - anyChildChecked ? Qt.PartiallyChecked : Qt.Unchecked - - nextCheckState: function() { - if (checkState === Qt.Checked) - return Qt.Unchecked - else - return Qt.Checked - } - } - \endcode -*/ -void QQuickCheckBox::nextCheckState() -{ - Q_D(QQuickCheckBox); - if (d->nextCheckState.isCallable()) - setCheckState(static_cast<Qt::CheckState>(d->nextCheckState.call().toInt())); - else if (d->tristate) - setCheckState(static_cast<Qt::CheckState>((d->checkState + 1) % 3)); - else - QQuickAbstractButton::nextCheckState(); -} - -QT_END_NAMESPACE - -#include "moc_qquickcheckbox_p.cpp" diff --git a/src/quicktemplates2/qquickcheckbox_p.h b/src/quicktemplates2/qquickcheckbox_p.h deleted file mode 100644 index 8e53b41d..00000000 --- a/src/quicktemplates2/qquickcheckbox_p.h +++ /dev/null @@ -1,97 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKCHECKBOX_P_H -#define QQUICKCHECKBOX_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickCheckBoxPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickCheckBox : public QQuickAbstractButton -{ - Q_OBJECT - Q_PROPERTY(bool tristate READ isTristate WRITE setTristate NOTIFY tristateChanged FINAL) - Q_PROPERTY(Qt::CheckState checkState READ checkState WRITE setCheckState NOTIFY checkStateChanged FINAL) - // 2.4 (Qt 5.11) - Q_PRIVATE_PROPERTY(QQuickCheckBox::d_func(), QJSValue nextCheckState MEMBER nextCheckState WRITE setNextCheckState NOTIFY nextCheckStateChanged FINAL REVISION(2, 4)) - QML_NAMED_ELEMENT(CheckBox) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickCheckBox(QQuickItem *parent = nullptr); - - bool isTristate() const; - void setTristate(bool tristate); - - Qt::CheckState checkState() const; - void setCheckState(Qt::CheckState state); - -Q_SIGNALS: - void tristateChanged(); - void checkStateChanged(); - // 2.4 (Qt 5.11) - Q_REVISION(2, 4) void nextCheckStateChanged(); - -protected: - QFont defaultFont() const override; - - void buttonChange(ButtonChange change) override; - void nextCheckState() override; - -private: - Q_DISABLE_COPY(QQuickCheckBox) - Q_DECLARE_PRIVATE(QQuickCheckBox) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickCheckBox) - -#endif // QQUICKCHECKBOX_P_H diff --git a/src/quicktemplates2/qquickcheckdelegate.cpp b/src/quicktemplates2/qquickcheckdelegate.cpp deleted file mode 100644 index 7596e104..00000000 --- a/src/quicktemplates2/qquickcheckdelegate.cpp +++ /dev/null @@ -1,239 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickcheckdelegate_p.h" -#include "qquickitemdelegate_p_p.h" - -#include <QtGui/qpa/qplatformtheme.h> -#include <QtQml/qjsvalue.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype CheckDelegate - \inherits ItemDelegate -//! \instantiates QQuickCheckDelegate - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-delegates - \brief Item delegate with a check indicator that can be toggled on or off. - - \image qtquickcontrols2-checkdelegate.gif - - CheckDelegate presents an item delegate that can be toggled on (checked) or - off (unchecked). Check delegates are typically used to select one or more - options from a set of options in a list. For smaller sets of options, or - for options that need to be uniquely identifiable, consider using - \l CheckBox instead. - - CheckDelegate inherits its API from \l ItemDelegate, which is inherited - from AbstractButton. For instance, you can set \l {AbstractButton::text}{text}, - and react to \l {AbstractButton::clicked}{clicks} using the AbstractButton - API. The state of the check delegate can be set with the - \l {AbstractButton::}{checked} property. - - In addition to the checked and unchecked states, there is a third state: - partially checked. The partially checked state can be enabled using the - \l tristate property. This state indicates that the regular checked/unchecked - state can not be determined; generally because of other states that affect - the check delegate. This state is useful when several child nodes are selected - in a treeview, for example. - - \code - ListView { - model: ["Option 1", "Option 2", "Option 3"] - delegate: CheckDelegate { - text: modelData - } - } - \endcode - - \sa {Customizing CheckDelegate}, {Delegate Controls}, CheckBox -*/ - -class QQuickCheckDelegatePrivate : public QQuickItemDelegatePrivate -{ - Q_DECLARE_PUBLIC(QQuickCheckDelegate) - -public: - void setNextCheckState(const QJSValue &callback); - - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ListView); } - - bool tristate = false; - Qt::CheckState checkState = Qt::Unchecked; - QJSValue nextCheckState; -}; - -void QQuickCheckDelegatePrivate::setNextCheckState(const QJSValue &callback) -{ - Q_Q(QQuickCheckDelegate); - nextCheckState = callback; - emit q->nextCheckStateChanged(); -} - -QQuickCheckDelegate::QQuickCheckDelegate(QQuickItem *parent) - : QQuickItemDelegate(*(new QQuickCheckDelegatePrivate), parent) -{ - setCheckable(true); -} - -/*! - \qmlproperty bool QtQuick.Controls::CheckDelegate::tristate - - This property determines whether the check delegate has three states. - - In the animation below, the first checkdelegate is tri-state: - - \image qtquickcontrols2-checkdelegate-tristate.gif - - The default is \c false, i.e., the delegate has only two states. -*/ -bool QQuickCheckDelegate::isTristate() const -{ - Q_D(const QQuickCheckDelegate); - return d->tristate; -} - -void QQuickCheckDelegate::setTristate(bool tristate) -{ - Q_D(QQuickCheckDelegate); - if (d->tristate == tristate) - return; - - d->tristate = tristate; - emit tristateChanged(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::CheckDelegate::checkState - - This property determines the check state of the check delegate. - - Available states: - \value Qt.Unchecked The delegate is unchecked. - \value Qt.PartiallyChecked The delegate is partially checked. This state is only used when \l tristate is enabled. - \value Qt.Checked The delegate is checked. - - \sa tristate, {AbstractButton::checked}{checked} -*/ -Qt::CheckState QQuickCheckDelegate::checkState() const -{ - Q_D(const QQuickCheckDelegate); - return d->checkState; -} - -void QQuickCheckDelegate::setCheckState(Qt::CheckState state) -{ - Q_D(QQuickCheckDelegate); - if (d->checkState == state) - return; - - bool wasChecked = isChecked(); - d->checked = state == Qt::Checked; - d->checkState = state; - emit checkStateChanged(); - if (d->checked != wasChecked) - emit checkedChanged(); -} - -QFont QQuickCheckDelegate::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::ListView); -} - -void QQuickCheckDelegate::buttonChange(ButtonChange change) -{ - if (change == ButtonCheckedChange) - setCheckState(isChecked() ? Qt::Checked : Qt::Unchecked); - else - QQuickAbstractButton::buttonChange(change); -} - -/*! - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty function QtQuick.Controls::CheckDelegate::nextCheckState - - This property holds a callback function that is called to determine - the next check state whenever the check delegate is interactively toggled - by the user via touch, mouse, or keyboard. - - By default, a normal check delegate cycles between \c Qt.Unchecked and - \c Qt.Checked states, and a tri-state check delegate cycles between - \c Qt.Unchecked, \c Qt.PartiallyChecked, and \c Qt.Checked states. - - The \c nextCheckState callback function can override the default behavior. - The following example implements a tri-state check delegate that can present - a partially checked state depending on external conditions, but never - cycles to the partially checked state when interactively toggled by - the user. - - \code - CheckDelegate { - tristate: true - checkState: allChildrenChecked ? Qt.Checked : - anyChildChecked ? Qt.PartiallyChecked : Qt.Unchecked - - nextCheckState: function() { - if (checkState === Qt.Checked) - return Qt.Unchecked - else - return Qt.Checked - } - } - \endcode -*/ -void QQuickCheckDelegate::nextCheckState() -{ - Q_D(QQuickCheckDelegate); - if (d->nextCheckState.isCallable()) - setCheckState(static_cast<Qt::CheckState>(d->nextCheckState.call().toInt())); - else if (d->tristate) - setCheckState(static_cast<Qt::CheckState>((d->checkState + 1) % 3)); - else - QQuickItemDelegate::nextCheckState(); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickCheckDelegate::accessibleRole() const -{ - return QAccessible::CheckBox; -} -#endif - -QT_END_NAMESPACE - -#include "moc_qquickcheckdelegate_p.cpp" diff --git a/src/quicktemplates2/qquickcheckdelegate_p.h b/src/quicktemplates2/qquickcheckdelegate_p.h deleted file mode 100644 index 9b69943f..00000000 --- a/src/quicktemplates2/qquickcheckdelegate_p.h +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKCHECKDELEGATE_P_H -#define QQUICKCHECKDELEGATE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickitemdelegate_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickCheckDelegatePrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickCheckDelegate : public QQuickItemDelegate -{ - Q_OBJECT - Q_PROPERTY(bool tristate READ isTristate WRITE setTristate NOTIFY tristateChanged FINAL) - Q_PROPERTY(Qt::CheckState checkState READ checkState WRITE setCheckState NOTIFY checkStateChanged FINAL) - // 2.4 (Qt 5.11) - Q_PRIVATE_PROPERTY(QQuickCheckDelegate::d_func(), QJSValue nextCheckState MEMBER nextCheckState WRITE setNextCheckState NOTIFY nextCheckStateChanged FINAL REVISION(2, 4)) - QML_NAMED_ELEMENT(CheckDelegate) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickCheckDelegate(QQuickItem *parent = nullptr); - - bool isTristate() const; - void setTristate(bool tristate); - - Qt::CheckState checkState() const; - void setCheckState(Qt::CheckState state); - -Q_SIGNALS: - void tristateChanged(); - void checkStateChanged(); - // 2.4 (Qt 5.11) - Q_REVISION(2, 4) void nextCheckStateChanged(); - -protected: - QFont defaultFont() const override; - - void buttonChange(ButtonChange change) override; - void nextCheckState() override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickCheckDelegate) - Q_DECLARE_PRIVATE(QQuickCheckDelegate) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickCheckDelegate) - -#endif // QQUICKCHECKDELEGATE_P_H diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp deleted file mode 100644 index bad62b28..00000000 --- a/src/quicktemplates2/qquickcombobox.cpp +++ /dev/null @@ -1,2188 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickcombobox_p.h" -#include "qquickcontrol_p_p.h" -#include "qquickabstractbutton_p.h" -#include "qquickabstractbutton_p_p.h" -#include "qquickpopup_p_p.h" -#include "qquickdeferredexecute_p_p.h" - -#include <QtCore/qregularexpression.h> -#include <QtCore/qabstractitemmodel.h> -#include <QtCore/qglobal.h> -#include <QtGui/qinputmethod.h> -#include <QtGui/qguiapplication.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtQml/qjsvalue.h> -#include <QtQml/qqmlcontext.h> -#include <QtQml/private/qlazilyallocated_p.h> -#include <private/qqmldelegatemodel_p.h> -#include <QtQuick/private/qquickaccessibleattached_p.h> -#include <QtQuick/private/qquickevents_p_p.h> -#include <QtQuick/private/qquicktextinput_p.h> -#include <QtQuick/private/qquicktextinput_p_p.h> -#include <QtQuick/private/qquickitemview_p.h> - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcCalculateWidestTextWidth, "qt.quick.controls.combobox.calculatewidesttextwidth") - -/*! - \qmltype ComboBox - \inherits Control -//! \instantiates QQuickComboBox - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-input - \ingroup qtquickcontrols2-focusscopes - \brief Combined button and popup list for selecting options. - - \image qtquickcontrols2-combobox.gif - - ComboBox is a combined button and popup list. It provides a means of - presenting a list of options to the user in a way that takes up the - minimum amount of screen space. - - ComboBox is populated with a data model. The data model is commonly - a JavaScript array, a \l ListModel or an integer, but other types - of \l {qml-data-models}{data models} are also supported. - - \code - ComboBox { - model: ["First", "Second", "Third"] - } - \endcode - - \section1 Editable ComboBox - - ComboBox can be made \l editable. An editable combo box auto-completes - its text based on what is available in the model. - - The following example demonstrates appending content to an editable - combo box by reacting to the \l accepted signal. - - \snippet qtquickcontrols2-combobox-accepted.qml combobox - - \section1 ComboBox Model Roles - - ComboBox is able to visualize standard \l {qml-data-models}{data models} - that provide the \c modelData role: - \list - \li models that have only one role - \li models that do not have named roles (JavaScript array, integer) - \endlist - - When using models that have multiple named roles, ComboBox must be configured - to use a specific \l {textRole}{text role} for its \l {displayText}{display text} - and \l delegate instances. If you want to use a role of the model item - that corresponds to the text role, set \l valueRole. The \l currentValue - property and \l indexOfValue() method can then be used to get information - about those values. - - For example: - - \snippet qtquickcontrols2-combobox-valuerole.qml file - - \note If ComboBox is assigned a data model that has multiple named roles, but - \l textRole is not defined, ComboBox is unable to visualize it and throws a - \c {ReferenceError: modelData is not defined}. - - \sa {Customizing ComboBox}, {Input Controls}, {Focus Management in Qt Quick Controls} -*/ - -/*! - \qmlsignal void QtQuick.Controls::ComboBox::activated(int index) - - This signal is emitted when the item at \a index is activated by the user. - - An item is activated when it is selected while the popup is open, - causing the popup to close (and \l currentIndex to change), - or while the popup is closed and the combo box is navigated via - keyboard, causing the \l currentIndex to change. - The \l currentIndex property is set to \a index. - - \sa currentIndex -*/ - -/*! - \qmlsignal void QtQuick.Controls::ComboBox::highlighted(int index) - - This signal is emitted when the item at \a index in the popup list is highlighted by the user. - - The highlighted signal is only emitted when the popup is open and an item - is highlighted, but not necessarily \l activated. - - \sa highlightedIndex -*/ - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlsignal void QtQuick.Controls::ComboBox::accepted() - - This signal is emitted when the \uicontrol Return or \uicontrol Enter key is pressed - on an \l editable combo box. - - You can handle this signal in order to add the newly entered - item to the model, for example: - - \snippet qtquickcontrols2-combobox-accepted.qml combobox - - Before the signal is emitted, a check is done to see if the string - exists in the model. If it does, \l currentIndex will be set to its index, - and \l currentText to the string itself. - - After the signal has been emitted, and if the first check failed (that is, - the item did not exist), another check will be done to see if the item was - added by the signal handler. If it was, the \l currentIndex and - \l currentText are updated accordingly. Otherwise, they will be set to - \c -1 and \c "", respectively. - - \note If there is a \l validator set on the combo box, the signal will only be - emitted if the input is in an acceptable state. -*/ - -namespace { - enum Activation { NoActivate, Activate }; - enum Highlighting { NoHighlight, Highlight }; -} - -class QQuickComboBoxDelegateModel : public QQmlDelegateModel -{ -public: - explicit QQuickComboBoxDelegateModel(QQuickComboBox *combo); - QVariant variantValue(int index, const QString &role) override; - -private: - QQuickComboBox *combo = nullptr; -}; - -QQuickComboBoxDelegateModel::QQuickComboBoxDelegateModel(QQuickComboBox *combo) - : QQmlDelegateModel(qmlContext(combo), combo), - combo(combo) -{ -} - -QVariant QQuickComboBoxDelegateModel::variantValue(int index, const QString &role) -{ - const QVariant model = combo->model(); - if (model.userType() == QMetaType::QVariantList) { - QVariant object = model.toList().value(index); - if (object.userType() == QMetaType::QVariantMap) { - const QVariantMap data = object.toMap(); - if (data.count() == 1 && role == QLatin1String("modelData")) - return data.first(); - return data.value(role); - } else if (object.userType() == QMetaType::QObjectStar) { - const QObject *data = object.value<QObject *>(); - if (data && role != QLatin1String("modelData")) - return data->property(role.toUtf8()); - } - } - return QQmlDelegateModel::variantValue(index, role); -} - -class QQuickComboBoxPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickComboBox) - -public: - bool isPopupVisible() const; - void showPopup(); - void hidePopup(bool accept); - void togglePopup(bool accept); - void popupVisibleChanged(); - - void itemClicked(); - void itemHovered(); - - void createdItem(int index, QObject *object); - void modelUpdated(); - void countChanged(); - - QString effectiveTextRole() const; - void updateEditText(); - void updateCurrentText(); - void updateCurrentValue(); - void updateCurrentTextAndValue(); - void updateAcceptableInput(); - - bool isValidIndex(int index) const; - - void acceptInput(); - QString tryComplete(const QString &inputText); - - void incrementCurrentIndex(); - void decrementCurrentIndex(); - void setCurrentIndex(int index, Activation activate); - void updateHighlightedIndex(); - void setHighlightedIndex(int index, Highlighting highlight); - - void keySearch(const QString &text); - int match(int start, const QString &text, Qt::MatchFlags flags) const; - - void createDelegateModel(); - - void handlePress(const QPointF &point, ulong timestamp) override; - void handleMove(const QPointF &point, ulong timestamp) override; - void handleRelease(const QPointF &point, ulong timestamp) override; - void handleUngrab() override; - - void cancelIndicator(); - void executeIndicator(bool complete = false); - - void cancelPopup(); - void executePopup(bool complete = false); - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - void setInputMethodHints(Qt::InputMethodHints hints, bool force = false); - - virtual qreal getContentWidth() const override; - qreal calculateWidestTextWidth() const; - void maybeUpdateImplicitContentWidth(); - - static void hideOldPopup(QQuickPopup *popup); - - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ComboBox); } - - bool flat = false; - bool down = false; - bool hasDown = false; - bool pressed = false; - bool ownModel = false; - bool keyNavigating = false; - bool hasDisplayText = false; - bool hasCurrentIndex = false; - bool hasCalculatedWidestText = false; - int highlightedIndex = -1; - int currentIndex = -1; - QQuickComboBox::ImplicitContentWidthPolicy implicitContentWidthPolicy = QQuickComboBox::ContentItemImplicitWidth; - QVariant model; - QString textRole; - QString currentText; - QString displayText; - QString valueRole; - QVariant currentValue; - QQuickItem *pressedItem = nullptr; - QQmlInstanceModel *delegateModel = nullptr; - QQmlComponent *delegate = nullptr; - QQuickDeferredPointer<QQuickItem> indicator; - QQuickDeferredPointer<QQuickPopup> popup; - bool m_acceptableInput = true; - - struct ExtraData { - bool editable = false; - bool accepting = false; - bool allowComplete = false; - bool selectTextByMouse = false; - Qt::InputMethodHints inputMethodHints = Qt::ImhNone; - QString editText; - QValidator *validator = nullptr; - }; - QLazilyAllocated<ExtraData> extra; -}; - -bool QQuickComboBoxPrivate::isPopupVisible() const -{ - return popup && popup->isVisible(); -} - -void QQuickComboBoxPrivate::showPopup() -{ - if (!popup) - executePopup(true); - - if (popup && !popup->isVisible()) - popup->open(); -} - -void QQuickComboBoxPrivate::hidePopup(bool accept) -{ - Q_Q(QQuickComboBox); - if (accept) { - q->setCurrentIndex(highlightedIndex); - emit q->activated(currentIndex); - } - if (popup && popup->isVisible()) - popup->close(); -} - -void QQuickComboBoxPrivate::togglePopup(bool accept) -{ - if (!popup || !popup->isVisible()) - showPopup(); - else - hidePopup(accept); -} - -void QQuickComboBoxPrivate::popupVisibleChanged() -{ - Q_Q(QQuickComboBox); - if (isPopupVisible()) - QGuiApplication::inputMethod()->reset(); - - QQuickItemView *itemView = popup->findChild<QQuickItemView *>(); - if (itemView) - itemView->setHighlightRangeMode(QQuickItemView::NoHighlightRange); - - updateHighlightedIndex(); - - if (itemView) - itemView->positionViewAtIndex(highlightedIndex, QQuickItemView::Beginning); - - if (!hasDown) { - q->setDown(pressed || isPopupVisible()); - hasDown = false; - } -} - -void QQuickComboBoxPrivate::itemClicked() -{ - Q_Q(QQuickComboBox); - int index = delegateModel->indexOf(q->sender(), nullptr); - if (index != -1) { - setHighlightedIndex(index, Highlight); - hidePopup(true); - } -} - -void QQuickComboBoxPrivate::itemHovered() -{ - Q_Q(QQuickComboBox); - if (keyNavigating) - return; - - QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(q->sender()); - if (!button || !button->isHovered() || !button->isEnabled() || QQuickAbstractButtonPrivate::get(button)->touchId != -1) - return; - - int index = delegateModel->indexOf(button, nullptr); - if (index != -1) { - setHighlightedIndex(index, Highlight); - - if (QQuickItemView *itemView = popup->findChild<QQuickItemView *>()) - itemView->positionViewAtIndex(index, QQuickItemView::Contain); - } -} - -void QQuickComboBoxPrivate::createdItem(int index, QObject *object) -{ - Q_Q(QQuickComboBox); - QQuickItem *item = qobject_cast<QQuickItem *>(object); - if (item && !item->parentItem()) { - if (popup) - item->setParentItem(popup->contentItem()); - else - item->setParentItem(q); - QQuickItemPrivate::get(item)->setCulled(true); - } - - QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(object); - if (button) { - button->setFocusPolicy(Qt::NoFocus); - connect(button, &QQuickAbstractButton::clicked, this, &QQuickComboBoxPrivate::itemClicked); - connect(button, &QQuickAbstractButton::hoveredChanged, this, &QQuickComboBoxPrivate::itemHovered); - } - - if (index == currentIndex && !q->isEditable()) - updateCurrentTextAndValue(); -} - -void QQuickComboBoxPrivate::modelUpdated() -{ - if (componentComplete && (!extra.isAllocated() || !extra->accepting)) { - updateCurrentTextAndValue(); - - if (implicitContentWidthPolicy == QQuickComboBox::WidestText) - updateImplicitContentSize(); - } -} - -void QQuickComboBoxPrivate::countChanged() -{ - Q_Q(QQuickComboBox); - if (q->count() == 0) - q->setCurrentIndex(-1); - emit q->countChanged(); -} - -QString QQuickComboBoxPrivate::effectiveTextRole() const -{ - return textRole.isEmpty() ? QStringLiteral("modelData") : textRole; -} - -void QQuickComboBoxPrivate::updateEditText() -{ - Q_Q(QQuickComboBox); - QQuickTextInput *input = qobject_cast<QQuickTextInput *>(contentItem); - if (!input) - return; - - const QString text = input->text(); - - if (extra.isAllocated() && extra->allowComplete && !text.isEmpty()) { - const QString completed = tryComplete(text); - if (completed.length() > text.length()) { - input->setText(completed); - input->select(completed.length(), text.length()); - return; - } - } - q->setEditText(text); -} - -void QQuickComboBoxPrivate::updateCurrentText() -{ - Q_Q(QQuickComboBox); - const QString text = q->textAt(currentIndex); - if (currentText != text) { - currentText = text; - if (!hasDisplayText) - q->maybeSetAccessibleName(text); - emit q->currentTextChanged(); - } - if (!hasDisplayText && displayText != text) { - displayText = text; - emit q->displayTextChanged(); - } - if (!extra.isAllocated() || !extra->accepting) - q->setEditText(currentText); -} - -void QQuickComboBoxPrivate::updateCurrentValue() -{ - Q_Q(QQuickComboBox); - const QVariant value = q->valueAt(currentIndex); - if (currentValue == value) - return; - - currentValue = value; - emit q->currentValueChanged(); -} - -void QQuickComboBoxPrivate::updateCurrentTextAndValue() -{ - updateCurrentText(); - updateCurrentValue(); -} - -void QQuickComboBoxPrivate::updateAcceptableInput() -{ - Q_Q(QQuickComboBox); - - if (!contentItem) - return; - - const QQuickTextInput *textInputContentItem = qobject_cast<QQuickTextInput *>(contentItem); - - if (!textInputContentItem) - return; - - const bool newValue = textInputContentItem->hasAcceptableInput(); - - if (m_acceptableInput != newValue) { - m_acceptableInput = newValue; - emit q->acceptableInputChanged(); - } -} - -bool QQuickComboBoxPrivate::isValidIndex(int index) const -{ - return delegateModel && index >= 0 && index < delegateModel->count(); -} - -void QQuickComboBoxPrivate::acceptInput() -{ - Q_Q(QQuickComboBox); - int idx = q->find(extra.value().editText, Qt::MatchFixedString); - if (idx > -1) - q->setCurrentIndex(idx); - - extra.value().accepting = true; - emit q->accepted(); - - if (idx == -1) - q->setCurrentIndex(q->find(extra.value().editText, Qt::MatchFixedString)); - extra.value().accepting = false; -} - -QString QQuickComboBoxPrivate::tryComplete(const QString &input) -{ - Q_Q(QQuickComboBox); - QString match; - - const int itemCount = q->count(); - for (int idx = 0; idx < itemCount; ++idx) { - const QString text = q->textAt(idx); - if (!text.startsWith(input, Qt::CaseInsensitive)) - continue; - - // either the first or the shortest match - if (match.isEmpty() || text.length() < match.length()) - match = text; - } - - if (match.isEmpty()) - return input; - - return input + match.mid(input.length()); -} - -void QQuickComboBoxPrivate::setCurrentIndex(int index, Activation activate) -{ - Q_Q(QQuickComboBox); - if (currentIndex == index) - return; - - currentIndex = index; - emit q->currentIndexChanged(); - - if (componentComplete) - updateCurrentTextAndValue(); - - if (activate) - emit q->activated(index); -} - -void QQuickComboBoxPrivate::incrementCurrentIndex() -{ - Q_Q(QQuickComboBox); - if (extra.isAllocated()) - extra->allowComplete = false; - if (isPopupVisible()) { - if (highlightedIndex < q->count() - 1) - setHighlightedIndex(highlightedIndex + 1, Highlight); - } else { - if (currentIndex < q->count() - 1) - setCurrentIndex(currentIndex + 1, Activate); - } - if (extra.isAllocated()) - extra->allowComplete = true; -} - -void QQuickComboBoxPrivate::decrementCurrentIndex() -{ - if (extra.isAllocated()) - extra->allowComplete = false; - if (isPopupVisible()) { - if (highlightedIndex > 0) - setHighlightedIndex(highlightedIndex - 1, Highlight); - } else { - if (currentIndex > 0) - setCurrentIndex(currentIndex - 1, Activate); - } - if (extra.isAllocated()) - extra->allowComplete = true; -} - -void QQuickComboBoxPrivate::updateHighlightedIndex() -{ - setHighlightedIndex(popup->isVisible() ? currentIndex : -1, NoHighlight); -} - -void QQuickComboBoxPrivate::setHighlightedIndex(int index, Highlighting highlight) -{ - Q_Q(QQuickComboBox); - if (highlightedIndex == index) - return; - - highlightedIndex = index; - emit q->highlightedIndexChanged(); - - if (highlight) - emit q->highlighted(index); -} - -void QQuickComboBoxPrivate::keySearch(const QString &text) -{ - const int startIndex = isPopupVisible() ? highlightedIndex : currentIndex; - const int index = match(startIndex + 1, text, Qt::MatchStartsWith | Qt::MatchWrap); - if (index != -1) { - if (isPopupVisible()) - setHighlightedIndex(index, Highlight); - else - setCurrentIndex(index, Activate); - } -} - -int QQuickComboBoxPrivate::match(int start, const QString &text, Qt::MatchFlags flags) const -{ - Q_Q(const QQuickComboBox); - uint matchType = flags & 0x0F; - bool wrap = flags & Qt::MatchWrap; - Qt::CaseSensitivity cs = flags & Qt::MatchCaseSensitive ? Qt::CaseSensitive : Qt::CaseInsensitive; - QRegularExpression::PatternOptions options = flags & Qt::MatchCaseSensitive ? QRegularExpression::NoPatternOption - : QRegularExpression::CaseInsensitiveOption; - int from = start; - int to = q->count(); - - // iterates twice if wrapping - for (int i = 0; (wrap && i < 2) || (!wrap && i < 1); ++i) { - for (int idx = from; idx < to; ++idx) { - QString t = q->textAt(idx); - switch (matchType) { - case Qt::MatchExactly: - if (t == text) - return idx; - break; - case Qt::MatchRegularExpression: { - QRegularExpression rx(QRegularExpression::anchoredPattern(text), options); - if (rx.match(t).hasMatch()) - return idx; - break; - } - case Qt::MatchWildcard: { - QRegularExpression rx(QRegularExpression::wildcardToRegularExpression(text), - options); - if (rx.match(t).hasMatch()) - return idx; - break; - } - case Qt::MatchStartsWith: - if (t.startsWith(text, cs)) - return idx; - break; - case Qt::MatchEndsWith: - if (t.endsWith(text, cs)) - return idx; - break; - case Qt::MatchFixedString: - if (t.compare(text, cs) == 0) - return idx; - break; - case Qt::MatchContains: - default: - if (t.contains(text, cs)) - return idx; - break; - } - } - // prepare for the next iteration - from = 0; - to = start; - } - return -1; -} - -void QQuickComboBoxPrivate::createDelegateModel() -{ - Q_Q(QQuickComboBox); - bool ownedOldModel = ownModel; - QQmlInstanceModel* oldModel = delegateModel; - if (oldModel) { - disconnect(delegateModel, &QQmlInstanceModel::countChanged, this, &QQuickComboBoxPrivate::countChanged); - disconnect(delegateModel, &QQmlInstanceModel::modelUpdated, this, &QQuickComboBoxPrivate::modelUpdated); - disconnect(delegateModel, &QQmlInstanceModel::createdItem, this, &QQuickComboBoxPrivate::createdItem); - } - - ownModel = false; - delegateModel = model.value<QQmlInstanceModel *>(); - - if (!delegateModel && model.isValid()) { - QQmlDelegateModel *dataModel = new QQuickComboBoxDelegateModel(q); - dataModel->setModel(model); - dataModel->setDelegate(delegate); - if (q->isComponentComplete()) - dataModel->componentComplete(); - - ownModel = true; - delegateModel = dataModel; - } - - if (delegateModel) { - connect(delegateModel, &QQmlInstanceModel::countChanged, this, &QQuickComboBoxPrivate::countChanged); - connect(delegateModel, &QQmlInstanceModel::modelUpdated, this, &QQuickComboBoxPrivate::modelUpdated); - connect(delegateModel, &QQmlInstanceModel::createdItem, this, &QQuickComboBoxPrivate::createdItem); - } - - emit q->delegateModelChanged(); - - if (ownedOldModel) - delete oldModel; -} - -void QQuickComboBoxPrivate::handlePress(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickComboBox); - QQuickControlPrivate::handlePress(point, timestamp); - q->setPressed(true); -} - -void QQuickComboBoxPrivate::handleMove(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickComboBox); - QQuickControlPrivate::handleMove(point, timestamp); - q->setPressed(q->contains(point)); -} - -void QQuickComboBoxPrivate::handleRelease(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickComboBox); - QQuickControlPrivate::handleRelease(point, timestamp); - if (pressed) { - q->setPressed(false); - togglePopup(false); - } -} - -void QQuickComboBoxPrivate::handleUngrab() -{ - Q_Q(QQuickComboBox); - QQuickControlPrivate::handleUngrab(); - q->setPressed(false); -} - -static inline QString indicatorName() { return QStringLiteral("indicator"); } - -void QQuickComboBoxPrivate::cancelIndicator() -{ - Q_Q(QQuickComboBox); - quickCancelDeferred(q, indicatorName()); -} - -void QQuickComboBoxPrivate::executeIndicator(bool complete) -{ - Q_Q(QQuickComboBox); - if (indicator.wasExecuted()) - return; - - if (!indicator || complete) - quickBeginDeferred(q, indicatorName(), indicator); - if (complete) - quickCompleteDeferred(q, indicatorName(), indicator); -} - -static inline QString popupName() { return QStringLiteral("popup"); } - -void QQuickComboBoxPrivate::cancelPopup() -{ - Q_Q(QQuickComboBox); - quickCancelDeferred(q, popupName()); -} - -void QQuickComboBoxPrivate::executePopup(bool complete) -{ - Q_Q(QQuickComboBox); - if (popup.wasExecuted()) - return; - - if (!popup || complete) - quickBeginDeferred(q, popupName(), popup); - if (complete) - quickCompleteDeferred(q, popupName(), popup); -} - -void QQuickComboBoxPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - Q_Q(QQuickComboBox); - QQuickControlPrivate::itemImplicitWidthChanged(item); - if (item == indicator) - emit q->implicitIndicatorWidthChanged(); -} - -void QQuickComboBoxPrivate::setInputMethodHints(Qt::InputMethodHints hints, bool force) -{ - Q_Q(QQuickComboBox); - if (!force && hints == q->inputMethodHints()) - return; - - extra.value().inputMethodHints = hints; - emit q->inputMethodHintsChanged(); -} - -void QQuickComboBoxPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - Q_Q(QQuickComboBox); - QQuickControlPrivate::itemImplicitHeightChanged(item); - if (item == indicator) - emit q->implicitIndicatorHeightChanged(); -} - -qreal QQuickComboBoxPrivate::getContentWidth() const -{ - if (componentComplete) { - switch (implicitContentWidthPolicy) { - case QQuickComboBox::WidestText: - return calculateWidestTextWidth(); - case QQuickComboBox::WidestTextWhenCompleted: - if (!hasCalculatedWidestText) - return calculateWidestTextWidth(); - break; - default: - break; - } - } - - return QQuickControlPrivate::getContentWidth(); -} - -qreal QQuickComboBoxPrivate::calculateWidestTextWidth() const -{ - Q_Q(const QQuickComboBox); - if (!componentComplete) - return 0; - - const int count = q->count(); - if (count == 0) - return 0; - - auto textInput = qobject_cast<QQuickTextInput*>(contentItem); - if (!textInput) - return 0; - - qCDebug(lcCalculateWidestTextWidth) << "calculating widest text from" << count << "items..."; - - // Avoid the index check and repeated calls to effectiveTextRole() - // that would result from calling textAt() in a loop. - const QString textRole = effectiveTextRole(); - auto textInputPrivate = QQuickTextInputPrivate::get(textInput); - qreal widest = 0; - for (int i = 0; i < count; ++i) { - const QString text = delegateModel->stringValue(i, textRole); - const qreal textImplicitWidth = textInputPrivate->calculateImplicitWidthForText(text); - widest = qMax(widest, textImplicitWidth); - } - - qCDebug(lcCalculateWidestTextWidth) << "... widest text is" << widest; - return widest; -} - -/*! - \internal - - If the user requested it (and we haven't already done it, depending on the policy), - update the implicit content width to the largest text in the model. -*/ -void QQuickComboBoxPrivate::maybeUpdateImplicitContentWidth() -{ - if (!componentComplete) - return; - - if (implicitContentWidthPolicy == QQuickComboBox::ContentItemImplicitWidth - || (implicitContentWidthPolicy == QQuickComboBox::WidestTextWhenCompleted && hasCalculatedWidestText)) - return; - - updateImplicitContentWidth(); - hasCalculatedWidestText = true; -} - -void QQuickComboBoxPrivate::hideOldPopup(QQuickPopup *popup) -{ - if (!popup) - return; - - qCDebug(lcItemManagement) << "hiding old popup" << popup; - - popup->setVisible(false); - popup->setParentItem(nullptr); -#if QT_CONFIG(accessibility) - // Remove the item from the accessibility tree. - QQuickAccessibleAttached *accessible = accessibleAttached(popup); - if (accessible) - accessible->setIgnored(true); -#endif -} - -QQuickComboBox::QQuickComboBox(QQuickItem *parent) - : QQuickControl(*(new QQuickComboBoxPrivate), parent) -{ - setFocusPolicy(Qt::StrongFocus); - setFlag(QQuickItem::ItemIsFocusScope); - setAcceptedMouseButtons(Qt::LeftButton); -#if QT_CONFIG(cursor) - setCursor(Qt::ArrowCursor); -#endif - Q_D(QQuickComboBox); - d->setInputMethodHints(Qt::ImhNoPredictiveText, true); -} - -QQuickComboBox::~QQuickComboBox() -{ - Q_D(QQuickComboBox); - d->removeImplicitSizeListener(d->indicator); - if (d->popup) { - // Disconnect visibleChanged() to avoid a spurious highlightedIndexChanged() signal - // emission during the destruction of the (visible) popup. (QTBUG-57650) - QObjectPrivate::disconnect(d->popup.data(), &QQuickPopup::visibleChanged, d, &QQuickComboBoxPrivate::popupVisibleChanged); - QQuickComboBoxPrivate::hideOldPopup(d->popup); - d->popup = nullptr; - } -} - -/*! - \readonly - \qmlproperty int QtQuick.Controls::ComboBox::count - - This property holds the number of items in the combo box. -*/ -int QQuickComboBox::count() const -{ - Q_D(const QQuickComboBox); - return d->delegateModel ? d->delegateModel->count() : 0; -} - -/*! - \qmlproperty model QtQuick.Controls::ComboBox::model - - This property holds the model providing data for the combo box. - - \code - ComboBox { - textRole: "key" - model: ListModel { - ListElement { key: "First"; value: 123 } - ListElement { key: "Second"; value: 456 } - ListElement { key: "Third"; value: 789 } - } - } - \endcode - - \sa textRole, {qml-data-models}{Data Models} -*/ -QVariant QQuickComboBox::model() const -{ - Q_D(const QQuickComboBox); - return d->model; -} - -void QQuickComboBox::setModel(const QVariant& m) -{ - Q_D(QQuickComboBox); - QVariant model = m; - if (model.userType() == qMetaTypeId<QJSValue>()) - model = model.value<QJSValue>().toVariant(); - - if (d->model == model) - return; - - if (QAbstractItemModel* aim = qvariant_cast<QAbstractItemModel *>(d->model)) { - QObjectPrivate::disconnect(aim, &QAbstractItemModel::dataChanged, - d, QOverload<>::of(&QQuickComboBoxPrivate::updateCurrentTextAndValue)); - } - if (QAbstractItemModel* aim = qvariant_cast<QAbstractItemModel *>(model)) { - QObjectPrivate::connect(aim, &QAbstractItemModel::dataChanged, - d, QOverload<>::of(&QQuickComboBoxPrivate::updateCurrentTextAndValue)); - } - - d->model = model; - d->createDelegateModel(); - emit countChanged(); - if (isComponentComplete()) { - setCurrentIndex(count() > 0 ? 0 : -1); - d->updateCurrentTextAndValue(); - } - emit modelChanged(); - - d->maybeUpdateImplicitContentWidth(); -} - -/*! - \internal - \qmlproperty model QtQuick.Controls::ComboBox::delegateModel - - This property holds the model providing delegate instances for the combo box. -*/ -QQmlInstanceModel *QQuickComboBox::delegateModel() const -{ - Q_D(const QQuickComboBox); - return d->delegateModel; -} - - -/*! - \readonly - \qmlproperty bool QtQuick.Controls::ComboBox::pressed - - This property holds whether the combo box button is physically pressed. - A button can be pressed by either touch or key events. - - \sa down -*/ -bool QQuickComboBox::isPressed() const -{ - Q_D(const QQuickComboBox); - return d->pressed; -} - -void QQuickComboBox::setPressed(bool pressed) -{ - Q_D(QQuickComboBox); - if (d->pressed == pressed) - return; - - d->pressed = pressed; - emit pressedChanged(); - - if (!d->hasDown) { - setDown(d->pressed || d->isPopupVisible()); - d->hasDown = false; - } -} - -/*! - \readonly - \qmlproperty int QtQuick.Controls::ComboBox::highlightedIndex - - This property holds the index of the highlighted item in the combo box popup list. - - When a highlighted item is activated, the popup is closed, \l currentIndex - is set to \c highlightedIndex, and the value of this property is reset to - \c -1, as there is no longer a highlighted item. - - \sa highlighted(), currentIndex -*/ -int QQuickComboBox::highlightedIndex() const -{ - Q_D(const QQuickComboBox); - return d->highlightedIndex; -} - -/*! - \qmlproperty int QtQuick.Controls::ComboBox::currentIndex - - This property holds the index of the current item in the combo box. - - The default value is \c -1 when \l count is \c 0, and \c 0 otherwise. - - \sa activated(), currentText, highlightedIndex -*/ -int QQuickComboBox::currentIndex() const -{ - Q_D(const QQuickComboBox); - return d->currentIndex; -} - -void QQuickComboBox::setCurrentIndex(int index) -{ - Q_D(QQuickComboBox); - d->hasCurrentIndex = true; - d->setCurrentIndex(index, NoActivate); -} - -/*! - \readonly - \qmlproperty string QtQuick.Controls::ComboBox::currentText - - This property holds the text of the current item in the combo box. - - \sa currentIndex, displayText, textRole, editText -*/ -QString QQuickComboBox::currentText() const -{ - Q_D(const QQuickComboBox); - return d->currentText; -} - -/*! - \qmlproperty string QtQuick.Controls::ComboBox::displayText - - This property holds the text that is displayed on the combo box button. - - By default, the display text presents the current selection. That is, - it follows the text of the current item. However, the default display - text can be overridden with a custom value. - - \code - ComboBox { - currentIndex: 1 - displayText: "Size: " + currentText - model: ["S", "M", "L"] - } - \endcode - - \sa currentText, textRole -*/ -QString QQuickComboBox::displayText() const -{ - Q_D(const QQuickComboBox); - return d->displayText; -} - -void QQuickComboBox::setDisplayText(const QString &text) -{ - Q_D(QQuickComboBox); - d->hasDisplayText = true; - if (d->displayText == text) - return; - - d->displayText = text; - maybeSetAccessibleName(text); - emit displayTextChanged(); -} - -void QQuickComboBox::resetDisplayText() -{ - Q_D(QQuickComboBox); - if (!d->hasDisplayText) - return; - - d->hasDisplayText = false; - d->updateCurrentText(); -} - - -/*! - \qmlproperty string QtQuick.Controls::ComboBox::textRole - - This property holds the model role used for populating the combo box. - - When the model has multiple roles, \c textRole can be set to determine - which role should be displayed. - - \sa model, currentText, displayText, {ComboBox Model Roles} -*/ -QString QQuickComboBox::textRole() const -{ - Q_D(const QQuickComboBox); - return d->textRole; -} - -void QQuickComboBox::setTextRole(const QString &role) -{ - Q_D(QQuickComboBox); - if (d->textRole == role) - return; - - d->textRole = role; - if (isComponentComplete()) - d->updateCurrentText(); - emit textRoleChanged(); -} - -/*! - \since QtQuick.Controls 2.14 (Qt 5.14) - \qmlproperty string QtQuick.Controls::ComboBox::valueRole - - This property holds the model role used for storing the value associated - with each item in the model. - - For an example of how to use this property, see \l {ComboBox Model Roles}. - - \sa model, currentValue -*/ -QString QQuickComboBox::valueRole() const -{ - Q_D(const QQuickComboBox); - return d->valueRole; -} - -void QQuickComboBox::setValueRole(const QString &role) -{ - Q_D(QQuickComboBox); - if (d->valueRole == role) - return; - - d->valueRole = role; - if (isComponentComplete()) - d->updateCurrentValue(); - emit valueRoleChanged(); -} - -/*! - \qmlproperty Component QtQuick.Controls::ComboBox::delegate - - This property holds a delegate that presents an item in the combo box popup. - - It is recommended to use \l ItemDelegate (or any other \l AbstractButton - derivatives) as the delegate. This ensures that the interaction works as - expected, and the popup will automatically close when appropriate. When - other types are used as the delegate, the popup must be closed manually. - For example, if \l MouseArea is used: - - \code - delegate: Rectangle { - // ... - MouseArea { - // ... - onClicked: comboBox.popup.close() - } - } - \endcode - - \sa ItemDelegate, {Customizing ComboBox} -*/ -QQmlComponent *QQuickComboBox::delegate() const -{ - Q_D(const QQuickComboBox); - return d->delegate; -} - -void QQuickComboBox::setDelegate(QQmlComponent* delegate) -{ - Q_D(QQuickComboBox); - if (d->delegate == delegate) - return; - - delete d->delegate; - d->delegate = delegate; - QQmlDelegateModel *delegateModel = qobject_cast<QQmlDelegateModel*>(d->delegateModel); - if (delegateModel) - delegateModel->setDelegate(d->delegate); - emit delegateChanged(); -} - -/*! - \qmlproperty Item QtQuick.Controls::ComboBox::indicator - - This property holds the drop indicator item. - - \sa {Customizing ComboBox} -*/ -QQuickItem *QQuickComboBox::indicator() const -{ - QQuickComboBoxPrivate *d = const_cast<QQuickComboBoxPrivate *>(d_func()); - if (!d->indicator) - d->executeIndicator(); - return d->indicator; -} - -void QQuickComboBox::setIndicator(QQuickItem *indicator) -{ - Q_D(QQuickComboBox); - if (d->indicator == indicator) - return; - - if (!d->indicator.isExecuting()) - d->cancelIndicator(); - - const qreal oldImplicitIndicatorWidth = implicitIndicatorWidth(); - const qreal oldImplicitIndicatorHeight = implicitIndicatorHeight(); - - d->removeImplicitSizeListener(d->indicator); - QQuickControlPrivate::hideOldItem(d->indicator); - d->indicator = indicator; - if (indicator) { - if (!indicator->parentItem()) - indicator->setParentItem(this); - d->addImplicitSizeListener(indicator); - } - - if (!qFuzzyCompare(oldImplicitIndicatorWidth, implicitIndicatorWidth())) - emit implicitIndicatorWidthChanged(); - if (!qFuzzyCompare(oldImplicitIndicatorHeight, implicitIndicatorHeight())) - emit implicitIndicatorHeightChanged(); - if (!d->indicator.isExecuting()) - emit indicatorChanged(); -} - -/*! - \qmlproperty Popup QtQuick.Controls::ComboBox::popup - - This property holds the popup. - - The popup can be opened or closed manually, if necessary: - - \code - onSpecialEvent: comboBox.popup.close() - \endcode - - \sa {Customizing ComboBox} -*/ -QQuickPopup *QQuickComboBox::popup() const -{ - QQuickComboBoxPrivate *d = const_cast<QQuickComboBoxPrivate *>(d_func()); - if (!d->popup) - d->executePopup(isComponentComplete()); - return d->popup; -} - -void QQuickComboBox::setPopup(QQuickPopup *popup) -{ - Q_D(QQuickComboBox); - if (d->popup == popup) - return; - - if (!d->popup.isExecuting()) - d->cancelPopup(); - - if (d->popup) { - QObjectPrivate::disconnect(d->popup.data(), &QQuickPopup::visibleChanged, d, &QQuickComboBoxPrivate::popupVisibleChanged); - QQuickComboBoxPrivate::hideOldPopup(d->popup); - } - if (popup) { - QQuickPopupPrivate::get(popup)->allowVerticalFlip = true; - popup->setClosePolicy(QQuickPopup::CloseOnEscape | QQuickPopup::CloseOnPressOutsideParent); - QObjectPrivate::connect(popup, &QQuickPopup::visibleChanged, d, &QQuickComboBoxPrivate::popupVisibleChanged); - - if (QQuickItemView *itemView = popup->findChild<QQuickItemView *>()) - itemView->setHighlightRangeMode(QQuickItemView::NoHighlightRange); - } - d->popup = popup; - if (!d->popup.isExecuting()) - emit popupChanged(); -} - -/*! - \since QtQuick.Controls 2.1 (Qt 5.8) - \qmlproperty bool QtQuick.Controls::ComboBox::flat - - This property holds whether the combo box button is flat. - - A flat combo box button does not draw a background unless it is interacted - with. In comparison to normal combo boxes, flat combo boxes provide looks - that make them stand out less from the rest of the UI. For instance, when - placing a combo box into a tool bar, it may be desirable to make the combo - box flat so it matches better with the flat looks of tool buttons. - - The default value is \c false. -*/ -bool QQuickComboBox::isFlat() const -{ - Q_D(const QQuickComboBox); - return d->flat; -} - -void QQuickComboBox::setFlat(bool flat) -{ - Q_D(QQuickComboBox); - if (d->flat == flat) - return; - - d->flat = flat; - emit flatChanged(); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty bool QtQuick.Controls::ComboBox::down - - This property holds whether the combo box button is visually down. - - Unless explicitly set, this property is \c true when either \c pressed - or \c popup.visible is \c true. To return to the default value, set this - property to \c undefined. - - \sa pressed, popup -*/ -bool QQuickComboBox::isDown() const -{ - Q_D(const QQuickComboBox); - return d->down; -} - -void QQuickComboBox::setDown(bool down) -{ - Q_D(QQuickComboBox); - d->hasDown = true; - - if (d->down == down) - return; - - d->down = down; - emit downChanged(); -} - -void QQuickComboBox::resetDown() -{ - Q_D(QQuickComboBox); - if (!d->hasDown) - return; - - setDown(d->pressed || d->isPopupVisible()); - d->hasDown = false; -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty bool QtQuick.Controls::ComboBox::editable - - This property holds whether the combo box is editable. - - The default value is \c false. - - \sa validator -*/ -bool QQuickComboBox::isEditable() const -{ - Q_D(const QQuickComboBox); - return d->extra.isAllocated() && d->extra->editable; -} - -void QQuickComboBox::setEditable(bool editable) -{ - Q_D(QQuickComboBox); - if (editable == isEditable()) - return; - - if (d->contentItem) { - if (editable) { - d->contentItem->installEventFilter(this); - if (QQuickTextInput *input = qobject_cast<QQuickTextInput *>(d->contentItem)) { - QObjectPrivate::connect(input, &QQuickTextInput::textChanged, d, &QQuickComboBoxPrivate::updateEditText); - QObjectPrivate::connect(input, &QQuickTextInput::accepted, d, &QQuickComboBoxPrivate::acceptInput); - } -#if QT_CONFIG(cursor) - d->contentItem->setCursor(Qt::IBeamCursor); -#endif - } else { - d->contentItem->removeEventFilter(this); - if (QQuickTextInput *input = qobject_cast<QQuickTextInput *>(d->contentItem)) { - QObjectPrivate::disconnect(input, &QQuickTextInput::textChanged, d, &QQuickComboBoxPrivate::updateEditText); - QObjectPrivate::disconnect(input, &QQuickTextInput::accepted, d, &QQuickComboBoxPrivate::acceptInput); - } -#if QT_CONFIG(cursor) - d->contentItem->unsetCursor(); -#endif - } - } - - d->extra.value().editable = editable; - setAccessibleProperty("editable", editable); - emit editableChanged(); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty string QtQuick.Controls::ComboBox::editText - - This property holds the text in the text field of an editable combo box. - - \sa editable, currentText, displayText -*/ -QString QQuickComboBox::editText() const -{ - Q_D(const QQuickComboBox); - return d->extra.isAllocated() ? d->extra->editText : QString(); -} - -void QQuickComboBox::setEditText(const QString &text) -{ - Q_D(QQuickComboBox); - if (text == editText()) - return; - - d->extra.value().editText = text; - emit editTextChanged(); -} - -void QQuickComboBox::resetEditText() -{ - setEditText(QString()); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty Validator QtQuick.Controls::ComboBox::validator - - This property holds an input text validator for an editable combo box. - - When a validator is set, the text field will only accept input which - leaves the text property in an intermediate state. The \l accepted signal - will only be emitted if the text is in an acceptable state when the - \uicontrol Return or \uicontrol Enter key is pressed. - - The currently supported validators are \l[QtQuick]{IntValidator}, - \l[QtQuick]{DoubleValidator}, and \l[QtQuick]{RegularExpressionValidator}. An - example of using validators is shown below, which allows input of - integers between \c 0 and \c 10 into the text field: - - \code - ComboBox { - model: 10 - editable: true - validator: IntValidator { - top: 9 - bottom: 0 - } - } - \endcode - - \sa acceptableInput, accepted, editable -*/ -QValidator *QQuickComboBox::validator() const -{ - Q_D(const QQuickComboBox); - return d->extra.isAllocated() ? d->extra->validator : nullptr; -} - -void QQuickComboBox::setValidator(QValidator *validator) -{ - Q_D(QQuickComboBox); - if (validator == QQuickComboBox::validator()) - return; - - d->extra.value().validator = validator; -#if QT_CONFIG(validator) - if (validator) - validator->setLocale(d->locale); -#endif - emit validatorChanged(); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty flags QtQuick.Controls::ComboBox::inputMethodHints - - Provides hints to the input method about the expected content of the combo box and how it - should operate. - - The default value is \c Qt.ImhNoPredictiveText. - - \include inputmethodhints.qdocinc -*/ -Qt::InputMethodHints QQuickComboBox::inputMethodHints() const -{ - Q_D(const QQuickComboBox); - return d->extra.isAllocated() ? d->extra->inputMethodHints : Qt::ImhNoPredictiveText; -} - -void QQuickComboBox::setInputMethodHints(Qt::InputMethodHints hints) -{ - Q_D(QQuickComboBox); - d->setInputMethodHints(hints); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty bool QtQuick.Controls::ComboBox::inputMethodComposing - \readonly - - This property holds whether an editable combo box has partial text input from an input method. - - While it is composing, an input method may rely on mouse or key events from the combo box to - edit or commit the partial text. This property can be used to determine when to disable event - handlers that may interfere with the correct operation of an input method. -*/ -bool QQuickComboBox::isInputMethodComposing() const -{ - Q_D(const QQuickComboBox); - return d->contentItem && d->contentItem->property("inputMethodComposing").toBool(); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty bool QtQuick.Controls::ComboBox::acceptableInput - \readonly - - This property holds whether the combo box contains acceptable text in the editable text field. - - If a validator has been set, the value is \c true only if the current text is acceptable - to the validator as a final string (not as an intermediate string). - - \sa validator, accepted -*/ -bool QQuickComboBox::hasAcceptableInput() const -{ - Q_D(const QQuickComboBox); - return d->m_acceptableInput; -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::ComboBox::implicitIndicatorWidth - \readonly - - This property holds the implicit indicator width. - - The value is equal to \c {indicator ? indicator.implicitWidth : 0}. - - This is typically used, together with \l {Control::}{implicitContentWidth} and - \l {Control::}{implicitBackgroundWidth}, to calculate the \l {Item::}{implicitWidth}. - - \sa implicitIndicatorHeight -*/ -qreal QQuickComboBox::implicitIndicatorWidth() const -{ - Q_D(const QQuickComboBox); - if (!d->indicator) - return 0; - return d->indicator->implicitWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::ComboBox::implicitIndicatorHeight - \readonly - - This property holds the implicit indicator height. - - The value is equal to \c {indicator ? indicator.implicitHeight : 0}. - - This is typically used, together with \l {Control::}{implicitContentHeight} and - \l {Control::}{implicitBackgroundHeight}, to calculate the \l {Item::}{implicitHeight}. - - \sa implicitIndicatorWidth -*/ -qreal QQuickComboBox::implicitIndicatorHeight() const -{ - Q_D(const QQuickComboBox); - if (!d->indicator) - return 0; - return d->indicator->implicitHeight(); -} - -/*! - \readonly - \since QtQuick.Controls 2.14 (Qt 5.14) - \qmlproperty string QtQuick.Controls::ComboBox::currentValue - - This property holds the value of the current item in the combo box. - - For an example of how to use this property, see \l {ComboBox Model Roles}. - - \sa currentIndex, currentText, valueRole -*/ -QVariant QQuickComboBox::currentValue() const -{ - Q_D(const QQuickComboBox); - return d->currentValue; -} - -QVariant QQuickComboBox::valueAt(int index) const -{ - Q_D(const QQuickComboBox); - if (!d->isValidIndex(index)) - return QVariant(); - - const QString effectiveValueRole = d->valueRole.isEmpty() ? QStringLiteral("modelData") : d->valueRole; - return d->delegateModel->variantValue(index, effectiveValueRole); -} - -/*! - \since QtQuick.Controls 2.14 (Qt 5.14) - \qmlmethod int QtQuick.Controls::ComboBox::indexOfValue(object value) - - Returns the index of the specified \a value, or \c -1 if no match is found. - - For an example of how to use this method, see \l {ComboBox Model Roles}. - - \include qquickcombobox.qdocinc functions-after-component-completion - - \sa find(), currentValue, currentIndex, valueRole -*/ -int QQuickComboBox::indexOfValue(const QVariant &value) const -{ - for (int i = 0; i < count(); ++i) { - const QVariant ourValue = valueAt(i); - if (value == ourValue) - return i; - } - return -1; -} - -/*! - \since QtQuick.Controls 2.15 (Qt 5.15) - \qmlproperty bool QtQuick.Controls::ComboBox::selectTextByMouse - - This property holds whether the text field for an editable ComboBox - can be selected with the mouse. - - The default value is \c false. -*/ -bool QQuickComboBox::selectTextByMouse() const -{ - Q_D(const QQuickComboBox); - return d->extra.isAllocated() ? d->extra->selectTextByMouse : false; -} - -void QQuickComboBox::setSelectTextByMouse(bool canSelect) -{ - Q_D(QQuickComboBox); - if (canSelect == selectTextByMouse()) - return; - - d->extra.value().selectTextByMouse = canSelect; - emit selectTextByMouseChanged(); -} - -/*! - \since QtQuick.Controls 6.0 (Qt 6.0) - \qmlproperty enumeration QtQuick.Controls::ComboBox::implicitContentWidthPolicy - - This property controls how the \l{Control::}{implicitContentWidth} of the ComboBox is - calculated. - - When the width of a ComboBox is not large enough to display text, that text - is elided. Depending on which parts of the text are elided, this can make - selecting an item difficult for the end user. An efficient way of ensuring - that a ComboBox is wide enough to avoid text being elided is to set a width - that is known to be large enough: - - \code - width: 300 - implicitContentWidthPolicy: ComboBox.ContentItemImplicitWidth - \endcode - - However, it is often not possible to know whether or not a hard-coded value - will be large enough, as the size of text depends on many factors, such as - font family, font size, translations, and so on. - - implicitContentWidthPolicy provides an easy way to control how the - implicitContentWidth is calculated, which in turn affects the - \l{Item::}{implicitWidth} of the ComboBox and ensures that text will not be elided. - - The available values are: - - \value ContentItemImplicitWidth - The implicitContentWidth will default to that of the \l{Control::}{contentItem}. - This is the most efficient option, as no extra text layout is done. - \value WidestText - The implicitContentWidth will be set to the implicit width of the - the largest text for the given \l textRole every time the model - changes. - This option should be used with smaller models, as it can be expensive. - \value WidestTextWhenCompleted - The implicitContentWidth will be set to the implicit width of the - the largest text for the given \l textRole once after - \l {QQmlParserStatus::componentComplete()}{component completion}. - This option should be used with smaller models, as it can be expensive. - - The default value is \c ContentItemImplicitWidth. - - As this property only affects the \c implicitWidth of the ComboBox, setting - an explicit \l{Item::}{width} can still result in eliding. - - \note This feature requires the contentItem to be a type derived from - \l TextInput. - - \note This feature requires text to be laid out, and can therefore be - expensive for large models or models whose contents are updated - frequently. -*/ -QQuickComboBox::ImplicitContentWidthPolicy QQuickComboBox::implicitContentWidthPolicy() const -{ - Q_D(const QQuickComboBox); - return d->implicitContentWidthPolicy; -} - -void QQuickComboBox::setImplicitContentWidthPolicy(QQuickComboBox::ImplicitContentWidthPolicy policy) -{ - Q_D(QQuickComboBox); - if (policy == d->implicitContentWidthPolicy) - return; - - d->implicitContentWidthPolicy = policy; - d->maybeUpdateImplicitContentWidth(); - emit implicitContentWidthPolicyChanged(); -} -/*! - \qmlmethod string QtQuick.Controls::ComboBox::textAt(int index) - - Returns the text for the specified \a index, or an empty string - if the index is out of bounds. - - \include qquickcombobox.qdocinc functions-after-component-completion - For example: - \snippet qtquickcontrols2-combobox-textat.qml textat - - \sa textRole -*/ -QString QQuickComboBox::textAt(int index) const -{ - Q_D(const QQuickComboBox); - if (!d->isValidIndex(index)) - return QString(); - - return d->delegateModel->stringValue(index, d->effectiveTextRole()); -} - -/*! - \qmlmethod int QtQuick.Controls::ComboBox::find(string text, enumeration flags) - - Returns the index of the specified \a text, or \c -1 if no match is found. - - The way the search is performed is defined by the specified match \a flags. By default, - combo box performs case sensitive exact matching (\c Qt.MatchExactly). All other match - types are case-insensitive unless the \c Qt.MatchCaseSensitive flag is also specified. - - \value Qt.MatchExactly The search term matches exactly (default). - \value Qt.MatchRegularExpression The search term matches as a regular expression. - \value Qt.MatchWildcard The search term matches using wildcards. - \value Qt.MatchFixedString The search term matches as a fixed string. - \value Qt.MatchStartsWith The search term matches the start of the item. - \value Qt.MatchEndsWidth The search term matches the end of the item. - \value Qt.MatchContains The search term is contained in the item. - \value Qt.MatchCaseSensitive The search is case sensitive. - - \include qquickcombobox.qdocinc functions-after-component-completion - For example: - \snippet qtquickcontrols2-combobox-find.qml find - - \sa textRole -*/ -int QQuickComboBox::find(const QString &text, Qt::MatchFlags flags) const -{ - Q_D(const QQuickComboBox); - return d->match(0, text, flags); -} - -/*! - \qmlmethod void QtQuick.Controls::ComboBox::incrementCurrentIndex() - - Increments the current index of the combo box, or the highlighted - index if the popup list is visible. - - \sa currentIndex, highlightedIndex -*/ -void QQuickComboBox::incrementCurrentIndex() -{ - Q_D(QQuickComboBox); - d->incrementCurrentIndex(); -} - -/*! - \qmlmethod void QtQuick.Controls::ComboBox::decrementCurrentIndex() - - Decrements the current index of the combo box, or the highlighted - index if the popup list is visible. - - \sa currentIndex, highlightedIndex -*/ -void QQuickComboBox::decrementCurrentIndex() -{ - Q_D(QQuickComboBox); - d->decrementCurrentIndex(); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlmethod void QtQuick.Controls::ComboBox::selectAll() - - Selects all the text in the editable text field of the combo box. - - \sa editText -*/ -void QQuickComboBox::selectAll() -{ - Q_D(QQuickComboBox); - QQuickTextInput *input = qobject_cast<QQuickTextInput *>(d->contentItem); - if (!input) - return; - input->selectAll(); -} - -bool QQuickComboBox::eventFilter(QObject *object, QEvent *event) -{ - Q_D(QQuickComboBox); - switch (event->type()) { - case QEvent::MouseButtonRelease: - if (d->isPopupVisible()) - d->hidePopup(false); - break; - case QEvent::KeyPress: { - QKeyEvent *ke = static_cast<QKeyEvent *>(event); - if (d->filterKeyEvent(ke, false)) - return true; - event->accept(); - if (d->extra.isAllocated()) - d->extra->allowComplete = ke->key() != Qt::Key_Backspace && ke->key() != Qt::Key_Delete; - break; - } - case QEvent::FocusOut: - if (qGuiApp->focusObject() != this && (!d->popup || !d->popup->hasActiveFocus())) { - // Only close the popup if focus was transferred somewhere else - // than to the popup or the popup button (which normally means that - // the user clicked on the popup button to open it, not close it). - d->hidePopup(false); - setPressed(false); - - // The focus left the text field, so if the edit text matches an item in the model, - // change our currentIndex to that. This matches widgets' behavior. - const int indexForEditText = find(d->extra.value().editText, Qt::MatchFixedString); - if (indexForEditText > -1) - setCurrentIndex(indexForEditText); - } - break; -#if QT_CONFIG(im) - case QEvent::InputMethod: - if (d->extra.isAllocated()) - d->extra->allowComplete = !static_cast<QInputMethodEvent*>(event)->commitString().isEmpty(); - break; -#endif - default: - break; - } - return QQuickControl::eventFilter(object, event); -} - -void QQuickComboBox::focusInEvent(QFocusEvent *event) -{ - Q_D(QQuickComboBox); - QQuickControl::focusInEvent(event); - // Setting focus on TextField should not be done when drop down indicator was clicked - // That is why, if focus is not set with key reason, it should not be passed to textEdit by default. - // Focus on Edit Text should be set only intentionally by user. - if ((event->reason() == Qt::TabFocusReason || event->reason() == Qt::BacktabFocusReason || - event->reason() == Qt::ShortcutFocusReason) && d->contentItem && isEditable()) - d->contentItem->forceActiveFocus(event->reason()); -} - -void QQuickComboBox::focusOutEvent(QFocusEvent *event) -{ - Q_D(QQuickComboBox); - QQuickControl::focusOutEvent(event); - - if (qGuiApp->focusObject() != d->contentItem && (!d->popup || !d->popup->hasActiveFocus())) { - // Only close the popup if focus was transferred - // somewhere else than to the popup or the inner line edit (which is - // normally done from QQuickComboBox::focusInEvent). - d->hidePopup(false); - setPressed(false); - } -} - -#if QT_CONFIG(im) -void QQuickComboBox::inputMethodEvent(QInputMethodEvent *event) -{ - Q_D(QQuickComboBox); - QQuickControl::inputMethodEvent(event); - if (!isEditable() && !event->commitString().isEmpty()) - d->keySearch(event->commitString()); - else - event->ignore(); -} -#endif - -void QQuickComboBox::keyPressEvent(QKeyEvent *event) -{ - Q_D(QQuickComboBox); - QQuickControl::keyPressEvent(event); - - switch (event->key()) { - case Qt::Key_Escape: - case Qt::Key_Back: - if (d->isPopupVisible()) - event->accept(); - break; - case Qt::Key_Space: - if (!event->isAutoRepeat()) - setPressed(true); - event->accept(); - break; - case Qt::Key_Enter: - case Qt::Key_Return: - if (d->isPopupVisible()) - setPressed(true); - event->accept(); - break; - case Qt::Key_Up: - d->keyNavigating = true; - d->decrementCurrentIndex(); - event->accept(); - break; - case Qt::Key_Down: - d->keyNavigating = true; - d->incrementCurrentIndex(); - event->accept(); - break; - case Qt::Key_Home: - d->keyNavigating = true; - if (d->isPopupVisible()) - d->setHighlightedIndex(0, Highlight); - else - d->setCurrentIndex(0, Activate); - event->accept(); - break; - case Qt::Key_End: - d->keyNavigating = true; - if (d->isPopupVisible()) - d->setHighlightedIndex(count() - 1, Highlight); - else - d->setCurrentIndex(count() - 1, Activate); - event->accept(); - break; - default: - if (!isEditable() && !event->text().isEmpty()) - d->keySearch(event->text()); - else - event->ignore(); - break; - } -} - -void QQuickComboBox::keyReleaseEvent(QKeyEvent *event) -{ - Q_D(QQuickComboBox); - QQuickControl::keyReleaseEvent(event); - d->keyNavigating = false; - if (event->isAutoRepeat()) - return; - - switch (event->key()) { - case Qt::Key_Space: - if (!isEditable()) - d->togglePopup(true); - setPressed(false); - event->accept(); - break; - case Qt::Key_Enter: - case Qt::Key_Return: - if (!isEditable() || d->isPopupVisible()) - d->hidePopup(d->isPopupVisible()); - setPressed(false); - event->accept(); - break; - case Qt::Key_Escape: - case Qt::Key_Back: - if (d->isPopupVisible()) { - d->hidePopup(false); - setPressed(false); - event->accept(); - } - break; - default: - break; - } -} - -#if QT_CONFIG(wheelevent) -void QQuickComboBox::wheelEvent(QWheelEvent *event) -{ - Q_D(QQuickComboBox); - QQuickControl::wheelEvent(event); - if (d->wheelEnabled && !d->isPopupVisible()) { - if (event->angleDelta().y() > 0) - d->decrementCurrentIndex(); - else - d->incrementCurrentIndex(); - } -} -#endif - -bool QQuickComboBox::event(QEvent *e) -{ - Q_D(QQuickComboBox); - if (e->type() == QEvent::LanguageChange) - d->updateCurrentTextAndValue(); - return QQuickControl::event(e); -} - -void QQuickComboBox::componentComplete() -{ - Q_D(QQuickComboBox); - d->executeIndicator(true); - QQuickControl::componentComplete(); - if (d->popup) - d->executePopup(true); - - if (d->delegateModel && d->ownModel) - static_cast<QQmlDelegateModel *>(d->delegateModel)->componentComplete(); - - if (count() > 0) { - if (!d->hasCurrentIndex && d->currentIndex == -1) - setCurrentIndex(0); - else - d->updateCurrentTextAndValue(); - - // If the widest text was already calculated in the call to - // QQmlDelegateModel::componentComplete() above, then we shouldn't do it here too. - if (!d->hasCalculatedWidestText) - d->maybeUpdateImplicitContentWidth(); - } -} - -void QQuickComboBox::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) -{ - Q_D(QQuickComboBox); - QQuickControl::itemChange(change, value); - if (change == ItemVisibleHasChanged && !value.boolValue) { - d->hidePopup(false); - setPressed(false); - } -} - -void QQuickComboBox::fontChange(const QFont &newFont, const QFont &oldFont) -{ - Q_D(QQuickComboBox); - QQuickControl::fontChange(newFont, oldFont); - d->maybeUpdateImplicitContentWidth(); -} - -void QQuickComboBox::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_D(QQuickComboBox); - if (oldItem) { - oldItem->removeEventFilter(this); - if (QQuickTextInput *oldInput = qobject_cast<QQuickTextInput *>(oldItem)) { - QObjectPrivate::disconnect(oldInput, &QQuickTextInput::accepted, d, &QQuickComboBoxPrivate::acceptInput); - QObjectPrivate::disconnect(oldInput, &QQuickTextInput::textChanged, d, &QQuickComboBoxPrivate::updateEditText); - disconnect(oldInput, &QQuickTextInput::inputMethodComposingChanged, this, &QQuickComboBox::inputMethodComposingChanged); - QObjectPrivate::disconnect(oldInput, &QQuickTextInput::acceptableInputChanged, d, &QQuickComboBoxPrivate::updateAcceptableInput); - } - } - if (newItem && isEditable()) { - newItem->installEventFilter(this); - if (QQuickTextInput *newInput = qobject_cast<QQuickTextInput *>(newItem)) { - QObjectPrivate::connect(newInput, &QQuickTextInput::accepted, d, &QQuickComboBoxPrivate::acceptInput); - QObjectPrivate::connect(newInput, &QQuickTextInput::textChanged, d, &QQuickComboBoxPrivate::updateEditText); - connect(newInput, &QQuickTextInput::inputMethodComposingChanged, this, &QQuickComboBox::inputMethodComposingChanged); - QObjectPrivate::connect(newInput, &QQuickTextInput::acceptableInputChanged, d, &QQuickComboBoxPrivate::updateAcceptableInput); - } -#if QT_CONFIG(cursor) - newItem->setCursor(Qt::IBeamCursor); -#endif - } - - d->updateAcceptableInput(); -} - -void QQuickComboBox::localeChange(const QLocale &newLocale, const QLocale &oldLocale) -{ - QQuickControl::localeChange(newLocale, oldLocale); -#if QT_CONFIG(validator) - if (QValidator *v = validator()) - v->setLocale(newLocale); -#endif -} - -QFont QQuickComboBox::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::ComboBox); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickComboBox::accessibleRole() const -{ - return QAccessible::ComboBox; -} - -void QQuickComboBox::accessibilityActiveChanged(bool active) -{ - Q_D(QQuickComboBox); - QQuickControl::accessibilityActiveChanged(active); - - if (active) { - maybeSetAccessibleName(d->hasDisplayText ? d->displayText : d->currentText); - setAccessibleProperty("editable", isEditable()); - } -} -#endif // - -QT_END_NAMESPACE - -#include "moc_qquickcombobox_p.cpp" diff --git a/src/quicktemplates2/qquickcombobox_p.h b/src/quicktemplates2/qquickcombobox_p.h deleted file mode 100644 index 71dd8366..00000000 --- a/src/quicktemplates2/qquickcombobox_p.h +++ /dev/null @@ -1,272 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKCOMBOBOX_P_H -#define QQUICKCOMBOBOX_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qloggingcategory.h> -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -QT_BEGIN_NAMESPACE - -Q_DECLARE_LOGGING_CATEGORY(lcItemManagement) - -class QValidator; -class QQuickPopup; -class QQmlInstanceModel; -class QQuickComboBoxPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickComboBox : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(int count READ count NOTIFY countChanged FINAL) - Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged FINAL) - Q_PROPERTY(QQmlInstanceModel *delegateModel READ delegateModel NOTIFY delegateModelChanged FINAL) - Q_PROPERTY(bool pressed READ isPressed NOTIFY pressedChanged FINAL) - Q_PROPERTY(int highlightedIndex READ highlightedIndex NOTIFY highlightedIndexChanged FINAL) - Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged FINAL) - Q_PROPERTY(QString currentText READ currentText NOTIFY currentTextChanged FINAL) - Q_PROPERTY(QString displayText READ displayText WRITE setDisplayText RESET resetDisplayText NOTIFY displayTextChanged FINAL) - Q_PROPERTY(QString textRole READ textRole WRITE setTextRole NOTIFY textRoleChanged FINAL) - Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL) - Q_PROPERTY(QQuickItem *indicator READ indicator WRITE setIndicator NOTIFY indicatorChanged FINAL) - Q_PROPERTY(QQuickPopup *popup READ popup WRITE setPopup NOTIFY popupChanged FINAL) - // 2.1 (Qt 5.8) - Q_PROPERTY(bool flat READ isFlat WRITE setFlat NOTIFY flatChanged FINAL REVISION(2, 1)) - // 2.2 (Qt 5.9) - Q_PROPERTY(bool down READ isDown WRITE setDown RESET resetDown NOTIFY downChanged FINAL REVISION(2, 2)) - Q_PROPERTY(bool editable READ isEditable WRITE setEditable NOTIFY editableChanged FINAL REVISION(2, 2)) - Q_PROPERTY(QString editText READ editText WRITE setEditText RESET resetEditText NOTIFY editTextChanged FINAL REVISION(2, 2)) - Q_PROPERTY(QValidator *validator READ validator WRITE setValidator NOTIFY validatorChanged FINAL REVISION(2, 2)) - Q_PROPERTY(Qt::InputMethodHints inputMethodHints READ inputMethodHints WRITE setInputMethodHints NOTIFY inputMethodHintsChanged FINAL REVISION(2, 2)) - Q_PROPERTY(bool inputMethodComposing READ isInputMethodComposing NOTIFY inputMethodComposingChanged FINAL REVISION(2, 2)) - Q_PROPERTY(bool acceptableInput READ hasAcceptableInput NOTIFY acceptableInputChanged FINAL REVISION(2, 2)) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal implicitIndicatorWidth READ implicitIndicatorWidth NOTIFY implicitIndicatorWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitIndicatorHeight READ implicitIndicatorHeight NOTIFY implicitIndicatorHeightChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DeferredPropertyNames", "background,contentItem,indicator,popup") - // 2.14 (Qt 5.14) - Q_PROPERTY(QVariant currentValue READ currentValue NOTIFY currentValueChanged FINAL REVISION(2, 14)) - Q_PROPERTY(QString valueRole READ valueRole WRITE setValueRole NOTIFY valueRoleChanged FINAL REVISION(2, 14)) - // 2.15 (Qt 5.15) - Q_PROPERTY(bool selectTextByMouse READ selectTextByMouse WRITE setSelectTextByMouse NOTIFY selectTextByMouseChanged FINAL REVISION(2, 15)) - // 6.0 (Qt 6.0) - Q_PROPERTY(ImplicitContentWidthPolicy implicitContentWidthPolicy READ implicitContentWidthPolicy - WRITE setImplicitContentWidthPolicy NOTIFY implicitContentWidthPolicyChanged FINAL REVISION(6, 0)) - QML_NAMED_ELEMENT(ComboBox) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickComboBox(QQuickItem *parent = nullptr); - ~QQuickComboBox(); - - int count() const; - - QVariant model() const; - void setModel(const QVariant &model); - QQmlInstanceModel *delegateModel() const; - - bool isPressed() const; - void setPressed(bool pressed); - - int highlightedIndex() const; - - int currentIndex() const; - void setCurrentIndex(int index); - - QString currentText() const; - - QString displayText() const; - void setDisplayText(const QString &text); - void resetDisplayText(); - - QString textRole() const; - void setTextRole(const QString &role); - - QString valueRole() const; - void setValueRole(const QString &role); - - QQmlComponent *delegate() const; - void setDelegate(QQmlComponent *delegate); - - QQuickItem *indicator() const; - void setIndicator(QQuickItem *indicator); - - QQuickPopup *popup() const; - void setPopup(QQuickPopup *popup); - - Q_INVOKABLE QString textAt(int index) const; - Q_INVOKABLE int find(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly) const; - - // 2.1 (Qt 5.8) - bool isFlat() const; - void setFlat(bool flat); - - // 2.2 (Qt 5.9) - bool isDown() const; - void setDown(bool down); - void resetDown(); - - bool isEditable() const; - void setEditable(bool editable); - - QString editText() const; - void setEditText(const QString &text); - void resetEditText(); - - QValidator *validator() const; - void setValidator(QValidator *validator); - - Qt::InputMethodHints inputMethodHints() const; - void setInputMethodHints(Qt::InputMethodHints hints); - - bool isInputMethodComposing() const; - bool hasAcceptableInput() const; - - // 2.5 (Qt 5.12) - qreal implicitIndicatorWidth() const; - qreal implicitIndicatorHeight() const; - - // 2.14 (Qt 5.14) - QVariant currentValue() const; - Q_REVISION(2, 14) Q_INVOKABLE QVariant valueAt(int index) const; - Q_REVISION(2, 14) Q_INVOKABLE int indexOfValue(const QVariant &value) const; - - // 2.15 (Qt 5.15) - bool selectTextByMouse() const; - void setSelectTextByMouse(bool canSelect); - - // 6.0 (Qt 6.0) - enum ImplicitContentWidthPolicy { - ContentItemImplicitWidth, - WidestText, - WidestTextWhenCompleted - }; - Q_ENUM(ImplicitContentWidthPolicy) - - ImplicitContentWidthPolicy implicitContentWidthPolicy() const; - void setImplicitContentWidthPolicy(ImplicitContentWidthPolicy policy); - -public Q_SLOTS: - void incrementCurrentIndex(); - void decrementCurrentIndex(); - Q_REVISION(2, 2) void selectAll(); - -Q_SIGNALS: - void activated(int index); - void highlighted(int index); - void countChanged(); - void modelChanged(); - void delegateModelChanged(); - void pressedChanged(); - void highlightedIndexChanged(); - void currentIndexChanged(); - void currentTextChanged(); - void displayTextChanged(); - void textRoleChanged(); - void delegateChanged(); - void indicatorChanged(); - void popupChanged(); - // 2.1 (Qt 5.8) - Q_REVISION(2, 1) void flatChanged(); - // 2.2 (Qt 5.9) - Q_REVISION(2, 2) void accepted(); - Q_REVISION(2, 2) void downChanged(); - Q_REVISION(2, 2) void editableChanged(); - Q_REVISION(2, 2) void editTextChanged(); - Q_REVISION(2, 2) void validatorChanged(); - Q_REVISION(2, 2) void inputMethodHintsChanged(); - Q_REVISION(2, 2) void inputMethodComposingChanged(); - Q_REVISION(2, 2) void acceptableInputChanged(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void implicitIndicatorWidthChanged(); - Q_REVISION(2, 5) void implicitIndicatorHeightChanged(); - // 2.14 (Qt 5.14) - Q_REVISION(2, 14) void valueRoleChanged(); - Q_REVISION(2, 14) void currentValueChanged(); - // 2.15 (Qt 5.15) - Q_REVISION(2, 15) void selectTextByMouseChanged(); - // 6.0 (Qt 6.0) - Q_REVISION(6, 0) void implicitContentWidthPolicyChanged(); - -protected: - bool eventFilter(QObject *object, QEvent *event) override; - void focusInEvent(QFocusEvent *event) override; - void focusOutEvent(QFocusEvent *event) override; -#if QT_CONFIG(im) - void inputMethodEvent(QInputMethodEvent *event) override; -#endif - void keyPressEvent(QKeyEvent *event) override; - void keyReleaseEvent(QKeyEvent *event) override; -#if QT_CONFIG(wheelevent) - void wheelEvent(QWheelEvent *event) override; -#endif - bool event(QEvent *e) override; - - void componentComplete() override; - void itemChange(ItemChange change, const ItemChangeData &value) override; - void fontChange(const QFont &newFont, const QFont &oldFont) override; - void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; - void localeChange(const QLocale &newLocale, const QLocale &oldLocale) override; - - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; - void accessibilityActiveChanged(bool active) override; -#endif - -private: - Q_DISABLE_COPY(QQuickComboBox) - Q_DECLARE_PRIVATE(QQuickComboBox) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickComboBox) - -#endif // QQUICKCOMBOBOX_P_H diff --git a/src/quicktemplates2/qquickcontainer.cpp b/src/quicktemplates2/qquickcontainer.cpp deleted file mode 100644 index c46d9660..00000000 --- a/src/quicktemplates2/qquickcontainer.cpp +++ /dev/null @@ -1,912 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickcontainer_p.h" -#include "qquickcontainer_p_p.h" - -#include <QtQuick/private/qquickflickable_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Container - \inherits Control -//! \instantiates QQuickContainer - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-containers - \brief Abstract base type providing functionality common to containers. - - Container is the base type of container-like user interface controls that - allow dynamic insertion and removal of items. - - \section2 Using Containers - - Typically, items are statically declared as children of Container, but it - is also possible to \l {addItem}{add}, \l {insertItem}{insert}, - \l {moveItem}{move} and \l {removeItem}{remove} items dynamically. The - items in a container can be accessed using \l itemAt() or - \l contentChildren. - - Most containers have the concept of a "current" item. The current item is - specified via the \l currentIndex property, and can be accessed using the - read-only \l currentItem property. - - The following example illustrates dynamic insertion of items to a \l TabBar, - which is one of the concrete implementations of Container. - - \code - Row { - TabBar { - id: tabBar - - currentIndex: 0 - width: parent.width - addButton.width - - TabButton { text: "TabButton" } - } - - Component { - id: tabButton - TabButton { text: "TabButton" } - } - - Button { - id: addButton - text: "+" - flat: true - onClicked: { - tabBar.addItem(tabButton.createObject(tabBar)) - console.log("added:", tabBar.itemAt(tabBar.count - 1)) - } - } - } - \endcode - - \section2 Managing the Current Index - - When using multiple containers, such as \l TabBar and \l SwipeView, together, - their \l currentIndex properties can be bound to each other to keep them in - sync. When the user interacts with either container, its current index changes - automatically propagate to the other container. - - Notice, however, that assigning a \c currentIndex value in JavaScript removes - the respective binding. In order to retain the bindings, use the following - methods to alter the current index: - - \list - \li \l incrementCurrentIndex() - \li \l decrementCurrentIndex() - \li \l setCurrentIndex() - \endlist - - \code - TabBar { - id: tabBar - currentIndex: swipeView.currentIndex - } - - SwipeView { - id: swipeView - currentIndex: tabBar.currentIndex - } - - Button { - text: qsTr("Home") - onClicked: swipeView.setCurrentIndex(0) - enabled: swipeView.currentIndex != 0 - } - - Button { - text: qsTr("Previous") - onClicked: swipeView.decrementCurrentIndex() - enabled: swipeView.currentIndex > 0 - } - - Button { - text: qsTr("Next") - onClicked: swipeView.incrementCurrentIndex() - enabled: swipeView.currentIndex < swipeView.count - 1 - } - \endcode - - - \section2 Implementing Containers - - Container does not provide any default visualization. It is used to implement - such containers as \l SwipeView and \l TabBar. When implementing a custom - container, the most important part of the API is \l contentModel, which provides - the contained items in a way that it can be used as a delegate model for item - views and repeaters. - - \code - Container { - id: container - - contentItem: ListView { - model: container.contentModel - snapMode: ListView.SnapOneItem - orientation: ListView.Horizontal - } - - Text { - text: "Page 1" - width: container.width - height: container.height - } - - Text { - text: "Page 2" - width: container.width - height: container.height - } - } - \endcode - - Notice how the sizes of the page items are set by hand. This is because the - example uses a plain Container, which does not make any assumptions on the - visual layout. It is typically not necessary to specify sizes for items in - concrete Container implementations, such as \l SwipeView and \l TabBar. - - \sa {Container Controls} -*/ - -static QQuickItem *effectiveContentItem(QQuickItem *item) -{ - QQuickFlickable *flickable = qobject_cast<QQuickFlickable *>(item); - if (flickable) - return flickable->contentItem(); - return item; -} - -void QQuickContainerPrivate::init() -{ - Q_Q(QQuickContainer); - contentModel = new QQmlObjectModel(q); - QObject::connect(contentModel, &QQmlObjectModel::countChanged, q, &QQuickContainer::countChanged); - QObject::connect(contentModel, &QQmlObjectModel::childrenChanged, q, &QQuickContainer::contentChildrenChanged); - connect(q, &QQuickControl::implicitContentWidthChanged, this, &QQuickContainerPrivate::updateContentWidth); - connect(q, &QQuickControl::implicitContentHeightChanged, this, &QQuickContainerPrivate::updateContentHeight); -} - -void QQuickContainerPrivate::cleanup() -{ - Q_Q(QQuickContainer); - // ensure correct destruction order (QTBUG-46798) - const int count = contentModel->count(); - for (int i = 0; i < count; ++i) { - QQuickItem *item = itemAt(i); - if (item) - QQuickItemPrivate::get(item)->removeItemChangeListener(this, changeTypes); - } - - if (contentItem) { - QQuickItem *focusItem = QQuickItemPrivate::get(contentItem)->subFocusItem; - if (focusItem && window) - QQuickWindowPrivate::get(window)->clearFocusInScope(contentItem, focusItem, Qt::OtherFocusReason); - - q->contentItemChange(nullptr, contentItem); - QQuickControlPrivate::hideOldItem(contentItem); - } - - QObject::disconnect(contentModel, &QQmlObjectModel::countChanged, q, &QQuickContainer::countChanged); - QObject::disconnect(contentModel, &QQmlObjectModel::childrenChanged, q, &QQuickContainer::contentChildrenChanged); - delete contentModel; -} - -QQuickItem *QQuickContainerPrivate::itemAt(int index) const -{ - return qobject_cast<QQuickItem *>(contentModel->get(index)); -} - -void QQuickContainerPrivate::insertItem(int index, QQuickItem *item) -{ - Q_Q(QQuickContainer); - if (!q->isContent(item)) - return; - contentData.append(item); - - updatingCurrent = true; - - item->setParentItem(effectiveContentItem(q->contentItem())); - QQuickItemPrivate::get(item)->addItemChangeListener(this, changeTypes); - contentModel->insert(index, item); - - q->itemAdded(index, item); - - int count = contentModel->count(); - for (int i = index + 1; i < count; ++i) - q->itemMoved(i, itemAt(i)); - - if (count == 1 && currentIndex == -1) - q->setCurrentIndex(index); - - updatingCurrent = false; -} - -void QQuickContainerPrivate::moveItem(int from, int to, QQuickItem *item) -{ - Q_Q(QQuickContainer); - int oldCurrent = currentIndex; - contentModel->move(from, to); - - updatingCurrent = true; - - q->itemMoved(to, item); - - if (from < to) { - for (int i = from; i < to; ++i) - q->itemMoved(i, itemAt(i)); - } else { - for (int i = from; i > to; --i) - q->itemMoved(i, itemAt(i)); - } - - if (from == oldCurrent) - q->setCurrentIndex(to); - else if (from < oldCurrent && to >= oldCurrent) - q->setCurrentIndex(oldCurrent - 1); - else if (from > oldCurrent && to <= oldCurrent) - q->setCurrentIndex(oldCurrent + 1); - - updatingCurrent = false; -} - -void QQuickContainerPrivate::removeItem(int index, QQuickItem *item) -{ - Q_Q(QQuickContainer); - if (!q->isContent(item)) - return; - contentData.removeOne(item); - - updatingCurrent = true; - - int count = contentModel->count(); - bool currentChanged = false; - if (index == currentIndex && (index != 0 || count == 1)) { - q->setCurrentIndex(currentIndex - 1); - } else if (index < currentIndex) { - --currentIndex; - currentChanged = true; - } - - QQuickItemPrivate::get(item)->removeItemChangeListener(this, changeTypes); - item->setParentItem(nullptr); - contentModel->remove(index); - --count; - - q->itemRemoved(index, item); - - for (int i = index; i < count; ++i) - q->itemMoved(i, itemAt(i)); - - if (currentChanged) - emit q->currentIndexChanged(); - - updatingCurrent = false; -} - -void QQuickContainerPrivate::reorderItems() -{ - Q_Q(QQuickContainer); - if (!contentItem) - return; - - QList<QQuickItem *> siblings = effectiveContentItem(contentItem)->childItems(); - - int to = 0; - for (int i = 0; i < siblings.count(); ++i) { - QQuickItem* sibling = siblings.at(i); - if (QQuickItemPrivate::get(sibling)->isTransparentForPositioner()) - continue; - int index = contentModel->indexOf(sibling, nullptr); - q->moveItem(index, to++); - } -} - -void QQuickContainerPrivate::_q_currentIndexChanged() -{ - Q_Q(QQuickContainer); - if (!updatingCurrent) - q->setCurrentIndex(contentItem ? contentItem->property("currentIndex").toInt() : -1); -} - -void QQuickContainerPrivate::itemChildAdded(QQuickItem *, QQuickItem *child) -{ - // add dynamically reparented items (eg. by a Repeater) - if (!QQuickItemPrivate::get(child)->isTransparentForPositioner() && !contentData.contains(child)) - insertItem(contentModel->count(), child); -} - -void QQuickContainerPrivate::itemParentChanged(QQuickItem *item, QQuickItem *parent) -{ - // remove dynamically unparented items (eg. by a Repeater) - if (!parent) - removeItem(contentModel->indexOf(item, nullptr), item); -} - -void QQuickContainerPrivate::itemSiblingOrderChanged(QQuickItem *) -{ - if (!componentComplete) - return; - - // reorder the restacked items (eg. by a Repeater) - reorderItems(); -} - -void QQuickContainerPrivate::itemDestroyed(QQuickItem *item) -{ - int index = contentModel->indexOf(item, nullptr); - if (index != -1) - removeItem(index, item); - else - QQuickControlPrivate::itemDestroyed(item); -} - -void QQuickContainerPrivate::contentData_append(QQmlListProperty<QObject> *prop, QObject *obj) -{ - QQuickContainer *q = static_cast<QQuickContainer *>(prop->object); - QQuickContainerPrivate *p = QQuickContainerPrivate::get(q); - QQuickItem *item = qobject_cast<QQuickItem *>(obj); - if (item) { - if (QQuickItemPrivate::get(item)->isTransparentForPositioner()) - item->setParentItem(effectiveContentItem(q->contentItem())); - else if (p->contentModel->indexOf(item, nullptr) == -1) - q->addItem(item); - } else { - p->contentData.append(obj); - } -} - -qsizetype QQuickContainerPrivate::contentData_count(QQmlListProperty<QObject> *prop) -{ - QQuickContainer *q = static_cast<QQuickContainer *>(prop->object); - return QQuickContainerPrivate::get(q)->contentData.count(); -} - -QObject *QQuickContainerPrivate::contentData_at(QQmlListProperty<QObject> *prop, qsizetype index) -{ - QQuickContainer *q = static_cast<QQuickContainer *>(prop->object); - return QQuickContainerPrivate::get(q)->contentData.value(index); -} - -void QQuickContainerPrivate::contentData_clear(QQmlListProperty<QObject> *prop) -{ - QQuickContainer *q = static_cast<QQuickContainer *>(prop->object); - return QQuickContainerPrivate::get(q)->contentData.clear(); -} - -void QQuickContainerPrivate::contentChildren_append(QQmlListProperty<QQuickItem> *prop, QQuickItem *item) -{ - QQuickContainer *q = static_cast<QQuickContainer *>(prop->object); - q->addItem(item); -} - -qsizetype QQuickContainerPrivate::contentChildren_count(QQmlListProperty<QQuickItem> *prop) -{ - QQuickContainer *q = static_cast<QQuickContainer *>(prop->object); - return QQuickContainerPrivate::get(q)->contentModel->count(); -} - -QQuickItem *QQuickContainerPrivate::contentChildren_at(QQmlListProperty<QQuickItem> *prop, qsizetype index) -{ - QQuickContainer *q = static_cast<QQuickContainer *>(prop->object); - return q->itemAt(index); -} - -void QQuickContainerPrivate::contentChildren_clear(QQmlListProperty<QQuickItem> *prop) -{ - QQuickContainer *q = static_cast<QQuickContainer *>(prop->object); - return QQuickContainerPrivate::get(q)->contentModel->clear(); -} - -void QQuickContainerPrivate::updateContentWidth() -{ - Q_Q(QQuickContainer); - if (hasContentWidth || qFuzzyCompare(contentWidth, implicitContentWidth)) - return; - - contentWidth = implicitContentWidth; - emit q->contentWidthChanged(); -} - -void QQuickContainerPrivate::updateContentHeight() -{ - Q_Q(QQuickContainer); - if (hasContentHeight || qFuzzyCompare(contentHeight, implicitContentHeight)) - return; - - contentHeight = implicitContentHeight; - emit q->contentHeightChanged(); -} - -QQuickContainer::QQuickContainer(QQuickItem *parent) - : QQuickControl(*(new QQuickContainerPrivate), parent) -{ - Q_D(QQuickContainer); - d->init(); -} - -QQuickContainer::QQuickContainer(QQuickContainerPrivate &dd, QQuickItem *parent) - : QQuickControl(dd, parent) -{ - Q_D(QQuickContainer); - d->init(); -} - -QQuickContainer::~QQuickContainer() -{ - Q_D(QQuickContainer); - d->cleanup(); -} - -/*! - \qmlproperty int QtQuick.Controls::Container::count - \readonly - - This property holds the number of items. -*/ -int QQuickContainer::count() const -{ - Q_D(const QQuickContainer); - return d->contentModel->count(); -} - -/*! - \qmlmethod Item QtQuick.Controls::Container::itemAt(int index) - - Returns the item at \a index, or \c null if it does not exist. -*/ -QQuickItem *QQuickContainer::itemAt(int index) const -{ - Q_D(const QQuickContainer); - return d->itemAt(index); -} - -/*! - \qmlmethod void QtQuick.Controls::Container::addItem(Item item) - - Adds an \a item. -*/ -void QQuickContainer::addItem(QQuickItem *item) -{ - Q_D(QQuickContainer); - insertItem(d->contentModel->count(), item); -} - -/*! - \qmlmethod void QtQuick.Controls::Container::insertItem(int index, Item item) - - Inserts an \a item at \a index. -*/ -void QQuickContainer::insertItem(int index, QQuickItem *item) -{ - Q_D(QQuickContainer); - if (!item) - return; - const int count = d->contentModel->count(); - if (index < 0 || index > count) - index = count; - - int oldIndex = d->contentModel->indexOf(item, nullptr); - if (oldIndex != -1) { - if (oldIndex < index) - --index; - if (oldIndex != index) - d->moveItem(oldIndex, index, item); - } else { - d->insertItem(index, item); - } -} - -/*! - \qmlmethod void QtQuick.Controls::Container::moveItem(int from, int to) - - Moves an item \a from one index \a to another. -*/ -void QQuickContainer::moveItem(int from, int to) -{ - Q_D(QQuickContainer); - const int count = d->contentModel->count(); - if (from < 0 || from > count - 1) - return; - if (to < 0 || to > count - 1) - to = count - 1; - - if (from != to) - d->moveItem(from, to, d->itemAt(from)); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Container::removeItem(Item item) - - Removes and destroys the specified \a item. -*/ -void QQuickContainer::removeItem(QQuickItem *item) -{ - Q_D(QQuickContainer); - if (!item) - return; - - const int index = d->contentModel->indexOf(item, nullptr); - if (index == -1) - return; - - d->removeItem(index, item); - item->deleteLater(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod Item QtQuick.Controls::Container::takeItem(int index) - - Removes and returns the item at \a index. - - \note The ownership of the item is transferred to the caller. -*/ -QQuickItem *QQuickContainer::takeItem(int index) -{ - Q_D(QQuickContainer); - const int count = d->contentModel->count(); - if (index < 0 || index >= count) - return nullptr; - - QQuickItem *item = itemAt(index); - if (item) - d->removeItem(index, item); - return item; -} - -/*! - \qmlproperty model QtQuick.Controls::Container::contentModel - \readonly - - This property holds the content model of items. - - The content model is provided for visualization purposes. It can be assigned - as a model to a content item that presents the contents of the container. - - \code - Container { - id: container - contentItem: ListView { - model: container.contentModel - } - } - \endcode - - \sa contentData, contentChildren -*/ -QVariant QQuickContainer::contentModel() const -{ - Q_D(const QQuickContainer); - return QVariant::fromValue(d->contentModel); -} - -/*! - \qmlproperty list<Object> QtQuick.Controls::Container::contentData - \qmldefault - - This property holds the list of content data. - - The list contains all objects that have been declared in QML as children - of the container, and also items that have been dynamically added or - inserted using the \l addItem() and \l insertItem() methods, respectively. - - \note Unlike \c contentChildren, \c contentData does include non-visual QML - objects. It is not re-ordered when items are inserted or moved. - - \sa Item::data, contentChildren -*/ -QQmlListProperty<QObject> QQuickContainer::contentData() -{ - Q_D(QQuickContainer); - if (!d->contentItem) - d->executeContentItem(); - return QQmlListProperty<QObject>(this, nullptr, - QQuickContainerPrivate::contentData_append, - QQuickContainerPrivate::contentData_count, - QQuickContainerPrivate::contentData_at, - QQuickContainerPrivate::contentData_clear); -} - -/*! - \qmlproperty list<Item> QtQuick.Controls::Container::contentChildren - - This property holds the list of content children. - - The list contains all items that have been declared in QML as children - of the container, and also items that have been dynamically added or - inserted using the \l addItem() and \l insertItem() methods, respectively. - - \note Unlike \c contentData, \c contentChildren does not include non-visual - QML objects. It is re-ordered when items are inserted or moved. - - \sa Item::children, contentData -*/ -QQmlListProperty<QQuickItem> QQuickContainer::contentChildren() -{ - return QQmlListProperty<QQuickItem>(this, nullptr, - QQuickContainerPrivate::contentChildren_append, - QQuickContainerPrivate::contentChildren_count, - QQuickContainerPrivate::contentChildren_at, - QQuickContainerPrivate::contentChildren_clear); -} - -/*! - \qmlproperty int QtQuick.Controls::Container::currentIndex - - This property holds the index of the current item. - - \sa currentItem, {Managing the Current Index} -*/ -int QQuickContainer::currentIndex() const -{ - Q_D(const QQuickContainer); - return d->currentIndex; -} - -/*! - \qmlmethod void QtQuick.Controls::Container::setCurrentIndex(int index) - - Sets the current \a index of the container. - - This method can be called to set a specific current index without breaking - existing \c currentIndex bindings. - - \sa currentIndex, {Managing the Current Index} -*/ -void QQuickContainer::setCurrentIndex(int index) -{ - Q_D(QQuickContainer); - if (d->currentIndex == index) - return; - - d->currentIndex = index; - emit currentIndexChanged(); - emit currentItemChanged(); -} - -/*! - \qmlmethod void QtQuick.Controls::Container::incrementCurrentIndex() - \since QtQuick.Controls 2.1 (Qt 5.8) - - Increments the current index of the container. - - This method can be called to alter the current index without breaking - existing \c currentIndex bindings. - - \sa currentIndex, {Managing the Current Index} -*/ -void QQuickContainer::incrementCurrentIndex() -{ - Q_D(QQuickContainer); - if (d->currentIndex < count() - 1) - setCurrentIndex(d->currentIndex + 1); -} - -/*! - \qmlmethod void QtQuick.Controls::Container::decrementCurrentIndex() - \since QtQuick.Controls 2.1 (Qt 5.8) - - Decrements the current index of the container. - - This method can be called to alter the current index without breaking - existing \c currentIndex bindings. - - \sa currentIndex, {Managing the Current Index} -*/ -void QQuickContainer::decrementCurrentIndex() -{ - Q_D(QQuickContainer); - if (d->currentIndex > 0) - setCurrentIndex(d->currentIndex - 1); -} - -/*! - \qmlproperty Item QtQuick.Controls::Container::currentItem - \readonly - - This property holds the current item. - - \sa currentIndex -*/ -QQuickItem *QQuickContainer::currentItem() const -{ - Q_D(const QQuickContainer); - return itemAt(d->currentIndex); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Container::contentWidth - - This property holds the content width. It is used for calculating the total - implicit width of the container. - - Unless explicitly overridden, the content width is automatically calculated - based on the implicit width of the items in the container. - - \sa contentHeight -*/ -qreal QQuickContainer::contentWidth() const -{ - Q_D(const QQuickContainer); - return d->contentWidth; -} - -void QQuickContainer::setContentWidth(qreal width) -{ - Q_D(QQuickContainer); - d->hasContentWidth = true; - if (qFuzzyCompare(d->contentWidth, width)) - return; - - d->contentWidth = width; - d->resizeContent(); - emit contentWidthChanged(); -} - -void QQuickContainer::resetContentWidth() -{ - Q_D(QQuickContainer); - if (!d->hasContentWidth) - return; - - d->hasContentWidth = false; - d->updateContentWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Container::contentHeight - - This property holds the content height. It is used for calculating the total - implicit height of the container. - - Unless explicitly overridden, the content height is automatically calculated - based on the implicit height of the items in the container. - - \sa contentWidth -*/ -qreal QQuickContainer::contentHeight() const -{ - Q_D(const QQuickContainer); - return d->contentHeight; -} - -void QQuickContainer::setContentHeight(qreal height) -{ - Q_D(QQuickContainer); - d->hasContentHeight = true; - if (qFuzzyCompare(d->contentHeight, height)) - return; - - d->contentHeight = height; - d->resizeContent(); - emit contentHeightChanged(); -} - -void QQuickContainer::resetContentHeight() -{ - Q_D(QQuickContainer); - if (!d->hasContentHeight) - return; - - d->hasContentHeight = false; - d->updateContentHeight(); -} - -void QQuickContainer::componentComplete() -{ - Q_D(QQuickContainer); - QQuickControl::componentComplete(); - d->reorderItems(); -} - -void QQuickContainer::itemChange(ItemChange change, const ItemChangeData &data) -{ - Q_D(QQuickContainer); - QQuickControl::itemChange(change, data); - if (change == QQuickItem::ItemChildAddedChange && isComponentComplete() && data.item != d->background && data.item != d->contentItem) { - if (!QQuickItemPrivate::get(data.item)->isTransparentForPositioner() && d->contentModel->indexOf(data.item, nullptr) == -1) - addItem(data.item); - } -} - -void QQuickContainer::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_D(QQuickContainer); - QQuickControl::contentItemChange(newItem, oldItem); - - static const int slotIndex = metaObject()->indexOfSlot("_q_currentIndexChanged()"); - - if (oldItem) { - QQuickItemPrivate::get(oldItem)->removeItemChangeListener(d, QQuickItemPrivate::Children | QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); - QQuickItem *oldContentItem = effectiveContentItem(oldItem); - if (oldContentItem != oldItem) - QQuickItemPrivate::get(oldContentItem)->removeItemChangeListener(d, QQuickItemPrivate::Children); - - int signalIndex = oldItem->metaObject()->indexOfSignal("currentIndexChanged()"); - if (signalIndex != -1) - QMetaObject::disconnect(oldItem, signalIndex, this, slotIndex); - } - - if (newItem) { - QQuickItemPrivate::get(newItem)->addItemChangeListener(d, QQuickItemPrivate::Children | QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); - QQuickItem *newContentItem = effectiveContentItem(newItem); - if (newContentItem != newItem) - QQuickItemPrivate::get(newContentItem)->addItemChangeListener(d, QQuickItemPrivate::Children); - - int signalIndex = newItem->metaObject()->indexOfSignal("currentIndexChanged()"); - if (signalIndex != -1) - QMetaObject::connect(newItem, signalIndex, this, slotIndex); - } -} - -bool QQuickContainer::isContent(QQuickItem *item) const -{ - // If the item has a QML context associated to it (it was created in QML), - // we add it to the content model. Otherwise, it's probably the default - // highlight item that is always created by the item views, which we need - // to exclude. - // - // TODO: Find a better way to identify/exclude the highlight item... - return qmlContext(item); -} - -void QQuickContainer::itemAdded(int index, QQuickItem *item) -{ - Q_UNUSED(index); - Q_UNUSED(item); -} - -void QQuickContainer::itemMoved(int index, QQuickItem *item) -{ - Q_UNUSED(index); - Q_UNUSED(item); -} - -void QQuickContainer::itemRemoved(int index, QQuickItem *item) -{ - Q_UNUSED(index); - Q_UNUSED(item); -} - -QT_END_NAMESPACE - -#include "moc_qquickcontainer_p.cpp" diff --git a/src/quicktemplates2/qquickcontainer_p.h b/src/quicktemplates2/qquickcontainer_p.h deleted file mode 100644 index ccfe4c56..00000000 --- a/src/quicktemplates2/qquickcontainer_p.h +++ /dev/null @@ -1,141 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKCONTAINER_P_H -#define QQUICKCONTAINER_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> -#include <QtQml/qqmllist.h> - -QT_BEGIN_NAMESPACE - -class QQuickContainerPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickContainer : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(int count READ count NOTIFY countChanged FINAL) - Q_PROPERTY(QVariant contentModel READ contentModel CONSTANT FINAL) - Q_PROPERTY(QQmlListProperty<QObject> contentData READ contentData) - Q_PROPERTY(QQmlListProperty<QQuickItem> contentChildren READ contentChildren NOTIFY contentChildrenChanged FINAL) - Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged FINAL) - Q_PROPERTY(QQuickItem *currentItem READ currentItem NOTIFY currentItemChanged FINAL) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth RESET resetContentWidth NOTIFY contentWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight RESET resetContentHeight NOTIFY contentHeightChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DefaultProperty", "contentData") - QML_NAMED_ELEMENT(Container) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickContainer(QQuickItem *parent = nullptr); - ~QQuickContainer(); - - int count() const; - Q_INVOKABLE QQuickItem *itemAt(int index) const; - Q_INVOKABLE void addItem(QQuickItem *item); - Q_INVOKABLE void insertItem(int index, QQuickItem *item); - Q_INVOKABLE void moveItem(int from, int to); - Q_INVOKABLE void removeItem(QQuickItem *item); - // 2.3 (Qt 5.10) - Q_REVISION(2, 3) Q_INVOKABLE QQuickItem *takeItem(int index); - - QVariant contentModel() const; - QQmlListProperty<QObject> contentData(); - QQmlListProperty<QQuickItem> contentChildren(); - - int currentIndex() const; - QQuickItem *currentItem() const; - - // 2.5 (Qt 5.12) - qreal contentWidth() const; - void setContentWidth(qreal width); - void resetContentWidth(); - - qreal contentHeight() const; - void setContentHeight(qreal height); - void resetContentHeight(); - -public Q_SLOTS: - void setCurrentIndex(int index); - // 2.1 (Qt 5.8) - Q_REVISION(2, 1) void incrementCurrentIndex(); - Q_REVISION(2, 1) void decrementCurrentIndex(); - -Q_SIGNALS: - void countChanged(); - void contentChildrenChanged(); - void currentIndexChanged(); - void currentItemChanged(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void contentWidthChanged(); - Q_REVISION(2, 5) void contentHeightChanged(); - -protected: - QQuickContainer(QQuickContainerPrivate &dd, QQuickItem *parent); - - void componentComplete() override; - - void itemChange(ItemChange change, const ItemChangeData &data) override; - void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; - - virtual bool isContent(QQuickItem *item) const; - virtual void itemAdded(int index, QQuickItem *item); - virtual void itemMoved(int index, QQuickItem *item); - virtual void itemRemoved(int index, QQuickItem *item); - -private: - Q_DISABLE_COPY(QQuickContainer) - Q_DECLARE_PRIVATE(QQuickContainer) - Q_PRIVATE_SLOT(d_func(), void _q_currentIndexChanged()) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickContainer) - -#endif // QQUICKCONTAINER_P_H diff --git a/src/quicktemplates2/qquickcontainer_p_p.h b/src/quicktemplates2/qquickcontainer_p_p.h deleted file mode 100644 index b9f8eb0f..00000000 --- a/src/quicktemplates2/qquickcontainer_p_p.h +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKCONTAINER_P_P_H -#define QQUICKCONTAINER_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontainer_p.h> -#include <QtQuickTemplates2/private/qquickcontrol_p_p.h> -#include <private/qqmlobjectmodel_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickContainerPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickContainer) - -public: - static QQuickContainerPrivate *get(QQuickContainer *container) - { - return container->d_func(); - } - - void init(); - void cleanup(); - - QQuickItem *itemAt(int index) const; - void insertItem(int index, QQuickItem *item); - void moveItem(int from, int to, QQuickItem *item); - void removeItem(int index, QQuickItem *item); - void reorderItems(); - - void _q_currentIndexChanged(); - - void itemChildAdded(QQuickItem *item, QQuickItem *child) override; - void itemSiblingOrderChanged(QQuickItem *item) override; - void itemParentChanged(QQuickItem *item, QQuickItem *parent) override; - void itemDestroyed(QQuickItem *item) override; - - static void contentData_append(QQmlListProperty<QObject> *prop, QObject *obj); - static qsizetype contentData_count(QQmlListProperty<QObject> *prop); - static QObject *contentData_at(QQmlListProperty<QObject> *prop, qsizetype index); - static void contentData_clear(QQmlListProperty<QObject> *prop); - - static void contentChildren_append(QQmlListProperty<QQuickItem> *prop, QQuickItem *obj); - static qsizetype contentChildren_count(QQmlListProperty<QQuickItem> *prop); - static QQuickItem *contentChildren_at(QQmlListProperty<QQuickItem> *prop, qsizetype index); - static void contentChildren_clear(QQmlListProperty<QQuickItem> *prop); - - void updateContentWidth(); - void updateContentHeight(); - - bool hasContentWidth = false; - bool hasContentHeight = false; - qreal contentWidth = 0; - qreal contentHeight = 0; - QObjectList contentData; - QQmlObjectModel *contentModel = nullptr; - qsizetype currentIndex = -1; - bool updatingCurrent = false; - QQuickItemPrivate::ChangeTypes changeTypes = Destroyed | Parent | SiblingOrder; -}; - -QT_END_NAMESPACE - -#endif // QQUICKCONTAINER_P_P_H diff --git a/src/quicktemplates2/qquickcontentitem.cpp b/src/quicktemplates2/qquickcontentitem.cpp deleted file mode 100644 index 95665f70..00000000 --- a/src/quicktemplates2/qquickcontentitem.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickcontentitem_p.h" - -#include <QtQml/private/qqmlmetatype_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \internal - - Helper class that aids debugging by producing more useful debugging output. -*/ - -QQuickContentItem::QQuickContentItem(QQuickItem *parent) - : QQuickItem(parent) -{ - setObjectName(QQmlMetaType::prettyTypeName(parent)); -} - -QQuickContentItem::QQuickContentItem(const QObject *scope, QQuickItem *parent) - : QQuickItem(parent) -{ - setObjectName(QQmlMetaType::prettyTypeName(scope)); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickcontentitem_p.h b/src/quicktemplates2/qquickcontentitem_p.h deleted file mode 100644 index df0f0b24..00000000 --- a/src/quicktemplates2/qquickcontentitem_p.h +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKCONTENTITEM_P_H -#define QQUICKCONTENTITEM_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/qquickitem.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickContentItem : public QQuickItem -{ - Q_OBJECT - -public: - explicit QQuickContentItem(QQuickItem *parent = nullptr); - explicit QQuickContentItem(const QObject *scope, QQuickItem *parent); - -private: - Q_DISABLE_COPY(QQuickContentItem) -}; - -QT_END_NAMESPACE - -#endif // QQUICKCONTENTITEM_P_H diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp deleted file mode 100644 index 072b6f4c..00000000 --- a/src/quicktemplates2/qquickcontrol.cpp +++ /dev/null @@ -1,2174 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickcontrol_p.h" -#include "qquickcontrol_p_p.h" - -#include <QtGui/qstylehints.h> -#include <QtGui/qguiapplication.h> -#include "qquicklabel_p.h" -#include "qquicklabel_p_p.h" -#include "qquicktextarea_p.h" -#include "qquicktextarea_p_p.h" -#include "qquicktextfield_p.h" -#include "qquicktextfield_p_p.h" -#include "qquickpopup_p.h" -#include "qquickpopupitem_p_p.h" -#include "qquickapplicationwindow_p.h" -#include "qquickdeferredexecute_p_p.h" -#include "qquickcontentitem_p.h" - -#if QT_CONFIG(accessibility) -#include <QtQuick/private/qquickaccessibleattached_p.h> -#endif - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcItemManagement, "qt.quick.controls.control.itemmanagement") - -/*! - \qmltype Control - \inherits Item -//! \instantiates QQuickControl - \inqmlmodule QtQuick.Controls - \since 5.7 - \brief Abstract base type providing functionality common to all controls. - - Control is the base type of user interface controls. It receives input - events from the window system, and paints a representation of itself on - the screen. - - \section1 Control Layout - - The following diagram illustrates the layout of a typical control: - - \image qtquickcontrols2-control.png - - The \l {Item::}{implicitWidth} and \l {Item::}{implicitHeight} of a control - are typically based on the implicit sizes of the background and the content - item plus any insets and paddings. These properties determine how large - the control will be when no explicit \l {Item::}{width} or - \l {Item::}{height} is specified. - - The geometry of the \l {Control::}{contentItem} is determined by the padding. - The following example reserves 10px padding between the boundaries of the - control and its content: - - \code - Control { - padding: 10 - - contentItem: Text { - text: "Content" - } - } - \endcode - - The \l {Control::}{background} item fills the entire width and height of the - control, unless insets or an explicit size have been given for it. Background - insets are useful for extending the touchable/interactive area of a control - without affecting its visual size. This is often used on touch devices to - ensure that a control is not too small to be interacted with by the user. - Insets affect the size of the control, and hence will affect how much space - they take up in a layout, for example. - - Negative insets can be used to make the background larger than the control. - The following example uses negative insets to place a shadow outside the - control's boundaries: - - \code - Control { - topInset: -2 - leftInset: -2 - rightInset: -6 - bottomInset: -6 - - background: BorderImage { - source: ":/images/shadowed-background.png" - } - } - \endcode - - \section1 Event Handling - - All controls, except non-interactive indicators, do not let clicks and - touches through to items below them. For example, the \c console.log() - call in the example below will never be executed when clicking on the - Pane, because the \l MouseArea is below it in the scene: - - \code - MouseArea { - anchors.fill: parent - onClicked: console.log("MouseArea was clicked") - - Pane { - anchors.fill: parent - } - } - \endcode - - \sa ApplicationWindow, Container, {Using Qt Quick Controls types in - property declarations} -*/ - -const QQuickItemPrivate::ChangeTypes QQuickControlPrivate::ImplicitSizeChanges = QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight | QQuickItemPrivate::Destroyed; - -static bool isKeyFocusReason(Qt::FocusReason reason) -{ - return reason == Qt::TabFocusReason || reason == Qt::BacktabFocusReason || reason == Qt::ShortcutFocusReason; -} - -QQuickControlPrivate::QQuickControlPrivate() -{ -#if QT_CONFIG(accessibility) - QAccessible::installActivationObserver(this); -#endif -} - -QQuickControlPrivate::~QQuickControlPrivate() -{ -} - -void QQuickControlPrivate::init() -{ - Q_Q(QQuickControl); - QObject::connect(q, &QQuickItem::baselineOffsetChanged, q, &QQuickControl::baselineOffsetChanged); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -bool QQuickControlPrivate::acceptTouch(const QTouchEvent::TouchPoint &point) -{ - if (point.id() == touchId) - return true; - - if (touchId == -1 && point.state() == QEventPoint::Pressed) { - touchId = point.id(); - return true; - } - - // If the control is on a Flickable that has a pressDelay, then the press is never - // sent as a touch event, therefore we need to check for this case. - if (touchId == -1 && pressWasTouch && point.state() == QEventPoint::Released && - point.position() == previousPressPos) { - return true; - } - return false; -} -#endif - -static void setActiveFocus(QQuickControl *control, Qt::FocusReason reason) -{ - QQuickControlPrivate *d = QQuickControlPrivate::get(control); - if (d->subFocusItem && d->window && d->flags & QQuickItem::ItemIsFocusScope) - QQuickWindowPrivate::get(d->window)->clearFocusInScope(control, d->subFocusItem, reason); - control->forceActiveFocus(reason); -} - -void QQuickControlPrivate::handlePress(const QPointF &, ulong) -{ - Q_Q(QQuickControl); - if ((focusPolicy & Qt::ClickFocus) == Qt::ClickFocus && !QGuiApplication::styleHints()->setFocusOnTouchRelease()) - setActiveFocus(q, Qt::MouseFocusReason); -} - -void QQuickControlPrivate::handleMove(const QPointF &point, ulong) -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_Q(QQuickControl); - q->setHovered(hoverEnabled && q->contains(point)); -#else - Q_UNUSED(point); -#endif -} - -void QQuickControlPrivate::handleRelease(const QPointF &, ulong) -{ - Q_Q(QQuickControl); - if ((focusPolicy & Qt::ClickFocus) == Qt::ClickFocus && QGuiApplication::styleHints()->setFocusOnTouchRelease()) - setActiveFocus(q, Qt::MouseFocusReason); - touchId = -1; - pressWasTouch = false; - previousPressPos = QPointF(); -} - -void QQuickControlPrivate::handleUngrab() -{ - touchId = -1; -} - -void QQuickControlPrivate::mirrorChange() -{ - Q_Q(QQuickControl); - q->mirrorChange(); -} - -void QQuickControlPrivate::setTopPadding(qreal value, bool reset) -{ - Q_Q(QQuickControl); - const QMarginsF oldPadding = getPadding(); - extra.value().topPadding = value; - extra.value().hasTopPadding = !reset; - if ((!reset && !qFuzzyCompare(oldPadding.top(), value)) || (reset && !qFuzzyCompare(oldPadding.top(), getVerticalPadding()))) { - emit q->topPaddingChanged(); - emit q->availableHeightChanged(); - q->paddingChange(getPadding(), oldPadding); - } -} - -void QQuickControlPrivate::setLeftPadding(qreal value, bool reset) -{ - Q_Q(QQuickControl); - const QMarginsF oldPadding = getPadding(); - extra.value().leftPadding = value; - extra.value().hasLeftPadding = !reset; - if ((!reset && !qFuzzyCompare(oldPadding.left(), value)) || (reset && !qFuzzyCompare(oldPadding.left(), getHorizontalPadding()))) { - emit q->leftPaddingChanged(); - emit q->availableWidthChanged(); - q->paddingChange(getPadding(), oldPadding); - } -} - -void QQuickControlPrivate::setRightPadding(qreal value, bool reset) -{ - Q_Q(QQuickControl); - const QMarginsF oldPadding = getPadding(); - extra.value().rightPadding = value; - extra.value().hasRightPadding = !reset; - if ((!reset && !qFuzzyCompare(oldPadding.right(), value)) || (reset && !qFuzzyCompare(oldPadding.right(), getHorizontalPadding()))) { - emit q->rightPaddingChanged(); - emit q->availableWidthChanged(); - q->paddingChange(getPadding(), oldPadding); - } -} - -void QQuickControlPrivate::setBottomPadding(qreal value, bool reset) -{ - Q_Q(QQuickControl); - const QMarginsF oldPadding = getPadding(); - extra.value().bottomPadding = value; - extra.value().hasBottomPadding = !reset; - if ((!reset && !qFuzzyCompare(oldPadding.bottom(), value)) || (reset && !qFuzzyCompare(oldPadding.bottom(), getVerticalPadding()))) { - emit q->bottomPaddingChanged(); - emit q->availableHeightChanged(); - q->paddingChange(getPadding(), oldPadding); - } -} - -void QQuickControlPrivate::setHorizontalPadding(qreal value, bool reset) -{ - Q_Q(QQuickControl); - const QMarginsF oldPadding = getPadding(); - const qreal oldHorizontalPadding = getHorizontalPadding(); - horizontalPadding = value; - hasHorizontalPadding = !reset; - if ((!reset && !qFuzzyCompare(oldHorizontalPadding, value)) || (reset && !qFuzzyCompare(oldHorizontalPadding, padding))) { - const QMarginsF newPadding = getPadding(); - if (!qFuzzyCompare(newPadding.left(), oldPadding.left())) - emit q->leftPaddingChanged(); - if (!qFuzzyCompare(newPadding.right(), oldPadding.right())) - emit q->rightPaddingChanged(); - emit q->horizontalPaddingChanged(); - emit q->availableWidthChanged(); - q->paddingChange(newPadding, oldPadding); - } -} - -void QQuickControlPrivate::setVerticalPadding(qreal value, bool reset) -{ - Q_Q(QQuickControl); - const QMarginsF oldPadding = getPadding(); - const qreal oldVerticalPadding = getVerticalPadding(); - verticalPadding = value; - hasVerticalPadding = !reset; - if ((!reset && !qFuzzyCompare(oldVerticalPadding, value)) || (reset && !qFuzzyCompare(oldVerticalPadding, padding))) { - const QMarginsF newPadding = getPadding(); - if (!qFuzzyCompare(newPadding.top(), oldPadding.top())) - emit q->topPaddingChanged(); - if (!qFuzzyCompare(newPadding.bottom(), oldPadding.bottom())) - emit q->bottomPaddingChanged(); - emit q->verticalPaddingChanged(); - emit q->availableHeightChanged(); - q->paddingChange(newPadding, oldPadding); - } -} - -void QQuickControlPrivate::setTopInset(qreal value, bool reset) -{ - Q_Q(QQuickControl); - const QMarginsF oldInset = getInset(); - extra.value().topInset = value; - extra.value().hasTopInset = !reset; - if (!qFuzzyCompare(oldInset.top(), value)) { - emit q->topInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickControlPrivate::setLeftInset(qreal value, bool reset) -{ - Q_Q(QQuickControl); - const QMarginsF oldInset = getInset(); - extra.value().leftInset = value; - extra.value().hasLeftInset = !reset; - if (!qFuzzyCompare(oldInset.left(), value)) { - emit q->leftInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickControlPrivate::setRightInset(qreal value, bool reset) -{ - Q_Q(QQuickControl); - const QMarginsF oldInset = getInset(); - extra.value().rightInset = value; - extra.value().hasRightInset = !reset; - if (!qFuzzyCompare(oldInset.right(), value)) { - emit q->rightInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickControlPrivate::setBottomInset(qreal value, bool reset) -{ - Q_Q(QQuickControl); - const QMarginsF oldInset = getInset(); - extra.value().bottomInset = value; - extra.value().hasBottomInset = !reset; - if (!qFuzzyCompare(oldInset.bottom(), value)) { - emit q->bottomInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickControlPrivate::resizeBackground() -{ - if (!background) - return; - - resizingBackground = true; - - QQuickItemPrivate *p = QQuickItemPrivate::get(background); - if (((!p->widthValid() || !extra.isAllocated() || !extra->hasBackgroundWidth) && qFuzzyIsNull(background->x())) - || (extra.isAllocated() && (extra->hasLeftInset || extra->hasRightInset))) { - background->setX(getLeftInset()); - background->setWidth(width - getLeftInset() - getRightInset()); - } - if (((!p->heightValid() || !extra.isAllocated() || !extra->hasBackgroundHeight) && qFuzzyIsNull(background->y())) - || (extra.isAllocated() && (extra->hasTopInset || extra->hasBottomInset))) { - background->setY(getTopInset()); - background->setHeight(height - getTopInset() - getBottomInset()); - } - - resizingBackground = false; -} - -void QQuickControlPrivate::resizeContent() -{ - Q_Q(QQuickControl); - if (contentItem) { - contentItem->setPosition(QPointF(q->leftPadding(), q->topPadding())); - contentItem->setSize(QSizeF(q->availableWidth(), q->availableHeight())); - } -} - -QQuickItem *QQuickControlPrivate::getContentItem() -{ - if (!contentItem) - executeContentItem(); - return contentItem; -} - -void QQuickControlPrivate::setContentItem_helper(QQuickItem *item, bool notify) -{ - Q_Q(QQuickControl); - if (contentItem == item) - return; - - if (!contentItem.isExecuting()) - cancelContentItem(); - - QQuickItem *oldContentItem = contentItem; - if (oldContentItem) { - disconnect(oldContentItem, &QQuickItem::baselineOffsetChanged, this, &QQuickControlPrivate::updateBaselineOffset); - removeImplicitSizeListener(oldContentItem); - } - - contentItem = item; - q->contentItemChange(item, oldContentItem); - QQuickControlPrivate::hideOldItem(oldContentItem); - - if (item) { - connect(contentItem.data(), &QQuickItem::baselineOffsetChanged, this, &QQuickControlPrivate::updateBaselineOffset); - if (!item->parentItem()) - item->setParentItem(q); - if (componentComplete) - resizeContent(); - addImplicitSizeListener(contentItem); - } - - updateImplicitContentSize(); - updateBaselineOffset(); - - if (notify && !contentItem.isExecuting()) - emit q->contentItemChanged(); -} - -qreal QQuickControlPrivate::getContentWidth() const -{ - return contentItem ? contentItem->implicitWidth() : 0; -} - -qreal QQuickControlPrivate::getContentHeight() const -{ - return contentItem ? contentItem->implicitHeight() : 0; -} - -void QQuickControlPrivate::updateImplicitContentWidth() -{ - Q_Q(QQuickControl); - const qreal oldWidth = implicitContentWidth; - implicitContentWidth = getContentWidth(); - if (!qFuzzyCompare(implicitContentWidth, oldWidth)) - emit q->implicitContentWidthChanged(); -} - -void QQuickControlPrivate::updateImplicitContentHeight() -{ - Q_Q(QQuickControl); - const qreal oldHeight = implicitContentHeight; - implicitContentHeight = getContentHeight(); - if (!qFuzzyCompare(implicitContentHeight, oldHeight)) - emit q->implicitContentHeightChanged(); -} - -void QQuickControlPrivate::updateImplicitContentSize() -{ - Q_Q(QQuickControl); - const qreal oldWidth = implicitContentWidth; - const qreal oldHeight = implicitContentHeight; - implicitContentWidth = getContentWidth(); - implicitContentHeight = getContentHeight(); - if (!qFuzzyCompare(implicitContentWidth, oldWidth)) - emit q->implicitContentWidthChanged(); - if (!qFuzzyCompare(implicitContentHeight, oldHeight)) - emit q->implicitContentHeightChanged(); -} - -QPalette QQuickControlPrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::System); -} - -#if QT_CONFIG(accessibility) -void QQuickControlPrivate::accessibilityActiveChanged(bool active) -{ - Q_Q(QQuickControl); - return q->accessibilityActiveChanged(active); -} - -QAccessible::Role QQuickControlPrivate::accessibleRole() const -{ - Q_Q(const QQuickControl); - return q->accessibleRole(); -} - -QQuickAccessibleAttached *QQuickControlPrivate::accessibleAttached(const QObject *object) -{ - if (!QAccessible::isActive()) - return nullptr; - return QQuickAccessibleAttached::attachedProperties(object); -} -#endif - -/*! - \internal - - Returns the font that the control w inherits from its ancestors and - QGuiApplication::font. -*/ -QFont QQuickControlPrivate::parentFont(const QQuickItem *item) -{ - QQuickItem *p = item->parentItem(); - while (p) { - if (QQuickControl *control = qobject_cast<QQuickControl *>(p)) - return control->font(); - else if (QQuickLabel *label = qobject_cast<QQuickLabel *>(p)) - return label->font(); - else if (QQuickTextField *textField = qobject_cast<QQuickTextField *>(p)) - return textField->font(); - else if (QQuickTextArea *textArea = qobject_cast<QQuickTextArea *>(p)) - return textArea->font(); - - p = p->parentItem(); - } - - if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(item->window())) - return window->font(); - - return QQuickTheme::font(QQuickTheme::System); -} - -/*! - \internal - - Determine which font is implicitly imposed on this control by its ancestors - and QGuiApplication::font, resolve this against its own font (attributes from - the implicit font are copied over). Then propagate this font to this - control's children. -*/ -void QQuickControlPrivate::resolveFont() -{ - Q_Q(QQuickControl); - inheritFont(parentFont(q)); -} - -void QQuickControlPrivate::inheritFont(const QFont &font) -{ - Q_Q(QQuickControl); - QFont parentFont = extra.isAllocated() ? extra->requestedFont.resolve(font) : font; - parentFont.setResolveMask(extra.isAllocated() ? extra->requestedFont.resolveMask() | font.resolveMask() : font.resolveMask()); - - const QFont defaultFont = q->defaultFont(); - QFont resolvedFont = parentFont.resolve(defaultFont); - - setFont_helper(resolvedFont); -} - -/*! - \internal - - Assign \a font to this control, and propagate it to all children. -*/ -void QQuickControlPrivate::updateFont(const QFont &font) -{ - Q_Q(QQuickControl); - QFont oldFont = resolvedFont; - resolvedFont = font; - - if (oldFont != font) - q->fontChange(font, oldFont); - - QQuickControlPrivate::updateFontRecur(q, font); - - if (oldFont != font) - emit q->fontChanged(); -} - -void QQuickControlPrivate::updateFontRecur(QQuickItem *item, const QFont &font) -{ - const auto childItems = item->childItems(); - for (QQuickItem *child : childItems) { - if (QQuickControl *control = qobject_cast<QQuickControl *>(child)) - QQuickControlPrivate::get(control)->inheritFont(font); - else if (QQuickLabel *label = qobject_cast<QQuickLabel *>(child)) - QQuickLabelPrivate::get(label)->inheritFont(font); - else if (QQuickTextArea *textArea = qobject_cast<QQuickTextArea *>(child)) - QQuickTextAreaPrivate::get(textArea)->inheritFont(font); - else if (QQuickTextField *textField = qobject_cast<QQuickTextField *>(child)) - QQuickTextFieldPrivate::get(textField)->inheritFont(font); - else - QQuickControlPrivate::updateFontRecur(child, font); - } -} - -QLocale QQuickControlPrivate::calcLocale(const QQuickItem *item) -{ - const QQuickItem *p = item; - while (p) { - if (const QQuickControl *control = qobject_cast<const QQuickControl *>(p)) - return control->locale(); - - QVariant v = p->property("locale"); - if (v.isValid() && v.userType() == QMetaType::QLocale) - return v.toLocale(); - - p = p->parentItem(); - } - - if (item) { - if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(item->window())) - return window->locale(); - } - - return QLocale(); -} - -void QQuickControlPrivate::updateLocale(const QLocale &l, bool e) -{ - Q_Q(QQuickControl); - if (!e && hasLocale) - return; - - QLocale old = q->locale(); - hasLocale = e; - if (old != l) { - locale = l; - q->localeChange(l, old); - QQuickControlPrivate::updateLocaleRecur(q, l); - emit q->localeChanged(); - } -} - -void QQuickControlPrivate::updateLocaleRecur(QQuickItem *item, const QLocale &l) -{ - const auto childItems = item->childItems(); - for (QQuickItem *child : childItems) { - if (QQuickControl *control = qobject_cast<QQuickControl *>(child)) - QQuickControlPrivate::get(control)->updateLocale(l, false); - else - updateLocaleRecur(child, l); - } -} - -#if QT_CONFIG(quicktemplates2_hover) -void QQuickControlPrivate::updateHoverEnabled(bool enabled, bool xplicit) -{ - Q_Q(QQuickControl); - if (!xplicit && explicitHoverEnabled) - return; - - bool wasEnabled = q->isHoverEnabled(); - explicitHoverEnabled = xplicit; - if (wasEnabled != enabled) { - q->setAcceptHoverEvents(enabled); - QQuickControlPrivate::updateHoverEnabledRecur(q, enabled); - emit q->hoverEnabledChanged(); - } -} - -void QQuickControlPrivate::updateHoverEnabledRecur(QQuickItem *item, bool enabled) -{ - const auto childItems = item->childItems(); - for (QQuickItem *child : childItems) { - if (QQuickControl *control = qobject_cast<QQuickControl *>(child)) - QQuickControlPrivate::get(control)->updateHoverEnabled(enabled, false); - else - updateHoverEnabledRecur(child, enabled); - } -} - -bool QQuickControlPrivate::calcHoverEnabled(const QQuickItem *item) -{ - const QQuickItem *p = item; - while (p) { - // QQuickPopupItem accepts hover events to avoid leaking them through. - // Don't inherit that to the children of the popup, but fallback to the - // environment variable or style hint. - if (qobject_cast<const QQuickPopupItem *>(p)) - break; - - if (const QQuickControl *control = qobject_cast<const QQuickControl *>(p)) - return control->isHoverEnabled(); - - QVariant v = p->property("hoverEnabled"); - if (v.isValid() && v.userType() == QMetaType::Bool) - return v.toBool(); - - p = p->parentItem(); - } - - bool ok = false; - int env = qEnvironmentVariableIntValue("QT_QUICK_CONTROLS_HOVER_ENABLED", &ok); - if (ok) - return env != 0; - - // TODO: QQuickApplicationWindow::isHoverEnabled() - - return QGuiApplication::styleHints()->useHoverEffects(); -} -#endif - -static inline QString contentItemName() { return QStringLiteral("contentItem"); } - -void QQuickControlPrivate::cancelContentItem() -{ - Q_Q(QQuickControl); - quickCancelDeferred(q, contentItemName()); -} - -void QQuickControlPrivate::executeContentItem(bool complete) -{ - Q_Q(QQuickControl); - if (contentItem.wasExecuted()) - return; - - if (!contentItem || complete) - quickBeginDeferred(q, contentItemName(), contentItem); - if (complete) - quickCompleteDeferred(q, contentItemName(), contentItem); -} - -static inline QString backgroundName() { return QStringLiteral("background"); } - -void QQuickControlPrivate::cancelBackground() -{ - Q_Q(QQuickControl); - quickCancelDeferred(q, backgroundName()); -} - -void QQuickControlPrivate::executeBackground(bool complete) -{ - Q_Q(QQuickControl); - if (background.wasExecuted()) - return; - - if (!background || complete) - quickBeginDeferred(q, backgroundName(), background); - if (complete) - quickCompleteDeferred(q, backgroundName(), background); -} - -void QQuickControlPrivate::hideOldItem(QQuickItem *item) -{ - if (!item) - return; - - qCDebug(lcItemManagement) << "hiding old item" << item; - - item->setVisible(false); - item->setParentItem(nullptr); - -#if QT_CONFIG(accessibility) - // Remove the item from the accessibility tree. - QQuickAccessibleAttached *accessible = accessibleAttached(item); - if (accessible) - accessible->setIgnored(true); -#endif -} - -void QQuickControlPrivate::updateBaselineOffset() -{ - Q_Q(QQuickControl); - if (extra.isAllocated() && extra.value().hasBaselineOffset) - return; - - if (!contentItem) - q->QQuickItem::setBaselineOffset(0); - else - q->QQuickItem::setBaselineOffset(getTopPadding() + contentItem->baselineOffset()); -} - -void QQuickControlPrivate::addImplicitSizeListener(QQuickItem *item, ChangeTypes changes) -{ - addImplicitSizeListener(item, this, changes); -} - -void QQuickControlPrivate::removeImplicitSizeListener(QQuickItem *item, ChangeTypes changes) -{ - removeImplicitSizeListener(item, this, changes); -} - -void QQuickControlPrivate::addImplicitSizeListener(QQuickItem *item, QQuickItemChangeListener *listener, ChangeTypes changes) -{ - if (!item || !listener) - return; - QQuickItemPrivate::get(item)->addItemChangeListener(listener, changes); -} - -void QQuickControlPrivate::removeImplicitSizeListener(QQuickItem *item, QQuickItemChangeListener *listener, ChangeTypes changes) -{ - if (!item || !listener) - return; - QQuickItemPrivate::get(item)->removeItemChangeListener(listener, changes); -} - -void QQuickControlPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - Q_Q(QQuickControl); - if (item == background) - emit q->implicitBackgroundWidthChanged(); - else if (item == contentItem) - updateImplicitContentWidth(); -} - -void QQuickControlPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - Q_Q(QQuickControl); - if (item == background) - emit q->implicitBackgroundHeightChanged(); - else if (item == contentItem) - updateImplicitContentHeight(); -} - -void QQuickControlPrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) -{ - Q_UNUSED(diff); - if (resizingBackground || item != background || !change.sizeChange()) - return; - - QQuickItemPrivate *p = QQuickItemPrivate::get(item); - // Only set hasBackgroundWidth/Height if it was a width/height change, - // otherwise we're prevented from setting a width/height in the future. - if (change.widthChange()) - extra.value().hasBackgroundWidth = p->widthValid(); - if (change.heightChange()) - extra.value().hasBackgroundHeight = p->heightValid(); - resizeBackground(); -} - -void QQuickControlPrivate::itemDestroyed(QQuickItem *item) -{ - Q_Q(QQuickControl); - if (item == background) { - background = nullptr; - emit q->implicitBackgroundWidthChanged(); - emit q->implicitBackgroundHeightChanged(); - } else if (item == contentItem) { - contentItem = nullptr; - updateImplicitContentSize(); - } -} - -QQuickControl::QQuickControl(QQuickItem *parent) - : QQuickItem(*(new QQuickControlPrivate), parent) -{ - Q_D(QQuickControl); - d->init(); -} - -QQuickControl::QQuickControl(QQuickControlPrivate &dd, QQuickItem *parent) - : QQuickItem(dd, parent) -{ - Q_D(QQuickControl); - d->init(); -} - -QQuickControl::~QQuickControl() -{ - Q_D(QQuickControl); - d->removeImplicitSizeListener(d->background, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); - d->removeImplicitSizeListener(d->contentItem); -#if QT_CONFIG(accessibility) - QAccessible::removeActivationObserver(d); -#endif -} - -void QQuickControl::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) -{ - Q_D(QQuickControl); - QQuickItem::itemChange(change, value); - switch (change) { - case ItemEnabledHasChanged: - enabledChange(); - break; - case ItemVisibleHasChanged: -#if QT_CONFIG(quicktemplates2_hover) - if (!value.boolValue) - setHovered(false); -#endif - break; - case ItemSceneChange: - case ItemParentHasChanged: - if ((change == ItemParentHasChanged && value.item) || (change == ItemSceneChange && value.window)) { - d->resolveFont(); - if (!d->hasLocale) - d->updateLocale(QQuickControlPrivate::calcLocale(d->parentItem), false); // explicit=false -#if QT_CONFIG(quicktemplates2_hover) - if (!d->explicitHoverEnabled) - d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem), false); // explicit=false -#endif - } - break; - case ItemActiveFocusHasChanged: - if (isKeyFocusReason(d->focusReason)) - emit visualFocusChanged(); - break; - default: - break; - } -} - -/*! - \qmlproperty font QtQuick.Controls::Control::font - - This property holds the font currently set for the control. - - This property describes the control's requested font. The font is used by the control's - style when rendering standard components, and is available as a means to ensure that custom - controls can maintain consistency with the native platform's native look and feel. It's common - that different platforms, or different styles, define different fonts for an application. - - The default font depends on the system environment. ApplicationWindow maintains a system/theme - font which serves as a default for all controls. There may also be special font defaults for - certain types of controls. You can also set the default font for controls by either: - - \list - \li passing a custom font to QGuiApplication::setFont(), before loading the QML; or - \li specifying the fonts in the \l {Qt Quick Controls 2 Configuration File}{qtquickcontrols2.conf file}. - \endlist - - Finally, the font is matched against Qt's font database to find the best match. - - Control propagates explicit font properties from parent to children. If you change a specific - property on a control's font, that property propagates to all of the control's children, - overriding any system defaults for that property. - - \code - Page { - font.family: "Courier" - - Column { - Label { - text: qsTr("This will use Courier...") - } - - Switch { - text: qsTr("... and so will this") - } - } - } - \endcode - - For the full list of available font properties, see the - \l [QtQuick]{font}{font QML Basic Type} documentation. -*/ -QFont QQuickControl::font() const -{ - Q_D(const QQuickControl); - return d->resolvedFont; -} - -void QQuickControl::setFont(const QFont &font) -{ - Q_D(QQuickControl); - if (d->extra.value().requestedFont.resolveMask() == font.resolveMask() && d->extra.value().requestedFont == font) - return; - - d->extra.value().requestedFont = font; - d->resolveFont(); -} - -void QQuickControl::resetFont() -{ - setFont(QFont()); -} - -/*! - \qmlproperty real QtQuick.Controls::Control::availableWidth - \readonly - - This property holds the width available to the \l contentItem after - deducting horizontal padding from the \l {Item::}{width} of the control. - - \sa {Control Layout}, padding, leftPadding, rightPadding -*/ -qreal QQuickControl::availableWidth() const -{ - return qMax<qreal>(0.0, width() - leftPadding() - rightPadding()); -} - -/*! - \qmlproperty real QtQuick.Controls::Control::availableHeight - \readonly - - This property holds the height available to the \l contentItem after - deducting vertical padding from the \l {Item::}{height} of the control. - - \sa {Control Layout}, padding, topPadding, bottomPadding -*/ -qreal QQuickControl::availableHeight() const -{ - return qMax<qreal>(0.0, height() - topPadding() - bottomPadding()); -} - -/*! - \qmlproperty real QtQuick.Controls::Control::padding - - This property holds the default padding. - - Padding adds a space between each edge of the content item and the - background item, effectively controlling the size of the content item. To - specify a padding value for a specific edge of the control, set its - relevant property: - - \list - \li \l {Control::}{leftPadding} - \li \l {Control::}{rightPadding} - \li \l {Control::}{topPadding} - \li \l {Control::}{bottomPadding} - \endlist - - \note Different styles may specify the default padding for certain controls - in different ways, and these ways may change over time as the design - guidelines that the style is based on evolve. To ensure that these changes - don't affect the padding values you have specified, it is best to use the - most specific properties available. For example, rather than setting - the \l padding property: - - \code - padding: 0 - \endcode - - set each specific property instead: - - \code - leftPadding: 0 - rightPadding: 0 - topPadding: 0 - bottomPadding: 0 - \endcode - - \sa {Control Layout}, availableWidth, availableHeight, topPadding, leftPadding, rightPadding, bottomPadding -*/ -qreal QQuickControl::padding() const -{ - Q_D(const QQuickControl); - return d->padding; -} - -void QQuickControl::setPadding(qreal padding) -{ - Q_D(QQuickControl); - if (qFuzzyCompare(d->padding, padding)) - return; - - const QMarginsF oldPadding = d->getPadding(); - const qreal oldVerticalPadding = d->getVerticalPadding(); - const qreal oldHorizontalPadding = d->getHorizontalPadding(); - - d->padding = padding; - emit paddingChanged(); - - const QMarginsF newPadding = d->getPadding(); - const qreal newVerticalPadding = d->getVerticalPadding(); - const qreal newHorizontalPadding = d->getHorizontalPadding(); - - if (!qFuzzyCompare(newPadding.top(), oldPadding.top())) - emit topPaddingChanged(); - if (!qFuzzyCompare(newPadding.left(), oldPadding.left())) - emit leftPaddingChanged(); - if (!qFuzzyCompare(newPadding.right(), oldPadding.right())) - emit rightPaddingChanged(); - if (!qFuzzyCompare(newPadding.bottom(), oldPadding.bottom())) - emit bottomPaddingChanged(); - if (!qFuzzyCompare(newVerticalPadding, oldVerticalPadding)) - emit verticalPaddingChanged(); - if (!qFuzzyCompare(newHorizontalPadding, oldHorizontalPadding)) - emit horizontalPaddingChanged(); - if (!qFuzzyCompare(newPadding.top(), oldPadding.top()) || !qFuzzyCompare(newPadding.bottom(), oldPadding.bottom())) - emit availableHeightChanged(); - if (!qFuzzyCompare(newPadding.left(), oldPadding.left()) || !qFuzzyCompare(newPadding.right(), oldPadding.right())) - emit availableWidthChanged(); - - paddingChange(newPadding, oldPadding); -} - -void QQuickControl::resetPadding() -{ - setPadding(0); -} - -/*! - \qmlproperty real QtQuick.Controls::Control::topPadding - - This property holds the top padding. Unless explicitly set, the value - is equal to \c verticalPadding. - - \sa {Control Layout}, padding, bottomPadding, verticalPadding, availableHeight -*/ -qreal QQuickControl::topPadding() const -{ - Q_D(const QQuickControl); - return d->getTopPadding(); -} - -void QQuickControl::setTopPadding(qreal padding) -{ - Q_D(QQuickControl); - d->setTopPadding(padding); -} - -void QQuickControl::resetTopPadding() -{ - Q_D(QQuickControl); - d->setTopPadding(0, true); -} - -/*! - \qmlproperty real QtQuick.Controls::Control::leftPadding - - This property holds the left padding. Unless explicitly set, the value - is equal to \c horizontalPadding. - - \sa {Control Layout}, padding, rightPadding, horizontalPadding, availableWidth -*/ -qreal QQuickControl::leftPadding() const -{ - Q_D(const QQuickControl); - return d->getLeftPadding(); -} - -void QQuickControl::setLeftPadding(qreal padding) -{ - Q_D(QQuickControl); - d->setLeftPadding(padding); -} - -void QQuickControl::resetLeftPadding() -{ - Q_D(QQuickControl); - d->setLeftPadding(0, true); -} - -/*! - \qmlproperty real QtQuick.Controls::Control::rightPadding - - This property holds the right padding. Unless explicitly set, the value - is equal to \c horizontalPadding. - - \sa {Control Layout}, padding, leftPadding, horizontalPadding, availableWidth -*/ -qreal QQuickControl::rightPadding() const -{ - Q_D(const QQuickControl); - return d->getRightPadding(); -} - -void QQuickControl::setRightPadding(qreal padding) -{ - Q_D(QQuickControl); - d->setRightPadding(padding); -} - -void QQuickControl::resetRightPadding() -{ - Q_D(QQuickControl); - d->setRightPadding(0, true); -} - -/*! - \qmlproperty real QtQuick.Controls::Control::bottomPadding - - This property holds the bottom padding. Unless explicitly set, the value - is equal to \c verticalPadding. - - \sa {Control Layout}, padding, topPadding, verticalPadding, availableHeight -*/ -qreal QQuickControl::bottomPadding() const -{ - Q_D(const QQuickControl); - return d->getBottomPadding(); -} - -void QQuickControl::setBottomPadding(qreal padding) -{ - Q_D(QQuickControl); - d->setBottomPadding(padding); -} - -void QQuickControl::resetBottomPadding() -{ - Q_D(QQuickControl); - d->setBottomPadding(0, true); -} - -/*! - \qmlproperty real QtQuick.Controls::Control::spacing - - This property holds the spacing. - - Spacing is useful for controls that have multiple or repetitive building - blocks. For example, some styles use spacing to determine the distance - between the text and indicator of \l CheckBox. Spacing is not enforced by - Control, so each style may interpret it differently, and some may ignore it - altogether. -*/ -qreal QQuickControl::spacing() const -{ - Q_D(const QQuickControl); - return d->spacing; -} - -void QQuickControl::setSpacing(qreal spacing) -{ - Q_D(QQuickControl); - if (qFuzzyCompare(d->spacing, spacing)) - return; - - qreal oldSpacing = d->spacing; - d->spacing = spacing; - emit spacingChanged(); - spacingChange(spacing, oldSpacing); -} - -void QQuickControl::resetSpacing() -{ - setSpacing(0); -} - -/*! - \qmlproperty Locale QtQuick.Controls::Control::locale - - This property holds the locale of the control. - - It contains locale specific properties for formatting data and numbers. - Unless a special locale has been set, this is either the parent's locale - or the default locale. - - Control propagates the locale from parent to children. If you change the - control's locale, that locale propagates to all of the control's children, - overriding the system default locale. - - \sa mirrored -*/ -QLocale QQuickControl::locale() const -{ - Q_D(const QQuickControl); - return d->locale; -} - -void QQuickControl::setLocale(const QLocale &locale) -{ - Q_D(QQuickControl); - if (d->hasLocale && d->locale == locale) - return; - - d->updateLocale(locale, true); // explicit=true -} - -void QQuickControl::resetLocale() -{ - Q_D(QQuickControl); - if (!d->hasLocale) - return; - - d->hasLocale = false; - d->updateLocale(QQuickControlPrivate::calcLocale(d->parentItem), false); // explicit=false -} - -/*! - \qmlproperty bool QtQuick.Controls::Control::mirrored - \readonly - - This property holds whether the control is mirrored. - - This property is provided for convenience. A control is considered mirrored - when its visual layout direction is right-to-left; that is, when - \l {LayoutMirroring::enabled}{LayoutMirroring.enabled} is \c true. - - As of Qt 6.2, the \l locale property no longer affects this property. - - \sa {LayoutMirroring}{LayoutMirroring}, {Right-to-left User Interfaces} -*/ -bool QQuickControl::isMirrored() const -{ - Q_D(const QQuickControl); - return d->isMirrored(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::Control::focusPolicy - - This property determines the way the control accepts focus. - - \value Qt.TabFocus The control accepts focus by tabbing. - \value Qt.ClickFocus The control accepts focus by clicking. - \value Qt.StrongFocus The control accepts focus by both tabbing and clicking. - \value Qt.WheelFocus The control accepts focus by tabbing, clicking, and using the mouse wheel. - \value Qt.NoFocus The control does not accept focus. -*/ -Qt::FocusPolicy QQuickControl::focusPolicy() const -{ - Q_D(const QQuickControl); - uint policy = d->focusPolicy; - if (activeFocusOnTab()) - policy |= Qt::TabFocus; - return static_cast<Qt::FocusPolicy>(policy); -} - -void QQuickControl::setFocusPolicy(Qt::FocusPolicy policy) -{ - Q_D(QQuickControl); - if (d->focusPolicy == policy) - return; - - d->focusPolicy = policy; - setActiveFocusOnTab(policy & Qt::TabFocus); - emit focusPolicyChanged(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::Control::focusReason - \readonly - - \include qquickcontrol-focusreason.qdocinc - - \sa visualFocus -*/ -Qt::FocusReason QQuickControl::focusReason() const -{ - Q_D(const QQuickControl); - return d->focusReason; -} - -void QQuickControl::setFocusReason(Qt::FocusReason reason) -{ - Q_D(QQuickControl); - if (d->focusReason == reason) - return; - - Qt::FocusReason oldReason = d->focusReason; - d->focusReason = reason; - emit focusReasonChanged(); - if (isKeyFocusReason(oldReason) != isKeyFocusReason(reason)) - emit visualFocusChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::Control::visualFocus - \readonly - - This property holds whether the control has visual focus. This property - is \c true when the control has active focus and the focus reason is either - \c Qt.TabFocusReason, \c Qt.BacktabFocusReason, or \c Qt.ShortcutFocusReason. - - In general, for visualizing key focus, this property is preferred over - \l Item::activeFocus. This ensures that key focus is only visualized when - interacting with keys - not when interacting via touch or mouse. - - \sa focusReason, Item::activeFocus -*/ -bool QQuickControl::hasVisualFocus() const -{ - Q_D(const QQuickControl); - return d->activeFocus && isKeyFocusReason(d->focusReason); -} - -/*! - \qmlproperty bool QtQuick.Controls::Control::hovered - \readonly - - This property holds whether the control is hovered. - - \sa hoverEnabled -*/ -bool QQuickControl::isHovered() const -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(const QQuickControl); - return d->hovered; -#else - return false; -#endif -} - -void QQuickControl::setHovered(bool hovered) -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(QQuickControl); - if (hovered == d->hovered) - return; - - d->hovered = hovered; - emit hoveredChanged(); - hoverChange(); -#else - Q_UNUSED(hovered); -#endif -} - -/*! - \qmlproperty bool QtQuick.Controls::Control::hoverEnabled - - This property determines whether the control accepts hover events. The default value - is \c Qt.styleHints.useHoverEffects. - - Setting this property propagates the value to all child controls that do not have - \c hoverEnabled explicitly set. - - You can also enable or disable hover effects for all Qt Quick Controls applications - by setting the \c QT_QUICK_CONTROLS_HOVER_ENABLED \l {Supported Environment Variables - in Qt Quick Controls}{environment variable}. - - \sa hovered -*/ -bool QQuickControl::isHoverEnabled() const -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(const QQuickControl); - return d->hoverEnabled; -#else - return false; -#endif -} - -void QQuickControl::setHoverEnabled(bool enabled) -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(QQuickControl); - if (d->explicitHoverEnabled && enabled == d->hoverEnabled) - return; - - d->updateHoverEnabled(enabled, true); // explicit=true -#else - Q_UNUSED(enabled); -#endif -} - -void QQuickControl::resetHoverEnabled() -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(QQuickControl); - if (!d->explicitHoverEnabled) - return; - - d->explicitHoverEnabled = false; - d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem), false); // explicit=false -#endif -} - -/*! - \qmlproperty bool QtQuick.Controls::Control::wheelEnabled - - This property determines whether the control handles wheel events. The default value is \c false. - - \note Care must be taken when enabling wheel events for controls within scrollable items such - as \l Flickable, as the control will consume the events and hence interrupt scrolling of the - Flickable. -*/ -bool QQuickControl::isWheelEnabled() const -{ - Q_D(const QQuickControl); - return d->wheelEnabled; -} - -void QQuickControl::setWheelEnabled(bool enabled) -{ - Q_D(QQuickControl); - if (d->wheelEnabled == enabled) - return; - - d->wheelEnabled = enabled; - emit wheelEnabledChanged(); -} - -/*! - \qmlproperty Item QtQuick.Controls::Control::background - - This property holds the background item. - - \code - Button { - id: control - text: qsTr("Button") - background: Rectangle { - implicitWidth: 100 - implicitHeight: 40 - opacity: enabled ? 1 : 0.3 - color: control.down ? "#d0d0d0" : "#e0e0e0" - } - } - \endcode - - \input qquickcontrol-background.qdocinc notes - - \sa {Control Layout} -*/ -QQuickItem *QQuickControl::background() const -{ - QQuickControlPrivate *d = const_cast<QQuickControlPrivate *>(d_func()); - if (!d->background) - d->executeBackground(); - return d->background; -} - -void QQuickControl::setBackground(QQuickItem *background) -{ - Q_D(QQuickControl); - if (d->background == background) - return; - - if (!d->background.isExecuting()) - d->cancelBackground(); - - const qreal oldImplicitBackgroundWidth = implicitBackgroundWidth(); - const qreal oldImplicitBackgroundHeight = implicitBackgroundHeight(); - - if (d->extra.isAllocated()) { - d->extra.value().hasBackgroundWidth = false; - d->extra.value().hasBackgroundHeight = false; - } - - d->removeImplicitSizeListener(d->background, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); - QQuickControlPrivate::hideOldItem(d->background); - d->background = background; - - if (background) { - background->setParentItem(this); - if (qFuzzyIsNull(background->z())) - background->setZ(-1); - QQuickItemPrivate *p = QQuickItemPrivate::get(background); - if (p->widthValid() || p->heightValid()) { - d->extra.value().hasBackgroundWidth = p->widthValid(); - d->extra.value().hasBackgroundHeight = p->heightValid(); - } - if (isComponentComplete()) - d->resizeBackground(); - d->addImplicitSizeListener(background, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); - } - - if (!qFuzzyCompare(oldImplicitBackgroundWidth, implicitBackgroundWidth())) - emit implicitBackgroundWidthChanged(); - if (!qFuzzyCompare(oldImplicitBackgroundHeight, implicitBackgroundHeight())) - emit implicitBackgroundHeightChanged(); - if (!d->background.isExecuting()) - emit backgroundChanged(); -} - -/*! - \qmlproperty Item QtQuick.Controls::Control::contentItem - - This property holds the visual content item. - - \code - Button { - id: control - text: qsTr("Button") - contentItem: Label { - text: control.text - font: control.font - verticalAlignment: Text.AlignVCenter - } - } - \endcode - - \note The content item is automatically positioned and resized to fit - within the \l padding of the control. Bindings to the - \l[QtQuick]{Item::}{x}, \l[QtQuick]{Item::}{y}, - \l[QtQuick]{Item::}{width}, and \l[QtQuick]{Item::}{height} - properties of the contentItem are not respected. - - \note Most controls use the implicit size of the content item to calculate - the implicit size of the control itself. If you replace the content item - with a custom one, you should also consider providing a sensible implicit - size for it (unless it is an item like \l Text which has its own implicit - size). - - \sa {Control Layout}, padding -*/ -QQuickItem *QQuickControl::contentItem() const -{ - QQuickControlPrivate *d = const_cast<QQuickControlPrivate *>(d_func()); - if (!d->contentItem) - d->setContentItem_helper(d->getContentItem(), false); - return d->contentItem; -} - -void QQuickControl::setContentItem(QQuickItem *item) -{ - Q_D(QQuickControl); - d->setContentItem_helper(item, true); -} - -qreal QQuickControl::baselineOffset() const -{ - Q_D(const QQuickControl); - return d->baselineOffset; -} - -void QQuickControl::setBaselineOffset(qreal offset) -{ - Q_D(QQuickControl); - d->extra.value().hasBaselineOffset = true; - QQuickItem::setBaselineOffset(offset); -} - -void QQuickControl::resetBaselineOffset() -{ - Q_D(QQuickControl); - if (!d->extra.isAllocated() || !d->extra.value().hasBaselineOffset) - return; - - if (d->extra.isAllocated()) - d->extra.value().hasBaselineOffset = false; - d->updateBaselineOffset(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Control::horizontalPadding - - This property holds the horizontal padding. Unless explicitly set, the value - is equal to \c padding. - - \sa {Control Layout}, padding, leftPadding, rightPadding, verticalPadding -*/ -qreal QQuickControl::horizontalPadding() const -{ - Q_D(const QQuickControl); - return d->getHorizontalPadding(); -} - -void QQuickControl::setHorizontalPadding(qreal padding) -{ - Q_D(QQuickControl); - d->setHorizontalPadding(padding); -} - -void QQuickControl::resetHorizontalPadding() -{ - Q_D(QQuickControl); - d->setHorizontalPadding(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Control::verticalPadding - - This property holds the vertical padding. Unless explicitly set, the value - is equal to \c padding. - - \sa {Control Layout}, padding, topPadding, bottomPadding, horizontalPadding -*/ -qreal QQuickControl::verticalPadding() const -{ - Q_D(const QQuickControl); - return d->getVerticalPadding(); -} - -void QQuickControl::setVerticalPadding(qreal padding) -{ - Q_D(QQuickControl); - d->setVerticalPadding(padding); -} - -void QQuickControl::resetVerticalPadding() -{ - Q_D(QQuickControl); - d->setVerticalPadding(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Control::implicitContentWidth - \readonly - - This property holds the implicit content width. - - For basic controls, the value is equal to \c {contentItem ? contentItem.implicitWidth : 0}. - For types that inherit Container or Pane, the value is calculated based on the content children. - - This is typically used, together with \l implicitBackgroundWidth, to calculate - the \l {Item::}{implicitWidth}: - - \code - Control { - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - } - \endcode - - \sa implicitContentHeight, implicitBackgroundWidth -*/ -qreal QQuickControl::implicitContentWidth() const -{ - Q_D(const QQuickControl); - return d->implicitContentWidth; -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Control::implicitContentHeight - \readonly - - This property holds the implicit content height. - - For basic controls, the value is equal to \c {contentItem ? contentItem.implicitHeight : 0}. - For types that inherit Container or Pane, the value is calculated based on the content children. - - This is typically used, together with \l implicitBackgroundHeight, to calculate - the \l {Item::}{implicitHeight}: - - \code - Control { - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - } - \endcode - - \sa implicitContentWidth, implicitBackgroundHeight -*/ -qreal QQuickControl::implicitContentHeight() const -{ - Q_D(const QQuickControl); - return d->implicitContentHeight; -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Control::implicitBackgroundWidth - \readonly - - This property holds the implicit background width. - - The value is equal to \c {background ? background.implicitWidth : 0}. - - This is typically used, together with \l implicitContentWidth, to calculate - the \l {Item::}{implicitWidth}: - - \code - Control { - implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, - implicitContentWidth + leftPadding + rightPadding) - } - \endcode - - \sa implicitBackgroundHeight, implicitContentWidth -*/ -qreal QQuickControl::implicitBackgroundWidth() const -{ - Q_D(const QQuickControl); - if (!d->background) - return 0; - return d->background->implicitWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Control::implicitBackgroundHeight - \readonly - - This property holds the implicit background height. - - The value is equal to \c {background ? background.implicitHeight : 0}. - - This is typically used, together with \l implicitContentHeight, to calculate - the \l {Item::}{implicitHeight}: - - \code - Control { - implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, - implicitContentHeight + topPadding + bottomPadding) - } - \endcode - - \sa implicitBackgroundWidth, implicitContentHeight -*/ -qreal QQuickControl::implicitBackgroundHeight() const -{ - Q_D(const QQuickControl); - if (!d->background) - return 0; - return d->background->implicitHeight(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Control::topInset - - This property holds the top inset for the background. - - \sa {Control Layout}, bottomInset -*/ -qreal QQuickControl::topInset() const -{ - Q_D(const QQuickControl); - return d->getTopInset(); -} - -void QQuickControl::setTopInset(qreal inset) -{ - Q_D(QQuickControl); - d->setTopInset(inset); -} - -void QQuickControl::resetTopInset() -{ - Q_D(QQuickControl); - d->setTopInset(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Control::leftInset - - This property holds the left inset for the background. - - \sa {Control Layout}, rightInset -*/ -qreal QQuickControl::leftInset() const -{ - Q_D(const QQuickControl); - return d->getLeftInset(); -} - -void QQuickControl::setLeftInset(qreal inset) -{ - Q_D(QQuickControl); - d->setLeftInset(inset); -} - -void QQuickControl::resetLeftInset() -{ - Q_D(QQuickControl); - d->setLeftInset(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Control::rightInset - - This property holds the right inset for the background. - - \sa {Control Layout}, leftInset -*/ -qreal QQuickControl::rightInset() const -{ - Q_D(const QQuickControl); - return d->getRightInset(); -} - -void QQuickControl::setRightInset(qreal inset) -{ - Q_D(QQuickControl); - d->setRightInset(inset); -} - -void QQuickControl::resetRightInset() -{ - Q_D(QQuickControl); - d->setRightInset(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Control::bottomInset - - This property holds the bottom inset for the background. - - \sa {Control Layout}, topInset -*/ -qreal QQuickControl::bottomInset() const -{ - Q_D(const QQuickControl); - return d->getBottomInset(); -} - -void QQuickControl::setBottomInset(qreal inset) -{ - Q_D(QQuickControl); - d->setBottomInset(inset); -} - -void QQuickControl::resetBottomInset() -{ - Q_D(QQuickControl); - d->setBottomInset(0, true); -} - -void QQuickControl::classBegin() -{ - Q_D(QQuickControl); - QQuickItem::classBegin(); - d->resolveFont(); -} - -void QQuickControl::componentComplete() -{ - Q_D(QQuickControl); - d->executeBackground(true); - d->executeContentItem(true); - QQuickItem::componentComplete(); - d->resizeBackground(); - d->resizeContent(); - d->updateBaselineOffset(); - if (!d->hasLocale) - d->locale = QQuickControlPrivate::calcLocale(d->parentItem); -#if QT_CONFIG(quicktemplates2_hover) - if (!d->explicitHoverEnabled) - setAcceptHoverEvents(QQuickControlPrivate::calcHoverEnabled(d->parentItem)); -#endif -#if QT_CONFIG(accessibility) - if (QAccessible::isActive()) - accessibilityActiveChanged(true); -#endif -} - -QFont QQuickControl::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::System); -} - -void QQuickControl::focusInEvent(QFocusEvent *event) -{ - QQuickItem::focusInEvent(event); - setFocusReason(event->reason()); -} - -void QQuickControl::focusOutEvent(QFocusEvent *event) -{ - QQuickItem::focusOutEvent(event); - setFocusReason(event->reason()); -} - -#if QT_CONFIG(quicktemplates2_hover) -void QQuickControl::hoverEnterEvent(QHoverEvent *event) -{ - Q_D(QQuickControl); - setHovered(d->hoverEnabled); - event->setAccepted(d->hoverEnabled); -} - -void QQuickControl::hoverMoveEvent(QHoverEvent *event) -{ - Q_D(QQuickControl); - setHovered(d->hoverEnabled && contains(event->position())); - event->setAccepted(d->hoverEnabled); -} - -void QQuickControl::hoverLeaveEvent(QHoverEvent *event) -{ - Q_D(QQuickControl); - setHovered(false); - event->setAccepted(d->hoverEnabled); -} -#endif - -void QQuickControl::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickControl); - d->handlePress(event->position(), event->timestamp()); - if (event->source() == Qt::MouseEventSynthesizedByQt) { - d->pressWasTouch = true; - d->previousPressPos = event->position(); - } - event->accept(); -} - -void QQuickControl::mouseMoveEvent(QMouseEvent *event) -{ - Q_D(QQuickControl); - d->handleMove(event->position(), event->timestamp()); - event->accept(); -} - -void QQuickControl::mouseReleaseEvent(QMouseEvent *event) -{ - Q_D(QQuickControl); - d->handleRelease(event->position(), event->timestamp()); - event->accept(); -} - -void QQuickControl::mouseUngrabEvent() -{ - Q_D(QQuickControl); - d->handleUngrab(); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickControl::touchEvent(QTouchEvent *event) -{ - Q_D(QQuickControl); - switch (event->type()) { - case QEvent::TouchBegin: - case QEvent::TouchUpdate: - case QEvent::TouchEnd: - for (const QTouchEvent::TouchPoint &point : event->points()) { - if (!d->acceptTouch(point)) - continue; - - switch (point.state()) { - case QEventPoint::Pressed: - d->handlePress(point.position(), event->timestamp()); - break; - case QEventPoint::Updated: - d->handleMove(point.position(), event->timestamp()); - break; - case QEventPoint::Released: - d->handleRelease(point.position(), event->timestamp()); - break; - default: - break; - } - } - break; - - case QEvent::TouchCancel: - d->handleUngrab(); - break; - - default: - QQuickItem::touchEvent(event); - break; - } -} - -void QQuickControl::touchUngrabEvent() -{ - Q_D(QQuickControl); - d->handleUngrab(); -} -#endif - -#if QT_CONFIG(wheelevent) -void QQuickControl::wheelEvent(QWheelEvent *event) -{ - Q_D(QQuickControl); - if ((d->focusPolicy & Qt::WheelFocus) == Qt::WheelFocus) - setActiveFocus(this, Qt::MouseFocusReason); - - event->setAccepted(d->wheelEnabled); -} -#endif - -void QQuickControl::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickControl); - QQuickItem::geometryChange(newGeometry, oldGeometry); - d->resizeBackground(); - d->resizeContent(); - if (!qFuzzyCompare(newGeometry.width(), oldGeometry.width())) - emit availableWidthChanged(); - if (!qFuzzyCompare(newGeometry.height(), oldGeometry.height())) - emit availableHeightChanged(); -} - -void QQuickControl::enabledChange() -{ -} - -void QQuickControl::fontChange(const QFont &newFont, const QFont &oldFont) -{ - Q_UNUSED(newFont); - Q_UNUSED(oldFont); -} - -#if QT_CONFIG(quicktemplates2_hover) -void QQuickControl::hoverChange() -{ -} -#endif - -void QQuickControl::mirrorChange() -{ - emit mirroredChanged(); -} - -void QQuickControl::spacingChange(qreal newSpacing, qreal oldSpacing) -{ - Q_UNUSED(newSpacing); - Q_UNUSED(oldSpacing); -} - -void QQuickControl::paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) -{ - Q_D(QQuickControl); - Q_UNUSED(newPadding); - Q_UNUSED(oldPadding); - d->resizeContent(); - d->updateBaselineOffset(); -} - -void QQuickControl::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_UNUSED(newItem); - Q_UNUSED(oldItem); -} - -void QQuickControl::localeChange(const QLocale &newLocale, const QLocale &oldLocale) -{ - Q_UNUSED(newLocale); - Q_UNUSED(oldLocale); -} - -void QQuickControl::insetChange(const QMarginsF &newInset, const QMarginsF &oldInset) -{ - Q_D(QQuickControl); - Q_UNUSED(newInset); - Q_UNUSED(oldInset); - d->resizeBackground(); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickControl::accessibleRole() const -{ - return QAccessible::NoRole; -} - -void QQuickControl::accessibilityActiveChanged(bool active) -{ - if (!active) - return; - - QQuickAccessibleAttached *accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(this, true)); - Q_ASSERT(accessibleAttached); - accessibleAttached->setRole(accessibleRole()); -} -#endif - -QString QQuickControl::accessibleName() const -{ -#if QT_CONFIG(accessibility) - if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this)) - return accessibleAttached->name(); -#endif - return QString(); -} - -void QQuickControl::maybeSetAccessibleName(const QString &name) -{ -#if QT_CONFIG(accessibility) - if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this)) { - if (!accessibleAttached->wasNameExplicitlySet()) - accessibleAttached->setNameImplicitly(name); - } -#else - Q_UNUSED(name); -#endif -} - -QVariant QQuickControl::accessibleProperty(const char *propertyName) -{ -#if QT_CONFIG(accessibility) - if (QAccessible::isActive()) - return QQuickAccessibleAttached::property(this, propertyName); -#endif - Q_UNUSED(propertyName); - return QVariant(); -} - -bool QQuickControl::setAccessibleProperty(const char *propertyName, const QVariant &value) -{ -#if QT_CONFIG(accessibility) - if (QAccessible::isActive()) - return QQuickAccessibleAttached::setProperty(this, propertyName, value); -#endif - Q_UNUSED(propertyName); - Q_UNUSED(value); - return false; -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickcontrol_p.h b/src/quicktemplates2/qquickcontrol_p.h deleted file mode 100644 index 79fb3915..00000000 --- a/src/quicktemplates2/qquickcontrol_p.h +++ /dev/null @@ -1,320 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKCONTROL_P_H -#define QQUICKCONTROL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qlocale.h> -#include <QtGui/qpalette.h> -#include <QtQuick/qquickitem.h> -#include <QtQuick/private/qquickpalette_p.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickControlPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickControl : public QQuickItem -{ - Q_OBJECT - Q_PROPERTY(QFont font READ font WRITE setFont RESET resetFont NOTIFY fontChanged FINAL) - Q_PROPERTY(qreal availableWidth READ availableWidth NOTIFY availableWidthChanged FINAL) - Q_PROPERTY(qreal availableHeight READ availableHeight NOTIFY availableHeightChanged FINAL) - Q_PROPERTY(qreal padding READ padding WRITE setPadding RESET resetPadding NOTIFY paddingChanged FINAL) - Q_PROPERTY(qreal topPadding READ topPadding WRITE setTopPadding RESET resetTopPadding NOTIFY topPaddingChanged FINAL) - Q_PROPERTY(qreal leftPadding READ leftPadding WRITE setLeftPadding RESET resetLeftPadding NOTIFY leftPaddingChanged FINAL) - Q_PROPERTY(qreal rightPadding READ rightPadding WRITE setRightPadding RESET resetRightPadding NOTIFY rightPaddingChanged FINAL) - Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding RESET resetBottomPadding NOTIFY bottomPaddingChanged FINAL) - Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing RESET resetSpacing NOTIFY spacingChanged FINAL) - Q_PROPERTY(QLocale locale READ locale WRITE setLocale RESET resetLocale NOTIFY localeChanged FINAL) - Q_PROPERTY(bool mirrored READ isMirrored NOTIFY mirroredChanged FINAL) - Q_PROPERTY(Qt::FocusPolicy focusPolicy READ focusPolicy WRITE setFocusPolicy NOTIFY focusPolicyChanged FINAL) - Q_PROPERTY(Qt::FocusReason focusReason READ focusReason WRITE setFocusReason NOTIFY focusReasonChanged FINAL) - Q_PROPERTY(bool visualFocus READ hasVisualFocus NOTIFY visualFocusChanged FINAL) - Q_PROPERTY(bool hovered READ isHovered NOTIFY hoveredChanged FINAL) - Q_PROPERTY(bool hoverEnabled READ isHoverEnabled WRITE setHoverEnabled RESET resetHoverEnabled NOTIFY hoverEnabledChanged FINAL) - Q_PROPERTY(bool wheelEnabled READ isWheelEnabled WRITE setWheelEnabled NOTIFY wheelEnabledChanged FINAL) - Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL) - Q_PROPERTY(QQuickItem *contentItem READ contentItem WRITE setContentItem NOTIFY contentItemChanged FINAL) - Q_PROPERTY(qreal baselineOffset READ baselineOffset WRITE setBaselineOffset RESET resetBaselineOffset NOTIFY baselineOffsetChanged FINAL) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal horizontalPadding READ horizontalPadding WRITE setHorizontalPadding RESET resetHorizontalPadding NOTIFY horizontalPaddingChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal verticalPadding READ verticalPadding WRITE setVerticalPadding RESET resetVerticalPadding NOTIFY verticalPaddingChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitContentWidth READ implicitContentWidth NOTIFY implicitContentWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitContentHeight READ implicitContentHeight NOTIFY implicitContentHeightChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitBackgroundWidth READ implicitBackgroundWidth NOTIFY implicitBackgroundWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitBackgroundHeight READ implicitBackgroundHeight NOTIFY implicitBackgroundHeightChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal topInset READ topInset WRITE setTopInset RESET resetTopInset NOTIFY topInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal leftInset READ leftInset WRITE setLeftInset RESET resetLeftInset NOTIFY leftInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal rightInset READ rightInset WRITE setRightInset RESET resetRightInset NOTIFY rightInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal bottomInset READ bottomInset WRITE setBottomInset RESET resetBottomInset NOTIFY bottomInsetChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DeferredPropertyNames", "background,contentItem") - QML_NAMED_ELEMENT(Control) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickControl(QQuickItem *parent = nullptr); - ~QQuickControl(); - - QFont font() const; - void setFont(const QFont &font); - void resetFont(); - - qreal availableWidth() const; - qreal availableHeight() const; - - qreal padding() const; - void setPadding(qreal padding); - void resetPadding(); - - qreal topPadding() const; - void setTopPadding(qreal padding); - void resetTopPadding(); - - qreal leftPadding() const; - void setLeftPadding(qreal padding); - void resetLeftPadding(); - - qreal rightPadding() const; - void setRightPadding(qreal padding); - void resetRightPadding(); - - qreal bottomPadding() const; - void setBottomPadding(qreal padding); - void resetBottomPadding(); - - qreal spacing() const; - void setSpacing(qreal spacing); - void resetSpacing(); - - QLocale locale() const; - void setLocale(const QLocale &locale); - void resetLocale(); - - bool isMirrored() const; - - Qt::FocusPolicy focusPolicy() const; - void setFocusPolicy(Qt::FocusPolicy policy); - - Qt::FocusReason focusReason() const; - void setFocusReason(Qt::FocusReason reason); - - bool hasVisualFocus() const; - - bool isHovered() const; - void setHovered(bool hovered); - - bool isHoverEnabled() const; - void setHoverEnabled(bool enabled); - void resetHoverEnabled(); - - bool isWheelEnabled() const; - void setWheelEnabled(bool enabled); - - QQuickItem *background() const; - void setBackground(QQuickItem *background); - - QQuickItem *contentItem() const; - void setContentItem(QQuickItem *item); - - qreal baselineOffset() const; - void setBaselineOffset(qreal offset); - void resetBaselineOffset(); - - // 2.5 (Qt 5.12) - qreal horizontalPadding() const; - void setHorizontalPadding(qreal padding); - void resetHorizontalPadding(); - - qreal verticalPadding() const; - void setVerticalPadding(qreal padding); - void resetVerticalPadding(); - - qreal implicitContentWidth() const; - qreal implicitContentHeight() const; - - qreal implicitBackgroundWidth() const; - qreal implicitBackgroundHeight() const; - - qreal topInset() const; - void setTopInset(qreal inset); - void resetTopInset(); - - qreal leftInset() const; - void setLeftInset(qreal inset); - void resetLeftInset(); - - qreal rightInset() const; - void setRightInset(qreal inset); - void resetRightInset(); - - qreal bottomInset() const; - void setBottomInset(qreal inset); - void resetBottomInset(); - -Q_SIGNALS: - void fontChanged(); - void availableWidthChanged(); - void availableHeightChanged(); - void paddingChanged(); - void topPaddingChanged(); - void leftPaddingChanged(); - void rightPaddingChanged(); - void bottomPaddingChanged(); - void spacingChanged(); - void localeChanged(); - void mirroredChanged(); - void focusPolicyChanged(); - void focusReasonChanged(); - void visualFocusChanged(); - void hoveredChanged(); - void hoverEnabledChanged(); - void wheelEnabledChanged(); - void backgroundChanged(); - void contentItemChanged(); - void baselineOffsetChanged(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void horizontalPaddingChanged(); - Q_REVISION(2, 5) void verticalPaddingChanged(); - Q_REVISION(2, 5) void implicitContentWidthChanged(); - Q_REVISION(2, 5) void implicitContentHeightChanged(); - Q_REVISION(2, 5) void implicitBackgroundWidthChanged(); - Q_REVISION(2, 5) void implicitBackgroundHeightChanged(); - Q_REVISION(2, 5) void topInsetChanged(); - Q_REVISION(2, 5) void leftInsetChanged(); - Q_REVISION(2, 5) void rightInsetChanged(); - Q_REVISION(2, 5) void bottomInsetChanged(); - -protected: - virtual QFont defaultFont() const; - - QQuickControl(QQuickControlPrivate &dd, QQuickItem *parent); - - void classBegin() override; - void componentComplete() override; - - void itemChange(ItemChange change, const ItemChangeData &value) override; - - void focusInEvent(QFocusEvent *event) override; - void focusOutEvent(QFocusEvent *event) override; -#if QT_CONFIG(quicktemplates2_hover) - void hoverEnterEvent(QHoverEvent *event) override; - void hoverMoveEvent(QHoverEvent *event) override; - void hoverLeaveEvent(QHoverEvent *event) override; -#endif - void mousePressEvent(QMouseEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override; - void mouseUngrabEvent() override; -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; - void touchUngrabEvent() override; -#endif -#if QT_CONFIG(wheelevent) - void wheelEvent(QWheelEvent *event) override; -#endif - - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - - virtual void fontChange(const QFont &newFont, const QFont &oldFont); -#if QT_CONFIG(quicktemplates2_hover) - virtual void hoverChange(); -#endif - virtual void mirrorChange(); - virtual void spacingChange(qreal newSpacing, qreal oldSpacing); - virtual void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding); - virtual void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem); - virtual void localeChange(const QLocale &newLocale, const QLocale &oldLocale); - virtual void insetChange(const QMarginsF &newInset, const QMarginsF &oldInset); - virtual void enabledChange(); - -#if QT_CONFIG(accessibility) - virtual QAccessible::Role accessibleRole() const; - virtual void accessibilityActiveChanged(bool active); -#endif - - // helper functions which avoid to check QT_CONFIG(accessibility) - QString accessibleName() const; - void maybeSetAccessibleName(const QString &name); - - QVariant accessibleProperty(const char *propertyName); - bool setAccessibleProperty(const char *propertyName, const QVariant &value); - -private: - Q_DISABLE_COPY(QQuickControl) - Q_DECLARE_PRIVATE(QQuickControl) -}; - -struct QQuickItemForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickItem) - QML_ADDED_IN_VERSION(2, 3) -}; - -struct QQuickColorGroupForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickColorGroup) - QML_ADDED_IN_VERSION(6, 0) -}; - -struct QQuickPaletteForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickPalette) - QML_ADDED_IN_VERSION(6, 0) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickControl) - -#endif // QQUICKCONTROL_P_H diff --git a/src/quicktemplates2/qquickcontrol_p_p.h b/src/quicktemplates2/qquickcontrol_p_p.h deleted file mode 100644 index 4b8fb3e0..00000000 --- a/src/quicktemplates2/qquickcontrol_p_p.h +++ /dev/null @@ -1,242 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKCONTROL_P_P_H -#define QQUICKCONTROL_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> -#include <QtQuickTemplates2/private/qquickdeferredpointer_p_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> -#include <QtQml/private/qlazilyallocated_p.h> - -#if QT_CONFIG(accessibility) -#include <QtGui/qaccessible.h> -#endif - -#include <QtCore/qloggingcategory.h> - -QT_BEGIN_NAMESPACE - -Q_DECLARE_LOGGING_CATEGORY(lcItemManagement) - -class QQuickAccessibleAttached; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickControlPrivate : public QQuickItemPrivate, public QQuickItemChangeListener -#if QT_CONFIG(accessibility) - , public QAccessible::ActivationObserver -#endif -{ - Q_DECLARE_PUBLIC(QQuickControl) - -public: - QQuickControlPrivate(); - ~QQuickControlPrivate(); - - static QQuickControlPrivate *get(QQuickControl *control) - { - return control->d_func(); - } - - void init(); - -#if QT_CONFIG(quicktemplates2_multitouch) - virtual bool acceptTouch(const QTouchEvent::TouchPoint &point); -#endif - virtual void handlePress(const QPointF &point, ulong timestamp); - virtual void handleMove(const QPointF &point, ulong timestamp); - virtual void handleRelease(const QPointF &point, ulong timestamp); - virtual void handleUngrab(); - - void mirrorChange() override; - - inline QMarginsF getPadding() const { return QMarginsF(getLeftPadding(), getTopPadding(), getRightPadding(), getBottomPadding()); } - inline qreal getTopPadding() const { return extra.isAllocated() && extra->hasTopPadding ? extra->topPadding : getVerticalPadding(); } - inline qreal getLeftPadding() const { return extra.isAllocated() && extra->hasLeftPadding ? extra->leftPadding : getHorizontalPadding(); } - inline qreal getRightPadding() const { return extra.isAllocated() && extra->hasRightPadding ? extra->rightPadding : getHorizontalPadding(); } - inline qreal getBottomPadding() const { return extra.isAllocated() && extra->hasBottomPadding ? extra->bottomPadding : getVerticalPadding(); } - inline qreal getHorizontalPadding() const { return hasHorizontalPadding ? horizontalPadding : padding; } - inline qreal getVerticalPadding() const { return hasVerticalPadding ? verticalPadding : padding; } - - void setTopPadding(qreal value, bool reset = false); - void setLeftPadding(qreal value, bool reset = false); - void setRightPadding(qreal value, bool reset = false); - void setBottomPadding(qreal value, bool reset = false); - void setHorizontalPadding(qreal value, bool reset = false); - void setVerticalPadding(qreal value, bool reset = false); - - inline QMarginsF getInset() const { return QMarginsF(getLeftInset(), getTopInset(), getRightInset(), getBottomInset()); } - inline qreal getTopInset() const { return extra.isAllocated() ? extra->topInset : 0; } - inline qreal getLeftInset() const { return extra.isAllocated() ? extra->leftInset : 0; } - inline qreal getRightInset() const { return extra.isAllocated() ? extra->rightInset : 0; } - inline qreal getBottomInset() const { return extra.isAllocated() ? extra->bottomInset : 0; } - - void setTopInset(qreal value, bool reset = false); - void setLeftInset(qreal value, bool reset = false); - void setRightInset(qreal value, bool reset = false); - void setBottomInset(qreal value, bool reset = false); - - virtual void resizeBackground(); - virtual void resizeContent(); - - virtual QQuickItem *getContentItem(); - void setContentItem_helper(QQuickItem *item, bool notify = true); - -#if QT_CONFIG(accessibility) - void accessibilityActiveChanged(bool active) override; - QAccessible::Role accessibleRole() const override; - static QQuickAccessibleAttached *accessibleAttached(const QObject *object); -#endif - - virtual void resolveFont(); - void inheritFont(const QFont &font); - void updateFont(const QFont &font); - static void updateFontRecur(QQuickItem *item, const QFont &font); - inline void setFont_helper(const QFont &font) { - if (resolvedFont.resolveMask() == font.resolveMask() && resolvedFont == font) - return; - updateFont(font); - } - static QFont parentFont(const QQuickItem *item); - - void updateLocale(const QLocale &l, bool e); - static void updateLocaleRecur(QQuickItem *item, const QLocale &l); - static QLocale calcLocale(const QQuickItem *item); - -#if QT_CONFIG(quicktemplates2_hover) - void updateHoverEnabled(bool enabled, bool xplicit); - static void updateHoverEnabledRecur(QQuickItem *item, bool enabled); - static bool calcHoverEnabled(const QQuickItem *item); -#endif - - virtual void cancelContentItem(); - virtual void executeContentItem(bool complete = false); - - virtual void cancelBackground(); - virtual void executeBackground(bool complete = false); - - static void hideOldItem(QQuickItem *item); - - void updateBaselineOffset(); - - static const ChangeTypes ImplicitSizeChanges; - - void addImplicitSizeListener(QQuickItem *item, ChangeTypes changes = ImplicitSizeChanges); - void removeImplicitSizeListener(QQuickItem *item, ChangeTypes changes = ImplicitSizeChanges); - - static void addImplicitSizeListener(QQuickItem *item, QQuickItemChangeListener *listener, ChangeTypes changes = ImplicitSizeChanges); - static void removeImplicitSizeListener(QQuickItem *item, QQuickItemChangeListener *listener, ChangeTypes changes = ImplicitSizeChanges); - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override; - void itemDestroyed(QQuickItem *item) override; - - virtual qreal getContentWidth() const; - virtual qreal getContentHeight() const; - - void updateImplicitContentWidth(); - void updateImplicitContentHeight(); - void updateImplicitContentSize(); - - QPalette defaultPalette() const override; - - struct ExtraData { - bool hasTopPadding = false; - bool hasLeftPadding = false; - bool hasRightPadding = false; - bool hasBottomPadding = false; - bool hasBaselineOffset = false; - bool hasTopInset = false; - bool hasLeftInset = false; - bool hasRightInset = false; - bool hasBottomInset = false; - bool hasBackgroundWidth = false; - bool hasBackgroundHeight = false; - qreal topPadding = 0; - qreal leftPadding = 0; - qreal rightPadding = 0; - qreal bottomPadding = 0; - qreal topInset = 0; - qreal leftInset = 0; - qreal rightInset = 0; - qreal bottomInset = 0; - QFont requestedFont; - }; - QLazilyAllocated<ExtraData> extra; - - bool hasHorizontalPadding = false; - bool hasVerticalPadding = false; - bool hasLocale = false; - bool wheelEnabled = false; -#if QT_CONFIG(quicktemplates2_hover) - bool hovered = false; - bool explicitHoverEnabled = false; -#endif - bool resizingBackground = false; - bool pressWasTouch = false; - int touchId = -1; - QPointF previousPressPos; - qreal padding = 0; - qreal horizontalPadding = 0; - qreal verticalPadding = 0; - qreal implicitContentWidth = 0; - qreal implicitContentHeight = 0; - qreal spacing = 0; - QLocale locale; - QFont resolvedFont; - Qt::FocusPolicy focusPolicy = Qt::NoFocus; - Qt::FocusReason focusReason = Qt::OtherFocusReason; - QQuickDeferredPointer<QQuickItem> background; - QQuickDeferredPointer<QQuickItem> contentItem; -}; - -QT_END_NAMESPACE - -#endif // QQUICKCONTROL_P_P_H diff --git a/src/quicktemplates2/qquickdeferredexecute.cpp b/src/quicktemplates2/qquickdeferredexecute.cpp deleted file mode 100644 index 817415c4..00000000 --- a/src/quicktemplates2/qquickdeferredexecute.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickdeferredexecute_p_p.h" - -#include <QtCore/qhash.h> -#include <QtQml/qqmlengine.h> -#include <QtQml/private/qqmldata_p.h> -#include <QtQml/private/qqmlcomponent_p.h> -#include <QtQml/private/qqmlobjectcreator_p.h> - -#include <deque> - -QT_BEGIN_NAMESPACE - -namespace QtQuickPrivate { - -typedef QHash<size_t, QQmlComponentPrivate::DeferredState *> DeferredStates; - -static inline size_t qHash(QObject *object, const QString &propertyName) -{ - return ::qHash(object) + ::qHash(propertyName); -} - -Q_GLOBAL_STATIC(DeferredStates, deferredStates) - -static void cancelDeferred(QQmlData *ddata, int propertyIndex) -{ - auto dit = ddata->deferredData.rbegin(); - while (dit != ddata->deferredData.rend()) { - (*dit)->bindings.remove(propertyIndex); - ++dit; - } -} - -static bool beginDeferred(QQmlEnginePrivate *enginePriv, const QQmlProperty &property, QQmlComponentPrivate::DeferredState *deferredState) -{ - QObject *object = property.object(); - QQmlData *ddata = QQmlData::get(object); - Q_ASSERT(!ddata->deferredData.isEmpty()); - - int propertyIndex = property.index(); - int wasInProgress = enginePriv->inProgressCreations; - - for (auto dit = ddata->deferredData.rbegin(); dit != ddata->deferredData.rend(); ++dit) { - QQmlData::DeferredData *deferData = *dit; - - auto bindings = deferData->bindings; - auto range = bindings.equal_range(propertyIndex); - if (range.first == bindings.end()) - continue; - - QQmlComponentPrivate::ConstructionState *state = new QQmlComponentPrivate::ConstructionState; - state->completePending = true; - - QQmlContextData *creationContext = nullptr; - state->creator.reset(new QQmlObjectCreator(deferData->context->parent(), deferData->compilationUnit, creationContext)); - - enginePriv->inProgressCreations++; - - std::deque<const QV4::CompiledData::Binding *> reversedBindings; - std::copy(range.first, range.second, std::front_inserter(reversedBindings)); - state->creator->beginPopulateDeferred(deferData->context); - for (const QV4::CompiledData::Binding *binding : reversedBindings) - state->creator->populateDeferredBinding(property, deferData->deferredIdx, binding); - state->creator->finalizePopulateDeferred(); - state->errors << state->creator->errors; - - deferredState->constructionStates += state; - - // Cleanup any remaining deferred bindings for this property, also in inner contexts, - // to avoid executing them later and overriding the property that was just populated. - cancelDeferred(ddata, propertyIndex); - break; - } - - return enginePriv->inProgressCreations > wasInProgress; -} - -void beginDeferred(QObject *object, const QString &property) -{ - QQmlData *data = QQmlData::get(object); - if (data && !data->deferredData.isEmpty() && !data->wasDeleted(object) && data->context) { - QQmlEnginePrivate *ep = QQmlEnginePrivate::get(data->context->engine()); - - QQmlComponentPrivate::DeferredState *state = new QQmlComponentPrivate::DeferredState; - if (beginDeferred(ep, QQmlProperty(object, property), state)) - deferredStates()->insert(qHash(object, property), state); - else - delete state; - - // Release deferred data for those compilation units that no longer have deferred bindings - data->releaseDeferredData(); - } -} - -void cancelDeferred(QObject *object, const QString &property) -{ - QQmlData *data = QQmlData::get(object); - if (data) - cancelDeferred(data, QQmlProperty(object, property).index()); -} - -void completeDeferred(QObject *object, const QString &property) -{ - QQmlData *data = QQmlData::get(object); - QQmlComponentPrivate::DeferredState *state = deferredStates()->take(qHash(object, property)); - if (data && state && !data->wasDeleted(object)) { - QQmlEnginePrivate *ep = QQmlEnginePrivate::get(data->context->engine()); - QQmlComponentPrivate::completeDeferred(ep, state); - } - delete state; -} - -} // QtQuickPrivate - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickdeferredexecute_p_p.h b/src/quicktemplates2/qquickdeferredexecute_p_p.h deleted file mode 100644 index 55750a6a..00000000 --- a/src/quicktemplates2/qquickdeferredexecute_p_p.h +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDEFERREDEXECUTE_P_P_H -#define QQUICKDEFERREDEXECUTE_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qglobal.h> -#include <QtQuickTemplates2/private/qquickdeferredpointer_p_p.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> - -#include <QtQml/private/qqmlvme_p.h> - -QT_BEGIN_NAMESPACE - -class QString; -class QObject; - -namespace QtQuickPrivate { - Q_QUICKTEMPLATES2_PRIVATE_EXPORT void beginDeferred(QObject *object, const QString &property); - Q_QUICKTEMPLATES2_PRIVATE_EXPORT void cancelDeferred(QObject *object, const QString &property); - Q_QUICKTEMPLATES2_PRIVATE_EXPORT void completeDeferred(QObject *object, const QString &property); -} - -template<typename T> -void quickBeginDeferred(QObject *object, const QString &property, QQuickDeferredPointer<T> &delegate) -{ - if (!QQmlVME::componentCompleteEnabled()) - return; - - delegate.setExecuting(true); - QtQuickPrivate::beginDeferred(object, property); - delegate.setExecuting(false); -} - -inline void quickCancelDeferred(QObject *object, const QString &property) -{ - QtQuickPrivate::cancelDeferred(object, property); -} - -template<typename T> -void quickCompleteDeferred(QObject *object, const QString &property, QQuickDeferredPointer<T> &delegate) -{ - Q_ASSERT(!delegate.wasExecuted()); - QtQuickPrivate::completeDeferred(object, property); - delegate.setExecuted(); -} - -QT_END_NAMESPACE - -#endif // QQUICKDEFERREDEXECUTE_P_P_H diff --git a/src/quicktemplates2/qquickdeferredpointer_p_p.h b/src/quicktemplates2/qquickdeferredpointer_p_p.h deleted file mode 100644 index f70b5dc6..00000000 --- a/src/quicktemplates2/qquickdeferredpointer_p_p.h +++ /dev/null @@ -1,188 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDEFERREDPOINTER_P_P_H -#define QQUICKDEFERREDPOINTER_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qglobal.h> - -QT_BEGIN_NAMESPACE - -template<typename T> -class QQuickDeferredPointer -{ -public: - inline QQuickDeferredPointer(); - inline QQuickDeferredPointer(T *); - inline QQuickDeferredPointer(const QQuickDeferredPointer<T> &o); - - inline bool isNull() const; - - inline bool wasExecuted() const; - inline void setExecuted(); - - inline bool isExecuting() const; - inline void setExecuting(bool); - - inline operator T*() const; - inline operator bool() const; - - inline T *data() const; - inline T *operator*() const; - inline T *operator->() const; - - inline QQuickDeferredPointer<T> &operator=(T *); - inline QQuickDeferredPointer<T> &operator=(const QQuickDeferredPointer &o); - -private: - quintptr ptr_value = 0; - - static const quintptr WasExecutedBit = 0x1; - static const quintptr IsExecutingBit = 0x2; - static const quintptr FlagsMask = WasExecutedBit | IsExecutingBit; -}; - -template<typename T> -QQuickDeferredPointer<T>::QQuickDeferredPointer() -{ -} - -template<typename T> -QQuickDeferredPointer<T>::QQuickDeferredPointer(T *v) -: ptr_value(quintptr(v)) -{ - Q_ASSERT((ptr_value & FlagsMask) == 0); -} - -template<typename T> -QQuickDeferredPointer<T>::QQuickDeferredPointer(const QQuickDeferredPointer<T> &o) -: ptr_value(o.ptr_value) -{ -} - -template<typename T> -bool QQuickDeferredPointer<T>::isNull() const -{ - return 0 == (ptr_value & (~FlagsMask)); -} - -template<typename T> -bool QQuickDeferredPointer<T>::wasExecuted() const -{ - return ptr_value & WasExecutedBit; -} - -template<typename T> -void QQuickDeferredPointer<T>::setExecuted() -{ - ptr_value |= WasExecutedBit; -} - -template<typename T> -bool QQuickDeferredPointer<T>::isExecuting() const -{ - return ptr_value & IsExecutingBit; -} - -template<typename T> -void QQuickDeferredPointer<T>::setExecuting(bool b) -{ - if (b) - ptr_value |= IsExecutingBit; - else - ptr_value &= ~IsExecutingBit; -} - -template<typename T> -QQuickDeferredPointer<T>::operator T*() const -{ - return data(); -} - -template<typename T> -QQuickDeferredPointer<T>::operator bool() const -{ - return !isNull(); -} - -template<typename T> -T *QQuickDeferredPointer<T>::data() const -{ - return (T *)(ptr_value & ~FlagsMask); -} - -template<typename T> -T *QQuickDeferredPointer<T>::operator*() const -{ - return (T *)(ptr_value & ~FlagsMask); -} - -template<typename T> -T *QQuickDeferredPointer<T>::operator->() const -{ - return (T *)(ptr_value & ~FlagsMask); -} - -template<typename T> -QQuickDeferredPointer<T> &QQuickDeferredPointer<T>::operator=(T *o) -{ - Q_ASSERT((quintptr(o) & FlagsMask) == 0); - - ptr_value = quintptr(o) | (ptr_value & FlagsMask); - return *this; -} - -template<typename T> -QQuickDeferredPointer<T> &QQuickDeferredPointer<T>::operator=(const QQuickDeferredPointer &o) -{ - ptr_value = o.ptr_value; - return *this; -} - -QT_END_NAMESPACE - -#endif // QQUICKDEFERREDPOINTER_P_P_H diff --git a/src/quicktemplates2/qquickdelaybutton.cpp b/src/quicktemplates2/qquickdelaybutton.cpp deleted file mode 100644 index 25e12263..00000000 --- a/src/quicktemplates2/qquickdelaybutton.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickdelaybutton_p.h" -#include "qquickabstractbutton_p_p.h" - -#include <QtQuick/private/qquickanimation_p.h> -#include <QtQuick/private/qquicktransition_p.h> -#include <QtQuick/private/qquicktransitionmanager_p_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype DelayButton - \inherits AbstractButton -//! \instantiates QQuickDelayButton - \inqmlmodule QtQuick.Controls - \since 5.9 - \ingroup qtquickcontrols2-buttons - \brief Check button that triggers when held down long enough. - - \image qtquickcontrols2-delaybutton.gif - - DelayButton is a checkable button that incorporates a delay before the - button becomes \l {AbstractButton::}{checked} and the \l activated() - signal is emitted. This delay prevents accidental presses. - - The current progress is expressed as a decimal value between \c 0.0 - and \c 1.0. The time it takes for \l activated() to be emitted is - measured in milliseconds, and can be set with the \l delay property. - - The progress is indicated by a progress indicator on the button. - - \sa {Customizing DelayButton}, {Button Controls} -*/ - -/*! - \qmlsignal QtQuick.Controls::DelayButton::activated() - - This signal is emitted when \l progress reaches \c 1.0. -*/ - -class QQuickDelayTransitionManager; - -class QQuickDelayButtonPrivate : public QQuickAbstractButtonPrivate -{ - Q_DECLARE_PUBLIC(QQuickDelayButton) - -public: - void beginTransition(qreal to); - void finishTransition(); - void cancelTransition(); - - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::Button); } - - int delay = 300; - qreal progress = 0.0; - QQuickTransition *transition = nullptr; - QScopedPointer<QQuickDelayTransitionManager> transitionManager; -}; - -class QQuickDelayTransitionManager : public QQuickTransitionManager -{ -public: - QQuickDelayTransitionManager(QQuickDelayButton *button) : m_button(button) { } - - void transition(QQuickTransition *transition, qreal progress); - -protected: - void finished() override; - -private: - QQuickDelayButton *m_button = nullptr; -}; - -void QQuickDelayTransitionManager::transition(QQuickTransition *transition, qreal progress) -{ - qmlExecuteDeferred(transition); - - QQmlProperty defaultTarget(m_button, QLatin1String("progress")); - QQmlListProperty<QQuickAbstractAnimation> animations = transition->animations(); - const int count = animations.count(&animations); - for (int i = 0; i < count; ++i) { - QQuickAbstractAnimation *anim = animations.at(&animations, i); - anim->setDefaultTarget(defaultTarget); - } - - QList<QQuickStateAction> actions; - actions << QQuickStateAction(m_button, QLatin1String("progress"), progress); - QQuickTransitionManager::transition(actions, transition, m_button); -} - -void QQuickDelayTransitionManager::finished() -{ - if (qFuzzyCompare(m_button->progress(), qreal(1.0))) - emit m_button->activated(); -} - -void QQuickDelayButtonPrivate::beginTransition(qreal to) -{ - Q_Q(QQuickDelayButton); - if (!transition) { - q->setProgress(to); - finishTransition(); - return; - } - - if (!transitionManager) - transitionManager.reset(new QQuickDelayTransitionManager(q)); - - transitionManager->transition(transition, to); -} - -void QQuickDelayButtonPrivate::finishTransition() -{ - Q_Q(QQuickDelayButton); - if (qFuzzyCompare(progress, qreal(1.0))) - emit q->activated(); -} - -void QQuickDelayButtonPrivate::cancelTransition() -{ - if (transitionManager) - transitionManager->cancel(); -} - -QQuickDelayButton::QQuickDelayButton(QQuickItem *parent) - : QQuickAbstractButton(*(new QQuickDelayButtonPrivate), parent) -{ - setCheckable(true); -} - -/*! - \qmlproperty int QtQuick.Controls::DelayButton::delay - - This property holds the time it takes (in milliseconds) for \l progress - to reach \c 1.0 and emit \l activated(). - - The default value is \c 3000 ms. -*/ -int QQuickDelayButton::delay() const -{ - Q_D(const QQuickDelayButton); - return d->delay; -} - -void QQuickDelayButton::setDelay(int delay) -{ - Q_D(QQuickDelayButton); - if (d->delay == delay) - return; - - d->delay = delay; - emit delayChanged(); -} - -/*! - \qmlproperty real QtQuick.Controls::DelayButton::progress - \readonly - - This property holds the current progress as displayed by the progress - indicator, in the range \c 0.0 - \c 1.0. -*/ -qreal QQuickDelayButton::progress() const -{ - Q_D(const QQuickDelayButton); - return d->progress; -} - -void QQuickDelayButton::setProgress(qreal progress) -{ - Q_D(QQuickDelayButton); - if (qFuzzyCompare(d->progress, progress)) - return; - - d->progress = progress; - emit progressChanged(); -} - -/*! - \qmlproperty Transition QtQuick.Controls::DelayButton::transition - - This property holds the transition that is applied on the \l progress - property when the button is pressed or released. -*/ -QQuickTransition *QQuickDelayButton::transition() const -{ - Q_D(const QQuickDelayButton); - return d->transition; -} - -void QQuickDelayButton::setTransition(QQuickTransition *transition) -{ - Q_D(QQuickDelayButton); - if (d->transition == transition) - return; - - d->transition = transition; - emit transitionChanged(); -} - -void QQuickDelayButton::buttonChange(ButtonChange change) -{ - Q_D(QQuickDelayButton); - switch (change) { - case ButtonCheckedChange: - d->cancelTransition(); - setProgress(d->checked ? 1.0 : 0.0); - break; - case ButtonPressedChanged: - if (!d->checked) - d->beginTransition(d->pressed ? 1.0 : 0.0); - break; - default: - QQuickAbstractButton::buttonChange(change); - break; - } -} - -void QQuickDelayButton::nextCheckState() -{ - Q_D(QQuickDelayButton); - setChecked(!d->checked && qFuzzyCompare(d->progress, qreal(1.0))); -} - -QFont QQuickDelayButton::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::Button); -} - -QT_END_NAMESPACE - -#include "moc_qquickdelaybutton_p.cpp" diff --git a/src/quicktemplates2/qquickdelaybutton_p.h b/src/quicktemplates2/qquickdelaybutton_p.h deleted file mode 100644 index a697bca8..00000000 --- a/src/quicktemplates2/qquickdelaybutton_p.h +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDELAYBUTTON_P_H -#define QQUICKDELAYBUTTON_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickTransition; -class QQuickDelayButtonPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDelayButton : public QQuickAbstractButton -{ - Q_OBJECT - Q_PROPERTY(int delay READ delay WRITE setDelay NOTIFY delayChanged FINAL) - Q_PROPERTY(qreal progress READ progress WRITE setProgress NOTIFY progressChanged FINAL) - Q_PROPERTY(QQuickTransition *transition READ transition WRITE setTransition NOTIFY transitionChanged FINAL) - QML_NAMED_ELEMENT(DelayButton) - QML_ADDED_IN_VERSION(2, 2) - -public: - explicit QQuickDelayButton(QQuickItem *parent = nullptr); - - int delay() const; - void setDelay(int delay); - - qreal progress() const; - void setProgress(qreal progress); - - QQuickTransition *transition() const; - void setTransition(QQuickTransition *transition); - -Q_SIGNALS: - void activated(); - void delayChanged(); - void progressChanged(); - void transitionChanged(); - -protected: - void buttonChange(ButtonChange change) override; - void nextCheckState() override; - - QFont defaultFont() const override; - -private: - Q_DISABLE_COPY(QQuickDelayButton) - Q_DECLARE_PRIVATE(QQuickDelayButton) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickDelayButton) - -#endif // QQUICKDELAYBUTTON_P_H diff --git a/src/quicktemplates2/qquickdial.cpp b/src/quicktemplates2/qquickdial.cpp deleted file mode 100644 index 24783c9a..00000000 --- a/src/quicktemplates2/qquickdial.cpp +++ /dev/null @@ -1,859 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickdial_p.h" -#include "qquickdeferredexecute_p_p.h" - -#include <QtCore/qmath.h> -#include <QtQuick/private/qquickflickable_p.h> -#include <QtQuickTemplates2/private/qquickcontrol_p_p.h> - -#include <cmath> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Dial - \inherits Control -//! \instantiates QQuickDial - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-input - \brief Circular dial that is rotated to set a value. - - The Dial is similar to a traditional dial knob that is found on devices - such as stereos or industrial equipment. It allows the user to specify a - value within a range. - - \image qtquickcontrols2-dial-no-wrap.gif - - The value of the dial is set with the \l value property. The range is - set with the \l from and \l to properties. To enable or disable wrapping, - use the \l wrap property. - - The dial can be manipulated with a keyboard. It supports the following - actions: - - \table - \header \li \b {Action} \li \b {Key} - \row \li Decrease \l value by \l stepSize \li \c Qt.Key_Left - \row \li Decrease \l value by \l stepSize \li \c Qt.Key_Down - \row \li Set \l value to \l from \li \c Qt.Key_Home - \row \li Increase \l value by \l stepSize \li \c Qt.Key_Right - \row \li Increase \l value by \l stepSize \li \c Qt.Key_Up - \row \li Set \l value to \l to \li \c Qt.Key_End - \endtable - - \include qquickdial.qdocinc inputMode - - \sa {Customizing Dial}, {Input Controls} -*/ - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlsignal QtQuick.Controls::Dial::moved() - - This signal is emitted when the dial has been interactively moved - by the user by either touch, mouse, or keys. -*/ - -static const qreal startAngleRadians = (M_PI * 2.0) * (4.0 / 6.0); -static const qreal startAngle = -140; -static const qreal endAngleRadians = (M_PI * 2.0) * (5.0 / 6.0); -static const qreal endAngle = 140; - -class QQuickDialPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickDial) - -public: - qreal valueAt(qreal position) const; - qreal snapPosition(qreal position) const; - qreal positionAt(const QPointF &point) const; - qreal circularPositionAt(const QPointF &point) const; - qreal linearPositionAt(const QPointF &point) const; - void setPosition(qreal position); - void updatePosition(); - bool isLargeChange(const QPointF &eventPos, qreal proposedPosition) const; - bool isHorizontalOrVertical() const; - - void handlePress(const QPointF &point, ulong timestamp) override; - void handleMove(const QPointF &point, ulong timestamp) override; - void handleRelease(const QPointF &point, ulong timestamp) override; - void handleUngrab() override; - - void cancelHandle(); - void executeHandle(bool complete = false); - - void updateAllValuesAreInteger(); - - qreal from = 0; - qreal to = 1; - qreal value = 0; - qreal position = 0; - qreal angle = startAngle; - qreal stepSize = 0; - QPointF pressPoint; - qreal positionBeforePress = 0; - QQuickDial::SnapMode snapMode = QQuickDial::NoSnap; - QQuickDial::InputMode inputMode = QQuickDial::Circular; - QQuickDeferredPointer<QQuickItem> handle; - bool wrap = false; - bool live = true; - bool pressed = false; - bool allValuesAreInteger = false; -}; - -qreal QQuickDialPrivate::valueAt(qreal position) const -{ - qreal value = from + (to - from) * position; - - /* play nice with users expecting that integer from, to and stepSize leads to - integer values - given that we are using floating point internally (and in - the API of value), this does not hold, but it is easy enough to handle - */ - if (allValuesAreInteger) - value = qRound(value); - - return value; -} - -qreal QQuickDialPrivate::snapPosition(qreal position) const -{ - const qreal range = to - from; - if (qFuzzyIsNull(range)) - return position; - - const qreal effectiveStep = stepSize / range; - if (qFuzzyIsNull(effectiveStep)) - return position; - - return qRound(position / effectiveStep) * effectiveStep; -} - -qreal QQuickDialPrivate::positionAt(const QPointF &point) const -{ - return inputMode == QQuickDial::Circular ? circularPositionAt(point) : linearPositionAt(point); -} - -qreal QQuickDialPrivate::circularPositionAt(const QPointF &point) const -{ - qreal yy = height / 2.0 - point.y(); - qreal xx = point.x() - width / 2.0; - qreal angle = (xx || yy) ? std::atan2(yy, xx) : 0; - - if (angle < M_PI / -2) - angle = angle + M_PI * 2; - - qreal normalizedAngle = (startAngleRadians - angle) / endAngleRadians; - return normalizedAngle; -} - -qreal QQuickDialPrivate::linearPositionAt(const QPointF &point) const -{ - // This value determines the range (either horizontal or vertical) - // within which the dial can be dragged. - // The larger this value is, the further the drag distance - // must be to go from a position of e.g. 0.0 to 1.0. - qreal dragArea = 0; - - // The linear input mode uses a "relative" input system, - // where the distance from the press point is used to calculate - // the change in position. Moving the mouse above the press - // point increases the position (when inputMode is Vertical), - // and vice versa. This prevents the dial from jumping when clicked. - qreal dragDistance = 0; - - if (inputMode == QQuickDial::Horizontal) { - dragArea = width * 2; - dragDistance = pressPoint.x() - point.x(); - } else { - dragArea = height * 2; - dragDistance = point.y() - pressPoint.y(); - } - const qreal normalisedDifference = dragDistance / dragArea; - return qBound(qreal(0), positionBeforePress - normalisedDifference, qreal(1)); -} - -void QQuickDialPrivate::setPosition(qreal pos) -{ - Q_Q(QQuickDial); - pos = qBound<qreal>(qreal(0), pos, qreal(1)); - if (qFuzzyCompare(position, pos)) - return; - - position = pos; - - angle = startAngle + position * qAbs(endAngle - startAngle); - - emit q->positionChanged(); - emit q->angleChanged(); -} - -void QQuickDialPrivate::updatePosition() -{ - qreal pos = 0; - if (!qFuzzyCompare(from, to)) - pos = (value - from) / (to - from); - setPosition(pos); -} - -bool QQuickDialPrivate::isLargeChange(const QPointF &eventPos, qreal proposedPosition) const -{ - return qAbs(proposedPosition - position) >= qreal(0.5) && eventPos.y() >= height / 2; -} - -bool QQuickDialPrivate::isHorizontalOrVertical() const -{ - return inputMode == QQuickDial::Horizontal || inputMode == QQuickDial::Vertical; -} - -void QQuickDialPrivate::handlePress(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickDial); - QQuickControlPrivate::handlePress(point, timestamp); - pressPoint = point; - positionBeforePress = position; - q->setPressed(true); -} - -void QQuickDialPrivate::handleMove(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickDial); - QQuickControlPrivate::handleMove(point, timestamp); - const qreal oldPos = position; - qreal pos = positionAt(point); - if (snapMode == QQuickDial::SnapAlways) - pos = snapPosition(pos); - - if (wrap || (!wrap && (isHorizontalOrVertical() || !isLargeChange(point, pos)))) { - if (live) - q->setValue(valueAt(pos)); - else - setPosition(pos); - if (!qFuzzyCompare(pos, oldPos)) - emit q->moved(); - } -} - -void QQuickDialPrivate::handleRelease(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickDial); - QQuickControlPrivate::handleRelease(point, timestamp); - if (q->keepMouseGrab() || q->keepTouchGrab()) { - const qreal oldPos = position; - qreal pos = positionAt(point); - if (snapMode != QQuickDial::NoSnap) - pos = snapPosition(pos); - - if (wrap || (!wrap && (isHorizontalOrVertical() || !isLargeChange(point, pos)))) - q->setValue(valueAt(pos)); - if (!qFuzzyCompare(pos, oldPos)) - emit q->moved(); - - q->setKeepMouseGrab(false); - q->setKeepTouchGrab(false); - } - - q->setPressed(false); - pressPoint = QPointF(); - positionBeforePress = 0; -} - -void QQuickDialPrivate::handleUngrab() -{ - Q_Q(QQuickDial); - QQuickControlPrivate::handleUngrab(); - pressPoint = QPointF(); - positionBeforePress = 0; - q->setPressed(false); -} - -static inline QString handleName() { return QStringLiteral("handle"); } - -void QQuickDialPrivate::cancelHandle() -{ - Q_Q(QQuickDial); - quickCancelDeferred(q, handleName()); -} - -void QQuickDialPrivate::executeHandle(bool complete) -{ - Q_Q(QQuickDial); - if (handle.wasExecuted()) - return; - - if (!handle || complete) - quickBeginDeferred(q, handleName(), handle); - if (complete) - quickCompleteDeferred(q, handleName(), handle); -} - -template<typename ...Real> -static bool areRepresentableAsInteger(Real... numbers) { - auto check = [](qreal number) -> bool { return std::nearbyint(number) == number; }; - return (... && check(numbers)); -} - -void QQuickDialPrivate::updateAllValuesAreInteger() -{ - allValuesAreInteger = areRepresentableAsInteger(to, from, stepSize) && stepSize != 0.0; -} - -QQuickDial::QQuickDial(QQuickItem *parent) - : QQuickControl(*(new QQuickDialPrivate), parent) -{ - setActiveFocusOnTab(true); - setAcceptedMouseButtons(Qt::LeftButton); -#if QT_CONFIG(quicktemplates2_multitouch) - setAcceptTouchEvents(true); -#endif -#if QT_CONFIG(cursor) - setCursor(Qt::ArrowCursor); -#endif -} - -/*! - \qmlproperty real QtQuick.Controls::Dial::from - - This property holds the starting value for the range. The default value is \c 0.0. - - \sa to, value -*/ -qreal QQuickDial::from() const -{ - Q_D(const QQuickDial); - return d->from; -} - -void QQuickDial::setFrom(qreal from) -{ - Q_D(QQuickDial); - if (qFuzzyCompare(d->from, from)) - return; - - d->from = from; - emit fromChanged(); - d->updateAllValuesAreInteger(); - if (isComponentComplete()) { - setValue(d->value); - d->updatePosition(); - } -} - -/*! - \qmlproperty real QtQuick.Controls::Dial::to - - This property holds the end value for the range. The default value is - \c 1.0. - - \sa from, value -*/ -qreal QQuickDial::to() const -{ - Q_D(const QQuickDial); - return d->to; -} - -void QQuickDial::setTo(qreal to) -{ - Q_D(QQuickDial); - if (qFuzzyCompare(d->to, to)) - return; - - d->to = to; - d->updateAllValuesAreInteger(); - emit toChanged(); - if (isComponentComplete()) { - setValue(d->value); - d->updatePosition(); - } -} - -/*! - \qmlproperty real QtQuick.Controls::Dial::value - - This property holds the value in the range \c from - \c to. The default - value is \c 0.0. - - \sa position, live -*/ -qreal QQuickDial::value() const -{ - Q_D(const QQuickDial); - return d->value; -} - -void QQuickDial::setValue(qreal value) -{ - Q_D(QQuickDial); - if (isComponentComplete()) - value = d->from > d->to ? qBound(d->to, value, d->from) : qBound(d->from, value, d->to); - - if (qFuzzyCompare(d->value, value)) - return; - - d->value = value; - d->updatePosition(); - emit valueChanged(); -} - -/*! - \qmlproperty real QtQuick.Controls::Dial::position - \readonly - - This property holds the logical position of the handle. - - The position is expressed as a fraction of the control's angle range (the - range within which the handle can be moved) in the range \c {0.0 - 1.0}. - - \sa value, angle -*/ -qreal QQuickDial::position() const -{ - Q_D(const QQuickDial); - return d->position; -} - -/*! - \qmlproperty real QtQuick.Controls::Dial::angle - \readonly - - This property holds the angle of the handle. - - The range is from \c -140 degrees to \c 140 degrees. - - \sa position -*/ -qreal QQuickDial::angle() const -{ - Q_D(const QQuickDial); - return d->angle; -} - -/*! - \qmlproperty real QtQuick.Controls::Dial::stepSize - - This property holds the step size. - - The step size determines the amount by which the dial's value - is increased and decreased when interacted with via the keyboard. - For example, a step size of \c 0.2, will result in the dial's - value increasing and decreasing in increments of \c 0.2. - - The step size is only respected for touch and mouse interaction - when \l snapMode is set to a value other than \c Dial.NoSnap. - - The default value is \c 0.0, which results in an effective step - size of \c 0.1 for keyboard interaction. - - \sa snapMode, increase(), decrease() -*/ -qreal QQuickDial::stepSize() const -{ - Q_D(const QQuickDial); - return d->stepSize; -} - -void QQuickDial::setStepSize(qreal step) -{ - Q_D(QQuickDial); - if (qFuzzyCompare(d->stepSize, step)) - return; - - d->stepSize = step; - d->updateAllValuesAreInteger(); - emit stepSizeChanged(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::Dial::snapMode - - This property holds the snap mode. - - The snap mode works with the \l stepSize to allow the handle to snap to - certain points along the dial. - - Possible values: - \value Dial.NoSnap The dial does not snap (default). - \value Dial.SnapAlways The dial snaps while the handle is dragged. - \value Dial.SnapOnRelease The dial does not snap while being dragged, but only after the handle is released. - - \sa stepSize -*/ -QQuickDial::SnapMode QQuickDial::snapMode() const -{ - Q_D(const QQuickDial); - return d->snapMode; -} - -void QQuickDial::setSnapMode(SnapMode mode) -{ - Q_D(QQuickDial); - if (d->snapMode == mode) - return; - - d->snapMode = mode; - emit snapModeChanged(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty enumeration QtQuick.Controls::Dial::inputMode - - This property holds the input mode. - - \include qquickdial.qdocinc inputMode - - The default value is \c Dial.Circular. -*/ -QQuickDial::InputMode QQuickDial::inputMode() const -{ - Q_D(const QQuickDial); - return d->inputMode; -} - -void QQuickDial::setInputMode(QQuickDial::InputMode mode) -{ - Q_D(QQuickDial); - if (d->inputMode == mode) - return; - - d->inputMode = mode; - emit inputModeChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::Dial::wrap - - This property holds whether the dial wraps when dragged. - - For example, when this property is set to \c true, dragging the dial past - the \l to position will result in the handle being positioned at the - \l from position, and vice versa: - - \image qtquickcontrols2-dial-wrap.gif - - When this property is \c false, it's not possible to drag the dial across - the from and to values. - - \image qtquickcontrols2-dial-no-wrap.gif - - The default value is \c false. -*/ -bool QQuickDial::wrap() const -{ - Q_D(const QQuickDial); - return d->wrap; -} - -void QQuickDial::setWrap(bool wrap) -{ - Q_D(QQuickDial); - if (d->wrap == wrap) - return; - - d->wrap = wrap; - emit wrapChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::Dial::pressed - - This property holds whether the dial is pressed. - - The dial will be pressed when either the mouse is pressed over it, or a key - such as \c Qt.Key_Left is held down. If you'd prefer not to have the dial - be pressed upon key presses (due to styling reasons, for example), you can - use the \l {Keys}{Keys attached property}: - - \code - Dial { - Keys.onLeftPressed: {} - } - \endcode - - This will result in pressed only being \c true upon mouse presses. -*/ -bool QQuickDial::isPressed() const -{ - Q_D(const QQuickDial); - return d->pressed; -} - -void QQuickDial::setPressed(bool pressed) -{ - Q_D(QQuickDial); - if (d->pressed == pressed) - return; - - d->pressed = pressed; - setAccessibleProperty("pressed", pressed); - emit pressedChanged(); -} - -/*! - \qmlproperty Item QtQuick.Controls::Dial::handle - - This property holds the handle of the dial. - - The handle acts as a visual indicator of the position of the dial. - - \sa {Customizing Dial} -*/ -QQuickItem *QQuickDial::handle() const -{ - QQuickDialPrivate *d = const_cast<QQuickDialPrivate *>(d_func()); - if (!d->handle) - d->executeHandle(); - return d->handle; -} - -void QQuickDial::setHandle(QQuickItem *handle) -{ - Q_D(QQuickDial); - if (handle == d->handle) - return; - - if (!d->handle.isExecuting()) - d->cancelHandle(); - - QQuickControlPrivate::hideOldItem(d->handle); - d->handle = handle; - if (d->handle && !d->handle->parentItem()) - d->handle->setParentItem(this); - if (!d->handle.isExecuting()) - emit handleChanged(); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty bool QtQuick.Controls::Dial::live - - This property holds whether the dial provides live updates for the \l value - property while the handle is dragged. - - The default value is \c true. - - \sa value -*/ -bool QQuickDial::live() const -{ - Q_D(const QQuickDial); - return d->live; -} - -void QQuickDial::setLive(bool live) -{ - Q_D(QQuickDial); - if (d->live == live) - return; - - d->live = live; - emit liveChanged(); -} - -/*! - \qmlmethod void QtQuick.Controls::Dial::increase() - - Increases the value by \l stepSize, or \c 0.1 if stepSize is not defined. - - \sa stepSize -*/ -void QQuickDial::increase() -{ - Q_D(QQuickDial); - qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize; - setValue(d->value + step); -} - -/*! - \qmlmethod void QtQuick.Controls::Dial::decrease() - - Decreases the value by \l stepSize, or \c 0.1 if stepSize is not defined. - - \sa stepSize -*/ -void QQuickDial::decrease() -{ - Q_D(QQuickDial); - qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize; - setValue(d->value - step); -} - -void QQuickDial::keyPressEvent(QKeyEvent *event) -{ - Q_D(QQuickDial); - const qreal oldValue = d->value; - switch (event->key()) { - case Qt::Key_Left: - case Qt::Key_Down: - setPressed(true); - if (isMirrored()) - increase(); - else - decrease(); - break; - - case Qt::Key_Right: - case Qt::Key_Up: - setPressed(true); - if (isMirrored()) - decrease(); - else - increase(); - break; - - case Qt::Key_Home: - setPressed(true); - setValue(isMirrored() ? d->to : d->from); - break; - - case Qt::Key_End: - setPressed(true); - setValue(isMirrored() ? d->from : d->to); - break; - - default: - event->ignore(); - QQuickControl::keyPressEvent(event); - break; - } - if (!qFuzzyCompare(d->value, oldValue)) - emit moved(); -} - -void QQuickDial::keyReleaseEvent(QKeyEvent *event) -{ - QQuickControl::keyReleaseEvent(event); - setPressed(false); -} - -void QQuickDial::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickDial); - QQuickControl::mousePressEvent(event); - d->handleMove(event->position(), event->timestamp()); - setKeepMouseGrab(true); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickDial::touchEvent(QTouchEvent *event) -{ - Q_D(QQuickDial); - switch (event->type()) { - case QEvent::TouchUpdate: - for (const QTouchEvent::TouchPoint &point : event->points()) { - if (!d->acceptTouch(point)) - continue; - - switch (point.state()) { - case QEventPoint::Updated: - if (!keepTouchGrab()) { - bool overXDragThreshold = QQuickWindowPrivate::dragOverThreshold(point.position().x() - d->pressPoint.x(), Qt::XAxis, &point); - setKeepTouchGrab(overXDragThreshold); - - if (!overXDragThreshold) { - bool overYDragThreshold = QQuickWindowPrivate::dragOverThreshold(point.position().y() - d->pressPoint.y(), Qt::YAxis, &point); - setKeepTouchGrab(overYDragThreshold); - } - } - if (keepTouchGrab()) - d->handleMove(point.position(), event->timestamp()); - break; - - default: - QQuickControl::touchEvent(event); - break; - } - } - break; - - default: - QQuickControl::touchEvent(event); - break; - } -} -#endif - -#if QT_CONFIG(wheelevent) -void QQuickDial::wheelEvent(QWheelEvent *event) -{ - Q_D(QQuickDial); - QQuickControl::wheelEvent(event); - if (d->wheelEnabled) { - const qreal oldValue = d->value; - const QPointF angle = event->angleDelta(); - const qreal delta = (qFuzzyIsNull(angle.y()) ? angle.x() : (event->inverted() ? -angle.y() : angle.y())) / QWheelEvent::DefaultDeltasPerStep; - const qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize; - setValue(oldValue + step * delta); - event->setAccepted(!qFuzzyCompare(d->value, oldValue)); - } -} -#endif - -void QQuickDial::mirrorChange() -{ - QQuickControl::mirrorChange(); - emit angleChanged(); -} - -void QQuickDial::componentComplete() -{ - Q_D(QQuickDial); - d->executeHandle(true); - QQuickControl::componentComplete(); - setValue(d->value); - d->updatePosition(); -} - -#if QT_CONFIG(accessibility) -void QQuickDial::accessibilityActiveChanged(bool active) -{ - QQuickControl::accessibilityActiveChanged(active); - - Q_D(QQuickDial); - if (active) - setAccessibleProperty("pressed", d->pressed); -} - -QAccessible::Role QQuickDial::accessibleRole() const -{ - return QAccessible::Dial; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickdial_p.h b/src/quicktemplates2/qquickdial_p.h deleted file mode 100644 index 67bbc183..00000000 --- a/src/quicktemplates2/qquickdial_p.h +++ /dev/null @@ -1,183 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDIAL_P_H -#define QQUICKDIAL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qvariant.h> -#include <QtQml/qqmlcomponent.h> -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickDialAttached; -class QQuickDialPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDial : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(qreal from READ from WRITE setFrom NOTIFY fromChanged FINAL) - Q_PROPERTY(qreal to READ to WRITE setTo NOTIFY toChanged FINAL) - Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged FINAL) - Q_PROPERTY(qreal position READ position NOTIFY positionChanged FINAL) - Q_PROPERTY(qreal angle READ angle NOTIFY angleChanged FINAL) - Q_PROPERTY(qreal stepSize READ stepSize WRITE setStepSize NOTIFY stepSizeChanged FINAL) - Q_PROPERTY(SnapMode snapMode READ snapMode WRITE setSnapMode NOTIFY snapModeChanged FINAL) - Q_PROPERTY(bool wrap READ wrap WRITE setWrap NOTIFY wrapChanged FINAL) - Q_PROPERTY(bool pressed READ isPressed NOTIFY pressedChanged FINAL) - Q_PROPERTY(QQuickItem *handle READ handle WRITE setHandle NOTIFY handleChanged FINAL) - // 2.2 (Qt 5.9) - Q_PROPERTY(bool live READ live WRITE setLive NOTIFY liveChanged FINAL REVISION(2, 2)) - // 2.5 (Qt 5.12) - Q_PROPERTY(InputMode inputMode READ inputMode WRITE setInputMode NOTIFY inputModeChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DeferredPropertyNames", "background,handle") - QML_NAMED_ELEMENT(Dial) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickDial(QQuickItem *parent = nullptr); - - qreal from() const; - void setFrom(qreal from); - - qreal to() const; - void setTo(qreal to); - - qreal value() const; - void setValue(qreal value); - - qreal position() const; - - qreal angle() const; - - qreal stepSize() const; - void setStepSize(qreal step); - - enum SnapMode { - NoSnap, - SnapAlways, - SnapOnRelease - }; - Q_ENUM(SnapMode) - - SnapMode snapMode() const; - void setSnapMode(SnapMode mode); - - enum InputMode { - Circular, - Horizontal, - Vertical, - }; - Q_ENUM(InputMode) - - bool wrap() const; - void setWrap(bool wrap); - - bool isPressed() const; - void setPressed(bool pressed); - - QQuickItem *handle() const; - void setHandle(QQuickItem *handle); - - // 2.2 (Qt 5.9) - bool live() const; - void setLive(bool live); - - // 2.5 (Qt 5.12) - InputMode inputMode() const; - void setInputMode(InputMode mode); - -public Q_SLOTS: - void increase(); - void decrease(); - -Q_SIGNALS: - void fromChanged(); - void toChanged(); - void valueChanged(); - void positionChanged(); - void angleChanged(); - void stepSizeChanged(); - void snapModeChanged(); - void wrapChanged(); - void pressedChanged(); - void handleChanged(); - // 2.2 (Qt 5.9) - Q_REVISION(2, 2) void moved(); - Q_REVISION(2, 2) void liveChanged(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void inputModeChanged(); - -protected: - void keyPressEvent(QKeyEvent *event) override; - void keyReleaseEvent(QKeyEvent *event) override; - void mousePressEvent(QMouseEvent *event) override; -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; -#endif -#if QT_CONFIG(wheelevent) - void wheelEvent(QWheelEvent *event) override; -#endif - - void mirrorChange() override; - void componentComplete() override; - -#if QT_CONFIG(accessibility) - void accessibilityActiveChanged(bool active) override; - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickDial) - Q_DECLARE_PRIVATE(QQuickDial) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickDial) - -#endif // QQUICKDIAL_P_H diff --git a/src/quicktemplates2/qquickdialog.cpp b/src/quicktemplates2/qquickdialog.cpp deleted file mode 100644 index a6cb0274..00000000 --- a/src/quicktemplates2/qquickdialog.cpp +++ /dev/null @@ -1,564 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickdialog_p.h" -#include "qquickdialog_p_p.h" -#include "qquickdialogbuttonbox_p.h" -#include "qquickabstractbutton_p.h" -#include "qquickpopupitem_p_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Dialog - \inherits Popup -//! \instantiates QQuickDialog - \inqmlmodule QtQuick.Controls - \ingroup qtquickcontrols2-dialogs - \ingroup qtquickcontrols2-popups - \brief Popup dialog with standard buttons and a title, used for short-term interaction with the user. - \since 5.8 - - A dialog is a popup mostly used for short-term tasks and brief communications - with the user. Similarly to \l ApplicationWindow and \l Page, Dialog is organized - into three sections: \l header, \l {Popup::}{contentItem}, and \l footer. - - \image qtquickcontrols2-page-wireframe.png - - \section1 Dialog Title and Buttons - - Dialog's \l title is displayed by a style-specific title bar that is assigned - as a dialog \l header by default. - - Dialog's standard buttons are managed by a \l DialogButtonBox that is assigned - as a dialog \l footer by default. The dialog's \l standardButtons property is - forwarded to the respective property of the button box. Furthermore, the - \l {DialogButtonBox::}{accepted()} and \l {DialogButtonBox::}{rejected()} - signals of the button box are connected to the respective signals in Dialog. - - \snippet qtquickcontrols2-dialog.qml 1 - - \section1 Modal Dialogs - - A \l {Popup::}{modal} dialog blocks input to other content beneath - the dialog. When a modal dialog is opened, the user must finish - interacting with the dialog and close it before they can access any - other content in the same window. - - \snippet qtquickcontrols2-dialog-modal.qml 1 - - \section1 Modeless Dialogs - - A modeless dialog is a dialog that operates independently of other - content around the dialog. When a modeless dialog is opened, the user - is allowed to interact with both the dialog and the other content in - the same window. - - \snippet qtquickcontrols2-dialog-modeless.qml 1 - - \sa DialogButtonBox, {Popup Controls} -*/ - -/*! - \qmlsignal QtQuick.Controls::Dialog::accepted() - - This signal is emitted when the dialog has been accepted either - interactively or by calling \l accept(). - - \note This signal is \e not emitted when closing the dialog with - \l {Popup::}{close()} or setting \l {Popup::}{visible} to \c false. - - \sa rejected() -*/ - -/*! - \qmlsignal QtQuick.Controls::Dialog::rejected() - - This signal is emitted when the dialog has been rejected either - interactively or by calling \l reject(). - - \note This signal is \e not emitted when closing the dialog with - \l {Popup::}{close()} or setting \l {Popup::}{visible} to \c false. - - \sa accepted() -*/ - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlsignal QtQuick.Controls::Dialog::applied() - - This signal is emitted when the \c Dialog.Apply standard button is clicked. - - \sa discarded(), reset() -*/ - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlsignal QtQuick.Controls::Dialog::reset() - - This signal is emitted when the \c Dialog.Reset standard button is clicked. - - \sa discarded(), applied() -*/ - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlsignal QtQuick.Controls::Dialog::discarded() - - This signal is emitted when the \c Dialog.Discard standard button is clicked. - - \sa reset(), applied() -*/ - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlsignal QtQuick.Controls::Dialog::helpRequested() - - This signal is emitted when the \c Dialog.Help standard button is clicked. - - \sa accepted(), rejected() -*/ - -QPlatformDialogHelper::ButtonRole QQuickDialogPrivate::buttonRole(QQuickAbstractButton *button) -{ - const QQuickDialogButtonBoxAttached *attached = qobject_cast<QQuickDialogButtonBoxAttached *>(qmlAttachedPropertiesObject<QQuickDialogButtonBox>(button, false)); - return attached ? attached->buttonRole() : QPlatformDialogHelper::InvalidRole; -} - -void QQuickDialogPrivate::handleAccept() -{ - Q_Q(QQuickDialog); - q->accept(); -} - -void QQuickDialogPrivate::handleReject() -{ - Q_Q(QQuickDialog); - q->reject(); -} - -void QQuickDialogPrivate::handleClick(QQuickAbstractButton *button) -{ - Q_Q(QQuickDialog); - switch (buttonRole(button)) { - case QPlatformDialogHelper::ApplyRole: - emit q->applied(); - break; - case QPlatformDialogHelper::ResetRole: - emit q->reset(); - break; - case QPlatformDialogHelper::DestructiveRole: - emit q->discarded(); - break; - case QPlatformDialogHelper::HelpRole: - emit q->helpRequested(); - break; - default: - break; - } -} - -QQuickDialog::QQuickDialog(QObject *parent) - : QQuickDialog(*(new QQuickDialogPrivate), parent) -{ -} - -QQuickDialog::QQuickDialog(QQuickDialogPrivate &dd, QObject *parent) - : QQuickPopup(dd, parent) -{ - Q_D(QQuickDialog); - QObject::connect(d->popupItem, &QQuickPopupItem::titleChanged, this, &QQuickDialog::titleChanged); - QObject::connect(d->popupItem, &QQuickPopupItem::headerChanged, this, &QQuickDialog::headerChanged); - QObject::connect(d->popupItem, &QQuickPopupItem::footerChanged, this, &QQuickDialog::footerChanged); - QObject::connect(d->popupItem, &QQuickPopupItem::implicitHeaderWidthChanged, this, &QQuickDialog::implicitHeaderWidthChanged); - QObject::connect(d->popupItem, &QQuickPopupItem::implicitHeaderHeightChanged, this, &QQuickDialog::implicitHeaderHeightChanged); - QObject::connect(d->popupItem, &QQuickPopupItem::implicitFooterWidthChanged, this, &QQuickDialog::implicitFooterWidthChanged); - QObject::connect(d->popupItem, &QQuickPopupItem::implicitFooterHeightChanged, this, &QQuickDialog::implicitFooterHeightChanged); -} - -/*! - \qmlproperty string QtQuick.Controls::Dialog::title - - This property holds the dialog title. - - The title is displayed in the dialog header. - - \code - Dialog { - title: qsTr("About") - - Label { - text: "Lorem ipsum..." - } - } - \endcode -*/ -QString QQuickDialog::title() const -{ - Q_D(const QQuickDialog); - return d->popupItem->title(); -} - -void QQuickDialog::setTitle(const QString &title) -{ - Q_D(QQuickDialog); - d->popupItem->setTitle(title); -} - -/*! - \qmlproperty Item QtQuick.Controls::Dialog::header - - This property holds the dialog header item. The header item is positioned to - the top, and resized to the width of the dialog. The default value is \c null. - - \note Assigning a \l DialogButtonBox as a dialog header automatically connects - its \l {DialogButtonBox::}{accepted()} and \l {DialogButtonBox::}{rejected()} - signals to the respective signals in Dialog. - - \note Assigning a \l DialogButtonBox, \l ToolBar, or \l TabBar as a dialog - header automatically sets the respective \l DialogButtonBox::position, - \l ToolBar::position, or \l TabBar::position property to \c Header. - - \sa footer -*/ -QQuickItem *QQuickDialog::header() const -{ - Q_D(const QQuickDialog); - return d->popupItem->header(); -} - -void QQuickDialog::setHeader(QQuickItem *header) -{ - Q_D(QQuickDialog); - QQuickItem *oldHeader = d->popupItem->header(); - if (oldHeader == header) - return; - - if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(oldHeader)) { - QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept); - QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject); - QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick); - if (d->buttonBox == buttonBox) - d->buttonBox = nullptr; - } - - if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(header)) { - QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept); - QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject); - QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick); - d->buttonBox = buttonBox; - buttonBox->setStandardButtons(d->standardButtons); - } - - d->popupItem->setHeader(header); -} - -/*! - \qmlproperty Item QtQuick.Controls::Dialog::footer - - This property holds the dialog footer item. The footer item is positioned to - the bottom, and resized to the width of the dialog. The default value is \c null. - - \note Assigning a \l DialogButtonBox as a dialog footer automatically connects - its \l {DialogButtonBox::}{accepted()} and \l {DialogButtonBox::}{rejected()} - signals to the respective signals in Dialog. - - \note Assigning a \l DialogButtonBox, \l ToolBar, or \l TabBar as a dialog - footer automatically sets the respective \l DialogButtonBox::position, - \l ToolBar::position, or \l TabBar::position property to \c Footer. - - \sa header -*/ -QQuickItem *QQuickDialog::footer() const -{ - Q_D(const QQuickDialog); - return d->popupItem->footer(); -} - -void QQuickDialog::setFooter(QQuickItem *footer) -{ - Q_D(QQuickDialog); - QQuickItem *oldFooter = d->popupItem->footer(); - if (oldFooter == footer) - return; - - if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(oldFooter)) { - QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept); - QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject); - QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick); - if (d->buttonBox == buttonBox) - d->buttonBox = nullptr; - } - if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(footer)) { - QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept); - QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject); - QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick); - d->buttonBox = buttonBox; - buttonBox->setStandardButtons(d->standardButtons); - } - - d->popupItem->setFooter(footer); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::Dialog::standardButtons - - This property holds a combination of standard buttons that are used by the dialog. - - \snippet qtquickcontrols2-dialog.qml 1 - - The buttons will be positioned in the appropriate order for the user's platform. - - Possible flags: - \value Dialog.Ok An "OK" button defined with the \c AcceptRole. - \value Dialog.Open An "Open" button defined with the \c AcceptRole. - \value Dialog.Save A "Save" button defined with the \c AcceptRole. - \value Dialog.Cancel A "Cancel" button defined with the \c RejectRole. - \value Dialog.Close A "Close" button defined with the \c RejectRole. - \value Dialog.Discard A "Discard" or "Don't Save" button, depending on the platform, defined with the \c DestructiveRole. - \value Dialog.Apply An "Apply" button defined with the \c ApplyRole. - \value Dialog.Reset A "Reset" button defined with the \c ResetRole. - \value Dialog.RestoreDefaults A "Restore Defaults" button defined with the \c ResetRole. - \value Dialog.Help A "Help" button defined with the \c HelpRole. - \value Dialog.SaveAll A "Save All" button defined with the \c AcceptRole. - \value Dialog.Yes A "Yes" button defined with the \c YesRole. - \value Dialog.YesToAll A "Yes to All" button defined with the \c YesRole. - \value Dialog.No A "No" button defined with the \c NoRole. - \value Dialog.NoToAll A "No to All" button defined with the \c NoRole. - \value Dialog.Abort An "Abort" button defined with the \c RejectRole. - \value Dialog.Retry A "Retry" button defined with the \c AcceptRole. - \value Dialog.Ignore An "Ignore" button defined with the \c AcceptRole. - \value Dialog.NoButton An invalid button. - - \sa DialogButtonBox -*/ -QPlatformDialogHelper::StandardButtons QQuickDialog::standardButtons() const -{ - Q_D(const QQuickDialog); - return d->standardButtons; -} - -void QQuickDialog::setStandardButtons(QPlatformDialogHelper::StandardButtons buttons) -{ - Q_D(QQuickDialog); - if (d->standardButtons == buttons) - return; - - d->standardButtons = buttons; - if (d->buttonBox) - d->buttonBox->setStandardButtons(buttons); - emit standardButtonsChanged(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod AbstractButton QtQuick.Controls::Dialog::standardButton(StandardButton button) - - Returns the specified standard \a button, or \c null if it does not exist. - - \sa standardButtons -*/ -QQuickAbstractButton *QQuickDialog::standardButton(QPlatformDialogHelper::StandardButton button) const -{ - Q_D(const QQuickDialog); - if (!d->buttonBox) - return nullptr; - return d->buttonBox->standardButton(button); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty int QtQuick.Controls::Dialog::result - - This property holds the result code. - - Standard result codes: - \value Dialog.Accepted The dialog was accepted. - \value Dialog.Rejected The dialog was rejected. - - \sa accept(), reject(), done() -*/ -int QQuickDialog::result() const -{ - Q_D(const QQuickDialog); - return d->result; -} - -void QQuickDialog::setResult(int result) -{ - Q_D(QQuickDialog); - if (d->result == result) - return; - - d->result = result; - emit resultChanged(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Dialog::implicitHeaderWidth - \readonly - - This property holds the implicit header width. - - The value is equal to \c {header && header.visible ? header.implicitWidth : 0}. - - \sa implicitHeaderHeight, implicitFooterWidth -*/ -qreal QQuickDialog::implicitHeaderWidth() const -{ - Q_D(const QQuickDialog); - return d->popupItem->implicitHeaderWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Dialog::implicitHeaderHeight - \readonly - - This property holds the implicit header height. - - The value is equal to \c {header && header.visible ? header.implicitHeight : 0}. - - \sa implicitHeaderWidth, implicitFooterHeight -*/ -qreal QQuickDialog::implicitHeaderHeight() const -{ - Q_D(const QQuickDialog); - return d->popupItem->implicitHeaderHeight(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Dialog::implicitFooterWidth - \readonly - - This property holds the implicit footer width. - - The value is equal to \c {footer && footer.visible ? footer.implicitWidth : 0}. - - \sa implicitFooterHeight, implicitHeaderWidth -*/ -qreal QQuickDialog::implicitFooterWidth() const -{ - Q_D(const QQuickDialog); - return d->popupItem->implicitFooterWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Dialog::implicitFooterHeight - \readonly - - This property holds the implicit footer height. - - The value is equal to \c {footer && footer.visible ? footer.implicitHeight : 0}. - - \sa implicitFooterWidth, implicitHeaderHeight -*/ -qreal QQuickDialog::implicitFooterHeight() const -{ - Q_D(const QQuickDialog); - return d->popupItem->implicitFooterHeight(); -} - -/*! - \qmlmethod void QtQuick.Controls::Dialog::accept() - - Emits the \l accepted() signal and closes the dialog. - - \sa reject(), done() -*/ -void QQuickDialog::accept() -{ - done(Accepted); -} - -/*! - \qmlmethod void QtQuick.Controls::Dialog::reject() - - Emits the \l rejected() signal and closes the dialog. - - \sa accept(), done() -*/ -void QQuickDialog::reject() -{ - done(Rejected); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Dialog::done(int result) - - \list 1 - \li Sets the \a result. - \li Emits \l accepted() or \l rejected() depending on - whether the result is \c Dialog.Accepted or \c Dialog.Rejected, - respectively. - \li Emits \l{Popup::}{closed()}. - \endlist - - \sa accept(), reject(), result -*/ -void QQuickDialog::done(int result) -{ - setResult(result); - - if (result == Accepted) - emit accepted(); - else if (result == Rejected) - emit rejected(); - - close(); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickDialog::accessibleRole() const -{ - return QAccessible::Dialog; -} - -void QQuickDialog::accessibilityActiveChanged(bool active) -{ - Q_D(QQuickDialog); - QQuickPopup::accessibilityActiveChanged(active); - - if (active) - maybeSetAccessibleName(d->popupItem->title()); -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickdialog_p.h b/src/quicktemplates2/qquickdialog_p.h deleted file mode 100644 index b09375ce..00000000 --- a/src/quicktemplates2/qquickdialog_p.h +++ /dev/null @@ -1,148 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDIALOG_P_H -#define QQUICKDIALOG_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> -#include <QtQuickTemplates2/private/qquickpopup_p.h> -#include <QtGui/qpa/qplatformdialoghelper.h> - -QT_BEGIN_NAMESPACE - -class QQuickDialogPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialog : public QQuickPopup -{ - Q_OBJECT - Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL) - Q_PROPERTY(QQuickItem *header READ header WRITE setHeader NOTIFY headerChanged FINAL) - Q_PROPERTY(QQuickItem *footer READ footer WRITE setFooter NOTIFY footerChanged FINAL) - Q_PROPERTY(QPlatformDialogHelper::StandardButtons standardButtons READ standardButtons WRITE setStandardButtons NOTIFY standardButtonsChanged FINAL) - // 2.3 (Qt 5.10) - Q_PROPERTY(int result READ result WRITE setResult NOTIFY resultChanged FINAL REVISION(2, 3)) - Q_FLAGS(QPlatformDialogHelper::StandardButtons) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal implicitHeaderWidth READ implicitHeaderWidth NOTIFY implicitHeaderWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitHeaderHeight READ implicitHeaderHeight NOTIFY implicitHeaderHeightChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitFooterWidth READ implicitFooterWidth NOTIFY implicitFooterWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitFooterHeight READ implicitFooterHeight NOTIFY implicitFooterHeightChanged FINAL REVISION(2, 5)) - QML_NAMED_ELEMENT(Dialog) - QML_ADDED_IN_VERSION(2, 1) - -public: - explicit QQuickDialog(QObject *parent = nullptr); - - QString title() const; - void setTitle(const QString &title); - - QQuickItem *header() const; - void setHeader(QQuickItem *header); - - QQuickItem *footer() const; - void setFooter(QQuickItem *footer); - - QPlatformDialogHelper::StandardButtons standardButtons() const; - void setStandardButtons(QPlatformDialogHelper::StandardButtons buttons); - Q_REVISION(2, 3) Q_INVOKABLE QQuickAbstractButton *standardButton(QPlatformDialogHelper::StandardButton button) const; - - // 2.3 (Qt 5.10) - enum StandardCode { Rejected, Accepted }; - Q_ENUM(StandardCode) - - int result() const; - void setResult(int result); - - // 2.5 (Qt 5.12) - qreal implicitHeaderWidth() const; - qreal implicitHeaderHeight() const; - - qreal implicitFooterWidth() const; - qreal implicitFooterHeight() const; - -public Q_SLOTS: - virtual void accept(); - virtual void reject(); - virtual void done(int result); - -Q_SIGNALS: - void accepted(); - void rejected(); - void titleChanged(); - void headerChanged(); - void footerChanged(); - void standardButtonsChanged(); - // 2.3 (Qt 5.10) - Q_REVISION(2, 3) void applied(); - Q_REVISION(2, 3) void reset(); - Q_REVISION(2, 3) void discarded(); - Q_REVISION(2, 3) void helpRequested(); - Q_REVISION(2, 3) void resultChanged(); - // 2.5 (Qt 5.12) - void implicitHeaderWidthChanged(); - void implicitHeaderHeightChanged(); - void implicitFooterWidthChanged(); - void implicitFooterHeightChanged(); - -protected: - QQuickDialog(QQuickDialogPrivate &dd, QObject *parent); - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; - void accessibilityActiveChanged(bool active) override; -#endif - -private: - Q_DISABLE_COPY(QQuickDialog) - Q_DECLARE_PRIVATE(QQuickDialog) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickDialog) - -#endif // QQUICKDIALOG_P_H diff --git a/src/quicktemplates2/qquickdialog_p_p.h b/src/quicktemplates2/qquickdialog_p_p.h deleted file mode 100644 index eb40c918..00000000 --- a/src/quicktemplates2/qquickdialog_p_p.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDIALOG_P_P_H -#define QQUICKDIALOG_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickdialog_p.h> -#include <QtQuickTemplates2/private/qquickpopup_p_p.h> -#include <QtGui/qpa/qplatformdialoghelper.h> - -QT_BEGIN_NAMESPACE - -class QQuickAbstractButton; -class QQuickDialogButtonBox; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialogPrivate : public QQuickPopupPrivate -{ - Q_DECLARE_PUBLIC(QQuickDialog) - -public: - static QQuickDialogPrivate *get(QQuickDialog *dialog) - { - return dialog->d_func(); - } - - static QPlatformDialogHelper::ButtonRole buttonRole(QQuickAbstractButton *button); - - virtual void handleAccept(); - virtual void handleReject(); - virtual void handleClick(QQuickAbstractButton *button); - - int result = 0; - QString title; - QQuickDialogButtonBox *buttonBox = nullptr; - QPlatformDialogHelper::StandardButtons standardButtons = QPlatformDialogHelper::NoButton; -}; - -QT_END_NAMESPACE - -#endif // QQUICKDIALOG_P_P_H diff --git a/src/quicktemplates2/qquickdialogbuttonbox.cpp b/src/quicktemplates2/qquickdialogbuttonbox.cpp deleted file mode 100644 index a4b3313b..00000000 --- a/src/quicktemplates2/qquickdialogbuttonbox.cpp +++ /dev/null @@ -1,853 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickdialogbuttonbox_p.h" -#include "qquickdialogbuttonbox_p_p.h" -#include "qquickabstractbutton_p.h" -#include "qquickbutton_p.h" -#include "qquickdialog_p_p.h" - -#include <QtCore/qpointer.h> -#include <QtGui/private/qguiapplication_p.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtQml/qqmlengine.h> -#include <QtQml/qqmlcontext.h> -#include <QtQml/qqmlcomponent.h> - -#include <algorithm> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype DialogButtonBox - \inherits Container -//! \instantiates QQuickDialogButtonBox - \inqmlmodule QtQuick.Controls - \ingroup qtquickcontrols2-dialogs - \brief A button box used in dialogs. - \since 5.8 - - Dialogs and message boxes typically present buttons in an order that - conforms to the interface guidelines for that platform. Invariably, - different platforms have their dialog buttons in different orders. - DialogButtonBox allows a developer to add buttons to it and will - automatically use the appropriate order for the user's platform. - - Most buttons for a dialog follow certain roles. Such roles include: - - \list - \li Accepting or rejecting the dialog. - \li Asking for help. - \li Performing actions on the dialog itself (such as resetting fields or - applying changes). - \endlist - - There can also be alternate ways of dismissing the dialog which may cause - destructive results. - - Most dialogs have buttons that can almost be considered standard (e.g. - \uicontrol OK and \uicontrol Cancel buttons). It is sometimes convenient - to create these buttons in a standard way. - - There are a couple ways of using DialogButtonBox. One way is to specify - the standard buttons (e.g. \uicontrol OK, \uicontrol Cancel, \uicontrol Save) - and let the button box setup the buttons. - - \image qtquickcontrols2-dialogbuttonbox.png - - \snippet qtquickcontrols2-dialogbuttonbox.qml 1 - - Alternatively, buttons and their roles can be specified by hand: - - \snippet qtquickcontrols2-dialogbuttonbox-attached.qml 1 - - You can also mix and match normal buttons and standard buttons. - - When a button is clicked in the button box, the \l clicked() signal is - emitted for the actual button that is pressed. In addition, the - following signals are automatically emitted when a button with the - respective role(s) is pressed: - - \table - \header - \li Role - \li Signal - \row - \li \c AcceptRole, \c YesRole - \li \l accepted() - \row - \li \c ApplyRole - \li \l applied() - \row - \li \c DiscardRole - \li \l discarded() - \row - \li \c HelpRole - \li \l helpRequested() - \row - \li \c RejectRole, \c NoRole - \li \l rejected() - \row - \li \c ResetRole - \li \l reset() - \endtable - - \sa Dialog -*/ - -/*! - \qmlsignal QtQuick.Controls::DialogButtonBox::accepted() - - This signal is emitted when a button defined with the \c AcceptRole or - \c YesRole is clicked. - - \sa rejected(), clicked(), helpRequested() -*/ - -/*! - \qmlsignal QtQuick.Controls::DialogButtonBox::rejected() - - This signal is emitted when a button defined with the \c RejectRole or - \c NoRole is clicked. - - \sa accepted(), helpRequested(), clicked() -*/ - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlsignal QtQuick.Controls::DialogButtonBox::applied() - - This signal is emitted when a button defined with the \c ApplyRole is - clicked. - - \sa discarded(), reset() -*/ - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlsignal QtQuick.Controls::DialogButtonBox::reset() - - This signal is emitted when a button defined with the \c ResetRole is - clicked. - - \sa discarded(), applied() -*/ - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlsignal QtQuick.Controls::DialogButtonBox::discarded() - - This signal is emitted when a button defined with the \c DiscardRole is - clicked. - - \sa reset(), applied() -*/ - -/*! - \qmlsignal QtQuick.Controls::DialogButtonBox::helpRequested() - - This signal is emitted when a button defined with the \c HelpRole is clicked. - - \sa accepted(), rejected(), clicked() -*/ - -/*! - \qmlsignal QtQuick.Controls::DialogButtonBox::clicked(AbstractButton button) - - This signal is emitted when a \a button inside the button box is clicked. - - \sa accepted(), rejected(), helpRequested() -*/ - -static QPlatformDialogHelper::ButtonLayout platformButtonLayout() -{ - return QGuiApplicationPrivate::platformTheme()->themeHint(QPlatformTheme::DialogButtonBoxLayout).value<QPlatformDialogHelper::ButtonLayout>(); -} - -void QQuickDialogButtonBoxPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - QQuickContainerPrivate::itemImplicitWidthChanged(item); - if (item == contentItem) - resizeContent(); - else - updateImplicitContentWidth(); -} - -void QQuickDialogButtonBoxPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - QQuickContainerPrivate::itemImplicitHeightChanged(item); - if (item == contentItem) - resizeContent(); - else - updateImplicitContentHeight(); -} - -// adapted from QStyle::alignedRect() -static QRectF alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment, const QSizeF &size, const QRectF &rectangle) -{ - alignment = QGuiApplicationPrivate::visualAlignment(direction, alignment); - qreal x = rectangle.x(); - qreal y = rectangle.y(); - qreal w = size.width(); - qreal h = size.height(); - if ((alignment & Qt::AlignVCenter) == Qt::AlignVCenter || (alignment & Qt::AlignVertical_Mask) == 0) - y += (rectangle.size().height() - h) / 2; - else if ((alignment & Qt::AlignBottom) == Qt::AlignBottom) - y += rectangle.size().height() - h; - if ((alignment & Qt::AlignRight) == Qt::AlignRight) - x += rectangle.size().width() - w; - else if ((alignment & Qt::AlignHCenter) == Qt::AlignHCenter) - x += (rectangle.size().width() - w) / 2; - return QRectF(x, y, w, h); -} - -void QQuickDialogButtonBoxPrivate::resizeContent() -{ - Q_Q(QQuickDialogButtonBox); - if (!contentItem) - return; - - QRectF geometry = q->boundingRect().adjusted(q->leftPadding(), q->topPadding(), -q->rightPadding(), -q->bottomPadding()); - if (alignment != 0) - geometry = alignedRect(q->isMirrored() ? Qt::RightToLeft : Qt::LeftToRight, alignment, QSizeF(contentWidth, contentHeight), geometry); - - contentItem->setPosition(geometry.topLeft()); - contentItem->setSize(geometry.size()); -} - -void QQuickDialogButtonBoxPrivate::updateLayout() -{ - Q_Q(QQuickDialogButtonBox); - const int count = contentModel->count(); - if (count <= 0) - return; - - const int halign = alignment & Qt::AlignHorizontal_Mask; - const int valign = alignment & Qt::AlignVertical_Mask; - - QList<QQuickAbstractButton *> buttons; - const qreal cw = (alignment & Qt::AlignHorizontal_Mask) == 0 ? q->availableWidth() : contentWidth; - const qreal itemWidth = (cw - qMax(0, count - 1) * spacing) / count; - - for (int i = 0; i < count; ++i) { - QQuickItem *item = q->itemAt(i); - if (item) { - QQuickItemPrivate *p = QQuickItemPrivate::get(item); - if (!p->widthValid()) { - if (!halign) - item->setWidth(itemWidth); - else - item->resetWidth(); - if (!valign) - item->setHeight(contentHeight); - else - item->resetHeight(); - p->widthValidFlag = false; - } - } - buttons += static_cast<QQuickAbstractButton *>(item); - } - - struct ButtonLayout { - ButtonLayout(QPlatformDialogHelper::ButtonLayout layout) - : m_layout(QPlatformDialogHelper::buttonLayout(Qt::Horizontal, layout)) - { - } - - bool operator()(QQuickAbstractButton *first, QQuickAbstractButton *second) - { - const QPlatformDialogHelper::ButtonRole firstRole = QQuickDialogPrivate::buttonRole(first); - const QPlatformDialogHelper::ButtonRole secondRole = QQuickDialogPrivate::buttonRole(second); - - if (firstRole != secondRole && firstRole != QPlatformDialogHelper::InvalidRole && secondRole != QPlatformDialogHelper::InvalidRole) { - const int *l = m_layout; - while (*l != QPlatformDialogHelper::EOL) { - // Unset the Reverse flag. - const int role = (*l & ~QPlatformDialogHelper::Reverse); - if (role == firstRole) - return true; - if (role == secondRole) - return false; - ++l; - } - } - - if (firstRole == secondRole) - return false; - - return firstRole != QPlatformDialogHelper::InvalidRole; - } - const int *m_layout; - }; - - std::stable_sort(buttons.begin(), buttons.end(), ButtonLayout(static_cast<QPlatformDialogHelper::ButtonLayout>(buttonLayout))); - - for (int i = 0; i < buttons.count() - 1; ++i) - q->insertItem(i, buttons.at(i)); -} - -qreal QQuickDialogButtonBoxPrivate::getContentWidth() const -{ - Q_Q(const QQuickDialogButtonBox); - const int count = contentModel->count(); - const qreal totalSpacing = qMax(0, count - 1) * spacing; - qreal totalWidth = totalSpacing; - qreal maxWidth = 0; - for (int i = 0; i < count; ++i) { - QQuickItem *item = q->itemAt(i); - if (item) { - totalWidth += item->implicitWidth(); - maxWidth = qMax(maxWidth, item->implicitWidth()); - } - } - if ((alignment & Qt::AlignHorizontal_Mask) == 0) - totalWidth = qMax(totalWidth, count * maxWidth + totalSpacing); - return totalWidth; -} - -qreal QQuickDialogButtonBoxPrivate::getContentHeight() const -{ - Q_Q(const QQuickDialogButtonBox); - const int count = contentModel->count(); - qreal maxHeight = 0; - for (int i = 0; i < count; ++i) { - QQuickItem *item = q->itemAt(i); - if (item) - maxHeight = qMax(maxHeight, item->implicitHeight()); - } - return maxHeight; -} - -void QQuickDialogButtonBoxPrivate::handleClick() -{ - Q_Q(QQuickDialogButtonBox); - QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(q->sender()); - if (!button) - return; - - // Can't fetch this *after* emitting clicked, as clicked may destroy the button - // or change its role. Now changing the role is not possible yet, but arguably - // both clicked and accepted/rejected/etc. should be emitted "atomically" - // depending on whatever role the button had at the time of the click. - const QPlatformDialogHelper::ButtonRole role = QQuickDialogPrivate::buttonRole(button); - QPointer<QQuickDialogButtonBox> guard(q); - - emit q->clicked(button); - - if (!guard) - return; - - switch (role) { - case QPlatformDialogHelper::AcceptRole: - case QPlatformDialogHelper::YesRole: - emit q->accepted(); - break; - case QPlatformDialogHelper::RejectRole: - case QPlatformDialogHelper::NoRole: - emit q->rejected(); - break; - case QPlatformDialogHelper::ApplyRole: - emit q->applied(); - break; - case QPlatformDialogHelper::ResetRole: - emit q->reset(); - break; - case QPlatformDialogHelper::DestructiveRole: - emit q->discarded(); - break; - case QPlatformDialogHelper::HelpRole: - emit q->helpRequested(); - break; - default: - break; - } -} - -QString QQuickDialogButtonBoxPrivate::buttonText(QPlatformDialogHelper::StandardButton standardButton) -{ - return QPlatformTheme::removeMnemonics(QGuiApplicationPrivate::platformTheme()->standardButtonText(standardButton)); -} - -QQuickAbstractButton *QQuickDialogButtonBoxPrivate::createStandardButton(QPlatformDialogHelper::StandardButton standardButton) -{ - Q_Q(QQuickDialogButtonBox); - if (!delegate) - return nullptr; - - QQmlContext *creationContext = delegate->creationContext(); - if (!creationContext) - creationContext = qmlContext(q); - QQmlContext *context = new QQmlContext(creationContext, q); - context->setContextObject(q); - - QObject *object = delegate->beginCreate(context); - QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton*>(object); - if (button) { - QQuickDialogButtonBoxAttached *attached = qobject_cast<QQuickDialogButtonBoxAttached *>(qmlAttachedPropertiesObject<QQuickDialogButtonBox>(button, true)); - QQuickDialogButtonBoxAttachedPrivate::get(attached)->standardButton = standardButton; - attached->setButtonRole(QPlatformDialogHelper::buttonRole(standardButton)); - button->setText(buttonText(standardButton)); - delegate->completeCreate(); - button->setParent(q); - return button; - } - - delete object; - return nullptr; -} - -void QQuickDialogButtonBoxPrivate::removeStandardButtons() -{ - Q_Q(QQuickDialogButtonBox); - int i = q->count() - 1; - while (i >= 0) { - QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(q->itemAt(i)); - if (button) { - QQuickDialogButtonBoxAttached *attached = qobject_cast<QQuickDialogButtonBoxAttached *>( - qmlAttachedPropertiesObject<QQuickDialogButtonBox>(button, false)); - if (attached) { - QQuickDialogButtonBoxAttachedPrivate *p = QQuickDialogButtonBoxAttachedPrivate::get(attached); - if (p->standardButton != QPlatformDialogHelper::NoButton) { - q->removeItem(button); - button->deleteLater(); - } - } - } - --i; - } -} - -void QQuickDialogButtonBoxPrivate::updateLanguage() -{ - Q_Q(QQuickDialogButtonBox); - int i = q->count() - 1; - while (i >= 0) { - QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(itemAt(i)); - if (button) { - QQuickDialogButtonBoxAttached *attached = qobject_cast<QQuickDialogButtonBoxAttached *>( - qmlAttachedPropertiesObject<QQuickDialogButtonBox>(button, true)); - const auto boxAttachedPrivate = QQuickDialogButtonBoxAttachedPrivate::get(attached); - const QPlatformDialogHelper::StandardButton standardButton = boxAttachedPrivate->standardButton; - // The button might be a custom one with explicitly specified text, so we shouldn't change it in that case. - if (standardButton != QPlatformDialogHelper::NoButton) { - button->setText(buttonText(standardButton)); - } - } - --i; - } -} - -QQuickDialogButtonBox::QQuickDialogButtonBox(QQuickItem *parent) - : QQuickContainer(*(new QQuickDialogButtonBoxPrivate), parent) -{ - Q_D(QQuickDialogButtonBox); - d->changeTypes |= QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight; - d->buttonLayout = platformButtonLayout(); -} - -QQuickDialogButtonBox::~QQuickDialogButtonBox() -{ -} - -/*! - \qmlproperty enumeration QtQuick.Controls::DialogButtonBox::position - - This property holds the position of the button box. - - \note If the button box is assigned as a header or footer of ApplicationWindow - or Page, the appropriate position is set automatically. - - Possible values: - \value DialogButtonBox.Header The button box is at the top, as a window or page header. - \value DialogButtonBox.Footer The button box is at the bottom, as a window or page header. - - The default value is \c Footer. - - \sa Dialog::header, Dialog::footer -*/ -QQuickDialogButtonBox::Position QQuickDialogButtonBox::position() const -{ - Q_D(const QQuickDialogButtonBox); - return d->position; -} - -void QQuickDialogButtonBox::setPosition(Position position) -{ - Q_D(QQuickDialogButtonBox); - if (d->position == position) - return; - - d->position = position; - emit positionChanged(); -} - -/*! - \qmlproperty flags QtQuick.Controls::DialogButtonBox::alignment - - This property holds the alignment of the buttons. - - Possible values: - \value undefined The buttons are resized to fill the available space. - \value Qt.AlignLeft The buttons are aligned to the left. - \value Qt.AlignHCenter The buttons are horizontally centered. - \value Qt.AlignRight The buttons are aligned to the right. - \value Qt.AlignTop The buttons are aligned to the top. - \value Qt.AlignVCenter The buttons are vertically centered. - \value Qt.AlignBottom The buttons are aligned to the bottom. -*/ -Qt::Alignment QQuickDialogButtonBox::alignment() const -{ - Q_D(const QQuickDialogButtonBox); - return d->alignment; -} - -void QQuickDialogButtonBox::setAlignment(Qt::Alignment alignment) -{ - Q_D(QQuickDialogButtonBox); - if (d->alignment == alignment) - return; - - d->alignment = alignment; - if (isComponentComplete()) { - d->resizeContent(); - polish(); - } - emit alignmentChanged(); -} - -void QQuickDialogButtonBox::resetAlignment() -{ - setAlignment({}); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::DialogButtonBox::standardButtons - - This property holds a combination of standard buttons that are used by the button box. - - \snippet qtquickcontrols2-dialogbuttonbox.qml 1 - - The buttons will be positioned in the appropriate order for the user's platform. - - Possible flags: - \value DialogButtonBox.Ok An "OK" button defined with the \c AcceptRole. - \value DialogButtonBox.Open An "Open" button defined with the \c AcceptRole. - \value DialogButtonBox.Save A "Save" button defined with the \c AcceptRole. - \value DialogButtonBox.Cancel A "Cancel" button defined with the \c RejectRole. - \value DialogButtonBox.Close A "Close" button defined with the \c RejectRole. - \value DialogButtonBox.Discard A "Discard" or "Don't Save" button, depending on the platform, defined with the \c DestructiveRole. - \value DialogButtonBox.Apply An "Apply" button defined with the \c ApplyRole. - \value DialogButtonBox.Reset A "Reset" button defined with the \c ResetRole. - \value DialogButtonBox.RestoreDefaults A "Restore Defaults" button defined with the \c ResetRole. - \value DialogButtonBox.Help A "Help" button defined with the \c HelpRole. - \value DialogButtonBox.SaveAll A "Save All" button defined with the \c AcceptRole. - \value DialogButtonBox.Yes A "Yes" button defined with the \c YesRole. - \value DialogButtonBox.YesToAll A "Yes to All" button defined with the \c YesRole. - \value DialogButtonBox.No A "No" button defined with the \c NoRole. - \value DialogButtonBox.NoToAll A "No to All" button defined with the \c NoRole. - \value DialogButtonBox.Abort An "Abort" button defined with the \c RejectRole. - \value DialogButtonBox.Retry A "Retry" button defined with the \c AcceptRole. - \value DialogButtonBox.Ignore An "Ignore" button defined with the \c AcceptRole. - \value DialogButtonBox.NoButton An invalid button. - - \sa standardButton() -*/ -QPlatformDialogHelper::StandardButtons QQuickDialogButtonBox::standardButtons() const -{ - Q_D(const QQuickDialogButtonBox); - return d->standardButtons; -} - -void QQuickDialogButtonBox::setStandardButtons(QPlatformDialogHelper::StandardButtons buttons) -{ - Q_D(QQuickDialogButtonBox); - if (d->standardButtons == buttons) - return; - - d->removeStandardButtons(); - - for (int i = QPlatformDialogHelper::FirstButton; i <= QPlatformDialogHelper::LastButton; i<<=1) { - QPlatformDialogHelper::StandardButton standardButton = static_cast<QPlatformDialogHelper::StandardButton>(i); - if (standardButton & buttons) { - QQuickAbstractButton *button = d->createStandardButton(standardButton); - if (button) - addItem(button); - } - } - - if (isComponentComplete()) - polish(); - - d->standardButtons = buttons; - emit standardButtonsChanged(); -} - -/*! - \qmlmethod AbstractButton QtQuick.Controls::DialogButtonBox::standardButton(StandardButton button) - - Returns the specified standard \a button, or \c null if it does not exist. - - \sa standardButtons -*/ -QQuickAbstractButton *QQuickDialogButtonBox::standardButton(QPlatformDialogHelper::StandardButton button) const -{ - Q_D(const QQuickDialogButtonBox); - if (Q_UNLIKELY(!(d->standardButtons & button))) - return nullptr; - for (int i = 0, n = count(); i < n; ++i) { - QQuickAbstractButton *btn = qobject_cast<QQuickAbstractButton *>(d->itemAt(i)); - if (Q_LIKELY(btn)) { - QQuickDialogButtonBoxAttached *attached = qobject_cast<QQuickDialogButtonBoxAttached *>(qmlAttachedPropertiesObject<QQuickDialogButtonBox>(btn, false)); - if (attached && QQuickDialogButtonBoxAttachedPrivate::get(attached)->standardButton == button) - return btn; - } - } - return nullptr; -} - -/*! - \qmlproperty Component QtQuick.Controls::DialogButtonBox::delegate - - This property holds a delegate for creating standard buttons. - - \sa standardButtons -*/ -QQmlComponent *QQuickDialogButtonBox::delegate() const -{ - Q_D(const QQuickDialogButtonBox); - return d->delegate; -} - -void QQuickDialogButtonBox::setDelegate(QQmlComponent* delegate) -{ - Q_D(QQuickDialogButtonBox); - if (d->delegate == delegate) - return; - - delete d->delegate; - d->delegate = delegate; - emit delegateChanged(); -} - -QQuickDialogButtonBoxAttached *QQuickDialogButtonBox::qmlAttachedProperties(QObject *object) -{ - return new QQuickDialogButtonBoxAttached(object); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty enumeration QtQuick.Controls::DialogButtonBox::buttonLayout - - This property holds the button layout policy to be used when arranging the buttons contained in the button box. - The default value is platform-specific. - - Available values: - \value DialogButtonBox.WinLayout Use a policy appropriate for applications on Windows. - \value DialogButtonBox.MacLayout Use a policy appropriate for applications on macOS. - \value DialogButtonBox.KdeLayout Use a policy appropriate for applications on KDE. - \value DialogButtonBox.GnomeLayout Use a policy appropriate for applications on GNOME. - \value DialogButtonBox.AndroidLayout Use a policy appropriate for applications on Android. -*/ -QPlatformDialogHelper::ButtonLayout QQuickDialogButtonBox::buttonLayout() const -{ - Q_D(const QQuickDialogButtonBox); - return d->buttonLayout; -} - -void QQuickDialogButtonBox::setButtonLayout(QPlatformDialogHelper::ButtonLayout layout) -{ - Q_D(QQuickDialogButtonBox); - if (d->buttonLayout == layout) - return; - - d->buttonLayout = layout; - if (isComponentComplete()) - d->updateLayout(); - emit buttonLayoutChanged(); -} - -void QQuickDialogButtonBox::resetButtonLayout() -{ - setButtonLayout(platformButtonLayout()); -} - -void QQuickDialogButtonBox::updatePolish() -{ - Q_D(QQuickDialogButtonBox); - QQuickContainer::updatePolish(); - d->updateLayout(); -} - -bool QQuickDialogButtonBox::event(QEvent *e) -{ - Q_D(QQuickDialogButtonBox); - if (e->type() == QEvent::LanguageChange) - d->updateLanguage(); - return QQuickContainer::event(e); -} - -void QQuickDialogButtonBox::componentComplete() -{ - Q_D(QQuickDialogButtonBox); - QQuickContainer::componentComplete(); - d->updateLayout(); -} - -void QQuickDialogButtonBox::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickDialogButtonBox); - QQuickContainer::geometryChange(newGeometry, oldGeometry); - d->updateLayout(); -} - -void QQuickDialogButtonBox::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_D(QQuickDialogButtonBox); - QQuickContainer::contentItemChange(newItem, oldItem); - if (oldItem) - QQuickItemPrivate::get(oldItem)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); - if (newItem) - QQuickItemPrivate::get(newItem)->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); -} - -bool QQuickDialogButtonBox::isContent(QQuickItem *item) const -{ - return qobject_cast<QQuickAbstractButton *>(item); -} - -void QQuickDialogButtonBox::itemAdded(int index, QQuickItem *item) -{ - Q_D(QQuickDialogButtonBox); - Q_UNUSED(index); - if (QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(item)) - QObjectPrivate::connect(button, &QQuickAbstractButton::clicked, d, &QQuickDialogButtonBoxPrivate::handleClick); - if (QQuickDialogButtonBoxAttached *attached = qobject_cast<QQuickDialogButtonBoxAttached *>(qmlAttachedPropertiesObject<QQuickDialogButtonBox>(item, false))) - QQuickDialogButtonBoxAttachedPrivate::get(attached)->setButtonBox(this); - d->updateImplicitContentSize(); - if (isComponentComplete()) - polish(); -} - -void QQuickDialogButtonBox::itemRemoved(int index, QQuickItem *item) -{ - Q_D(QQuickDialogButtonBox); - Q_UNUSED(index); - if (QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(item)) - QObjectPrivate::disconnect(button, &QQuickAbstractButton::clicked, d, &QQuickDialogButtonBoxPrivate::handleClick); - if (QQuickDialogButtonBoxAttached *attached = qobject_cast<QQuickDialogButtonBoxAttached *>(qmlAttachedPropertiesObject<QQuickDialogButtonBox>(item, false))) - QQuickDialogButtonBoxAttachedPrivate::get(attached)->setButtonBox(nullptr); - d->updateImplicitContentSize(); - if (isComponentComplete()) - polish(); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickDialogButtonBox::accessibleRole() const -{ - return QAccessible::PageTabList; -} -#endif - -void QQuickDialogButtonBoxAttachedPrivate::setButtonBox(QQuickDialogButtonBox *box) -{ - Q_Q(QQuickDialogButtonBoxAttached); - if (buttonBox == box) - return; - - buttonBox = box; - emit q->buttonBoxChanged(); -} - -QQuickDialogButtonBoxAttached::QQuickDialogButtonBoxAttached(QObject *parent) - : QObject(*(new QQuickDialogButtonBoxAttachedPrivate), parent) -{ - Q_D(QQuickDialogButtonBoxAttached); - QQuickItem *parentItem = qobject_cast<QQuickItem *>(parent); - while (parentItem && !d->buttonBox) { - d->buttonBox = qobject_cast<QQuickDialogButtonBox *>(parentItem); - parentItem = parentItem->parentItem(); - } -} - -/*! - \qmlattachedproperty DialogButtonBox QtQuick.Controls::DialogButtonBox::buttonBox - \readonly - - This attached property holds the button box that manages this button, or - \c null if the button is not in a button box. -*/ -QQuickDialogButtonBox *QQuickDialogButtonBoxAttached::buttonBox() const -{ - Q_D(const QQuickDialogButtonBoxAttached); - return d->buttonBox; -} - -/*! - \qmlattachedproperty enumeration QtQuick.Controls::DialogButtonBox::buttonRole - - This attached property holds the role of each button in a button box. - - \snippet qtquickcontrols2-dialogbuttonbox-attached.qml 1 - - Available values: - \value DialogButtonBox.InvalidRole The button is invalid. - \value DialogButtonBox.AcceptRole Clicking the button causes the dialog to be accepted (e.g. \uicontrol OK). - \value DialogButtonBox.RejectRole Clicking the button causes the dialog to be rejected (e.g. \uicontrol Cancel). - \value DialogButtonBox.DestructiveRole Clicking the button causes a destructive change (e.g. for discarding changes) and closes the dialog. - \value DialogButtonBox.ActionRole Clicking the button causes changes to the elements within the dialog. - \value DialogButtonBox.HelpRole The button can be clicked to request help. - \value DialogButtonBox.YesRole The button is a "Yes"-like button. - \value DialogButtonBox.NoRole The button is a "No"-like button. - \value DialogButtonBox.ResetRole The button resets the dialog's fields to default values. - \value DialogButtonBox.ApplyRole The button applies current changes. -*/ -QPlatformDialogHelper::ButtonRole QQuickDialogButtonBoxAttached::buttonRole() const -{ - Q_D(const QQuickDialogButtonBoxAttached); - return d->buttonRole; -} - -void QQuickDialogButtonBoxAttached::setButtonRole(QPlatformDialogHelper::ButtonRole role) -{ - Q_D(QQuickDialogButtonBoxAttached); - if (d->buttonRole == role) - return; - - d->buttonRole = role; - emit buttonRoleChanged(); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickdialogbuttonbox_p.h b/src/quicktemplates2/qquickdialogbuttonbox_p.h deleted file mode 100644 index 48e721e5..00000000 --- a/src/quicktemplates2/qquickdialogbuttonbox_p.h +++ /dev/null @@ -1,173 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDIALOGBUTTONBOX_P_H -#define QQUICKDIALOGBUTTONBOX_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> -#include <QtQuickTemplates2/private/qquickcontainer_p.h> -#include <QtGui/qpa/qplatformdialoghelper.h> - -QT_BEGIN_NAMESPACE - -class QQmlComponent; -class QQuickDialogButtonBoxPrivate; -class QQuickDialogButtonBoxAttached; -class QQuickDialogButtonBoxAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialogButtonBox : public QQuickContainer -{ - Q_OBJECT - Q_PROPERTY(Position position READ position WRITE setPosition NOTIFY positionChanged FINAL) - Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment RESET resetAlignment NOTIFY alignmentChanged FINAL) - Q_PROPERTY(QPlatformDialogHelper::StandardButtons standardButtons READ standardButtons WRITE setStandardButtons NOTIFY standardButtonsChanged FINAL) - Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL) - // 2.5 (Qt 5.12) - Q_PROPERTY(QPlatformDialogHelper::ButtonLayout buttonLayout READ buttonLayout WRITE setButtonLayout RESET resetButtonLayout NOTIFY buttonLayoutChanged FINAL REVISION(2, 5)) - Q_FLAGS(QPlatformDialogHelper::StandardButtons) - QML_NAMED_ELEMENT(DialogButtonBox) - QML_ATTACHED(QQuickDialogButtonBoxAttached) - QML_ADDED_IN_VERSION(2, 1) - -public: - explicit QQuickDialogButtonBox(QQuickItem *parent = nullptr); - ~QQuickDialogButtonBox(); - - enum Position { - Header, - Footer - }; - Q_ENUM(Position) - - Position position() const; - void setPosition(Position position); - - Qt::Alignment alignment() const; - void setAlignment(Qt::Alignment alignment); - void resetAlignment(); - - QPlatformDialogHelper::StandardButtons standardButtons() const; - void setStandardButtons(QPlatformDialogHelper::StandardButtons buttons); - Q_INVOKABLE QQuickAbstractButton *standardButton(QPlatformDialogHelper::StandardButton button) const; - - QQmlComponent *delegate() const; - void setDelegate(QQmlComponent *delegate); - - static QQuickDialogButtonBoxAttached *qmlAttachedProperties(QObject *object); - - // 2.5 (Qt 5.12) - Q_ENUMS(QPlatformDialogHelper::ButtonLayout) - - QPlatformDialogHelper::ButtonLayout buttonLayout() const; - void setButtonLayout(QPlatformDialogHelper::ButtonLayout layout); - void resetButtonLayout(); - -Q_SIGNALS: - void accepted(); - void rejected(); - void helpRequested(); - void clicked(QQuickAbstractButton *button); - void positionChanged(); - void alignmentChanged(); - void standardButtonsChanged(); - void delegateChanged(); - // 2.3 (Qt 5.10) - Q_REVISION(2, 3) void applied(); - Q_REVISION(2, 3) void reset(); - Q_REVISION(2, 3) void discarded(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void buttonLayoutChanged(); - -protected: - void updatePolish() override; - void componentComplete() override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; - bool isContent(QQuickItem *item) const override; - void itemAdded(int index, QQuickItem *item) override; - void itemRemoved(int index, QQuickItem *item) override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - bool event(QEvent *e) override; - -private: - Q_DISABLE_COPY(QQuickDialogButtonBox) - Q_DECLARE_PRIVATE(QQuickDialogButtonBox) -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialogButtonBoxAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickDialogButtonBox *buttonBox READ buttonBox NOTIFY buttonBoxChanged FINAL) - Q_PROPERTY(QPlatformDialogHelper::ButtonRole buttonRole READ buttonRole WRITE setButtonRole NOTIFY buttonRoleChanged FINAL) - Q_ENUMS(QPlatformDialogHelper::ButtonRole) - -public: - explicit QQuickDialogButtonBoxAttached(QObject *parent = nullptr); - - QQuickDialogButtonBox *buttonBox() const; - - QPlatformDialogHelper::ButtonRole buttonRole() const; - void setButtonRole(QPlatformDialogHelper::ButtonRole role); - -Q_SIGNALS: - void buttonBoxChanged(); - void buttonRoleChanged(); - -private: - Q_DISABLE_COPY(QQuickDialogButtonBoxAttached) - Q_DECLARE_PRIVATE(QQuickDialogButtonBoxAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickDialogButtonBox) -QML_DECLARE_TYPEINFO(QQuickDialogButtonBox, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKDIALOGBUTTONBOX_P_H diff --git a/src/quicktemplates2/qquickdialogbuttonbox_p_p.h b/src/quicktemplates2/qquickdialogbuttonbox_p_p.h deleted file mode 100644 index 5e08b2ad..00000000 --- a/src/quicktemplates2/qquickdialogbuttonbox_p_p.h +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDIALOGBUTTONBOX_P_P_H -#define QQUICKDIALOGBUTTONBOX_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontainer_p_p.h> -#include <QtQuickTemplates2/private/qquickdialogbuttonbox_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialogButtonBoxPrivate : public QQuickContainerPrivate -{ - Q_DECLARE_PUBLIC(QQuickDialogButtonBox) - -public: - static QQuickDialogButtonBoxPrivate *get(QQuickDialogButtonBox *box) - { - return box->d_func(); - } - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - void resizeContent() override; - - void updateLayout(); - - qreal getContentWidth() const override; - qreal getContentHeight() const override; - - void handleClick(); - - static QString buttonText(QPlatformDialogHelper::StandardButton standardButton); - - QQuickAbstractButton *createStandardButton(QPlatformDialogHelper::StandardButton button); - void removeStandardButtons(); - - void updateLanguage(); - - Qt::Alignment alignment; - QQuickDialogButtonBox::Position position = QQuickDialogButtonBox::Footer; - QPlatformDialogHelper::StandardButtons standardButtons = QPlatformDialogHelper::NoButton; - QPlatformDialogHelper::ButtonLayout buttonLayout = QPlatformDialogHelper::UnknownLayout; - QQmlComponent *delegate = nullptr; -}; - -class QQuickDialogButtonBoxAttachedPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickDialogButtonBoxAttached) - -public: - static QQuickDialogButtonBoxAttachedPrivate *get(QQuickDialogButtonBoxAttached *q) - { - return q->d_func(); - } - - void setButtonBox(QQuickDialogButtonBox *box); - - QQuickDialogButtonBox *buttonBox = nullptr; - QPlatformDialogHelper::ButtonRole buttonRole = QPlatformDialogHelper::InvalidRole; - QPlatformDialogHelper::StandardButton standardButton = QPlatformDialogHelper::NoButton; -}; - -QT_END_NAMESPACE - -#endif // QQUICKDIALOGBUTTONBOX_P_P_H diff --git a/src/quicktemplates2/qquickdrawer.cpp b/src/quicktemplates2/qquickdrawer.cpp deleted file mode 100644 index 7de548e6..00000000 --- a/src/quicktemplates2/qquickdrawer.cpp +++ /dev/null @@ -1,813 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickdrawer_p.h" -#include "qquickdrawer_p_p.h" -#include "qquickpopupitem_p_p.h" -#include "qquickpopuppositioner_p_p.h" - -#include <QtGui/qstylehints.h> -#include <QtGui/private/qguiapplication_p.h> -#include <QtQml/qqmlinfo.h> -#include <QtQuick/private/qquickwindow_p.h> -#include <QtQuick/private/qquickanimation_p.h> -#include <QtQuick/private/qquicktransition_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Drawer - \inherits Popup -//! \instantiates QQuickDrawer - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-navigation - \ingroup qtquickcontrols2-popups - \brief Side panel that can be opened and closed using a swipe gesture. - - Drawer provides a swipe-based side panel, similar to those often used in - touch interfaces to provide a central location for navigation. - - \image qtquickcontrols2-drawer.gif - - Drawer can be positioned at any of the four edges of the content item. - The drawer above is positioned against the left edge of the window. The - drawer is then opened by \e "dragging" it out from the left edge of the - window. - - \code - import QtQuick - import QtQuick.Controls - - ApplicationWindow { - id: window - visible: true - - Drawer { - id: drawer - width: 0.66 * window.width - height: window.height - - Label { - text: "Content goes here!" - anchors.centerIn: parent - } - } - } - \endcode - - Drawer is a special type of popup that resides at one of the window \l {edge}{edges}. - By default, Drawer re-parents itself to the window \c overlay, and therefore operates - on window coordinates. It is also possible to manually set the \l{Popup::}{parent} to - something else to make the drawer operate in a specific coordinate space. - - Drawer can be configured to cover only part of its window edge. The following example - illustrates how Drawer can be positioned to appear below a window header: - - \code - import QtQuick - import QtQuick.Controls - - ApplicationWindow { - id: window - visible: true - - header: ToolBar { } - - Drawer { - y: header.height - width: window.width * 0.6 - height: window.height - header.height - } - } - \endcode - - The \l position property determines how much of the drawer is visible, as - a value between \c 0.0 and \c 1.0. It is not possible to set the x-coordinate - (or horizontal margins) of a drawer at the left or right window edge, or the - y-coordinate (or vertical margins) of a drawer at the top or bottom window edge. - - In the image above, the application's contents are \e "pushed" across the - screen. This is achieved by applying a translation to the contents: - - \code - import QtQuick - import QtQuick.Controls - - ApplicationWindow { - id: window - width: 200 - height: 228 - visible: true - - Drawer { - id: drawer - width: 0.66 * window.width - height: window.height - } - - Label { - id: content - - text: "Aa" - font.pixelSize: 96 - anchors.fill: parent - verticalAlignment: Label.AlignVCenter - horizontalAlignment: Label.AlignHCenter - - transform: Translate { - x: drawer.position * content.width * 0.33 - } - } - } - \endcode - - If you would like the application's contents to stay where they are when - the drawer is opened, don't apply a translation. - - Drawer can be configured as a non-closable persistent side panel by - making the Drawer \l {Popup::modal}{non-modal} and \l {interactive} - {non-interactive}. See the \l {Qt Quick Controls 2 - Side Panel}{Side Panel} - example for more details. - - \note On some platforms, certain edges may be reserved for system - gestures and therefore cannot be used with Drawer. For example, the - top and bottom edges may be reserved for system notifications and - control centers on Android and iOS. - - \sa SwipeView, {Customizing Drawer}, {Navigation Controls}, {Popup Controls} -*/ - -class QQuickDrawerPositioner : public QQuickPopupPositioner -{ -public: - QQuickDrawerPositioner(QQuickDrawer *drawer) : QQuickPopupPositioner(drawer) { } - - void reposition() override; -}; - -qreal QQuickDrawerPrivate::offsetAt(const QPointF &point) const -{ - qreal offset = positionAt(point) - position; - - // don't jump when dragged open - if (offset > 0 && position > 0 && !contains(point)) - offset = 0; - - return offset; -} - -qreal QQuickDrawerPrivate::positionAt(const QPointF &point) const -{ - Q_Q(const QQuickDrawer); - QQuickWindow *window = q->window(); - if (!window) - return 0; - - switch (edge) { - case Qt::TopEdge: - return point.y() / q->height(); - case Qt::LeftEdge: - return point.x() / q->width(); - case Qt::RightEdge: - return (window->width() - point.x()) / q->width(); - case Qt::BottomEdge: - return (window->height() - point.y()) / q->height(); - default: - return 0; - } -} - -QQuickPopupPositioner *QQuickDrawerPrivate::getPositioner() -{ - Q_Q(QQuickDrawer); - if (!positioner) - positioner = new QQuickDrawerPositioner(q); - return positioner; -} - -void QQuickDrawerPositioner::reposition() -{ - if (m_positioning) - return; - - QQuickDrawer *drawer = static_cast<QQuickDrawer*>(popup()); - QQuickWindow *window = drawer->window(); - if (!window) - return; - - const qreal position = drawer->position(); - QQuickItem *popupItem = drawer->popupItem(); - switch (drawer->edge()) { - case Qt::LeftEdge: - popupItem->setX((position - 1.0) * popupItem->width()); - break; - case Qt::RightEdge: - popupItem->setX(window->width() - position * popupItem->width()); - break; - case Qt::TopEdge: - popupItem->setY((position - 1.0) * popupItem->height()); - break; - case Qt::BottomEdge: - popupItem->setY(window->height() - position * popupItem->height()); - break; - } - - QQuickPopupPositioner::reposition(); -} - -void QQuickDrawerPrivate::showOverlay() -{ - // managed in setPosition() -} - -void QQuickDrawerPrivate::hideOverlay() -{ - // managed in setPosition() -} - -void QQuickDrawerPrivate::resizeOverlay() -{ - if (!dimmer || !window) - return; - - QRectF geometry(0, 0, window->width(), window->height()); - - if (edge == Qt::LeftEdge || edge == Qt::RightEdge) { - geometry.setY(popupItem->y()); - geometry.setHeight(popupItem->height()); - } else { - geometry.setX(popupItem->x()); - geometry.setWidth(popupItem->width()); - } - - dimmer->setPosition(geometry.topLeft()); - dimmer->setSize(geometry.size()); -} - -static bool isWithinDragMargin(const QQuickDrawer *drawer, const QPointF &pos) -{ - switch (drawer->edge()) { - case Qt::LeftEdge: - return pos.x() <= drawer->dragMargin(); - case Qt::RightEdge: - return pos.x() >= drawer->window()->width() - drawer->dragMargin(); - case Qt::TopEdge: - return pos.y() <= drawer->dragMargin(); - case Qt::BottomEdge: - return pos.y() >= drawer->window()->height() - drawer->dragMargin(); - default: - Q_UNREACHABLE(); - break; - } - return false; -} - -bool QQuickDrawerPrivate::startDrag(QEvent *event) -{ - Q_Q(QQuickDrawer); - if (!window || !interactive || dragMargin < 0.0 || qFuzzyIsNull(dragMargin)) - return false; - - switch (event->type()) { - case QEvent::MouseButtonPress: - if (isWithinDragMargin(q, static_cast<QMouseEvent *>(event)->scenePosition())) { - prepareEnterTransition(); - reposition(); - return handleMouseEvent(window->contentItem(), static_cast<QMouseEvent *>(event)); - } - break; - -#if QT_CONFIG(quicktemplates2_multitouch) - case QEvent::TouchBegin: - case QEvent::TouchUpdate: - for (const QTouchEvent::TouchPoint &point : static_cast<QTouchEvent *>(event)->points()) { - if (point.state() == QEventPoint::Pressed && isWithinDragMargin(q, point.scenePosition())) { - prepareEnterTransition(); - reposition(); - return handleTouchEvent(window->contentItem(), static_cast<QTouchEvent *>(event)); - } - } - break; -#endif - - default: - break; - } - - return false; -} - -static inline bool keepGrab(QQuickItem *item) -{ - return item->keepMouseGrab() || item->keepTouchGrab(); -} - -bool QQuickDrawerPrivate::grabMouse(QQuickItem *item, QMouseEvent *event) -{ - Q_Q(QQuickDrawer); - handleMouseEvent(item, event); - - if (!window || !interactive || keepGrab(popupItem) || keepGrab(item)) - return false; - - const QPointF movePoint = event->scenePosition(); - - // Flickable uses a hard-coded threshold of 15 for flicking, and - // QStyleHints::startDragDistance for dragging. Drawer uses a bit - // larger threshold to avoid being too eager to steal touch (QTBUG-50045) - const int threshold = qMax(20, QGuiApplication::styleHints()->startDragDistance() + 5); - bool overThreshold = false; - if (position > 0 || dragMargin > 0) { - const bool xOverThreshold = QQuickWindowPrivate::dragOverThreshold(movePoint.x() - pressPoint.x(), Qt::XAxis, event, threshold); - const bool yOverThreshold = QQuickWindowPrivate::dragOverThreshold(movePoint.y() - pressPoint.y(), Qt::YAxis, event, threshold); - if (edge == Qt::LeftEdge || edge == Qt::RightEdge) - overThreshold = xOverThreshold && !yOverThreshold; - else - overThreshold = yOverThreshold && !xOverThreshold; - } - - // Don't be too eager to steal presses outside the drawer (QTBUG-53929) - if (overThreshold && qFuzzyCompare(position, qreal(1.0)) && !contains(movePoint)) { - if (edge == Qt::LeftEdge || edge == Qt::RightEdge) - overThreshold = qAbs(movePoint.x() - q->width()) < dragMargin; - else - overThreshold = qAbs(movePoint.y() - q->height()) < dragMargin; - } - - if (overThreshold) { - popupItem->grabMouse(); - popupItem->setKeepMouseGrab(true); - offset = offsetAt(movePoint); - } - - return overThreshold; -} - -#if QT_CONFIG(quicktemplates2_multitouch) -bool QQuickDrawerPrivate::grabTouch(QQuickItem *item, QTouchEvent *event) -{ - Q_Q(QQuickDrawer); - bool handled = handleTouchEvent(item, event); - - if (!window || !interactive || keepGrab(popupItem) || keepGrab(item) || !event->touchPointStates().testFlag(QEventPoint::Updated)) - return handled; - - bool overThreshold = false; - for (const QTouchEvent::TouchPoint &point : event->points()) { - if (!acceptTouch(point) || point.state() != QEventPoint::Updated) - continue; - - const QPointF movePoint = point.scenePosition(); - - // Flickable uses a hard-coded threshold of 15 for flicking, and - // QStyleHints::startDragDistance for dragging. Drawer uses a bit - // larger threshold to avoid being too eager to steal touch (QTBUG-50045) - const int threshold = qMax(20, QGuiApplication::styleHints()->startDragDistance() + 5); - if (position > 0 || dragMargin > 0) { - const bool xOverThreshold = QQuickWindowPrivate::dragOverThreshold(movePoint.x() - pressPoint.x(), Qt::XAxis, &point, threshold); - const bool yOverThreshold = QQuickWindowPrivate::dragOverThreshold(movePoint.y() - pressPoint.y(), Qt::YAxis, &point, threshold); - if (edge == Qt::LeftEdge || edge == Qt::RightEdge) - overThreshold = xOverThreshold && !yOverThreshold; - else - overThreshold = yOverThreshold && !xOverThreshold; - } - - // Don't be too eager to steal presses outside the drawer (QTBUG-53929) - if (overThreshold && qFuzzyCompare(position, qreal(1.0)) && !contains(movePoint)) { - if (edge == Qt::LeftEdge || edge == Qt::RightEdge) - overThreshold = qAbs(movePoint.x() - q->width()) < dragMargin; - else - overThreshold = qAbs(movePoint.y() - q->height()) < dragMargin; - } - - if (overThreshold) { - popupItem->grabTouchPoints(QList<int>() << touchId); - popupItem->setKeepTouchGrab(true); - offset = offsetAt(movePoint); - } - } - - return overThreshold; -} -#endif - -static const qreal openCloseVelocityThreshold = 300; - -bool QQuickDrawerPrivate::blockInput(QQuickItem *item, const QPointF &point) const -{ - Q_Q(const QQuickDrawer); - - // We want all events, if mouse/touch is already grabbed. - if (popupItem->keepMouseGrab() || popupItem->keepTouchGrab()) - return true; - - // Don't block input to drawer's children/content. - if (popupItem->isAncestorOf(item)) - return false; - - // Don't block outside a drawer's background dimming - if (dimmer && !dimmer->contains(dimmer->mapFromScene(point))) - return false; - - // Accept all events within drag area. - if (isWithinDragMargin(q, point)) - return true; - - // Accept all other events if drawer is modal. - return modal; -} - -bool QQuickDrawerPrivate::handlePress(QQuickItem *item, const QPointF &point, ulong timestamp) -{ - offset = 0; - velocityCalculator.startMeasuring(point, timestamp); - - if (!QQuickPopupPrivate::handlePress(item, point, timestamp)) - return false; - - return true; -} - -bool QQuickDrawerPrivate::handleMove(QQuickItem *item, const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickDrawer); - if (!QQuickPopupPrivate::handleMove(item, point, timestamp)) - return false; - - // limit/reset the offset to the edge of the drawer when pushed from the outside - if (qFuzzyCompare(position, qreal(1.0)) && !contains(point)) - offset = 0; - - bool isGrabbed = popupItem->keepMouseGrab() || popupItem->keepTouchGrab(); - if (isGrabbed) - q->setPosition(positionAt(point) - offset); - - return isGrabbed; -} - -bool QQuickDrawerPrivate::handleRelease(QQuickItem *item, const QPointF &point, ulong timestamp) -{ - if (pressPoint.isNull()) - return false; - if (!popupItem->keepMouseGrab() && !popupItem->keepTouchGrab()) { - velocityCalculator.reset(); - return QQuickPopupPrivate::handleRelease(item, point, timestamp); - } - - velocityCalculator.stopMeasuring(point, timestamp); - - qreal velocity = 0; - if (edge == Qt::LeftEdge || edge == Qt::RightEdge) - velocity = velocityCalculator.velocity().x(); - else - velocity = velocityCalculator.velocity().y(); - - // the velocity is calculated so that swipes from left to right - // and top to bottom have positive velocity, and swipes from right - // to left and bottom to top have negative velocity. - // - // - top/left edge: positive velocity opens, negative velocity closes - // - bottom/right edge: negative velocity opens, positive velocity closes - // - // => invert the velocity for bottom and right edges, for the threshold comparison below - if (edge == Qt::RightEdge || edge == Qt::BottomEdge) - velocity = -velocity; - - if (position > 0.7 || velocity > openCloseVelocityThreshold) { - transitionManager.transitionEnter(); - } else if (position < 0.3 || velocity < -openCloseVelocityThreshold) { - transitionManager.transitionExit(); - } else { - switch (edge) { - case Qt::LeftEdge: - if (point.x() - pressPoint.x() > 0) - transitionManager.transitionEnter(); - else - transitionManager.transitionExit(); - break; - case Qt::RightEdge: - if (point.x() - pressPoint.x() < 0) - transitionManager.transitionEnter(); - else - transitionManager.transitionExit(); - break; - case Qt::TopEdge: - if (point.y() - pressPoint.y() > 0) - transitionManager.transitionEnter(); - else - transitionManager.transitionExit(); - break; - case Qt::BottomEdge: - if (point.y() - pressPoint.y() < 0) - transitionManager.transitionEnter(); - else - transitionManager.transitionExit(); - break; - } - } - - bool wasGrabbed = popupItem->keepMouseGrab() || popupItem->keepTouchGrab(); - popupItem->setKeepMouseGrab(false); - popupItem->setKeepTouchGrab(false); - - pressPoint = QPointF(); - touchId = -1; - - return wasGrabbed; -} - -void QQuickDrawerPrivate::handleUngrab() -{ - QQuickPopupPrivate::handleUngrab(); - - velocityCalculator.reset(); -} - -static QList<QQuickStateAction> prepareTransition(QQuickDrawer *drawer, QQuickTransition *transition, qreal to) -{ - QList<QQuickStateAction> actions; - if (!transition || !QQuickPopupPrivate::get(drawer)->window || !transition->enabled()) - return actions; - - qmlExecuteDeferred(transition); - - QQmlProperty defaultTarget(drawer, QLatin1String("position")); - QQmlListProperty<QQuickAbstractAnimation> animations = transition->animations(); - int count = animations.count(&animations); - for (int i = 0; i < count; ++i) { - QQuickAbstractAnimation *anim = animations.at(&animations, i); - anim->setDefaultTarget(defaultTarget); - } - - actions << QQuickStateAction(drawer, QLatin1String("position"), to); - return actions; -} - -bool QQuickDrawerPrivate::prepareEnterTransition() -{ - Q_Q(QQuickDrawer); - enterActions = prepareTransition(q, enter, 1.0); - return QQuickPopupPrivate::prepareEnterTransition(); -} - -bool QQuickDrawerPrivate::prepareExitTransition() -{ - Q_Q(QQuickDrawer); - exitActions = prepareTransition(q, exit, 0.0); - return QQuickPopupPrivate::prepareExitTransition(); -} - -bool QQuickDrawerPrivate::setEdge(Qt::Edge e) -{ - Q_Q(QQuickDrawer); - switch (e) { - case Qt::LeftEdge: - case Qt::RightEdge: - allowVerticalMove = true; - allowVerticalResize = true; - allowHorizontalMove = false; - allowHorizontalResize = false; - break; - case Qt::TopEdge: - case Qt::BottomEdge: - allowVerticalMove = false; - allowVerticalResize = false; - allowHorizontalMove = true; - allowHorizontalResize = true; - break; - default: - qmlWarning(q) << "invalid edge value - valid values are: " - << "Qt.TopEdge, Qt.LeftEdge, Qt.RightEdge, Qt.BottomEdge"; - return false; - } - - edge = e; - return true; -} - -QQuickDrawer::QQuickDrawer(QObject *parent) - : QQuickPopup(*(new QQuickDrawerPrivate), parent) -{ - Q_D(QQuickDrawer); - d->dragMargin = QGuiApplication::styleHints()->startDragDistance(); - d->setEdge(Qt::LeftEdge); - - setFocus(true); - setModal(true); - setFiltersChildMouseEvents(true); - setClosePolicy(CloseOnEscape | CloseOnReleaseOutside); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::Drawer::edge - - This property holds the edge of the window at which the drawer will - open from. The acceptable values are: - - \value Qt.TopEdge The top edge of the window. - \value Qt.LeftEdge The left edge of the window (default). - \value Qt.RightEdge The right edge of the window. - \value Qt.BottomEdge The bottom edge of the window. -*/ -Qt::Edge QQuickDrawer::edge() const -{ - Q_D(const QQuickDrawer); - return d->edge; -} - -void QQuickDrawer::setEdge(Qt::Edge edge) -{ - Q_D(QQuickDrawer); - if (d->edge == edge) - return; - - if (!d->setEdge(edge)) - return; - - if (isComponentComplete()) - d->reposition(); - emit edgeChanged(); -} - -/*! - \qmlproperty real QtQuick.Controls::Drawer::position - - This property holds the position of the drawer relative to its final - destination. That is, the position will be \c 0.0 when the drawer - is fully closed, and \c 1.0 when fully open. -*/ -qreal QQuickDrawer::position() const -{ - Q_D(const QQuickDrawer); - return d->position; -} - -void QQuickDrawer::setPosition(qreal position) -{ - Q_D(QQuickDrawer); - position = qBound<qreal>(0.0, position, 1.0); - if (qFuzzyCompare(d->position, position)) - return; - - d->position = position; - if (isComponentComplete()) - d->reposition(); - if (d->dimmer) - d->dimmer->setOpacity(position); - emit positionChanged(); -} - -/*! - \qmlproperty real QtQuick.Controls::Drawer::dragMargin - - This property holds the distance from the screen edge within which - drag actions will open the drawer. Setting the value to \c 0 or less - prevents opening the drawer by dragging. - - The default value is \c Qt.styleHints.startDragDistance. - - \sa interactive -*/ -qreal QQuickDrawer::dragMargin() const -{ - Q_D(const QQuickDrawer); - return d->dragMargin; -} - -void QQuickDrawer::setDragMargin(qreal margin) -{ - Q_D(QQuickDrawer); - if (qFuzzyCompare(d->dragMargin, margin)) - return; - - d->dragMargin = margin; - emit dragMarginChanged(); -} - -void QQuickDrawer::resetDragMargin() -{ - setDragMargin(QGuiApplication::styleHints()->startDragDistance()); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty bool QtQuick.Controls::Drawer::interactive - - This property holds whether the drawer is interactive. A non-interactive - drawer does not react to swipes. - - The default value is \c true. - - \sa dragMargin -*/ -bool QQuickDrawer::isInteractive() const -{ - Q_D(const QQuickDrawer); - return d->interactive; -} - -void QQuickDrawer::setInteractive(bool interactive) -{ - Q_D(QQuickDrawer); - if (d->interactive == interactive) - return; - - setFiltersChildMouseEvents(interactive); - d->interactive = interactive; - emit interactiveChanged(); -} - -bool QQuickDrawer::childMouseEventFilter(QQuickItem *child, QEvent *event) -{ - Q_D(QQuickDrawer); - switch (event->type()) { -#if QT_CONFIG(quicktemplates2_multitouch) - case QEvent::TouchUpdate: - return d->grabTouch(child, static_cast<QTouchEvent *>(event)); - case QEvent::TouchBegin: - case QEvent::TouchEnd: - return d->handleTouchEvent(child, static_cast<QTouchEvent *>(event)); -#endif - case QEvent::MouseMove: - return d->grabMouse(child, static_cast<QMouseEvent *>(event)); - case QEvent::MouseButtonPress: - case QEvent::MouseButtonRelease: - return d->handleMouseEvent(child, static_cast<QMouseEvent *>(event)); - default: - break; - } - return false; -} - -void QQuickDrawer::mouseMoveEvent(QMouseEvent *event) -{ - Q_D(QQuickDrawer); - d->grabMouse(d->popupItem, event); -} - -bool QQuickDrawer::overlayEvent(QQuickItem *item, QEvent *event) -{ - Q_D(QQuickDrawer); - switch (event->type()) { -#if QT_CONFIG(quicktemplates2_multitouch) - case QEvent::TouchUpdate: - return d->grabTouch(item, static_cast<QTouchEvent *>(event)); -#endif - case QEvent::MouseMove: - return d->grabMouse(item, static_cast<QMouseEvent *>(event)); - default: - break; - } - return QQuickPopup::overlayEvent(item, event); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickDrawer::touchEvent(QTouchEvent *event) -{ - Q_D(QQuickDrawer); - d->grabTouch(d->popupItem, event); -} -#endif - -void QQuickDrawer::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickDrawer); - QQuickPopup::geometryChange(newGeometry, oldGeometry); - d->resizeOverlay(); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickdrawer_p.h b/src/quicktemplates2/qquickdrawer_p.h deleted file mode 100644 index f16ae771..00000000 --- a/src/quicktemplates2/qquickdrawer_p.h +++ /dev/null @@ -1,111 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDRAWER_P_H -#define QQUICKDRAWER_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickpopup_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickDrawerPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDrawer : public QQuickPopup -{ - Q_OBJECT - Q_PROPERTY(Qt::Edge edge READ edge WRITE setEdge NOTIFY edgeChanged FINAL) - Q_PROPERTY(qreal position READ position WRITE setPosition NOTIFY positionChanged FINAL) - Q_PROPERTY(qreal dragMargin READ dragMargin WRITE setDragMargin RESET resetDragMargin NOTIFY dragMarginChanged FINAL) - // 2.2 (Qt 5.9) - Q_PROPERTY(bool interactive READ isInteractive WRITE setInteractive NOTIFY interactiveChanged FINAL REVISION(2, 2)) - QML_NAMED_ELEMENT(Drawer) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickDrawer(QObject *parent = nullptr); - - Qt::Edge edge() const; - void setEdge(Qt::Edge edge); - - qreal position() const; - void setPosition(qreal position); - - qreal dragMargin() const; - void setDragMargin(qreal margin); - void resetDragMargin(); - - // 2.2 (Qt 5.9) - bool isInteractive() const; - void setInteractive(bool interactive); - -Q_SIGNALS: - void edgeChanged(); - void positionChanged(); - void dragMarginChanged(); - // 2.2 (Qt 5.9) - Q_REVISION(2, 2) void interactiveChanged(); - -protected: - bool childMouseEventFilter(QQuickItem *child, QEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; - bool overlayEvent(QQuickItem *item, QEvent *event) override; -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; -#endif - - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - -private: - Q_DISABLE_COPY(QQuickDrawer) - Q_DECLARE_PRIVATE(QQuickDrawer) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickDrawer) - -#endif // QQUICKDRAWER_P_H diff --git a/src/quicktemplates2/qquickdrawer_p_p.h b/src/quicktemplates2/qquickdrawer_p_p.h deleted file mode 100644 index 5f1086de..00000000 --- a/src/quicktemplates2/qquickdrawer_p_p.h +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKDRAWER_P_P_H -#define QQUICKDRAWER_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickdrawer_p.h> -#include <QtQuickTemplates2/private/qquickpopup_p_p.h> -#include <QtQuickTemplates2/private/qquickvelocitycalculator_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickDrawerPrivate : public QQuickPopupPrivate -{ - Q_DECLARE_PUBLIC(QQuickDrawer) - -public: - static QQuickDrawerPrivate *get(QQuickDrawer *drawer) - { - return drawer->d_func(); - } - - qreal offsetAt(const QPointF &point) const; - qreal positionAt(const QPointF &point) const; - - QQuickPopupPositioner *getPositioner() override; - void showOverlay() override; - void hideOverlay() override; - void resizeOverlay() override; - - bool startDrag(QEvent *event); - bool grabMouse(QQuickItem *item, QMouseEvent *event); -#if QT_CONFIG(quicktemplates2_multitouch) - bool grabTouch(QQuickItem *item, QTouchEvent *event); -#endif - bool blockInput(QQuickItem *item, const QPointF &point) const override; - - bool handlePress(QQuickItem* item, const QPointF &point, ulong timestamp) override; - bool handleMove(QQuickItem* item, const QPointF &point, ulong timestamp) override; - bool handleRelease(QQuickItem* item, const QPointF &point, ulong timestamp) override; - void handleUngrab() override; - - bool prepareEnterTransition() override; - bool prepareExitTransition() override; - - bool setEdge(Qt::Edge edge); - - Qt::Edge edge = Qt::LeftEdge; - qreal offset = 0; - qreal position = 0; - qreal dragMargin = 0; - QQuickVelocityCalculator velocityCalculator; -}; - -QT_END_NAMESPACE - -#endif // QQUICKDRAWER_P_P_H diff --git a/src/quicktemplates2/qquickframe.cpp b/src/quicktemplates2/qquickframe.cpp deleted file mode 100644 index e82258a9..00000000 --- a/src/quicktemplates2/qquickframe.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickframe_p.h" -#include "qquickframe_p_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Frame - \inherits Pane -//! \instantiates QQuickFrame - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-containers - \brief Visual frame for a logical group of controls. - - Frame is used to layout a logical group of controls together within a - visual frame. Frame does not provide a layout of its own, but requires - you to position its contents, for instance by creating a \l RowLayout - or a \l ColumnLayout. - - Items declared as children of a Frame are automatically parented to the - Frame's \l {Control::}{contentItem}. Items created dynamically need to be - explicitly parented to the contentItem. - - If only a single item is used within a Frame, it will resize to fit the - implicit size of its contained item. This makes it particularly suitable - for use together with layouts. - - \image qtquickcontrols2-frame.png - - \snippet qtquickcontrols2-frame.qml 1 - - \sa {Customizing Frame}, {Container Controls} -*/ - -QQuickFrame::QQuickFrame(QQuickItem *parent) - : QQuickPane(*(new QQuickFramePrivate), parent) -{ -} - -QQuickFrame::QQuickFrame(QQuickFramePrivate &dd, QQuickItem *parent) - : QQuickPane(dd, parent) -{ -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickFrame::accessibleRole() const -{ - return QAccessible::Border; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickframe_p.h b/src/quicktemplates2/qquickframe_p.h deleted file mode 100644 index f65e2814..00000000 --- a/src/quicktemplates2/qquickframe_p.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFRAME_P_H -#define QQUICKFRAME_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickpane_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickFramePrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickFrame : public QQuickPane -{ - Q_OBJECT - QML_NAMED_ELEMENT(Frame) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickFrame(QQuickItem *parent = nullptr); - -protected: - QQuickFrame(QQuickFramePrivate &dd, QQuickItem *parent); - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickFrame) - Q_DECLARE_PRIVATE(QQuickFrame) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickFrame) - -#endif // QQUICKFRAME_P_H diff --git a/src/quicktemplates2/qquickframe_p_p.h b/src/quicktemplates2/qquickframe_p_p.h deleted file mode 100644 index ad392dc3..00000000 --- a/src/quicktemplates2/qquickframe_p_p.h +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKFRAME_P_P_H -#define QQUICKFRAME_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickpane_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickFrame; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickFramePrivate : public QQuickPanePrivate -{ -}; - -QT_END_NAMESPACE - -#endif // QQUICKFRAME_P_P_H diff --git a/src/quicktemplates2/qquickgroupbox.cpp b/src/quicktemplates2/qquickgroupbox.cpp deleted file mode 100644 index 4a58f163..00000000 --- a/src/quicktemplates2/qquickgroupbox.cpp +++ /dev/null @@ -1,287 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickgroupbox_p.h" -#include "qquickframe_p_p.h" -#include "qquickdeferredexecute_p_p.h" - -#include <QtGui/qpa/qplatformtheme.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype GroupBox - \inherits Frame -//! \instantiates QQuickGroupBox - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-containers - \brief Visual frame and title for a logical group of controls. - - GroupBox is used to layout a logical group of controls together, within - a \l {title}{titled} visual frame. GroupBox does not provide a layout of its own, but - requires you to position its contents, for instance by creating a \l RowLayout - or a \l ColumnLayout. - - Items declared as children of a GroupBox are automatically parented to the - GroupBox's \l {Control::}{contentItem}. Items created dynamically need to be - explicitly parented to the contentItem. - - If only a single item is used within a GroupBox, it will resize to fit the - implicit size of its contained item. This makes it particularly suitable - for use together with layouts. - - \image qtquickcontrols2-groupbox.png - - \snippet qtquickcontrols2-groupbox.qml 1 - - \section2 Checkable GroupBox - - Even though GroupBox has no built-in check box, it is straightforward - to create a checkable GroupBox by pairing it with a CheckBox. - - \image qtquickcontrols2-groupbox-checkable.png - - It is a common pattern to enable or disable the groupbox's children when - its checkbox is toggled on or off, but it is up to the application to decide - on the behavior of the checkbox. - - \snippet qtquickcontrols2-groupbox-checkable.qml 1 - - \sa CheckBox, {Customizing GroupBox}, {Container Controls} -*/ - -class QQuickGroupBoxPrivate : public QQuickFramePrivate -{ - Q_DECLARE_PUBLIC(QQuickGroupBox) - -public: - void cancelLabel(); - void executeLabel(bool complete = false); - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::GroupBox); } - - QString title; - QQuickDeferredPointer<QQuickItem> label; -}; - -static inline QString labelName() { return QStringLiteral("label"); } - -void QQuickGroupBoxPrivate::cancelLabel() -{ - Q_Q(QQuickGroupBox); - quickCancelDeferred(q, labelName()); -} - -void QQuickGroupBoxPrivate::executeLabel(bool complete) -{ - Q_Q(QQuickGroupBox); - if (label.wasExecuted()) - return; - - if (!label || complete) - quickBeginDeferred(q, labelName(), label); - if (complete) - quickCompleteDeferred(q, labelName(), label); -} - -void QQuickGroupBoxPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - Q_Q(QQuickGroupBox); - QQuickFramePrivate::itemImplicitWidthChanged(item); - if (item == label) - emit q->implicitLabelWidthChanged(); -} - -void QQuickGroupBoxPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - Q_Q(QQuickGroupBox); - QQuickFramePrivate::itemImplicitHeightChanged(item); - if (item == label) - emit q->implicitLabelHeightChanged(); -} - -QQuickGroupBox::QQuickGroupBox(QQuickItem *parent) - : QQuickFrame(*(new QQuickGroupBoxPrivate), parent) -{ -} - -QQuickGroupBox::~QQuickGroupBox() -{ - Q_D(QQuickGroupBox); - d->removeImplicitSizeListener(d->label); -} - -/*! - \qmlproperty string QtQuick.Controls::GroupBox::title - - This property holds the title. - - The title is typically displayed above the groupbox to - summarize its contents. -*/ -QString QQuickGroupBox::title() const -{ - Q_D(const QQuickGroupBox); - return d->title; -} - -void QQuickGroupBox::setTitle(const QString &title) -{ - Q_D(QQuickGroupBox); - if (d->title == title) - return; - - d->title = title; - maybeSetAccessibleName(title); - emit titleChanged(); -} - -/*! - \qmlproperty Item QtQuick.Controls::GroupBox::label - - This property holds the label item that visualizes \l title. - - \sa {Customizing GroupBox} -*/ -QQuickItem *QQuickGroupBox::label() const -{ - QQuickGroupBoxPrivate *d = const_cast<QQuickGroupBoxPrivate *>(d_func()); - if (!d->label) - d->executeLabel(); - return d->label; -} - -void QQuickGroupBox::setLabel(QQuickItem *label) -{ - Q_D(QQuickGroupBox); - if (d->label == label) - return; - - if (!d->label.isExecuting()) - d->cancelLabel(); - - const qreal oldImplicitLabelWidth = implicitLabelWidth(); - const qreal oldImplicitLabelHeight = implicitLabelHeight(); - - d->removeImplicitSizeListener(d->label); - QQuickControlPrivate::hideOldItem(d->label); - d->label = label; - - if (label) { - if (!label->parentItem()) - label->setParentItem(this); - d->addImplicitSizeListener(label); - } - - if (!qFuzzyCompare(oldImplicitLabelWidth, implicitLabelWidth())) - emit implicitLabelWidthChanged(); - if (!qFuzzyCompare(oldImplicitLabelHeight, implicitLabelHeight())) - emit implicitLabelHeightChanged(); - if (!d->label.isExecuting()) - emit labelChanged(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::GroupBox::implicitLabelWidth - \readonly - - This property holds the implicit label width. - - The value is equal to \c {label ? label.implicitWidth : 0}. - - \sa implicitLabelHeight -*/ -qreal QQuickGroupBox::implicitLabelWidth() const -{ - Q_D(const QQuickGroupBox); - if (!d->label) - return 0; - return d->label->implicitWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::GroupBox::implicitLabelHeight - \readonly - - This property holds the implicit label height. - - The value is equal to \c {label ? label.implicitHeight : 0}. - - \sa implicitLabelWidth -*/ -qreal QQuickGroupBox::implicitLabelHeight() const -{ - Q_D(const QQuickGroupBox); - if (!d->label) - return 0; - return d->label->implicitHeight(); -} - -void QQuickGroupBox::componentComplete() -{ - Q_D(QQuickGroupBox); - d->executeLabel(true); - QQuickFrame::componentComplete(); -} - -QFont QQuickGroupBox::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::GroupBox); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickGroupBox::accessibleRole() const -{ - return QAccessible::Grouping; -} - -void QQuickGroupBox::accessibilityActiveChanged(bool active) -{ - Q_D(QQuickGroupBox); - QQuickFrame::accessibilityActiveChanged(active); - - if (active) - maybeSetAccessibleName(d->title); -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickgroupbox_p.h b/src/quicktemplates2/qquickgroupbox_p.h deleted file mode 100644 index 39e20494..00000000 --- a/src/quicktemplates2/qquickgroupbox_p.h +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKGROUPBOX_P_H -#define QQUICKGROUPBOX_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickframe_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickGroupBoxPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickGroupBox : public QQuickFrame -{ - Q_OBJECT - Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL) - Q_PROPERTY(QQuickItem *label READ label WRITE setLabel NOTIFY labelChanged FINAL) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal implicitLabelWidth READ implicitLabelWidth NOTIFY implicitLabelWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitLabelHeight READ implicitLabelHeight NOTIFY implicitLabelHeightChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DeferredPropertyNames", "background,contentItem,label") - QML_NAMED_ELEMENT(GroupBox) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickGroupBox(QQuickItem *parent = nullptr); - ~QQuickGroupBox(); - - QString title() const; - void setTitle(const QString &title); - - QQuickItem *label() const; - void setLabel(QQuickItem *label); - - // 2.5 (Qt 5.12) - qreal implicitLabelWidth() const; - qreal implicitLabelHeight() const; - -Q_SIGNALS: - void titleChanged(); - void labelChanged(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void implicitLabelWidthChanged(); - Q_REVISION(2, 5) void implicitLabelHeightChanged(); - -protected: - void componentComplete() override; - - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; - void accessibilityActiveChanged(bool active) override; -#endif - -private: - Q_DISABLE_COPY(QQuickGroupBox) - Q_DECLARE_PRIVATE(QQuickGroupBox) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickGroupBox) - -#endif // QQUICKGROUPBOX_P_H diff --git a/src/quicktemplates2/qquickheaderview.cpp b/src/quicktemplates2/qquickheaderview.cpp deleted file mode 100644 index 8671ac63..00000000 --- a/src/quicktemplates2/qquickheaderview.cpp +++ /dev/null @@ -1,520 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtQuick module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtQuickTemplates2/private/qquickheaderview_p_p.h> -#include <algorithm> - -/*! - \qmltype HorizontalHeaderView - \inqmlmodule QtQuick.Controls - \ingroup qtquickcontrols2-containers - \inherits TableView - \brief Provides a horizontal header view to accompany a \l TableView. - - A HorizontalHeaderView provides labeling of the columns of a \l TableView. - To add a horizontal header to a TableView, bind the - \l {HorizontalHeaderView::syncView} {syncView} property to the TableView: - - \snippet qtquickcontrols2-headerview-simple.qml horizontal - - The header displays data from the {syncView}'s model by default, but can - also have its own model. If the model is a QAbstractTableModel, then - the header will display the model's horizontal headerData(); otherwise, - the model's data(). -*/ - -/*! - \qmltype VerticalHeaderView - \inqmlmodule QtQuick.Controls - \ingroup qtquickcontrols2-containers - \inherits TableView - \brief Provides a vertical header view to accompany a \l TableView. - - A VerticalHeaderView provides labeling of the rows of a \l TableView. - To add a vertical header to a TableView, bind the - \l {VerticalHeaderView::syncView} {syncView} property to the TableView: - - \snippet qtquickcontrols2-headerview-simple.qml vertical - - The header displays data from the {syncView}'s model by default, but can - also have its own model. If the model is a QAbstractTableModel, then - the header will display the model's vertical headerData(); otherwise, - the model's data(). -*/ - -/*! - \qmlproperty TableView QtQuick::HorizontalHeaderView::syncView - - This property holds the TableView to synchronize with. - - Once this property is bound to another TableView, both header and table - will synchronize with regard to column widths, column spacing, and flicking - horizontally. - - If the \l model is not explicitly set, then the header will use the syncView's - model to label the columns. - - \sa model TableView -*/ - -/*! - \qmlproperty TableView QtQuick::VerticalHeaderView::syncView - - This property holds the TableView to synchronize with. - - Once this property is bound to another TableView, both header and table - will synchronize with regard to row heights, row spacing, and flicking - vertically. - - If the \l model is not explicitly set, then the header will use the syncView's - model to label the rows. - - \sa model TableView -*/ - -/*! - \qmlproperty QVariant QtQuick::HorizontalHeaderView::model - - This property holds the model providing data for the horizontal header view. - - When model is not explicitly set, the header will use the syncView's - model once syncView is set. - - If model is a QAbstractTableModel, its horizontal headerData() will - be accessed. - - If model is a QAbstractItemModel other than QAbstractTableModel, model's data() - will be accessed. - - Otherwise, the behavior is same as setting TableView::model. - - \sa TableView {TableView::model} {model} QAbstractTableModel -*/ - -/*! - \qmlproperty QVariant QtQuick::VerticalHeaderView::model - - This property holds the model providing data for the vertical header view. - - When model is not explicitly set, it will be synchronized with syncView's model - once syncView is set. - - If model is a QAbstractTableModel, its vertical headerData() will - be accessed. - - If model is a QAbstractItemModel other than QAbstractTableModel, model's data() - will be accessed. - - Otherwise, the behavior is same as setting TableView::model. - - \sa TableView {TableView::model} {model} QAbstractTableModel -*/ - -/*! - \qmlproperty QString QtQuick::HorizontalHeaderView::textRole - - This property holds the model role used to display text in each header cell. - - When the model has multiple roles, textRole can be set to determine which - role should be displayed. - - If model is a QAbstractItemModel then it will default to "display"; otherwise - it is empty. - - \sa QAbstractItemModel::roleNames() -*/ - -/*! - \qmlproperty QString QtQuick::VerticalHeaderView::textRole - - This property holds the model role used to display text in each header cell. - - When the model has multiple roles, textRole can be set to determine which - role should be displayed. - - If model is a QAbstractItemModel then it will default to "display"; otherwise - it is empty. - - \sa QAbstractItemModel::roleNames() -*/ - -QT_BEGIN_NAMESPACE - -QQuickHeaderViewBasePrivate::QQuickHeaderViewBasePrivate() - : QQuickTableViewPrivate() -{ -} - -QQuickHeaderViewBasePrivate::~QQuickHeaderViewBasePrivate() -{ -} - -const QPointer<QQuickItem> QQuickHeaderViewBasePrivate::delegateItemAt(int row, int col) const -{ - return loadedTableItem(QPoint(col, row))->item; -} - -QVariant QQuickHeaderViewBasePrivate::modelImpl() const -{ - if (auto model = m_headerDataProxyModel.sourceModel()) - return QVariant::fromValue(model.data()); - if (auto model = m_transposeProxyModel.sourceModel()) - return QVariant::fromValue(model); - return QQuickTableViewPrivate::modelImpl(); -} - -template <typename P, typename M> -inline bool proxyModelSetter(QQuickHeaderViewBase *const q, P &proxyModel, M *model) -{ - if (model) { - if (model == proxyModel.sourceModel()) - return true; - proxyModel.setSourceModel(model); - const auto &modelVariant = QVariant::fromValue(std::addressof(proxyModel)); - bool isProxyModelChanged = (modelVariant != QQuickTableViewPrivate::get(q)->QQuickTableViewPrivate::modelImpl()); - QQuickTableViewPrivate::get(q)->QQuickTableViewPrivate::setModelImpl(modelVariant); - //Necessary, since TableView's assigned model not changed, but proxy's source changed - if (!isProxyModelChanged) - emit q->modelChanged(); - return true; - } - proxyModel.setSourceModel(nullptr); - return false; -} - -void QQuickHeaderViewBasePrivate::setModelImpl(const QVariant &newModel) -{ - Q_Q(QQuickHeaderViewBase); - m_modelExplicitlySetByUser = true; - // Case 1: newModel is QAbstractTableModel - if (proxyModelSetter(q, m_headerDataProxyModel, newModel.value<QAbstractTableModel *>())) - return; - // Case 2: newModel is QAbstractItemModel but not QAbstractTableModel - if (orientation() == Qt::Horizontal - && proxyModelSetter(q, m_transposeProxyModel, newModel.value<QAbstractItemModel *>())) - return; - - QQuickTableViewPrivate::setModelImpl(newModel); -} - -void QQuickHeaderViewBasePrivate::syncModel() -{ - Q_Q(QQuickHeaderViewBase); - - if (assignedSyncView && !m_modelExplicitlySetByUser) { - auto newModel = assignedSyncView->model(); - if (auto m = newModel.value<QAbstractItemModel *>()) - proxyModelSetter(q, m_headerDataProxyModel, m); - } - - QQuickTableViewPrivate::syncModel(); - - isTransposed = false; - const auto aim = model->abstractItemModel(); - if (orientation() == Qt::Horizontal) { - // For models that are just a list or a number, and especially not a - // table, we transpose the view when the orientation is horizontal. - // The model (list) will then be laid out horizontally rather than - // vertically, which is the otherwise the default. - isTransposed = !aim || aim->columnCount() == 1; - } - if (m_textRole.isEmpty() && aim) - m_textRole = QLatin1String("display"); -} - -void QQuickHeaderViewBasePrivate::syncSyncView() -{ - Q_Q(QQuickHeaderViewBase); - if (assignedSyncDirection != orientation()) { - qmlWarning(q_func()) << "Setting syncDirection other than Qt::" - << QVariant::fromValue(orientation()).toString() - << " is invalid."; - assignedSyncDirection = orientation(); - } - if (assignedSyncView) { - QBoolBlocker fixupGuard(inUpdateContentSize, true); - if (orientation() == Qt::Horizontal) { - q->setLeftMargin(assignedSyncView->leftMargin()); - q->setRightMargin(assignedSyncView->rightMargin()); - } else { - q->setTopMargin(assignedSyncView->topMargin()); - q->setBottomMargin(assignedSyncView->bottomMargin()); - } - } - QQuickTableViewPrivate::syncSyncView(); -} - -QQuickHeaderViewBase::QQuickHeaderViewBase(Qt::Orientation orient, QQuickItem *parent) - : QQuickTableView(*(new QQuickHeaderViewBasePrivate), parent) -{ - d_func()->setOrientation(orient); - setSyncDirection(orient); -} - -QQuickHeaderViewBase::QQuickHeaderViewBase(QQuickHeaderViewBasePrivate &dd, QQuickItem *parent) - : QQuickTableView(dd, parent) -{ -} - -QQuickHeaderViewBase::~QQuickHeaderViewBase() -{ -} - -QString QQuickHeaderViewBase::textRole() const -{ - Q_D(const QQuickHeaderViewBase); - return d->m_textRole; -} - -void QQuickHeaderViewBase::setTextRole(const QString &role) -{ - Q_D(QQuickHeaderViewBase); - if (d->m_textRole == role) - return; - - d->m_textRole = role; - emit textRoleChanged(); -} - -Qt::Orientation QQuickHeaderViewBasePrivate::orientation() const -{ - return m_headerDataProxyModel.orientation(); -} - -void QQuickHeaderViewBasePrivate::setOrientation(Qt::Orientation orientation) -{ - if (QQuickHeaderViewBasePrivate::orientation() == orientation) - return; - m_headerDataProxyModel.setOrientation(orientation); -} - -QQuickVerticalHeaderView::QQuickVerticalHeaderView(QQuickVerticalHeaderViewPrivate &dd, QQuickItem *parent) - : QQuickHeaderViewBase(dd, parent) -{ -} - -/*! \internal - \class QHeaderDataProxyModel - \brief - QHeaderDataProxyModel is a proxy AbstractItemModel type that maps - source model's headerData() to correspondent data() - */ -QHeaderDataProxyModel::QHeaderDataProxyModel(QObject *parent) - : QAbstractItemModel(parent) -{ -} - -QHeaderDataProxyModel::~QHeaderDataProxyModel() = default; - -void QHeaderDataProxyModel::setSourceModel(QAbstractItemModel *newSourceModel) -{ - if (m_model == newSourceModel) - return; - beginResetModel(); - disconnectFromModel(); - m_model = newSourceModel; - connectToModel(); - endResetModel(); -} - -QModelIndex QHeaderDataProxyModel::index(int row, int column, const QModelIndex &parent) const -{ - return hasIndex(row, column, parent) ? createIndex(row, column) : QModelIndex(); -} - -QModelIndex QHeaderDataProxyModel::parent(const QModelIndex &child) const -{ - Q_UNUSED(child); - return QModelIndex(); -} - -QModelIndex QHeaderDataProxyModel::sibling(int row, int column, const QModelIndex &) const -{ - return index(row, column); -} - -int QHeaderDataProxyModel::rowCount(const QModelIndex &parent) const -{ - if (parent.isValid()) - return 0; - return m_model.isNull() ? -1 : (m_orientation == Qt::Horizontal ? 1 : m_model->rowCount(parent)); -} - -int QHeaderDataProxyModel::columnCount(const QModelIndex &parent) const -{ - if (parent.isValid()) - return 0; - return m_model.isNull() ? -1 : (m_orientation == Qt::Vertical ? 1 : m_model->columnCount(parent)); -} - -QVariant QHeaderDataProxyModel::data(const QModelIndex &index, int role) const -{ - if (m_model.isNull()) - return QVariant(); - if (!hasIndex(index.row(), index.column())) - return QModelIndex(); - auto section = m_orientation == Qt::Vertical ? index.row() : index.column(); - return m_model->headerData(section, m_orientation, role); -} - -bool QHeaderDataProxyModel::setData(const QModelIndex &index, const QVariant &value, int role) -{ - if (!hasIndex(index.row(), index.column())) - return false; - auto section = m_orientation == Qt::Vertical ? index.row() : index.column(); - auto ret = m_model->setHeaderData(section, m_orientation, value, role); - emit dataChanged(index, index, { role }); - return ret; -} - -bool QHeaderDataProxyModel::hasChildren(const QModelIndex &parent) const -{ - if (!parent.isValid()) - return rowCount(parent) > 0 && columnCount(parent) > 0; - return false; -} - -QVariant QHeaderDataProxyModel::variantValue() const -{ - return QVariant::fromValue(static_cast<QObject *>(const_cast<QHeaderDataProxyModel *>(this))); -} - -void QHeaderDataProxyModel::setOrientation(Qt::Orientation o) -{ - if (o == m_orientation) - return; - beginResetModel(); - m_orientation = o; - endResetModel(); -} - -Qt::Orientation QHeaderDataProxyModel::orientation() const -{ - return m_orientation; -} - -QPointer<QAbstractItemModel> QHeaderDataProxyModel::sourceModel() const -{ - return m_model; -} - -void QHeaderDataProxyModel::connectToModel() -{ - if (m_model.isNull()) - return; - connect(m_model, &QAbstractItemModel::headerDataChanged, - [this](Qt::Orientation orient, int first, int last) { - if (orient != orientation()) - return; - if (orient == Qt::Horizontal) { - emit dataChanged(createIndex(0, first), createIndex(0, last)); - } else { - emit dataChanged(createIndex(first, 0), createIndex(last, 0)); - } - }); - connect(m_model, &QAbstractItemModel::modelAboutToBeReset, - this, &QHeaderDataProxyModel::modelAboutToBeReset, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::modelReset, - this, &QHeaderDataProxyModel::modelReset, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::rowsAboutToBeMoved, - this, &QHeaderDataProxyModel::rowsAboutToBeMoved, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::rowsMoved, - this, &QHeaderDataProxyModel::rowsMoved, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::rowsAboutToBeInserted, - this, &QHeaderDataProxyModel::rowsAboutToBeInserted, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::rowsInserted, - this, &QHeaderDataProxyModel::rowsInserted, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::rowsAboutToBeRemoved, - this, &QHeaderDataProxyModel::rowsAboutToBeRemoved, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::rowsRemoved, - this, &QHeaderDataProxyModel::rowsRemoved, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::columnsAboutToBeMoved, - this, &QHeaderDataProxyModel::columnsAboutToBeMoved, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::columnsMoved, - this, &QHeaderDataProxyModel::columnsMoved, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::columnsAboutToBeInserted, - this, &QHeaderDataProxyModel::columnsAboutToBeInserted, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::columnsInserted, - this, &QHeaderDataProxyModel::columnsInserted, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::columnsAboutToBeRemoved, - this, &QHeaderDataProxyModel::columnsAboutToBeRemoved, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::columnsRemoved, - this, &QHeaderDataProxyModel::columnsRemoved, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::layoutAboutToBeChanged, - this, &QHeaderDataProxyModel::layoutAboutToBeChanged, Qt::UniqueConnection); - connect(m_model, &QAbstractItemModel::layoutChanged, - this, &QHeaderDataProxyModel::layoutChanged, Qt::UniqueConnection); -} - -void QHeaderDataProxyModel::disconnectFromModel() -{ - if (m_model.isNull()) - return; - m_model->disconnect(this); -} - -QQuickHorizontalHeaderView::QQuickHorizontalHeaderView(QQuickItem *parent) - : QQuickHeaderViewBase(Qt::Horizontal, parent) -{ - setFlickableDirection(FlickableDirection::HorizontalFlick); -} - -QQuickHorizontalHeaderView::~QQuickHorizontalHeaderView() -{ -} - -QQuickVerticalHeaderView::QQuickVerticalHeaderView(QQuickItem *parent) - : QQuickHeaderViewBase(Qt::Vertical, parent) -{ - setFlickableDirection(FlickableDirection::VerticalFlick); -} - -QQuickVerticalHeaderView::~QQuickVerticalHeaderView() -{ -} - -QQuickHorizontalHeaderViewPrivate::QQuickHorizontalHeaderViewPrivate() = default; - -QQuickHorizontalHeaderViewPrivate::~QQuickHorizontalHeaderViewPrivate() = default; - -QQuickVerticalHeaderViewPrivate::QQuickVerticalHeaderViewPrivate() = default; - -QQuickVerticalHeaderViewPrivate::~QQuickVerticalHeaderViewPrivate() = default; - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickheaderview_p.h b/src/quicktemplates2/qquickheaderview_p.h deleted file mode 100644 index b8e8b77a..00000000 --- a/src/quicktemplates2/qquickheaderview_p.h +++ /dev/null @@ -1,137 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtQuick module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKHEADERVIEW_P_H -#define QQUICKHEADERVIEW_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <private/qquicktableview_p.h> -#include <private/qtquicktemplates2global_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickHeaderViewBase; -class QQuickHeaderViewBasePrivate; -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickHeaderViewBase : public QQuickTableView -{ - Q_OBJECT - Q_DECLARE_PRIVATE(QQuickHeaderViewBase) - Q_PROPERTY(QString textRole READ textRole WRITE setTextRole NOTIFY textRoleChanged FINAL) - -public: - explicit QQuickHeaderViewBase(Qt::Orientation orient, QQuickItem *parent = nullptr); - ~QQuickHeaderViewBase(); - - QString textRole() const; - void setTextRole(const QString &role); - -protected: - QQuickHeaderViewBase(QQuickHeaderViewBasePrivate &dd, QQuickItem *parent); - -Q_SIGNALS: - void textRoleChanged(); - -private: - Q_DISABLE_COPY(QQuickHeaderViewBase) - friend class QQuickHorizontalHeaderView; - friend class QQuickVerticalHeaderView; -}; - -class QQuickHorizontalHeaderViewPrivate; -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickHorizontalHeaderView : public QQuickHeaderViewBase -{ - Q_OBJECT - Q_DECLARE_PRIVATE(QQuickHorizontalHeaderView) - QML_NAMED_ELEMENT(HorizontalHeaderView) - QML_ADDED_IN_VERSION(2, 15) - -public: - QQuickHorizontalHeaderView(QQuickItem *parent = nullptr); - ~QQuickHorizontalHeaderView() override; - -protected: - QQuickHorizontalHeaderView(QQuickHorizontalHeaderViewPrivate &dd, QQuickItem *parent); - -private: - Q_DISABLE_COPY(QQuickHorizontalHeaderView) -}; - -class QQuickVerticalHeaderViewPrivate; -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickVerticalHeaderView : public QQuickHeaderViewBase -{ - Q_OBJECT - Q_DECLARE_PRIVATE(QQuickVerticalHeaderView) - QML_NAMED_ELEMENT(VerticalHeaderView) - QML_ADDED_IN_VERSION(2, 15) - -public: - QQuickVerticalHeaderView(QQuickItem *parent = nullptr); - ~QQuickVerticalHeaderView() override; - -protected: - QQuickVerticalHeaderView(QQuickVerticalHeaderViewPrivate &dd, QQuickItem *parent); - -private: - Q_DISABLE_COPY(QQuickVerticalHeaderView) -}; - -struct QQuickTableViewForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickTableView) - QML_ADDED_IN_VERSION(2, 14) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickHorizontalHeaderView) -QML_DECLARE_TYPE(QQuickVerticalHeaderView) - -#endif // QQUICKHEADERVIEW_P_H diff --git a/src/quicktemplates2/qquickheaderview_p_p.h b/src/quicktemplates2/qquickheaderview_p_p.h deleted file mode 100644 index 655c2a58..00000000 --- a/src/quicktemplates2/qquickheaderview_p_p.h +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKHEADERVIEW_P_P_H -#define QQUICKHEADERVIEW_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/QAbstractItemModel> -#include <QtCore/QPointer> -#include <QtCore/QTransposeProxyModel> -#include <QtQuick/private/qquicktableview_p_p.h> -#include <private/qquickheaderview_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QHeaderDataProxyModel : public QAbstractItemModel -{ - Q_OBJECT - Q_DISABLE_COPY(QHeaderDataProxyModel) - Q_PROPERTY(QAbstractItemModel *sourceModel READ sourceModel) -public: - explicit QHeaderDataProxyModel(QObject *parent = nullptr); - ~QHeaderDataProxyModel(); - - void setSourceModel(QAbstractItemModel *newSourceModel); - QPointer<QAbstractItemModel> sourceModel() const; - QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; - QModelIndex parent(const QModelIndex &child) const override; - QModelIndex sibling(int row, int column, const QModelIndex &idx) const override; - int rowCount(const QModelIndex &parent = QModelIndex()) const override; - int columnCount(const QModelIndex &parent = QModelIndex()) const override; - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; - bool hasChildren(const QModelIndex &parent = QModelIndex()) const override; - - inline QVariant variantValue() const; - inline Qt::Orientation orientation() const; - inline void setOrientation(Qt::Orientation o); - -private: - inline void connectToModel(); - inline void disconnectFromModel(); - QPointer<QAbstractItemModel> m_model = nullptr; - Qt::Orientation m_orientation = Qt::Horizontal; -}; - -class QQuickHeaderViewBasePrivate : public QQuickTableViewPrivate -{ - Q_DECLARE_PUBLIC(QQuickHeaderViewBase) -public: - QQuickHeaderViewBasePrivate(); - ~QQuickHeaderViewBasePrivate(); - - Qt::Orientation orientation() const; - void setOrientation(Qt::Orientation orientation); - const QPointer<QQuickItem> delegateItemAt(int row, int col) const; - QVariant modelImpl() const override; - void setModelImpl(const QVariant &newModel) override; - void syncModel() override; - void syncSyncView() override; - -protected: - QHeaderDataProxyModel m_headerDataProxyModel; - QTransposeProxyModel m_transposeProxyModel; - struct SectionSize - { - int section; - qreal previousSize; - }; - QStack<SectionSize> m_hiddenSectionSizes; - bool m_modelExplicitlySetByUser = false; - QString m_textRole; -}; - -class QQuickHorizontalHeaderViewPrivate : public QQuickHeaderViewBasePrivate -{ - Q_DECLARE_PUBLIC(QQuickHorizontalHeaderView) -public: - QQuickHorizontalHeaderViewPrivate(); - ~QQuickHorizontalHeaderViewPrivate(); -}; - -class QQuickVerticalHeaderViewPrivate : public QQuickHeaderViewBasePrivate -{ - Q_DECLARE_PUBLIC(QQuickVerticalHeaderView) -public: - QQuickVerticalHeaderViewPrivate(); - ~QQuickVerticalHeaderViewPrivate(); -}; - -QT_END_NAMESPACE - -#endif // QQUICKHEADERVIEW_P_P_H diff --git a/src/quicktemplates2/qquickicon.cpp b/src/quicktemplates2/qquickicon.cpp deleted file mode 100644 index bf0a4658..00000000 --- a/src/quicktemplates2/qquickicon.cpp +++ /dev/null @@ -1,263 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickicon_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickIconPrivate : public QSharedData -{ -public: - QString name; - QUrl source; - int width = 0; - int height = 0; - QColor color = Qt::transparent; - bool cache = true; - - enum ResolveProperties { - NameResolved = 0x0001, - SourceResolved = 0x0002, - WidthResolved = 0x0004, - HeightResolved = 0x0008, - ColorResolved = 0x0010, - CacheResolved = 0x0020, - AllPropertiesResolved = 0x1ffff - }; - - // This is based on QFont's resolve_mask. - int resolveMask = 0; -}; - -QQuickIcon::QQuickIcon() - : d(new QQuickIconPrivate) -{ -} - -QQuickIcon::QQuickIcon(const QQuickIcon &other) - : d(other.d) -{ -} - -QQuickIcon::~QQuickIcon() -{ -} - -QQuickIcon &QQuickIcon::operator=(const QQuickIcon &other) -{ - d = other.d; - return *this; -} - -bool QQuickIcon::operator==(const QQuickIcon &other) const -{ - return d == other.d || (d->name == other.d->name - && d->source == other.d->source - && d->width == other.d->width - && d->height == other.d->height - && d->color == other.d->color - && d->cache == other.d->cache); -} - -bool QQuickIcon::operator!=(const QQuickIcon &other) const -{ - return !(*this == other); -} - -bool QQuickIcon::isEmpty() const -{ - return d->name.isEmpty() && d->source.isEmpty(); -} - -QString QQuickIcon::name() const -{ - return d->name; -} - -void QQuickIcon::setName(const QString &name) -{ - if ((d->resolveMask & QQuickIconPrivate::NameResolved) && d->name == name) - return; - - d.detach(); - d->name = name; - d->resolveMask |= QQuickIconPrivate::NameResolved; -} - -void QQuickIcon::resetName() -{ - d.detach(); - d->name = QString(); - d->resolveMask &= ~QQuickIconPrivate::NameResolved; -} - -QUrl QQuickIcon::source() const -{ - return d->source; -} - -void QQuickIcon::setSource(const QUrl &source) -{ - if ((d->resolveMask & QQuickIconPrivate::SourceResolved) && d->source == source) - return; - - d.detach(); - d->source = source; - d->resolveMask |= QQuickIconPrivate::SourceResolved; -} - -void QQuickIcon::resetSource() -{ - d.detach(); - d->source = QString(); - d->resolveMask &= ~QQuickIconPrivate::SourceResolved; -} - -int QQuickIcon::width() const -{ - return d->width; -} - -void QQuickIcon::setWidth(int width) -{ - if ((d->resolveMask & QQuickIconPrivate::WidthResolved) && d->width == width) - return; - - d.detach(); - d->width = width; - d->resolveMask |= QQuickIconPrivate::WidthResolved; -} - -void QQuickIcon::resetWidth() -{ - d.detach(); - d->width = 0; - d->resolveMask &= ~QQuickIconPrivate::WidthResolved; -} - -int QQuickIcon::height() const -{ - return d->height; -} - -void QQuickIcon::setHeight(int height) -{ - if ((d->resolveMask & QQuickIconPrivate::HeightResolved) && d->height == height) - return; - - d.detach(); - d->height = height; - d->resolveMask |= QQuickIconPrivate::HeightResolved; -} - -void QQuickIcon::resetHeight() -{ - d.detach(); - d->height = 0; - d->resolveMask &= ~QQuickIconPrivate::HeightResolved; -} - -QColor QQuickIcon::color() const -{ - return d->color; -} - -void QQuickIcon::setColor(const QColor &color) -{ - if ((d->resolveMask & QQuickIconPrivate::ColorResolved) && d->color == color) - return; - - d.detach(); - d->color = color; - d->resolveMask |= QQuickIconPrivate::ColorResolved; -} - -void QQuickIcon::resetColor() -{ - d.detach(); - d->color = Qt::transparent; - d->resolveMask &= ~QQuickIconPrivate::ColorResolved; -} - -bool QQuickIcon::cache() const -{ - return d->cache; -} - -void QQuickIcon::setCache(bool cache) -{ - if ((d->resolveMask & QQuickIconPrivate::CacheResolved) && d->cache == cache) - return; - - d.detach(); - d->cache = cache; - d->resolveMask |= QQuickIconPrivate::CacheResolved; -} - -void QQuickIcon::resetCache() -{ - d.detach(); - d->cache = true; - d->resolveMask &= ~QQuickIconPrivate::CacheResolved; -} - -QQuickIcon QQuickIcon::resolve(const QQuickIcon &other) const -{ - QQuickIcon resolved = *this; - resolved.d.detach(); - - if (!(d->resolveMask & QQuickIconPrivate::NameResolved)) - resolved.d->name = other.d->name; - - if (!(d->resolveMask & QQuickIconPrivate::SourceResolved)) - resolved.d->source = other.d->source; - - if (!(d->resolveMask & QQuickIconPrivate::WidthResolved)) - resolved.d->width = other.d->width; - - if (!(d->resolveMask & QQuickIconPrivate::HeightResolved)) - resolved.d->height = other.d->height; - - if (!(d->resolveMask & QQuickIconPrivate::ColorResolved)) - resolved.d->color = other.d->color; - - if (!(d->resolveMask & QQuickIconPrivate::CacheResolved)) - resolved.d->cache = other.d->cache; - - return resolved; -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickicon_p.h b/src/quicktemplates2/qquickicon_p.h deleted file mode 100644 index 0c0fe101..00000000 --- a/src/quicktemplates2/qquickicon_p.h +++ /dev/null @@ -1,118 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKICON_P_H -#define QQUICKICON_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qurl.h> -#include <QtCore/qstring.h> -#include <QtCore/qobjectdefs.h> -#include <QtCore/qshareddata.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> -#include <QtGui/qcolor.h> -#include <QtQml/qqml.h> - -QT_BEGIN_NAMESPACE - -class QQuickIconPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickIcon -{ - Q_GADGET - Q_PROPERTY(QString name READ name WRITE setName RESET resetName FINAL) - Q_PROPERTY(QUrl source READ source WRITE setSource RESET resetSource FINAL) - Q_PROPERTY(int width READ width WRITE setWidth RESET resetWidth FINAL) - Q_PROPERTY(int height READ height WRITE setHeight RESET resetHeight FINAL) - Q_PROPERTY(QColor color READ color WRITE setColor RESET resetColor FINAL) - Q_PROPERTY(bool cache READ cache WRITE setCache RESET resetCache FINAL) - QML_ANONYMOUS - QML_ADDED_IN_VERSION(2, 3) - -public: - QQuickIcon(); - QQuickIcon(const QQuickIcon &other); - ~QQuickIcon(); - - QQuickIcon& operator=(const QQuickIcon &other); - bool operator==(const QQuickIcon &other) const; - bool operator!=(const QQuickIcon &other) const; - - bool isEmpty() const; - - QString name() const; - void setName(const QString &name); - void resetName(); - - QUrl source() const; - void setSource(const QUrl &source); - void resetSource(); - - int width() const; - void setWidth(int width); - void resetWidth(); - - int height() const; - void setHeight(int height); - void resetHeight(); - - QColor color() const; - void setColor(const QColor &color); - void resetColor(); - - bool cache() const; - void setCache(bool cache); - void resetCache(); - - QQuickIcon resolve(const QQuickIcon &other) const; - -private: - QExplicitlySharedDataPointer<QQuickIconPrivate> d; -}; - -QT_END_NAMESPACE - -#endif // QQUICKICON_P_H diff --git a/src/quicktemplates2/qquickindicatorbutton_p.cpp b/src/quicktemplates2/qquickindicatorbutton_p.cpp deleted file mode 100644 index c4130da0..00000000 --- a/src/quicktemplates2/qquickindicatorbutton_p.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "qquickindicatorbutton_p.h" -#include "qquickdeferredexecute_p_p.h" -#include "qquickcontrol_p_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickIndicatorButton; - -static inline QString indicatorName() { return QStringLiteral("indicator"); } - -void QQuickIndicatorButtonPrivate::cancelIndicator() -{ - Q_Q(QQuickIndicatorButton); - quickCancelDeferred(q, indicatorName()); -} - -void QQuickIndicatorButtonPrivate::executeIndicator(bool complete) -{ - Q_Q(QQuickIndicatorButton); - if (indicator.wasExecuted()) - return; - - if (!indicator || complete) - quickBeginDeferred(q, indicatorName(), indicator); - if (complete) - quickCompleteDeferred(q, indicatorName(), indicator); -} - -QQuickIndicatorButton::QQuickIndicatorButton(QObject *parent) - : QObject(*(new QQuickIndicatorButtonPrivate), parent) -{ -} - -bool QQuickIndicatorButton::isPressed() const -{ - Q_D(const QQuickIndicatorButton); - return d->pressed; -} - -void QQuickIndicatorButton::setPressed(bool pressed) -{ - Q_D(QQuickIndicatorButton); - if (d->pressed == pressed) - return; - - d->pressed = pressed; - emit pressedChanged(); -} - -QQuickItem *QQuickIndicatorButton::indicator() const -{ - QQuickIndicatorButtonPrivate *d = const_cast<QQuickIndicatorButtonPrivate *>(d_func()); - if (!d->indicator) - d->executeIndicator(); - return d->indicator; -} - -void QQuickIndicatorButton::setIndicator(QQuickItem *indicator) -{ - Q_D(QQuickIndicatorButton); - if (d->indicator == indicator) - return; - - if (!d->indicator.isExecuting()) - d->cancelIndicator(); - - const qreal oldImplicitIndicatorWidth = implicitIndicatorWidth(); - const qreal oldImplicitIndicatorHeight = implicitIndicatorHeight(); - - QQuickControl *par = static_cast<QQuickControl *>(parent()); - - QQuickControlPrivate::get(par)->removeImplicitSizeListener(d->indicator); - QQuickControlPrivate::hideOldItem(d->indicator); - d->indicator = indicator; - - if (indicator) { - if (!indicator->parentItem()) - indicator->setParentItem(par); - QQuickControlPrivate::get(par)->addImplicitSizeListener(indicator); - } - - if (!qFuzzyCompare(oldImplicitIndicatorWidth, implicitIndicatorWidth())) - emit implicitIndicatorWidthChanged(); - if (!qFuzzyCompare(oldImplicitIndicatorHeight, implicitIndicatorHeight())) - emit implicitIndicatorHeightChanged(); - if (!d->indicator.isExecuting()) - emit indicatorChanged(); -} - -bool QQuickIndicatorButton::isHovered() const -{ - Q_D(const QQuickIndicatorButton); - return d->hovered; -} - -void QQuickIndicatorButton::setHovered(bool hovered) -{ - Q_D(QQuickIndicatorButton); - if (d->hovered == hovered) - return; - - d->hovered = hovered; - emit hoveredChanged(); -} - -qreal QQuickIndicatorButton::implicitIndicatorWidth() const -{ - Q_D(const QQuickIndicatorButton); - if (!d->indicator) - return 0; - return d->indicator->implicitWidth(); -} - -qreal QQuickIndicatorButton::implicitIndicatorHeight() const -{ - Q_D(const QQuickIndicatorButton); - if (!d->indicator) - return 0; - return d->indicator->implicitHeight(); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickindicatorbutton_p.h b/src/quicktemplates2/qquickindicatorbutton_p.h deleted file mode 100644 index 44c5b0cf..00000000 --- a/src/quicktemplates2/qquickindicatorbutton_p.h +++ /dev/null @@ -1,121 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef QQUICKINDICATORBUTTON_H -#define QQUICKINDICATORBUTTON_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> -#include <QtQml/qjsvalue.h> -#include "qquickdeferredpointer_p_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickIndicatorButtonPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickIndicatorButton : public QObject -{ - Q_OBJECT - Q_PROPERTY(bool pressed READ isPressed WRITE setPressed NOTIFY pressedChanged FINAL) - Q_PROPERTY(QQuickItem *indicator READ indicator WRITE setIndicator NOTIFY indicatorChanged FINAL) - // 2.1 (Qt 5.8) - Q_PROPERTY(bool hovered READ isHovered WRITE setHovered NOTIFY hoveredChanged FINAL REVISION(2, 1)) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal implicitIndicatorWidth READ implicitIndicatorWidth NOTIFY implicitIndicatorWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitIndicatorHeight READ implicitIndicatorHeight NOTIFY implicitIndicatorHeightChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DeferredPropertyNames", "indicator") - QML_ANONYMOUS - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickIndicatorButton(QObject *parent); - - bool isPressed() const; - void setPressed(bool pressed); - - QQuickItem *indicator() const; - void setIndicator(QQuickItem *indicator); - - bool isHovered() const; - void setHovered(bool hovered); - - qreal implicitIndicatorWidth() const; - qreal implicitIndicatorHeight() const; - -Q_SIGNALS: - void pressedChanged(); - void indicatorChanged(); - // 2.1 (Qt 5.8) - Q_REVISION(2, 1) void hoveredChanged(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void implicitIndicatorWidthChanged(); - Q_REVISION(2, 5) void implicitIndicatorHeightChanged(); - -private: - Q_DISABLE_COPY(QQuickIndicatorButton) - Q_DECLARE_PRIVATE(QQuickIndicatorButton) -}; - -class QQuickIndicatorButtonPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickIndicatorButton) - -public: - static QQuickIndicatorButtonPrivate *get(QQuickIndicatorButton *button) - { - return button->d_func(); - } - - void cancelIndicator(); - void executeIndicator(bool complete = false); - - bool pressed = false; - bool hovered = false; - QQuickDeferredPointer<QQuickItem> indicator; -}; - -QT_END_NAMESPACE - -#endif // QQUICKINDICATORBUTTON_H diff --git a/src/quicktemplates2/qquickitemdelegate.cpp b/src/quicktemplates2/qquickitemdelegate.cpp deleted file mode 100644 index 4ab8b3f2..00000000 --- a/src/quicktemplates2/qquickitemdelegate.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickitemdelegate_p.h" -#include "qquickitemdelegate_p_p.h" -#include "qquickcontrol_p_p.h" - -#include <QtGui/qpa/qplatformtheme.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ItemDelegate - \inherits AbstractButton -//! \instantiates QQuickItemDelegate - \inqmlmodule QtQuick.Controls - \since 5.7 - \brief Basic item delegate that can be used in various views and controls. - - \image qtquickcontrols2-itemdelegate.gif - - ItemDelegate presents a standard view item. It can be used as a delegate - in various views and controls, such as \l ListView and \l ComboBox. - - ItemDelegate inherits its API from AbstractButton. For instance, you can set - \l {AbstractButton::text}{text}, display an \l {Icons in Qt Quick Controls}{icon}, - and react to \l {AbstractButton::clicked}{clicks} using the AbstractButton API. - - \snippet qtquickcontrols2-itemdelegate.qml 1 - - \sa {Customizing ItemDelegate}, {Delegate Controls} -*/ - -QQuickItemDelegate::QQuickItemDelegate(QQuickItem *parent) - : QQuickAbstractButton(*(new QQuickItemDelegatePrivate), parent) -{ - setFocusPolicy(Qt::NoFocus); -} - -QQuickItemDelegate::QQuickItemDelegate(QQuickItemDelegatePrivate &dd, QQuickItem *parent) - : QQuickAbstractButton(dd, parent) -{ - setFocusPolicy(Qt::NoFocus); -} - -/*! - \qmlproperty bool QtQuick.Controls::ItemDelegate::highlighted - - This property holds whether the delegate is highlighted. - - A delegate can be highlighted in order to draw the user's attention towards - it. It has no effect on keyboard interaction. For example, you can - highlight the current item in a ListView using the following code: - - \code - ListView { - id: listView - model: 10 - delegate: ItemDelegate { - text: modelData - highlighted: ListView.isCurrentItem - onClicked: listView.currentIndex = index - } - } - \endcode - - The default value is \c false. -*/ -bool QQuickItemDelegate::isHighlighted() const -{ - Q_D(const QQuickItemDelegate); - return d->highlighted; -} - -void QQuickItemDelegate::setHighlighted(bool highlighted) -{ - Q_D(QQuickItemDelegate); - if (highlighted == d->highlighted) - return; - - d->highlighted = highlighted; - emit highlightedChanged(); -} - -QFont QQuickItemDelegate::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::ItemView); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickItemDelegate::accessibleRole() const -{ - return QAccessible::ListItem; -} -#endif - -QPalette QQuickItemDelegatePrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::ItemView); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickitemdelegate_p.h b/src/quicktemplates2/qquickitemdelegate_p.h deleted file mode 100644 index 2568a0bf..00000000 --- a/src/quicktemplates2/qquickitemdelegate_p.h +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKITEMDELEGATE_P_H -#define QQUICKITEMDELEGATE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickItemDelegatePrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickItemDelegate : public QQuickAbstractButton -{ - Q_OBJECT - Q_PROPERTY(bool highlighted READ isHighlighted WRITE setHighlighted NOTIFY highlightedChanged FINAL) - QML_NAMED_ELEMENT(ItemDelegate) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickItemDelegate(QQuickItem *parent = nullptr); - - bool isHighlighted() const; - void setHighlighted(bool highlighted); - -Q_SIGNALS: - void highlightedChanged(); - -protected: - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -protected: - QQuickItemDelegate(QQuickItemDelegatePrivate &dd, QQuickItem *parent); - -private: - Q_DISABLE_COPY(QQuickItemDelegate) - Q_DECLARE_PRIVATE(QQuickItemDelegate) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickItemDelegate) - -#endif // QQUICKITEMDELEGATE_P_H diff --git a/src/quicktemplates2/qquickitemdelegate_p_p.h b/src/quicktemplates2/qquickitemdelegate_p_p.h deleted file mode 100644 index d7604fbe..00000000 --- a/src/quicktemplates2/qquickitemdelegate_p_p.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKITEMDELEGATE_P_P_H -#define QQUICKITEMDELEGATE_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickItemDelegatePrivate : public QQuickAbstractButtonPrivate -{ - Q_DECLARE_PUBLIC(QQuickItemDelegate) - -public: - QPalette defaultPalette() const override; - - bool highlighted = false; -}; - -QT_END_NAMESPACE - -#endif // QQUICKITEMDELEGATE_P_P_H diff --git a/src/quicktemplates2/qquicklabel.cpp b/src/quicktemplates2/qquicklabel.cpp deleted file mode 100644 index d5d9146a..00000000 --- a/src/quicktemplates2/qquicklabel.cpp +++ /dev/null @@ -1,592 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicklabel_p.h" -#include "qquicklabel_p_p.h" -#include "qquickcontrol_p.h" -#include "qquickcontrol_p_p.h" -#include "qquickdeferredexecute_p_p.h" - -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquicktext_p.h> - -#if QT_CONFIG(accessibility) -#include <QtQuick/private/qquickaccessibleattached_p.h> -#endif - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Label - \inherits Text -//! \instantiates QQuickLabel - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup text - \brief Styled text label with inherited font. - - Label extends \l Text with styling and \l {Control::font}{font} - inheritance. The default colors and font are style specific. Label - can also have a visual \l background item. - - \image qtquickcontrols2-label.png - - \snippet qtquickcontrols2-label.qml 1 - - You can use the properties of \l Text to change the appearance of the text as desired: - - \qml - Label { - text: "Hello world" - font.pixelSize: 22 - font.italic: true - } - \endqml - - \sa {Customizing Label} -*/ - -QQuickLabelPrivate::QQuickLabelPrivate() -{ -#if QT_CONFIG(accessibility) - QAccessible::installActivationObserver(this); -#endif -} - -QQuickLabelPrivate::~QQuickLabelPrivate() -{ -#if QT_CONFIG(accessibility) - QAccessible::removeActivationObserver(this); -#endif -} - -void QQuickLabelPrivate::setTopInset(qreal value, bool reset) -{ - Q_Q(QQuickLabel); - const QMarginsF oldInset = getInset(); - extra.value().topInset = value; - extra.value().hasTopInset = !reset; - if (!qFuzzyCompare(oldInset.top(), value)) { - emit q->topInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickLabelPrivate::setLeftInset(qreal value, bool reset) -{ - Q_Q(QQuickLabel); - const QMarginsF oldInset = getInset(); - extra.value().leftInset = value; - extra.value().hasLeftInset = !reset; - if (!qFuzzyCompare(oldInset.left(), value)) { - emit q->leftInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickLabelPrivate::setRightInset(qreal value, bool reset) -{ - Q_Q(QQuickLabel); - const QMarginsF oldInset = getInset(); - extra.value().rightInset = value; - extra.value().hasRightInset = !reset; - if (!qFuzzyCompare(oldInset.right(), value)) { - emit q->rightInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickLabelPrivate::setBottomInset(qreal value, bool reset) -{ - Q_Q(QQuickLabel); - const QMarginsF oldInset = getInset(); - extra.value().bottomInset = value; - extra.value().hasBottomInset = !reset; - if (!qFuzzyCompare(oldInset.bottom(), value)) { - emit q->bottomInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickLabelPrivate::resizeBackground() -{ - if (!background) - return; - - resizingBackground = true; - - QQuickItemPrivate *p = QQuickItemPrivate::get(background); - if (((!p->widthValid() || !extra.isAllocated() || !extra->hasBackgroundWidth) && qFuzzyIsNull(background->x())) - || (extra.isAllocated() && (extra->hasLeftInset || extra->hasRightInset))) { - background->setX(getLeftInset()); - background->setWidth(width - getLeftInset() - getRightInset()); - } - if (((!p->heightValid() || !extra.isAllocated() || !extra->hasBackgroundHeight) && qFuzzyIsNull(background->y())) - || (extra.isAllocated() && (extra->hasTopInset || extra->hasBottomInset))) { - background->setY(getTopInset()); - background->setHeight(height - getTopInset() - getBottomInset()); - } - - resizingBackground = false; -} - -/*! - \internal - - Determine which font is implicitly imposed on this control by its ancestors - and QGuiApplication::font, resolve this against its own font (attributes from - the implicit font are copied over). Then propagate this font to this - control's children. -*/ -void QQuickLabelPrivate::resolveFont() -{ - Q_Q(QQuickLabel); - inheritFont(QQuickControlPrivate::parentFont(q)); -} - -void QQuickLabelPrivate::inheritFont(const QFont &font) -{ - QFont parentFont = extra.isAllocated() ? extra->requestedFont.resolve(font) : font; - parentFont.setResolveMask(extra.isAllocated() ? extra->requestedFont.resolveMask() | font.resolveMask() : font.resolveMask()); - - const QFont defaultFont = QQuickTheme::font(QQuickTheme::Label); - QFont resolvedFont = parentFont.resolve(defaultFont); - - setFont_helper(resolvedFont); -} - -/*! - \internal - - Assign \a font to this control, and propagate it to all children. -*/ -void QQuickLabelPrivate::updateFont(const QFont &font) -{ - Q_Q(QQuickLabel); - QFont oldFont = sourceFont; - q->QQuickText::setFont(font); - - QQuickControlPrivate::updateFontRecur(q, font); - - if (oldFont != font) - emit q->fontChanged(); -} - -void QQuickLabelPrivate::textChanged(const QString &text) -{ -#if QT_CONFIG(accessibility) - maybeSetAccessibleName(text); -#else - Q_UNUSED(text); -#endif -} - -#if QT_CONFIG(accessibility) -void QQuickLabelPrivate::accessibilityActiveChanged(bool active) -{ - if (!active) - return; - - Q_Q(QQuickLabel); - QQuickAccessibleAttached *accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(q, true)); - Q_ASSERT(accessibleAttached); - accessibleAttached->setRole(accessibleRole()); - maybeSetAccessibleName(text); -} - -QAccessible::Role QQuickLabelPrivate::accessibleRole() const -{ - return QAccessible::StaticText; -} - -void QQuickLabelPrivate::maybeSetAccessibleName(const QString &name) -{ - Q_Q(QQuickLabel); - auto accessibleAttached = qobject_cast<QQuickAccessibleAttached *>( - qmlAttachedPropertiesObject<QQuickAccessibleAttached>(q, true)); - if (accessibleAttached) { - if (!accessibleAttached->wasNameExplicitlySet()) - accessibleAttached->setNameImplicitly(name); - } -} -#endif - -static inline QString backgroundName() { return QStringLiteral("background"); } - -void QQuickLabelPrivate::cancelBackground() -{ - Q_Q(QQuickLabel); - quickCancelDeferred(q, backgroundName()); -} - -void QQuickLabelPrivate::executeBackground(bool complete) -{ - Q_Q(QQuickLabel); - if (background.wasExecuted()) - return; - - if (!background || complete) - quickBeginDeferred(q, backgroundName(), background); - if (complete) - quickCompleteDeferred(q, backgroundName(), background); -} - -void QQuickLabelPrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) -{ - Q_UNUSED(diff); - if (resizingBackground || item != background || !change.sizeChange()) - return; - - QQuickItemPrivate *p = QQuickItemPrivate::get(item); - extra.value().hasBackgroundWidth = p->widthValid(); - extra.value().hasBackgroundHeight = p->heightValid(); - resizeBackground(); -} - -void QQuickLabelPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - Q_Q(QQuickLabel); - if (item == background) - emit q->implicitBackgroundWidthChanged(); -} - -void QQuickLabelPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - Q_Q(QQuickLabel); - if (item == background) - emit q->implicitBackgroundHeightChanged(); -} - -void QQuickLabelPrivate::itemDestroyed(QQuickItem *item) -{ - Q_Q(QQuickLabel); - if (item == background) { - background = nullptr; - emit q->implicitBackgroundWidthChanged(); - emit q->implicitBackgroundHeightChanged(); - } -} - -QPalette QQuickLabelPrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::Label); -} - -QQuickLabel::QQuickLabel(QQuickItem *parent) - : QQuickText(*(new QQuickLabelPrivate), parent) -{ - Q_D(QQuickLabel); - QObjectPrivate::connect(this, &QQuickText::textChanged, d, &QQuickLabelPrivate::textChanged); -} - -QQuickLabel::~QQuickLabel() -{ - Q_D(QQuickLabel); - QQuickControlPrivate::removeImplicitSizeListener(d->background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); -} - -QFont QQuickLabel::font() const -{ - return QQuickText::font(); -} - -void QQuickLabel::setFont(const QFont &font) -{ - Q_D(QQuickLabel); - if (d->extra.value().requestedFont.resolveMask() == font.resolveMask() && d->extra.value().requestedFont == font) - return; - - d->extra.value().requestedFont = font; - d->resolveFont(); -} - -/*! - \qmlproperty Item QtQuick.Controls::Label::background - - This property holds the background item. - - \note If the background item has no explicit size specified, it automatically - follows the control's size. In most cases, there is no need to specify - width or height for a background item. - - \sa {Customizing Label} -*/ -QQuickItem *QQuickLabel::background() const -{ - QQuickLabelPrivate *d = const_cast<QQuickLabelPrivate *>(d_func()); - if (!d->background) - d->executeBackground(); - return d->background; -} - -void QQuickLabel::setBackground(QQuickItem *background) -{ - Q_D(QQuickLabel); - if (d->background == background) - return; - - if (!d->background.isExecuting()) - d->cancelBackground(); - - const qreal oldImplicitBackgroundWidth = implicitBackgroundWidth(); - const qreal oldImplicitBackgroundHeight = implicitBackgroundHeight(); - - if (d->extra.isAllocated()) { - d->extra.value().hasBackgroundWidth = false; - d->extra.value().hasBackgroundHeight = false; - } - - QQuickControlPrivate::removeImplicitSizeListener(d->background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); - QQuickControlPrivate::hideOldItem(d->background); - d->background = background; - - if (background) { - background->setParentItem(this); - if (qFuzzyIsNull(background->z())) - background->setZ(-1); - QQuickItemPrivate *p = QQuickItemPrivate::get(background); - if (p->widthValid() || p->heightValid()) { - d->extra.value().hasBackgroundWidth = p->widthValid(); - d->extra.value().hasBackgroundHeight = p->heightValid(); - } - if (isComponentComplete()) - d->resizeBackground(); - QQuickControlPrivate::addImplicitSizeListener(background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); - } - - if (!qFuzzyCompare(oldImplicitBackgroundWidth, implicitBackgroundWidth())) - emit implicitBackgroundWidthChanged(); - if (!qFuzzyCompare(oldImplicitBackgroundHeight, implicitBackgroundHeight())) - emit implicitBackgroundHeightChanged(); - if (!d->background.isExecuting()) - emit backgroundChanged(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Label::implicitBackgroundWidth - \readonly - - This property holds the implicit background width. - - The value is equal to \c {background ? background.implicitWidth : 0}. - - \sa implicitBackgroundHeight -*/ -qreal QQuickLabel::implicitBackgroundWidth() const -{ - Q_D(const QQuickLabel); - if (!d->background) - return 0; - return d->background->implicitWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Label::implicitBackgroundHeight - \readonly - - This property holds the implicit background height. - - The value is equal to \c {background ? background.implicitHeight : 0}. - - \sa implicitBackgroundWidth -*/ -qreal QQuickLabel::implicitBackgroundHeight() const -{ - Q_D(const QQuickLabel); - if (!d->background) - return 0; - return d->background->implicitHeight(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Label::topInset - - This property holds the top inset for the background. - - \sa {Control Layout}, bottomInset -*/ -qreal QQuickLabel::topInset() const -{ - Q_D(const QQuickLabel); - return d->getTopInset(); -} - -void QQuickLabel::setTopInset(qreal inset) -{ - Q_D(QQuickLabel); - d->setTopInset(inset); -} - -void QQuickLabel::resetTopInset() -{ - Q_D(QQuickLabel); - d->setTopInset(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Label::leftInset - - This property holds the left inset for the background. - - \sa {Control Layout}, rightInset -*/ -qreal QQuickLabel::leftInset() const -{ - Q_D(const QQuickLabel); - return d->getLeftInset(); -} - -void QQuickLabel::setLeftInset(qreal inset) -{ - Q_D(QQuickLabel); - d->setLeftInset(inset); -} - -void QQuickLabel::resetLeftInset() -{ - Q_D(QQuickLabel); - d->setLeftInset(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Label::rightInset - - This property holds the right inset for the background. - - \sa {Control Layout}, leftInset -*/ -qreal QQuickLabel::rightInset() const -{ - Q_D(const QQuickLabel); - return d->getRightInset(); -} - -void QQuickLabel::setRightInset(qreal inset) -{ - Q_D(QQuickLabel); - d->setRightInset(inset); -} - -void QQuickLabel::resetRightInset() -{ - Q_D(QQuickLabel); - d->setRightInset(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Label::bottomInset - - This property holds the bottom inset for the background. - - \sa {Control Layout}, topInset -*/ -qreal QQuickLabel::bottomInset() const -{ - Q_D(const QQuickLabel); - return d->getBottomInset(); -} - -void QQuickLabel::setBottomInset(qreal inset) -{ - Q_D(QQuickLabel); - d->setBottomInset(inset); -} - -void QQuickLabel::resetBottomInset() -{ - Q_D(QQuickLabel); - d->setBottomInset(0, true); -} - -void QQuickLabel::classBegin() -{ - Q_D(QQuickLabel); - QQuickText::classBegin(); - d->resolveFont(); -} - -void QQuickLabel::componentComplete() -{ - Q_D(QQuickLabel); - d->executeBackground(true); - QQuickText::componentComplete(); - d->resizeBackground(); -#if QT_CONFIG(accessibility) - if (QAccessible::isActive()) - d->accessibilityActiveChanged(true); -#endif -} - -void QQuickLabel::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) -{ - Q_D(QQuickLabel); - QQuickText::itemChange(change, value); - switch (change) { - case ItemEnabledHasChanged: - break; - case ItemSceneChange: - case ItemParentHasChanged: - if ((change == ItemParentHasChanged && value.item) || (change == ItemSceneChange && value.window)) { - d->resolveFont(); - } - break; - default: - break; - } -} - -void QQuickLabel::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickLabel); - QQuickText::geometryChange(newGeometry, oldGeometry); - d->resizeBackground(); -} - -void QQuickLabel::insetChange(const QMarginsF &newInset, const QMarginsF &oldInset) -{ - Q_D(QQuickLabel); - Q_UNUSED(newInset); - Q_UNUSED(oldInset); - d->resizeBackground(); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicklabel_p.h b/src/quicktemplates2/qquicklabel_p.h deleted file mode 100644 index 6ef60be9..00000000 --- a/src/quicktemplates2/qquicklabel_p.h +++ /dev/null @@ -1,141 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKLABEL_P_H -#define QQUICKLABEL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpalette.h> -#include <QtQuick/private/qquicktext_p.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickLabelPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickLabel : public QQuickText -{ - Q_OBJECT - Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged) // override - Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal implicitBackgroundWidth READ implicitBackgroundWidth NOTIFY implicitBackgroundWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitBackgroundHeight READ implicitBackgroundHeight NOTIFY implicitBackgroundHeightChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal topInset READ topInset WRITE setTopInset RESET resetTopInset NOTIFY topInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal leftInset READ leftInset WRITE setLeftInset RESET resetLeftInset NOTIFY leftInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal rightInset READ rightInset WRITE setRightInset RESET resetRightInset NOTIFY rightInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal bottomInset READ bottomInset WRITE setBottomInset RESET resetBottomInset NOTIFY bottomInsetChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DeferredPropertyNames", "background") - QML_NAMED_ELEMENT(Label) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickLabel(QQuickItem *parent = nullptr); - ~QQuickLabel(); - - QFont font() const; - void setFont(const QFont &font); - - QQuickItem *background() const; - void setBackground(QQuickItem *background); - - // 2.5 (Qt 5.12) - qreal implicitBackgroundWidth() const; - qreal implicitBackgroundHeight() const; - - qreal topInset() const; - void setTopInset(qreal inset); - void resetTopInset(); - - qreal leftInset() const; - void setLeftInset(qreal inset); - void resetLeftInset(); - - qreal rightInset() const; - void setRightInset(qreal inset); - void resetRightInset(); - - qreal bottomInset() const; - void setBottomInset(qreal inset); - void resetBottomInset(); - -Q_SIGNALS: - void fontChanged(); - void backgroundChanged(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void implicitBackgroundWidthChanged(); - Q_REVISION(2, 5) void implicitBackgroundHeightChanged(); - Q_REVISION(2, 5) void topInsetChanged(); - Q_REVISION(2, 5) void leftInsetChanged(); - Q_REVISION(2, 5) void rightInsetChanged(); - Q_REVISION(2, 5) void bottomInsetChanged(); - -protected: - void classBegin() override; - void componentComplete() override; - - void itemChange(ItemChange change, const ItemChangeData &value) override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - virtual void insetChange(const QMarginsF &newInset, const QMarginsF &oldInset); - -private: - Q_DISABLE_COPY(QQuickLabel) - Q_DECLARE_PRIVATE(QQuickLabel) -}; - -struct QQuickTemplatesTextForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickText) - QML_ADDED_IN_VERSION(2, 3) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickLabel) - -#endif // QQUICKLABEL_P_H diff --git a/src/quicktemplates2/qquicklabel_p_p.h b/src/quicktemplates2/qquicklabel_p_p.h deleted file mode 100644 index a9bda671..00000000 --- a/src/quicktemplates2/qquicklabel_p_p.h +++ /dev/null @@ -1,141 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKLABEL_P_P_H -#define QQUICKLABEL_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQml/private/qlazilyallocated_p.h> -#include <QtQuick/private/qquicktext_p_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> -#include <QtQuickTemplates2/private/qquickdeferredpointer_p_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -#if QT_CONFIG(accessibility) -#include <QtGui/qaccessible.h> -#endif - -QT_BEGIN_NAMESPACE - -class QQuickLabelPrivate : public QQuickTextPrivate, public QQuickItemChangeListener -#if QT_CONFIG(accessibility) - , public QAccessible::ActivationObserver -#endif -{ - Q_DECLARE_PUBLIC(QQuickLabel) - -public: - QQuickLabelPrivate(); - ~QQuickLabelPrivate(); - - static QQuickLabelPrivate *get(QQuickLabel *item) - { - return static_cast<QQuickLabelPrivate *>(QObjectPrivate::get(item)); - } - - inline QMarginsF getInset() const { return QMarginsF(getLeftInset(), getTopInset(), getRightInset(), getBottomInset()); } - inline qreal getTopInset() const { return extra.isAllocated() ? extra->topInset : 0; } - inline qreal getLeftInset() const { return extra.isAllocated() ? extra->leftInset : 0; } - inline qreal getRightInset() const { return extra.isAllocated() ? extra->rightInset : 0; } - inline qreal getBottomInset() const { return extra.isAllocated() ? extra->bottomInset : 0; } - - void setTopInset(qreal value, bool reset = false); - void setLeftInset(qreal value, bool reset = false); - void setRightInset(qreal value, bool reset = false); - void setBottomInset(qreal value, bool reset = false); - - void resizeBackground(); - - void resolveFont(); - void inheritFont(const QFont &font); - void updateFont(const QFont &font); - inline void setFont_helper(const QFont &font) { - if (sourceFont.resolveMask() == font.resolveMask() && sourceFont == font) - return; - updateFont(font); - } - - void textChanged(const QString &text); - -#if QT_CONFIG(accessibility) - void accessibilityActiveChanged(bool active) override; - QAccessible::Role accessibleRole() const override; - void maybeSetAccessibleName(const QString &name); -#endif - - void cancelBackground(); - void executeBackground(bool complete = false); - - void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override; - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - void itemDestroyed(QQuickItem *item) override; - - QPalette defaultPalette() const override; - - struct ExtraData { - bool hasTopInset = false; - bool hasLeftInset = false; - bool hasRightInset = false; - bool hasBottomInset = false; - bool hasBackgroundWidth = false; - bool hasBackgroundHeight = false; - qreal topInset = 0; - qreal leftInset = 0; - qreal rightInset = 0; - qreal bottomInset = 0; - QFont requestedFont; - }; - QLazilyAllocated<ExtraData> extra; - - bool resizingBackground = false; - QPalette resolvedPalette; - QQuickDeferredPointer<QQuickItem> background; -}; - -QT_END_NAMESPACE - -#endif // QQUICKLABEL_P_P_H diff --git a/src/quicktemplates2/qquickmenu.cpp b/src/quicktemplates2/qquickmenu.cpp deleted file mode 100644 index 887f802c..00000000 --- a/src/quicktemplates2/qquickmenu.cpp +++ /dev/null @@ -1,1534 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmenu_p.h" -#include "qquickmenu_p_p.h" -#include "qquickmenuitem_p_p.h" -#include "qquickmenubaritem_p.h" -#include "qquickmenubar_p.h" -#include "qquickpopupitem_p_p.h" -#include "qquickpopuppositioner_p_p.h" -#include "qquickaction_p.h" - -#include <QtGui/qevent.h> -#include <QtGui/qcursor.h> -#if QT_CONFIG(shortcut) -#include <QtGui/qkeysequence.h> -#endif -#include <QtGui/qpa/qplatformintegration.h> -#include <QtGui/private/qguiapplication_p.h> -#include <QtQml/qqmlcontext.h> -#include <QtQml/qqmlcomponent.h> -#include <QtQml/private/qqmlengine_p.h> -#include <QtQml/private/qv4scopedvalue_p.h> -#include <QtQml/private/qv4variantobject_p.h> -#include <QtQml/private/qv4qobjectwrapper_p.h> -#include <private/qqmlobjectmodel_p.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> -#include <QtQuick/private/qquickitemview_p.h> -#include <QtQuick/private/qquickevents_p_p.h> -#include <QtQuick/private/qquickwindow_p.h> - -QT_BEGIN_NAMESPACE - -// copied from qfusionstyle.cpp -static const int SUBMENU_DELAY = 225; - -/*! - \qmltype Menu - \inherits Popup -//! \instantiates QQuickMenu - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-menus - \ingroup qtquickcontrols2-popups - \brief Menu popup that can be used as a context menu or popup menu. - - \image qtquickcontrols2-menu.png - - Menu has two main use cases: - \list - \li Context menus; for example, a menu that is shown after right clicking - \li Popup menus; for example, a menu that is shown after clicking a button - \endlist - - When used as a context menu, the recommended way of opening the menu is to call - \l popup(). Unless a position is explicitly specified, the menu is positioned at - the mouse cursor on desktop platforms that have a mouse cursor available, and - otherwise centered over its parent item. - - \code - MouseArea { - anchors.fill: parent - acceptedButtons: Qt.LeftButton | Qt.RightButton - onClicked: { - if (mouse.button === Qt.RightButton) - contextMenu.popup() - } - onPressAndHold: { - if (mouse.source === Qt.MouseEventNotSynthesized) - contextMenu.popup() - } - - Menu { - id: contextMenu - MenuItem { text: "Cut" } - MenuItem { text: "Copy" } - MenuItem { text: "Paste" } - } - } - \endcode - - When used as a popup menu, it is easiest to specify the position by specifying - the desired \l {Popup::}{x} and \l {Popup::}{y} coordinates using the respective - properties, and call \l {Popup::}{open()} to open the menu. - - \code - Button { - id: fileButton - text: "File" - onClicked: menu.open() - - Menu { - id: menu - y: fileButton.height - - MenuItem { - text: "New..." - } - MenuItem { - text: "Open..." - } - MenuItem { - text: "Save" - } - } - } - \endcode - - Since QtQuick.Controls 2.3 (Qt 5.10), it is also possible to create sub-menus - and declare Action objects inside Menu: - - \code - Menu { - Action { text: "Cut" } - Action { text: "Copy" } - Action { text: "Paste" } - - MenuSeparator { } - - Menu { - title: "Find/Replace" - Action { text: "Find Next" } - Action { text: "Find Previous" } - Action { text: "Replace" } - } - } - \endcode - - Sub-menus are \l {cascade}{cascading} by default on desktop platforms - that have a mouse cursor available. Non-cascading menus are shown one - menu at a time, and centered over the parent menu. - - Typically, menu items are statically declared as children of the menu, but - Menu also provides API to \l {addItem}{add}, \l {insertItem}{insert}, - \l {moveItem}{move} and \l {removeItem}{remove} items dynamically. The - items in a menu can be accessed using \l itemAt() or - \l {Popup::}{contentChildren}. - - Although \l {MenuItem}{MenuItems} are most commonly used with Menu, it can - contain any type of item. - - \section1 Margins - - As it is inherited from Popup, Menu supports \l {Popup::}{margins}. By - default, all of the built-in styles specify \c 0 for Menu's margins to - ensure that the menu is kept within the bounds of the window. To allow a - menu to go outside of the window (to animate it moving into view, for - example), set the margins property to \c -1. - - \sa {Customizing Menu}, MenuItem, {Menu Controls}, {Popup Controls} -*/ - -/*! - \qmlproperty bool QtQuick.Controls::Menu::focus - - This property holds whether the popup wants focus. - - When the popup actually receives focus, \l{Popup::}{activeFocus} - will be \c true. For more information, see - \l {Keyboard Focus in Qt Quick}. - - The default value is \c false. - - \sa {Popup::}{activeFocus} -*/ - -static const QQuickPopup::ClosePolicy cascadingSubMenuClosePolicy = QQuickPopup::CloseOnEscape | QQuickPopup::CloseOnPressOutsideParent; - -static bool shouldCascade() -{ -#if QT_CONFIG(cursor) - return QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::MultipleWindows); -#else - return false; -#endif -} - -class QQuickMenuPositioner : public QQuickPopupPositioner -{ -public: - QQuickMenuPositioner(QQuickMenu *menu) : QQuickPopupPositioner(menu) { } - - void reposition() override; -}; - -QQuickMenuPrivate::QQuickMenuPrivate() -{ - cascade = shouldCascade(); -} - -void QQuickMenuPrivate::init() -{ - Q_Q(QQuickMenu); - QQuickPopupPrivate::init(); - contentModel = new QQmlObjectModel(q); -} - -QQuickItem *QQuickMenuPrivate::itemAt(int index) const -{ - return qobject_cast<QQuickItem *>(contentModel->get(index)); -} - -void QQuickMenuPrivate::insertItem(int index, QQuickItem *item) -{ - contentData.append(item); - item->setParentItem(contentItem); - if (qobject_cast<QQuickItemView *>(contentItem)) - QQuickItemPrivate::get(item)->setCulled(true); // QTBUG-53262 - if (complete) - resizeItem(item); - QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::Destroyed | QQuickItemPrivate::Parent); - QQuickItemPrivate::get(item)->updateOrAddGeometryChangeListener(this, QQuickGeometryChange::Width); - contentModel->insert(index, item); - - QQuickMenuItem *menuItem = qobject_cast<QQuickMenuItem *>(item); - if (menuItem) { - Q_Q(QQuickMenu); - QQuickMenuItemPrivate::get(menuItem)->setMenu(q); - if (QQuickMenu *subMenu = menuItem->subMenu()) - QQuickMenuPrivate::get(subMenu)->setParentMenu(q); - QObjectPrivate::connect(menuItem, &QQuickMenuItem::triggered, this, &QQuickMenuPrivate::onItemTriggered); - QObjectPrivate::connect(menuItem, &QQuickItem::activeFocusChanged, this, &QQuickMenuPrivate::onItemActiveFocusChanged); - QObjectPrivate::connect(menuItem, &QQuickControl::hoveredChanged, this, &QQuickMenuPrivate::onItemHovered); - } -} - -void QQuickMenuPrivate::moveItem(int from, int to) -{ - contentModel->move(from, to); -} - -void QQuickMenuPrivate::removeItem(int index, QQuickItem *item) -{ - contentData.removeOne(item); - - QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::Destroyed | QQuickItemPrivate::Parent); - QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::Geometry); - item->setParentItem(nullptr); - contentModel->remove(index); - - QQuickMenuItem *menuItem = qobject_cast<QQuickMenuItem *>(item); - if (menuItem) { - QQuickMenuItemPrivate::get(menuItem)->setMenu(nullptr); - if (QQuickMenu *subMenu = menuItem->subMenu()) - QQuickMenuPrivate::get(subMenu)->setParentMenu(nullptr); - QObjectPrivate::disconnect(menuItem, &QQuickMenuItem::triggered, this, &QQuickMenuPrivate::onItemTriggered); - QObjectPrivate::disconnect(menuItem, &QQuickItem::activeFocusChanged, this, &QQuickMenuPrivate::onItemActiveFocusChanged); - QObjectPrivate::disconnect(menuItem, &QQuickControl::hoveredChanged, this, &QQuickMenuPrivate::onItemHovered); - } -} - -QQuickItem *QQuickMenuPrivate::beginCreateItem() -{ - Q_Q(QQuickMenu); - if (!delegate) - return nullptr; - - QQmlContext *creationContext = delegate->creationContext(); - if (!creationContext) - creationContext = qmlContext(q); - QQmlContext *context = new QQmlContext(creationContext, q); - context->setContextObject(q); - - QObject *object = delegate->beginCreate(context); - QQuickItem *item = qobject_cast<QQuickItem *>(object); - if (!item) - delete object; - else - QQml_setParent_noEvent(item, q); - - return item; -} - -void QQuickMenuPrivate::completeCreateItem() -{ - if (!delegate) - return; - - delegate->completeCreate(); -} - -QQuickItem *QQuickMenuPrivate::createItem(QQuickMenu *menu) -{ - QQuickItem *item = beginCreateItem(); - if (QQuickMenuItem *menuItem = qobject_cast<QQuickMenuItem *>(item)) - QQuickMenuItemPrivate::get(menuItem)->setSubMenu(menu); - completeCreateItem(); - return item; -} - -QQuickItem *QQuickMenuPrivate::createItem(QQuickAction *action) -{ - QQuickItem *item = beginCreateItem(); - if (QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(item)) - button->setAction(action); - completeCreateItem(); - return item; -} - -void QQuickMenuPrivate::resizeItem(QQuickItem *item) -{ - if (!item || !contentItem) - return; - - QQuickItemPrivate *p = QQuickItemPrivate::get(item); - if (!p->widthValid()) { - item->setWidth(contentItem->width()); - p->widthValidFlag = false; - } -} - -void QQuickMenuPrivate::resizeItems() -{ - if (!contentModel) - return; - - for (int i = 0; i < contentModel->count(); ++i) - resizeItem(itemAt(i)); -} - -void QQuickMenuPrivate::itemChildAdded(QQuickItem *, QQuickItem *child) -{ - // add dynamically reparented items (eg. by a Repeater) - if (!QQuickItemPrivate::get(child)->isTransparentForPositioner() && !contentData.contains(child)) - insertItem(contentModel->count(), child); -} - -void QQuickMenuPrivate::itemParentChanged(QQuickItem *item, QQuickItem *parent) -{ - // remove dynamically unparented items (eg. by a Repeater) - if (!parent) - removeItem(contentModel->indexOf(item, nullptr), item); -} - -void QQuickMenuPrivate::itemSiblingOrderChanged(QQuickItem *) -{ - // reorder the restacked items (eg. by a Repeater) - Q_Q(QQuickMenu); - QList<QQuickItem *> siblings = contentItem->childItems(); - - int to = 0; - for (int i = 0; i < siblings.count(); ++i) { - QQuickItem* sibling = siblings.at(i); - if (QQuickItemPrivate::get(sibling)->isTransparentForPositioner()) - continue; - int index = contentModel->indexOf(sibling, nullptr); - q->moveItem(index, to++); - } -} - -void QQuickMenuPrivate::itemDestroyed(QQuickItem *item) -{ - QQuickPopupPrivate::itemDestroyed(item); - int index = contentModel->indexOf(item, nullptr); - if (index != -1) - removeItem(index, item); -} - -void QQuickMenuPrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange, const QRectF &) -{ - if (!complete) - return; - - if (item == contentItem) { - // The contentItem's geometry changed, so resize any items - // that don't have explicit widths set so that they fill the width of the menu. - resizeItems(); - } else { - // The geometry of an item in the menu changed. If the item - // doesn't have an explicit width set, make it fill the width of the menu. - resizeItem(item); - } -} - -QQuickPopupPositioner *QQuickMenuPrivate::getPositioner() -{ - Q_Q(QQuickMenu); - if (!positioner) - positioner = new QQuickMenuPositioner(q); - return positioner; -} - -void QQuickMenuPositioner::reposition() -{ - QQuickMenu *menu = static_cast<QQuickMenu *>(popup()); - QQuickMenuPrivate *p = QQuickMenuPrivate::get(menu); - if (p->parentMenu) { - if (p->cascade) { - if (p->popupItem->isMirrored()) - menu->setPosition(QPointF(-menu->width() - p->parentMenu->leftPadding() + menu->overlap(), -menu->topPadding())); - else if (p->parentItem) - menu->setPosition(QPointF(p->parentItem->width() + p->parentMenu->rightPadding() - menu->overlap(), -menu->topPadding())); - } else { - menu->setPosition(QPointF(p->parentMenu->x() + (p->parentMenu->width() - menu->width()) / 2, - p->parentMenu->y() + (p->parentMenu->height() - menu->height()) / 2)); - } - } - QQuickPopupPositioner::reposition(); -} - -bool QQuickMenuPrivate::prepareEnterTransition() -{ - Q_Q(QQuickMenu); - if (parentMenu && !cascade) - parentMenu->close(); - - // If a cascading sub-menu doesn't have enough space to open on - // the right, it flips on the other side of the parent menu. - allowHorizontalFlip = cascade && parentMenu; - - if (!QQuickPopupPrivate::prepareEnterTransition()) - return false; - - if (!hasClosePolicy) { - if (cascade && parentMenu) - closePolicy = cascadingSubMenuClosePolicy; - else - q->resetClosePolicy(); - } - return true; -} - -bool QQuickMenuPrivate::prepareExitTransition() -{ - if (!QQuickPopupPrivate::prepareExitTransition()) - return false; - - stopHoverTimer(); - - QQuickMenu *subMenu = currentSubMenu(); - while (subMenu) { - QPointer<QQuickMenuItem> currentSubMenuItem = QQuickMenuPrivate::get(subMenu)->currentItem; - subMenu->close(); - subMenu = currentSubMenuItem ? currentSubMenuItem->subMenu() : nullptr; - } - return true; -} - -bool QQuickMenuPrivate::blockInput(QQuickItem *item, const QPointF &point) const -{ - // keep the parent menu open when a cascading sub-menu (this menu) is interacted with - return (cascade && parentMenu && contains(point)) || QQuickPopupPrivate::blockInput(item, point); -} - -void QQuickMenuPrivate::onItemHovered() -{ - Q_Q(QQuickMenu); - QQuickAbstractButton *button = qobject_cast<QQuickAbstractButton *>(q->sender()); - if (!button || !button->isHovered() || !button->isEnabled() || QQuickAbstractButtonPrivate::get(button)->touchId != -1) - return; - - QQuickMenuItem *oldCurrentItem = currentItem; - - int index = contentModel->indexOf(button, nullptr); - if (index != -1) { - setCurrentIndex(index, Qt::OtherFocusReason); - if (oldCurrentItem != currentItem) { - if (oldCurrentItem) { - QQuickMenu *subMenu = oldCurrentItem->subMenu(); - if (subMenu) - subMenu->close(); - } - if (currentItem) { - QQuickMenu *subMenu = currentItem->menu(); - if (subMenu && subMenu->cascade()) - startHoverTimer(); - } - } - } -} - -void QQuickMenuPrivate::onItemTriggered() -{ - Q_Q(QQuickMenu); - QQuickMenuItem *item = qobject_cast<QQuickMenuItem *>(q->sender()); - if (!item) - return; - - if (QQuickMenu *subMenu = item->subMenu()) { - auto subMenuPrivate = QQuickMenuPrivate::get(subMenu); - subMenu->popup(subMenuPrivate->firstEnabledMenuItem()); - } else { - q->dismiss(); - } -} - -void QQuickMenuPrivate::onItemActiveFocusChanged() -{ - Q_Q(QQuickMenu); - QQuickItem *item = qobject_cast<QQuickItem*>(q->sender()); - if (!item->hasActiveFocus()) - return; - - int indexOfItem = contentModel->indexOf(item, nullptr); - QQuickControl *control = qobject_cast<QQuickControl *>(item); - setCurrentIndex(indexOfItem, control ? control->focusReason() : Qt::OtherFocusReason); -} - -QQuickMenu *QQuickMenuPrivate::currentSubMenu() const -{ - if (!currentItem) - return nullptr; - - return currentItem->subMenu(); -} - -void QQuickMenuPrivate::setParentMenu(QQuickMenu *parent) -{ - Q_Q(QQuickMenu); - if (parentMenu == parent) - return; - - if (parentMenu) { - QObject::disconnect(parentMenu.data(), &QQuickMenu::cascadeChanged, q, &QQuickMenu::setCascade); - disconnect(parentMenu.data(), &QQuickMenu::parentChanged, this, &QQuickMenuPrivate::resolveParentItem); - } - if (parent) { - QObject::connect(parent, &QQuickMenu::cascadeChanged, q, &QQuickMenu::setCascade); - connect(parent, &QQuickMenu::parentChanged, this, &QQuickMenuPrivate::resolveParentItem); - } - - parentMenu = parent; - q->resetCascade(); - resolveParentItem(); -} - -static QQuickItem *findParentMenuItem(QQuickMenu *subMenu) -{ - QQuickMenu *menu = QQuickMenuPrivate::get(subMenu)->parentMenu; - for (int i = 0; i < QQuickMenuPrivate::get(menu)->contentModel->count(); ++i) { - QQuickMenuItem *item = qobject_cast<QQuickMenuItem *>(menu->itemAt(i)); - if (item && item->subMenu() == subMenu) - return item; - } - return nullptr; -} - -void QQuickMenuPrivate::resolveParentItem() -{ - Q_Q(QQuickMenu); - if (!parentMenu) - q->resetParentItem(); - else if (!cascade) - q->setParentItem(parentMenu->parentItem()); - else - q->setParentItem(findParentMenuItem(q)); -} - -void QQuickMenuPrivate::propagateKeyEvent(QKeyEvent *event) -{ - if (QQuickMenuItem *menuItem = qobject_cast<QQuickMenuItem *>(parentItem)) { - if (QQuickMenu *menu = menuItem->menu()) - QQuickMenuPrivate::get(menu)->propagateKeyEvent(event); - } else if (QQuickMenuBarItem *menuBarItem = qobject_cast<QQuickMenuBarItem *>(parentItem)) { - if (QQuickMenuBar *menuBar = menuBarItem->menuBar()) { - event->accept(); - QCoreApplication::sendEvent(menuBar, event); - } - } -} - -void QQuickMenuPrivate::startHoverTimer() -{ - Q_Q(QQuickMenu); - stopHoverTimer(); - hoverTimer = q->startTimer(SUBMENU_DELAY); -} - -void QQuickMenuPrivate::stopHoverTimer() -{ - Q_Q(QQuickMenu); - if (!hoverTimer) - return; - - q->killTimer(hoverTimer); - hoverTimer = 0; -} - -void QQuickMenuPrivate::setCurrentIndex(int index, Qt::FocusReason reason) -{ - Q_Q(QQuickMenu); - if (currentIndex == index) - return; - - QQuickMenuItem *newCurrentItem = qobject_cast<QQuickMenuItem *>(itemAt(index)); - if (currentItem != newCurrentItem) { - stopHoverTimer(); - if (currentItem) { - currentItem->setHighlighted(false); - if (!newCurrentItem && window) { - QQuickItem *focusItem = QQuickItemPrivate::get(contentItem)->subFocusItem; - if (focusItem) - QQuickWindowPrivate::get(window)->clearFocusInScope(contentItem, focusItem, Qt::OtherFocusReason); - } - } - if (newCurrentItem) { - newCurrentItem->setHighlighted(true); - newCurrentItem->forceActiveFocus(reason); - } - currentItem = newCurrentItem; - } - - currentIndex = index; - emit q->currentIndexChanged(); -} - -bool QQuickMenuPrivate::activateNextItem() -{ - int index = currentIndex; - int count = contentModel->count(); - while (++index < count) { - QQuickItem *item = itemAt(index); - if (!item || !item->activeFocusOnTab() || !item->isEnabled()) - continue; - setCurrentIndex(index, Qt::TabFocusReason); - return true; - } - return false; -} - -bool QQuickMenuPrivate::activatePreviousItem() -{ - int index = currentIndex; - while (--index >= 0) { - QQuickItem *item = itemAt(index); - if (!item || !item->activeFocusOnTab() || !item->isEnabled()) - continue; - setCurrentIndex(index, Qt::BacktabFocusReason); - return true; - } - return false; -} - -QQuickMenuItem *QQuickMenuPrivate::firstEnabledMenuItem() const -{ - for (int i = 0; i < contentModel->count(); ++i) { - QQuickItem *item = itemAt(i); - if (!item || !item->isEnabled()) - continue; - - QQuickMenuItem *menuItem = qobject_cast<QQuickMenuItem *>(item); - if (!menuItem) - continue; - - return menuItem; - } - return nullptr; -} - -void QQuickMenuPrivate::contentData_append(QQmlListProperty<QObject> *prop, QObject *obj) -{ - QQuickMenu *q = qobject_cast<QQuickMenu *>(prop->object); - QQuickMenuPrivate *p = QQuickMenuPrivate::get(q); - - QQuickItem *item = qobject_cast<QQuickItem *>(obj); - if (!item) { - if (QQuickAction *action = qobject_cast<QQuickAction *>(obj)) - item = p->createItem(action); - else if (QQuickMenu *menu = qobject_cast<QQuickMenu *>(obj)) - item = p->createItem(menu); - } - - if (item) { - if (QQuickItemPrivate::get(item)->isTransparentForPositioner()) { - QQuickItemPrivate::get(item)->addItemChangeListener(p, QQuickItemPrivate::SiblingOrder); - item->setParentItem(p->contentItem); - } else if (p->contentModel->indexOf(item, nullptr) == -1) { - q->addItem(item); - } - } else { - p->contentData.append(obj); - } -} - -qsizetype QQuickMenuPrivate::contentData_count(QQmlListProperty<QObject> *prop) -{ - QQuickMenu *q = static_cast<QQuickMenu *>(prop->object); - return QQuickMenuPrivate::get(q)->contentData.count(); -} - -QObject *QQuickMenuPrivate::contentData_at(QQmlListProperty<QObject> *prop, qsizetype index) -{ - QQuickMenu *q = static_cast<QQuickMenu *>(prop->object); - return QQuickMenuPrivate::get(q)->contentData.value(index); -} - -QPalette QQuickMenuPrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::Menu); -} - -void QQuickMenuPrivate::contentData_clear(QQmlListProperty<QObject> *prop) -{ - QQuickMenu *q = static_cast<QQuickMenu *>(prop->object); - QQuickMenuPrivate::get(q)->contentData.clear(); -} - -QQuickMenu::QQuickMenu(QObject *parent) - : QQuickPopup(*(new QQuickMenuPrivate), parent) -{ - Q_D(QQuickMenu); - setFocus(true); - d->init(); - connect(d->contentModel, &QQmlObjectModel::countChanged, this, &QQuickMenu::countChanged); -} - -QQuickMenu::~QQuickMenu() -{ - Q_D(QQuickMenu); - // We have to do this to ensure that the change listeners are removed. - // It's too late to do this in ~QQuickMenuPrivate, as contentModel has already - // been destroyed before that is called. - while (d->contentModel->count() > 0) - d->removeItem(0, d->itemAt(0)); -} - -/*! - \qmlmethod Item QtQuick.Controls::Menu::itemAt(int index) - - Returns the item at \a index, or \c null if it does not exist. -*/ -QQuickItem *QQuickMenu::itemAt(int index) const -{ - Q_D(const QQuickMenu); - return d->itemAt(index); -} - -/*! - \qmlmethod void QtQuick.Controls::Menu::addItem(Item item) - - Adds \a item to the end of the list of items. -*/ -void QQuickMenu::addItem(QQuickItem *item) -{ - Q_D(QQuickMenu); - insertItem(d->contentModel->count(), item); -} - -/*! - \qmlmethod void QtQuick.Controls::Menu::insertItem(int index, Item item) - - Inserts \a item at \a index. -*/ -void QQuickMenu::insertItem(int index, QQuickItem *item) -{ - Q_D(QQuickMenu); - if (!item) - return; - const int count = d->contentModel->count(); - if (index < 0 || index > count) - index = count; - - int oldIndex = d->contentModel->indexOf(item, nullptr); - if (oldIndex != -1) { - if (oldIndex < index) - --index; - if (oldIndex != index) - d->moveItem(oldIndex, index); - } else { - d->insertItem(index, item); - } -} - -/*! - \qmlmethod void QtQuick.Controls::Menu::moveItem(int from, int to) - - Moves an item \a from one index \a to another. -*/ -void QQuickMenu::moveItem(int from, int to) -{ - Q_D(QQuickMenu); - const int count = d->contentModel->count(); - if (from < 0 || from > count - 1) - return; - if (to < 0 || to > count - 1) - to = count - 1; - - if (from != to) - d->moveItem(from, to); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Menu::removeItem(Item item) - - Removes and destroys the specified \a item. -*/ -void QQuickMenu::removeItem(QQuickItem *item) -{ - Q_D(QQuickMenu); - if (!item) - return; - - const int index = d->contentModel->indexOf(item, nullptr); - if (index == -1) - return; - - d->removeItem(index, item); - item->deleteLater(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod MenuItem QtQuick.Controls::Menu::takeItem(int index) - - Removes and returns the item at \a index. - - \note The ownership of the item is transferred to the caller. -*/ -QQuickItem *QQuickMenu::takeItem(int index) -{ - Q_D(QQuickMenu); - const int count = d->contentModel->count(); - if (index < 0 || index >= count) - return nullptr; - - QQuickItem *item = itemAt(index); - if (item) - d->removeItem(index, item); - return item; -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod Menu QtQuick.Controls::Menu::menuAt(int index) - - Returns the sub-menu at \a index, or \c null if the index is not valid or - there is no sub-menu at the specified index. -*/ -QQuickMenu *QQuickMenu::menuAt(int index) const -{ - Q_D(const QQuickMenu); - QQuickMenuItem *item = qobject_cast<QQuickMenuItem *>(d->itemAt(index)); - if (!item) - return nullptr; - - return item->subMenu(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Menu::addMenu(Menu menu) - - Adds \a menu as a sub-menu to the end of this menu. -*/ -void QQuickMenu::addMenu(QQuickMenu *menu) -{ - Q_D(QQuickMenu); - insertMenu(d->contentModel->count(), menu); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Menu::insertMenu(int index, Menu menu) - - Inserts \a menu as a sub-menu at \a index. The index is within all items in the menu. -*/ -void QQuickMenu::insertMenu(int index, QQuickMenu *menu) -{ - Q_D(QQuickMenu); - if (!menu) - return; - - insertItem(index, d->createItem(menu)); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Menu::removeMenu(Menu menu) - - Removes and destroys the specified \a menu. -*/ -void QQuickMenu::removeMenu(QQuickMenu *menu) -{ - Q_D(QQuickMenu); - if (!menu) - return; - - const int count = d->contentModel->count(); - for (int i = 0; i < count; ++i) { - QQuickMenuItem *item = qobject_cast<QQuickMenuItem *>(d->itemAt(i)); - if (!item || item->subMenu() != menu) - continue; - - removeItem(item); - break; - } - - menu->deleteLater(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod Menu QtQuick.Controls::Menu::takeMenu(int index) - - Removes and returns the menu at \a index. The index is within all items in the menu. - - \note The ownership of the menu is transferred to the caller. -*/ -QQuickMenu *QQuickMenu::takeMenu(int index) -{ - Q_D(QQuickMenu); - QQuickMenuItem *item = qobject_cast<QQuickMenuItem *>(d->itemAt(index)); - if (!item) - return nullptr; - - QQuickMenu *subMenu = item->subMenu(); - if (!subMenu) - return nullptr; - - d->removeItem(index, item); - item->deleteLater(); - return subMenu; -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod Action QtQuick.Controls::Menu::actionAt(int index) - - Returns the action at \a index, or \c null if the index is not valid or - there is no action at the specified index. -*/ -QQuickAction *QQuickMenu::actionAt(int index) const -{ - Q_D(const QQuickMenu); - QQuickAbstractButton *item = qobject_cast<QQuickAbstractButton *>(d->itemAt(index)); - if (!item) - return nullptr; - - return item->action(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Menu::addAction(Action action) - - Adds \a action to the end of this menu. -*/ -void QQuickMenu::addAction(QQuickAction *action) -{ - Q_D(QQuickMenu); - insertAction(d->contentModel->count(), action); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Menu::insertAction(int index, Action action) - - Inserts \a action at \a index. The index is within all items in the menu. -*/ -void QQuickMenu::insertAction(int index, QQuickAction *action) -{ - Q_D(QQuickMenu); - if (!action) - return; - - insertItem(index, d->createItem(action)); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Menu::removeAction(Action action) - - Removes and destroys the specified \a action. -*/ -void QQuickMenu::removeAction(QQuickAction *action) -{ - Q_D(QQuickMenu); - if (!action) - return; - - const int count = d->contentModel->count(); - for (int i = 0; i < count; ++i) { - QQuickMenuItem *item = qobject_cast<QQuickMenuItem *>(d->itemAt(i)); - if (!item || item->action() != action) - continue; - - removeItem(item); - break; - } - - action->deleteLater(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod Action QtQuick.Controls::Menu::takeAction(int index) - - Removes and returns the action at \a index. The index is within all items in the menu. - - \note The ownership of the action is transferred to the caller. -*/ -QQuickAction *QQuickMenu::takeAction(int index) -{ - Q_D(QQuickMenu); - QQuickMenuItem *item = qobject_cast<QQuickMenuItem *>(d->itemAt(index)); - if (!item) - return nullptr; - - QQuickAction *action = item->action(); - if (!action) - return nullptr; - - d->removeItem(index, item); - item->deleteLater(); - return action; -} - -/*! - \qmlproperty model QtQuick.Controls::Menu::contentModel - \readonly - - This property holds the model used to display menu items. - - The content model is provided for visualization purposes. It can be assigned - as a model to a content item that presents the contents of the menu. - - \code - Menu { - id: menu - contentItem: ListView { - model: menu.contentModel - } - } - \endcode - - The model allows menu items to be statically declared as children of the - menu. -*/ -QVariant QQuickMenu::contentModel() const -{ - Q_D(const QQuickMenu); - return QVariant::fromValue(d->contentModel); -} - -/*! - \qmlproperty list<Object> QtQuick.Controls::Menu::contentData - \qmldefault - - This property holds the list of content data. - - The list contains all objects that have been declared in QML as children - of the menu, and also items that have been dynamically added or - inserted using the \l addItem() and \l insertItem() methods, respectively. - - \note Unlike \c contentChildren, \c contentData does include non-visual QML - objects. It is not re-ordered when items are inserted or moved. - - \sa Item::data, {Popup::}{contentChildren} -*/ -QQmlListProperty<QObject> QQuickMenu::contentData() -{ - Q_D(QQuickMenu); - if (!d->contentItem) - QQuickControlPrivate::get(d->popupItem)->executeContentItem(); - return QQmlListProperty<QObject>(this, nullptr, - QQuickMenuPrivate::contentData_append, - QQuickMenuPrivate::contentData_count, - QQuickMenuPrivate::contentData_at, - QQuickMenuPrivate::contentData_clear); -} - -/*! - \qmlproperty string QtQuick.Controls::Menu::title - - This property holds the title for the menu. - - The title of a menu is often displayed in the text of a menu item when the - menu is a submenu, and in the text of a tool button when it is in a - menubar. -*/ -QString QQuickMenu::title() const -{ - Q_D(const QQuickMenu); - return d->title; -} - -void QQuickMenu::setTitle(QString &title) -{ - Q_D(QQuickMenu); - if (title == d->title) - return; - d->title = title; - emit titleChanged(title); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::Menu::cascade - - This property holds whether the menu cascades its sub-menus. - - The default value is platform-specific. Menus are cascading by default on - desktop platforms that have a mouse cursor available. Non-cascading menus - are shown one menu at a time, and centered over the parent menu. - - \note Changing the value of the property has no effect while the menu is open. - - \sa overlap -*/ -bool QQuickMenu::cascade() const -{ - Q_D(const QQuickMenu); - return d->cascade; -} - -void QQuickMenu::setCascade(bool cascade) -{ - Q_D(QQuickMenu); - if (d->cascade == cascade) - return; - d->cascade = cascade; - if (d->parentMenu) - d->resolveParentItem(); - emit cascadeChanged(cascade); -} - -void QQuickMenu::resetCascade() -{ - Q_D(QQuickMenu); - if (d->parentMenu) - setCascade(d->parentMenu->cascade()); - else - setCascade(shouldCascade()); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty real QtQuick.Controls::Menu::overlap - - This property holds the amount of pixels by which the menu horizontally overlaps its parent menu. - - The property only has effect when the menu is used as a cascading sub-menu. - - The default value is style-specific. - - \note Changing the value of the property has no effect while the menu is open. - - \sa cascade -*/ -qreal QQuickMenu::overlap() const -{ - Q_D(const QQuickMenu); - return d->overlap; -} - -void QQuickMenu::setOverlap(qreal overlap) -{ - Q_D(QQuickMenu); - if (d->overlap == overlap) - return; - d->overlap = overlap; - emit overlapChanged(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty Component QtQuick.Controls::Menu::delegate - - This property holds the component that is used to create items - to present actions. - - \code - Menu { - Action { text: "Cut" } - Action { text: "Copy" } - Action { text: "Paste" } - } - \endcode - - \sa Action -*/ -QQmlComponent *QQuickMenu::delegate() const -{ - Q_D(const QQuickMenu); - return d->delegate; -} - -void QQuickMenu::setDelegate(QQmlComponent *delegate) -{ - Q_D(QQuickMenu); - if (d->delegate == delegate) - return; - - d->delegate = delegate; - emit delegateChanged(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty int QtQuick.Controls::Menu::currentIndex - - This property holds the index of the currently highlighted item. - - Menu items can be highlighted by mouse hover or keyboard navigation. - - \sa MenuItem::highlighted -*/ -int QQuickMenu::currentIndex() const -{ - Q_D(const QQuickMenu); - return d->currentIndex; -} - -void QQuickMenu::setCurrentIndex(int index) -{ - Q_D(QQuickMenu); - d->setCurrentIndex(index, Qt::OtherFocusReason); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty int QtQuick.Controls::Menu::count - \readonly - - This property holds the number of items. -*/ -int QQuickMenu::count() const -{ - Q_D(const QQuickMenu); - return d->contentModel->count(); -} - -void QQuickMenu::popup(QQuickItem *menuItem) -{ - Q_D(QQuickMenu); - // No position has been explicitly specified, so position the menu at the mouse cursor - // on desktop platforms that have a mouse cursor available and support multiple windows. - QQmlNullableValue<QPointF> pos; -#if QT_CONFIG(cursor) - if (d->parentItem && QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::MultipleWindows)) - pos = d->parentItem->mapFromGlobal(QCursor::pos()); -#endif - - // As a fallback, center the menu over its parent item. - if (pos.isNull && d->parentItem) - pos = QPointF((d->parentItem->width() - width()) / 2, (d->parentItem->height() - height()) / 2); - - popup(pos.isNull ? QPointF() : pos.value, menuItem); -} - -void QQuickMenu::popup(const QPointF &pos, QQuickItem *menuItem) -{ - Q_D(QQuickMenu); - qreal offset = 0; -#if QT_CONFIG(cursor) - if (menuItem) - offset = d->popupItem->mapFromItem(menuItem, QPointF(0, 0)).y(); -#endif - setPosition(pos - QPointF(0, offset)); - - if (menuItem) - d->setCurrentIndex(d->contentModel->indexOf(menuItem, nullptr), Qt::PopupFocusReason); - open(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Menu::popup(MenuItem item = null) - \qmlmethod void QtQuick.Controls::Menu::popup(Item parent, MenuItem item = null) - - Opens the menu at the mouse cursor on desktop platforms that have a mouse cursor - available, and otherwise centers the menu over its \a parent item. - - The menu can be optionally aligned to a specific menu \a item. - - \sa Popup::open() -*/ - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Menu::popup(point pos, MenuItem item = null) - \qmlmethod void QtQuick.Controls::Menu::popup(Item parent, point pos, MenuItem item = null) - - Opens the menu at the specified position \a pos in the popups coordinate system, - that is, a coordinate relative to its \a parent item. - - The menu can be optionally aligned to a specific menu \a item. - - \sa Popup::open() -*/ - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Menu::popup(real x, real y, MenuItem item = null) - \qmlmethod void QtQuick.Controls::Menu::popup(Item parent, real x, real y, MenuItem item = null) - - Opens the menu at the specified position \a x, \a y in the popups coordinate system, - that is, a coordinate relative to its \a parent item. - - The menu can be optionally aligned to a specific menu \a item. - - \sa dismiss(), Popup::open() -*/ -void QQuickMenu::popup(QQmlV4Function *args) -{ - Q_D(QQuickMenu); - const int len = args->length(); - if (len > 4) { - args->v4engine()->throwTypeError(); - return; - } - - QV4::ExecutionEngine *v4 = args->v4engine(); - QV4::Scope scope(v4); - - QQmlNullableValue<QPointF> pos; - QQuickItem *menuItem = nullptr; - QQuickItem *parentItem = nullptr; - - if (len > 0) { - // Item parent - QV4::ScopedValue firstArg(scope, (*args)[0]); - if (const QV4::QObjectWrapper *obj = firstArg->as<QV4::QObjectWrapper>()) { - QQuickItem *item = qobject_cast<QQuickItem *>(obj->object()); - if (item && !d->popupItem->isAncestorOf(item)) - parentItem = item; - } else if (firstArg->isUndefined()) { - resetParentItem(); - parentItem = d->parentItem; - } - - // MenuItem item - QV4::ScopedValue lastArg(scope, (*args)[len - 1]); - if (const QV4::QObjectWrapper *obj = lastArg->as<QV4::QObjectWrapper>()) { - QQuickItem *item = qobject_cast<QQuickItem *>(obj->object()); - if (item && d->popupItem->isAncestorOf(item)) - menuItem = item; - } - } - - if (len >= 3 || (!parentItem && len >= 2)) { - // real x, real y - QV4::ScopedValue xArg(scope, (*args)[parentItem ? 1 : 0]); - QV4::ScopedValue yArg(scope, (*args)[parentItem ? 2 : 1]); - if (xArg->isNumber() && yArg->isNumber()) - pos = QPointF(xArg->asDouble(), yArg->asDouble()); - } - - if (pos.isNull && (len >= 2 || (!parentItem && len >= 1))) { - // point pos - QV4::ScopedValue posArg(scope, (*args)[parentItem ? 1 : 0]); - const QVariant var = v4->toVariant(posArg, QMetaType {}); - if (var.userType() == QMetaType::QPointF) - pos = var.toPointF(); - } - - if (parentItem) - setParentItem(parentItem); - - if (pos.isNull) - popup(menuItem); - else - popup(pos, menuItem); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlmethod void QtQuick.Controls::Menu::dismiss() - - Closes all menus in the hierarchy that this menu belongs to. - - \note Unlike \l {Popup::}{close()} that only closes a menu and its sub-menus, - \c dismiss() closes the whole hierarchy of menus, including the parent menus. - In practice, \c close() is suitable e.g. for implementing navigation in a - hierarchy of menus, and \c dismiss() is the appropriate method for closing - the whole hierarchy of menus. - - \sa popup(), Popup::close() -*/ -void QQuickMenu::dismiss() -{ - QQuickMenu *menu = this; - while (menu) { - menu->close(); - menu = QQuickMenuPrivate::get(menu)->parentMenu; - } -} - -void QQuickMenu::componentComplete() -{ - Q_D(QQuickMenu); - QQuickPopup::componentComplete(); - d->resizeItems(); -} - -void QQuickMenu::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_D(QQuickMenu); - QQuickPopup::contentItemChange(newItem, oldItem); - - if (oldItem) { - QQuickItemPrivate::get(oldItem)->removeItemChangeListener(d, QQuickItemPrivate::Children); - QQuickItemPrivate::get(oldItem)->removeItemChangeListener(d, QQuickItemPrivate::Geometry); - } - if (newItem) { - QQuickItemPrivate::get(newItem)->addItemChangeListener(d, QQuickItemPrivate::Children); - QQuickItemPrivate::get(newItem)->updateOrAddGeometryChangeListener(d, QQuickGeometryChange::Width); - } - - d->contentItem = newItem; -} - -void QQuickMenu::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - Q_D(QQuickMenu); - QQuickPopup::itemChange(change, data); - - if (change == QQuickItem::ItemVisibleHasChanged) { - if (!data.boolValue && d->cascade) { - // Ensure that when the menu isn't visible, there's no current item - // the next time it's opened. - d->setCurrentIndex(-1, Qt::OtherFocusReason); - } - } -} - -void QQuickMenu::keyPressEvent(QKeyEvent *event) -{ - Q_D(QQuickMenu); - QQuickPopup::keyPressEvent(event); - - // QTBUG-17051 - // Work around the fact that ListView has no way of distinguishing between - // mouse and keyboard interaction, thanks to the "interactive" bool in Flickable. - // What we actually want is to have a way to always allow keyboard interaction but - // only allow flicking with the mouse when there are too many menu items to be - // shown at once. - switch (event->key()) { - case Qt::Key_Up: - if (!d->activatePreviousItem()) - d->propagateKeyEvent(event); - break; - - case Qt::Key_Down: - d->activateNextItem(); - break; - - case Qt::Key_Left: - case Qt::Key_Right: - event->ignore(); - if (d->popupItem->isMirrored() == (event->key() == Qt::Key_Right)) { - if (d->parentMenu && d->currentItem) { - if (!d->cascade) - d->parentMenu->open(); - close(); - event->accept(); - } - } else { - if (QQuickMenu *subMenu = d->currentSubMenu()) { - auto subMenuPrivate = QQuickMenuPrivate::get(subMenu); - subMenu->popup(subMenuPrivate->firstEnabledMenuItem()); - event->accept(); - } - } - if (!event->isAccepted()) - d->propagateKeyEvent(event); - break; - -#if QT_CONFIG(shortcut) - case Qt::Key_Alt: - // If &mnemonic shortcut is enabled, go back to (possibly) the parent - // menu bar so the shortcut key will be processed by the menu bar. - if (!QKeySequence::mnemonic(QStringLiteral("&A")).isEmpty()) - close(); - break; -#endif - - default: - break; - } -} - -void QQuickMenu::timerEvent(QTimerEvent *event) -{ - Q_D(QQuickMenu); - if (event->timerId() == d->hoverTimer) { - if (QQuickMenu *subMenu = d->currentSubMenu()) - subMenu->open(); - d->stopHoverTimer(); - return; - } - QQuickPopup::timerEvent(event); -} - -QFont QQuickMenu::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::Menu); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickMenu::accessibleRole() const -{ - return QAccessible::PopupMenu; -} -#endif - -QT_END_NAMESPACE - -#include "moc_qquickmenu_p.cpp" diff --git a/src/quicktemplates2/qquickmenu_p.h b/src/quicktemplates2/qquickmenu_p.h deleted file mode 100644 index 4a690f9c..00000000 --- a/src/quicktemplates2/qquickmenu_p.h +++ /dev/null @@ -1,163 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMENU_P_H -#define QQUICKMENU_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQml/qqmllist.h> -#include <QtQml/qqml.h> - -#include "qquickpopup_p.h" - -QT_BEGIN_NAMESPACE - -class QQuickAction; -class QQmlComponent; -class QQuickMenuItem; -class QQuickMenuPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickMenu : public QQuickPopup -{ - Q_OBJECT - Q_PROPERTY(QVariant contentModel READ contentModel CONSTANT FINAL) - Q_PROPERTY(QQmlListProperty<QObject> contentData READ contentData FINAL) - Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL) - // 2.3 (Qt 5.10) - Q_PROPERTY(int count READ count NOTIFY countChanged FINAL REVISION(2, 3)) - Q_PROPERTY(bool cascade READ cascade WRITE setCascade RESET resetCascade NOTIFY cascadeChanged FINAL REVISION(2, 3)) - Q_PROPERTY(qreal overlap READ overlap WRITE setOverlap NOTIFY overlapChanged FINAL REVISION(2, 3)) - Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL REVISION(2, 3)) - Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged FINAL REVISION(2, 3)) - Q_CLASSINFO("DefaultProperty", "contentData") - QML_NAMED_ELEMENT(Menu) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickMenu(QObject *parent = nullptr); - ~QQuickMenu(); - - Q_INVOKABLE QQuickItem *itemAt(int index) const; - Q_INVOKABLE void addItem(QQuickItem *item); - Q_INVOKABLE void insertItem(int index, QQuickItem *item); - Q_INVOKABLE void moveItem(int from, int to); - Q_INVOKABLE void removeItem(QQuickItem *item); - - QVariant contentModel() const; - QQmlListProperty<QObject> contentData(); - - QString title() const; - void setTitle(QString &title); - - bool cascade() const; - void setCascade(bool cascade); - void resetCascade(); - - qreal overlap() const; - void setOverlap(qreal overlap); - - QQmlComponent *delegate() const; - void setDelegate(QQmlComponent *delegate); - - int currentIndex() const; - void setCurrentIndex(int index); - - // 2.3 (Qt 5.10) - int count() const; - Q_REVISION(2, 3) Q_INVOKABLE QQuickItem *takeItem(int index); - - Q_REVISION(2, 3) Q_INVOKABLE QQuickMenu *menuAt(int index) const; - Q_REVISION(2, 3) Q_INVOKABLE void addMenu(QQuickMenu *menu); - Q_REVISION(2, 3) Q_INVOKABLE void insertMenu(int index, QQuickMenu *menu); - Q_REVISION(2, 3) Q_INVOKABLE void removeMenu(QQuickMenu *menu); - Q_REVISION(2, 3) Q_INVOKABLE QQuickMenu *takeMenu(int index); - - Q_REVISION(2, 3) Q_INVOKABLE QQuickAction *actionAt(int index) const; - Q_REVISION(2, 3) Q_INVOKABLE void addAction(QQuickAction *action); - Q_REVISION(2, 3) Q_INVOKABLE void insertAction(int index, QQuickAction *action); - Q_REVISION(2, 3) Q_INVOKABLE void removeAction(QQuickAction *action); - Q_REVISION(2, 3) Q_INVOKABLE QQuickAction *takeAction(int index); - - void popup(QQuickItem *menuItem = nullptr); - void popup(const QPointF &pos, QQuickItem *menuItem = nullptr); - - Q_REVISION(2, 3) Q_INVOKABLE void popup(QQmlV4Function *args); - Q_REVISION(2, 3) Q_INVOKABLE void dismiss(); - -protected: - void componentComplete() override; - void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; - void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) override; - void keyPressEvent(QKeyEvent *event) override; - -Q_SIGNALS: - void titleChanged(const QString &title); - // 2.3 (Qt 5.10) - Q_REVISION(2, 3) void countChanged(); - Q_REVISION(2, 3) void cascadeChanged(bool cascade); - Q_REVISION(2, 3) void overlapChanged(); - Q_REVISION(2, 3) void delegateChanged(); - Q_REVISION(2, 3) void currentIndexChanged(); - -protected: - void timerEvent(QTimerEvent *event) override; - - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickMenu) - Q_DECLARE_PRIVATE(QQuickMenu) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickMenu) - -#endif // QQUICKMENU_P_H diff --git a/src/quicktemplates2/qquickmenu_p_p.h b/src/quicktemplates2/qquickmenu_p_p.h deleted file mode 100644 index df51f1f3..00000000 --- a/src/quicktemplates2/qquickmenu_p_p.h +++ /dev/null @@ -1,144 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMENU_P_P_H -#define QQUICKMENU_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qlist.h> -#include <QtCore/qpointer.h> - -#include <QtQuickTemplates2/private/qquickmenu_p.h> -#include <QtQuickTemplates2/private/qquickpopup_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickAction; -class QQmlComponent; -class QQmlObjectModel; -class QQuickMenuItem; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickMenuPrivate : public QQuickPopupPrivate -{ - Q_DECLARE_PUBLIC(QQuickMenu) - -public: - QQuickMenuPrivate(); - - static QQuickMenuPrivate *get(QQuickMenu *menu) - { - return menu->d_func(); - } - - void init() override; - - QQuickItem *itemAt(int index) const; - void insertItem(int index, QQuickItem *item); - void moveItem(int from, int to); - void removeItem(int index, QQuickItem *item); - - QQuickItem *beginCreateItem(); - void completeCreateItem(); - - QQuickItem *createItem(QQuickMenu *menu); - QQuickItem *createItem(QQuickAction *action); - - void resizeItem(QQuickItem *item); - void resizeItems(); - - void itemChildAdded(QQuickItem *item, QQuickItem *child) override; - void itemSiblingOrderChanged(QQuickItem *item) override; - void itemParentChanged(QQuickItem *item, QQuickItem *parent) override; - void itemDestroyed(QQuickItem *item) override; - void itemGeometryChanged(QQuickItem *, QQuickGeometryChange change, const QRectF &diff) override; - - QQuickPopupPositioner *getPositioner() override; - bool prepareEnterTransition() override; - bool prepareExitTransition() override; - bool blockInput(QQuickItem *item, const QPointF &point) const override; - - void onItemHovered(); - void onItemTriggered(); - void onItemActiveFocusChanged(); - - QQuickMenu *currentSubMenu() const; - void setParentMenu(QQuickMenu *parent); - void resolveParentItem(); - - void propagateKeyEvent(QKeyEvent *event); - - void startHoverTimer(); - void stopHoverTimer(); - - void setCurrentIndex(int index, Qt::FocusReason reason); - bool activateNextItem(); - bool activatePreviousItem(); - - QQuickMenuItem *firstEnabledMenuItem() const; - - static void contentData_append(QQmlListProperty<QObject> *prop, QObject *obj); - static qsizetype contentData_count(QQmlListProperty<QObject> *prop); - static QObject *contentData_at(QQmlListProperty<QObject> *prop, qsizetype index); - static void contentData_clear(QQmlListProperty<QObject> *prop); - - QPalette defaultPalette() const override; - - bool cascade = false; - int hoverTimer = 0; - int currentIndex = -1; - qreal overlap = 0; - QPointer<QQuickMenu> parentMenu; - QPointer<QQuickMenuItem> currentItem; - QQuickItem *contentItem = nullptr; // TODO: cleanup - QList<QObject *> contentData; - QQmlObjectModel *contentModel; - QQmlComponent *delegate = nullptr; - QString title; -}; - -QT_END_NAMESPACE - -#endif // QQUICKMENU_P_P_H diff --git a/src/quicktemplates2/qquickmenubar.cpp b/src/quicktemplates2/qquickmenubar.cpp deleted file mode 100644 index a732d889..00000000 --- a/src/quicktemplates2/qquickmenubar.cpp +++ /dev/null @@ -1,581 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmenubar_p.h" -#include "qquickmenubar_p_p.h" -#include "qquickmenubaritem_p_p.h" -#include "qquickmenu_p.h" -#include "qquickmenu_p_p.h" - -#include <QtQml/qqmlcontext.h> -#include <QtQml/qqmlcomponent.h> -#include <QtQml/qqmlengine.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype MenuBar - \inherits Container -//! \instantiates QQuickMenuBar - \inqmlmodule QtQuick.Controls - \since 5.10 - \ingroup qtquickcontrols2-menus - \ingroup qtquickcontrols2-focusscopes - \brief Provides a window menu bar. - - \image qtquickcontrols2-menubar.png - - MenuBar consists of drop-down menus, and is normally located at the top - edge of the window. - - \quotefromfile qtquickcontrols2-menubar.qml - \skipuntil begin - \printto skipfrom - \skipuntil skipto - \printto end - - Typically, menus are statically declared as children of the menu bar, but - MenuBar also provides API to \l {addMenu}{add}, \l {insertMenu}{insert}, - \l {removeMenu}{remove}, and \l {takeMenu}{take} menus dynamically. The - menus in a menu bar can be accessed using \l menuAt(). - - \sa {Customizing MenuBar}, Menu, MenuBarItem, {Menu Controls}, - {Focus Management in Qt Quick Controls} -*/ - -QQuickItem *QQuickMenuBarPrivate::beginCreateItem(QQuickMenu *menu) -{ - Q_Q(QQuickMenuBar); - if (!delegate) - return nullptr; - - QQmlContext *creationContext = delegate->creationContext(); - if (!creationContext) - creationContext = qmlContext(q); - QQmlContext *context = new QQmlContext(creationContext, q); - context->setContextObject(q); - - QObject *object = delegate->beginCreate(context); - QQuickItem *item = qobject_cast<QQuickItem *>(object); - if (!item) { - delete object; - delete context; - return nullptr; - } - - if (QQuickMenuBarItem *menuBarItem = qobject_cast<QQuickMenuBarItem *>(item)) - menuBarItem->setMenu(menu); - item->setParentItem(q); - QQml_setParent_noEvent(item, q); - - return item; -} - -void QQuickMenuBarPrivate::completeCreateItem() -{ - if (!delegate) - return; - - delegate->completeCreate(); -} - -QQuickItem *QQuickMenuBarPrivate::createItem(QQuickMenu *menu) -{ - QQuickItem *item = beginCreateItem(menu); - completeCreateItem(); - return item; -} - -void QQuickMenuBarPrivate::toggleCurrentMenu(bool visible, bool activate) -{ - if (!currentItem || visible == popupMode) - return; - - QQuickMenu *menu = currentItem->menu(); - - triggering = true; - popupMode = visible; - if (menu) - menu->setVisible(visible); - if (!visible) - currentItem->forceActiveFocus(); - else if (menu && activate) - menu->setCurrentIndex(0); - triggering = false; -} - -void QQuickMenuBarPrivate::activateItem(QQuickMenuBarItem *item) -{ - if (currentItem == item) - return; - - if (currentItem) { - currentItem->setHighlighted(false); - if (popupMode) { - if (QQuickMenu *menu = currentItem->menu()) - menu->dismiss(); - } - } - - if (item) { - item->setHighlighted(true); - if (popupMode) { - if (QQuickMenu *menu = item->menu()) - menu->open(); - } - } - - currentItem = item; -} - -void QQuickMenuBarPrivate::activateNextItem() -{ - int index = currentItem ? contentModel->indexOf(currentItem, nullptr) : -1; - if (index >= contentModel->count() - 1) - index = -1; - activateItem(qobject_cast<QQuickMenuBarItem *>(itemAt(++index))); -} - -void QQuickMenuBarPrivate::activatePreviousItem() -{ - int index = currentItem ? contentModel->indexOf(currentItem, nullptr) : contentModel->count(); - if (index <= 0) - index = contentModel->count(); - activateItem(qobject_cast<QQuickMenuBarItem *>(itemAt(--index))); -} - -void QQuickMenuBarPrivate::onItemHovered() -{ - Q_Q(QQuickMenuBar); - QQuickMenuBarItem *item = qobject_cast<QQuickMenuBarItem *>(q->sender()); - if (!item || item == currentItem || !item->isHovered() || !item->isEnabled() || QQuickMenuBarItemPrivate::get(item)->touchId != -1) - return; - - activateItem(item); -} - -void QQuickMenuBarPrivate::onItemTriggered() -{ - Q_Q(QQuickMenuBar); - QQuickMenuBarItem *item = qobject_cast<QQuickMenuBarItem *>(q->sender()); - if (!item) - return; - - if (item == currentItem) { - toggleCurrentMenu(!popupMode, false); - } else { - popupMode = true; - activateItem(item); - } -} - -void QQuickMenuBarPrivate::onMenuAboutToHide() -{ - if (triggering || !currentItem || (currentItem->isHovered() && currentItem->isEnabled()) || !currentItem->isHighlighted()) - return; - - popupMode = false; - activateItem(nullptr); -} - -qreal QQuickMenuBarPrivate::getContentWidth() const -{ - Q_Q(const QQuickMenuBar); - const int count = contentModel->count(); - qreal totalWidth = qMax(0, count - 1) * spacing; - for (int i = 0; i < count; ++i) { - QQuickItem *item = q->itemAt(i); - if (item) - totalWidth += item->implicitWidth(); - } - return totalWidth; -} - -qreal QQuickMenuBarPrivate::getContentHeight() const -{ - Q_Q(const QQuickMenuBar); - const int count = contentModel->count(); - qreal maxHeight = 0; - for (int i = 0; i < count; ++i) { - QQuickItem *item = q->itemAt(i); - if (item) - maxHeight = qMax(maxHeight, item->implicitHeight()); - } - return maxHeight; -} - -void QQuickMenuBarPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - QQuickContainerPrivate::itemImplicitWidthChanged(item); - if (item != contentItem) - updateImplicitContentWidth(); -} - -void QQuickMenuBarPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - QQuickContainerPrivate::itemImplicitHeightChanged(item); - if (item != contentItem) - updateImplicitContentHeight(); -} - -void QQuickMenuBarPrivate::contentData_append(QQmlListProperty<QObject> *prop, QObject *obj) -{ - QQuickMenuBar *menuBar = static_cast<QQuickMenuBar *>(prop->object); - if (QQuickMenu *menu = qobject_cast<QQuickMenu *>(obj)) - obj = QQuickMenuBarPrivate::get(menuBar)->createItem(menu); - QQuickContainerPrivate::contentData_append(prop, obj); -} - -void QQuickMenuBarPrivate::menus_append(QQmlListProperty<QQuickMenu> *prop, QQuickMenu *obj) -{ - QQuickMenuBar *menuBar = static_cast<QQuickMenuBar *>(prop->object); - menuBar->addMenu(obj); -} - -qsizetype QQuickMenuBarPrivate::menus_count(QQmlListProperty<QQuickMenu> *prop) -{ - QQuickMenuBar *menuBar = static_cast<QQuickMenuBar *>(prop->object); - return menuBar->count(); -} - -QQuickMenu *QQuickMenuBarPrivate::menus_at(QQmlListProperty<QQuickMenu> *prop, qsizetype index) -{ - QQuickMenuBar *menuBar = static_cast<QQuickMenuBar *>(prop->object); - return menuBar->menuAt(index); -} - -void QQuickMenuBarPrivate::menus_clear(QQmlListProperty<QQuickMenu> *prop) -{ - QQuickMenuBar *menuBar = static_cast<QQuickMenuBar *>(prop->object); - QQuickMenuBarPrivate::get(menuBar)->contentModel->clear(); -} - -QPalette QQuickMenuBarPrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::MenuBar); -} - -QQuickMenuBar::QQuickMenuBar(QQuickItem *parent) - : QQuickContainer(*(new QQuickMenuBarPrivate), parent) -{ - Q_D(QQuickMenuBar); - d->changeTypes |= QQuickItemPrivate::Geometry; - setFlag(ItemIsFocusScope); - setFocusPolicy(Qt::ClickFocus); -} - -/*! - \qmlproperty Component QtQuick.Controls::MenuBar::delegate - - This property holds the component that is used to create menu bar - items to present menus in the menu bar. - - \sa MenuBarItem -*/ -QQmlComponent *QQuickMenuBar::delegate() const -{ - Q_D(const QQuickMenuBar); - return d->delegate; -} - -void QQuickMenuBar::setDelegate(QQmlComponent *delegate) -{ - Q_D(QQuickMenuBar); - if (d->delegate == delegate) - return; - - d->delegate = delegate; - emit delegateChanged(); -} - -/*! - \qmlmethod Menu QtQuick.Controls::MenuBar::menuAt(int index) - - Returns the menu at \a index, or \c null if it does not exist. -*/ -QQuickMenu *QQuickMenuBar::menuAt(int index) const -{ - Q_D(const QQuickMenuBar); - QQuickMenuBarItem *item = qobject_cast<QQuickMenuBarItem *>(d->itemAt(index)); - if (!item) - return nullptr; - return item->menu(); -} - -/*! - \qmlmethod void QtQuick.Controls::MenuBar::addMenu(Menu menu) - - Adds \a menu to the end of the list of menus. -*/ -void QQuickMenuBar::addMenu(QQuickMenu *menu) -{ - Q_D(QQuickMenuBar); - addItem(d->createItem(menu)); -} - -/*! - \qmlmethod void QtQuick.Controls::MenuBar::insertMenu(int index, Menu menu) - - Inserts \a menu at \a index. -*/ -void QQuickMenuBar::insertMenu(int index, QQuickMenu *menu) -{ - Q_D(QQuickMenuBar); - insertItem(index, d->createItem(menu)); -} - -/*! - \qmlmethod void QtQuick.Controls::MenuBar::removeMenu(Menu menu) - - Removes and destroys the specified \a menu. -*/ -void QQuickMenuBar::removeMenu(QQuickMenu *menu) -{ - Q_D(QQuickMenuBar); - if (!menu) - return; - - const int count = d->contentModel->count(); - for (int i = 0; i < count; ++i) { - QQuickMenuBarItem *item = qobject_cast<QQuickMenuBarItem *>(itemAt(i)); - if (!item || item->menu() != menu) - continue; - - removeItem(item); - break; - } - - menu->deleteLater(); -} - -/*! - \qmlmethod Menu QtQuick.Controls::MenuBar::takeMenu(int index) - - Removes and returns the menu at \a index. - - \note The ownership of the item is transferred to the caller. -*/ -QQuickMenu *QQuickMenuBar::takeMenu(int index) -{ - Q_D(QQuickMenuBar); - QQuickMenuBarItem *item = qobject_cast<QQuickMenuBarItem *>(itemAt(index)); - if (!item) - return nullptr; - - QQuickMenu *menu = item->menu(); - if (!menu) - return nullptr; - - d->removeItem(index, item); - item->deleteLater(); - return menu; -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty real QtQuick.Controls::MenuBar::contentWidth - - This property holds the content width. It is used for calculating the total - implicit width of the menu bar. - - \note This property is available in MenuBar since QtQuick.Controls 2.3 (Qt 5.10), - but it was promoted to the Container base type in QtQuick.Controls 2.5 (Qt 5.12). - - \sa Container::contentWidth -*/ - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty real QtQuick.Controls::MenuBar::contentHeight - - This property holds the content height. It is used for calculating the total - implicit height of the menu bar. - - \note This property is available in MenuBar since QtQuick.Controls 2.3 (Qt 5.10), - but it was promoted to the Container base type in QtQuick.Controls 2.5 (Qt 5.12). - - \sa Container::contentHeight -*/ - -/*! - \qmlproperty list<Menu> QtQuick.Controls::MenuBar::menus - - This property holds the list of menus. - - The list contains all menus that have been declared in QML as children - of the menu bar, and also menus that have been dynamically added or - inserted using the \l addMenu() and \l insertMenu() methods, respectively. -*/ -QQmlListProperty<QQuickMenu> QQuickMenuBarPrivate::menus() -{ - Q_Q(QQuickMenuBar); - return QQmlListProperty<QQuickMenu>(q, nullptr, - QQuickMenuBarPrivate::menus_append, - QQuickMenuBarPrivate::menus_count, - QQuickMenuBarPrivate::menus_at, - QQuickMenuBarPrivate::menus_clear); -} - -QQmlListProperty<QObject> QQuickMenuBarPrivate::contentData() -{ - Q_Q(QQuickMenuBar); - return QQmlListProperty<QObject>(q, nullptr, - QQuickMenuBarPrivate::contentData_append, - QQuickContainerPrivate::contentData_count, - QQuickContainerPrivate::contentData_at, - QQuickContainerPrivate::contentData_clear); -} - -bool QQuickMenuBar::eventFilter(QObject *object, QEvent *event) -{ - return QObject::eventFilter(object, event); -} - -void QQuickMenuBar::keyPressEvent(QKeyEvent *event) -{ - Q_D(QQuickMenuBar); - QQuickContainer::keyReleaseEvent(event); - - switch (event->key()) { - case Qt::Key_Up: - d->toggleCurrentMenu(false, false); - break; - - case Qt::Key_Down: - d->toggleCurrentMenu(true, true); - break; - - case Qt::Key_Left: - case Qt::Key_Right: - if (isMirrored() == (event->key() == Qt::Key_Left)) - d->activateNextItem(); - else - d->activatePreviousItem(); - break; - case Qt::Key_Escape: - if (d->currentItem) { - d->activateItem(nullptr); - setFocus(false); - } - break; - default: - break; - } -} - -void QQuickMenuBar::keyReleaseEvent(QKeyEvent *event) -{ - QQuickContainer::keyReleaseEvent(event); - - switch (event->key()) { - case Qt::Key_Up: - case Qt::Key_Down: - case Qt::Key_Left: - case Qt::Key_Right: - case Qt::Key_Escape: - event->accept(); - break; - - default: - event->ignore(); - break; - } -} - -void QQuickMenuBar::hoverLeaveEvent(QHoverEvent *event) -{ - Q_D(QQuickMenuBar); - QQuickContainer::hoverLeaveEvent(event); - if (!d->popupMode && d->currentItem) - d->activateItem(nullptr); -} - -bool QQuickMenuBar::isContent(QQuickItem *item) const -{ - return qobject_cast<QQuickMenuBarItem *>(item); -} - -void QQuickMenuBar::itemAdded(int index, QQuickItem *item) -{ - Q_D(QQuickMenuBar); - QQuickContainer::itemAdded(index, item); - if (QQuickMenuBarItem *menuBarItem = qobject_cast<QQuickMenuBarItem *>(item)) { - QQuickMenuBarItemPrivate::get(menuBarItem)->setMenuBar(this); - QObjectPrivate::connect(menuBarItem, &QQuickControl::hoveredChanged, d, &QQuickMenuBarPrivate::onItemHovered); - QObjectPrivate::connect(menuBarItem, &QQuickMenuBarItem::triggered, d, &QQuickMenuBarPrivate::onItemTriggered); - if (QQuickMenu *menu = menuBarItem->menu()) - QObjectPrivate::connect(menu, &QQuickPopup::aboutToHide, d, &QQuickMenuBarPrivate::onMenuAboutToHide); - } - d->updateImplicitContentSize(); - emit menusChanged(); -} - -void QQuickMenuBar::itemMoved(int index, QQuickItem *item) -{ - QQuickContainer::itemMoved(index, item); - emit menusChanged(); -} - -void QQuickMenuBar::itemRemoved(int index, QQuickItem *item) -{ - Q_D(QQuickMenuBar); - QQuickContainer::itemRemoved(index, item); - if (QQuickMenuBarItem *menuBarItem = qobject_cast<QQuickMenuBarItem *>(item)) { - QQuickMenuBarItemPrivate::get(menuBarItem)->setMenuBar(nullptr); - QObjectPrivate::disconnect(menuBarItem, &QQuickControl::hoveredChanged, d, &QQuickMenuBarPrivate::onItemHovered); - QObjectPrivate::disconnect(menuBarItem, &QQuickMenuBarItem::triggered, d, &QQuickMenuBarPrivate::onItemTriggered); - if (QQuickMenu *menu = menuBarItem->menu()) - QObjectPrivate::disconnect(menu, &QQuickPopup::aboutToHide, d, &QQuickMenuBarPrivate::onMenuAboutToHide); - } - d->updateImplicitContentSize(); - emit menusChanged(); -} - -QFont QQuickMenuBar::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::MenuBar); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickMenuBar::accessibleRole() const -{ - return QAccessible::MenuBar; -} -#endif - -QT_END_NAMESPACE - -#include "moc_qquickmenubar_p.cpp" diff --git a/src/quicktemplates2/qquickmenubar_p.h b/src/quicktemplates2/qquickmenubar_p.h deleted file mode 100644 index 5eb5dabf..00000000 --- a/src/quicktemplates2/qquickmenubar_p.h +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMENUBAR_P_H -#define QQUICKMENUBAR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontainer_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickMenu; -class QQuickMenuBarPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickMenuBar : public QQuickContainer -{ - Q_OBJECT - Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL) - Q_PRIVATE_PROPERTY(QQuickMenuBar::d_func(), QQmlListProperty<QQuickMenu> menus READ menus NOTIFY menusChanged FINAL) - Q_PRIVATE_PROPERTY(QQuickMenuBar::d_func(), QQmlListProperty<QObject> contentData READ contentData FINAL) - QML_NAMED_ELEMENT(MenuBar) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickMenuBar(QQuickItem *parent = nullptr); - - QQmlComponent *delegate() const; - void setDelegate(QQmlComponent *delegate); - - Q_INVOKABLE QQuickMenu *menuAt(int index) const; - Q_INVOKABLE void addMenu(QQuickMenu *menu); - Q_INVOKABLE void insertMenu(int index, QQuickMenu *menu); - Q_INVOKABLE void removeMenu(QQuickMenu *menu); - Q_INVOKABLE QQuickMenu *takeMenu(int index); - -Q_SIGNALS: - void delegateChanged(); - void menusChanged(); - -protected: - bool eventFilter(QObject *object, QEvent *event) override; - void keyPressEvent(QKeyEvent *event) override; - void keyReleaseEvent(QKeyEvent *event) override; - void hoverLeaveEvent(QHoverEvent *event) override; - - bool isContent(QQuickItem *item) const override; - void itemAdded(int index, QQuickItem *item) override; - void itemMoved(int index, QQuickItem *item) override; - void itemRemoved(int index, QQuickItem *item) override; - - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickMenuBar) - Q_DECLARE_PRIVATE(QQuickMenuBar) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickMenuBar) - -#endif // QQUICKMENUBAR_P_H diff --git a/src/quicktemplates2/qquickmenubar_p_p.h b/src/quicktemplates2/qquickmenubar_p_p.h deleted file mode 100644 index 0562d7e5..00000000 --- a/src/quicktemplates2/qquickmenubar_p_p.h +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMENUBAR_P_P_H -#define QQUICKMENUBAR_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickmenubar_p.h> -#include <QtQuickTemplates2/private/qquickcontainer_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQmlComponent; -class QQuickMenuBarItem; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickMenuBarPrivate : public QQuickContainerPrivate -{ - Q_DECLARE_PUBLIC(QQuickMenuBar) - -public: - static QQuickMenuBarPrivate *get(QQuickMenuBar *menuBar) - { - return menuBar->d_func(); - } - - QQmlListProperty<QQuickMenu> menus(); - QQmlListProperty<QObject> contentData(); - - QQuickItem *beginCreateItem(QQuickMenu *menu); - void completeCreateItem(); - - QQuickItem *createItem(QQuickMenu *menu); - - void toggleCurrentMenu(bool visible, bool activate); - void activateItem(QQuickMenuBarItem *item); - void activateNextItem(); - void activatePreviousItem(); - - void onItemHovered(); - void onItemTriggered(); - void onMenuAboutToHide(); - - qreal getContentWidth() const override; - qreal getContentHeight() const override; - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - static void contentData_append(QQmlListProperty<QObject> *prop, QObject *obj); - - static void menus_append(QQmlListProperty<QQuickMenu> *prop, QQuickMenu *obj); - static qsizetype menus_count(QQmlListProperty<QQuickMenu> *prop); - static QQuickMenu *menus_at(QQmlListProperty<QQuickMenu> *prop, qsizetype index); - static void menus_clear(QQmlListProperty<QQuickMenu> *prop); - - QPalette defaultPalette() const override; - - bool popupMode = false; - bool triggering = false; - QQmlComponent *delegate = nullptr; - QPointer<QQuickMenuBarItem> currentItem; -}; - -QT_END_NAMESPACE - -#endif // QQUICKMENUBAR_P_P_H diff --git a/src/quicktemplates2/qquickmenubaritem.cpp b/src/quicktemplates2/qquickmenubaritem.cpp deleted file mode 100644 index de43adb6..00000000 --- a/src/quicktemplates2/qquickmenubaritem.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmenubaritem_p.h" -#include "qquickmenubaritem_p_p.h" -#include "qquickmenubar_p.h" -#include "qquickmenu_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype MenuBarItem - \inherits AbstractButton -//! \instantiates QQuickMenuBarItem - \inqmlmodule QtQuick.Controls - \since 5.10 - \ingroup qtquickcontrols2-menus - \brief Presents a drop-down menu within a MenuBar. - - MenuBarItem presents a Menu within a MenuBar. The respective drop-down menu - is shown when a MenuBarItem is \l triggered via keyboard, mouse, or touch. - - \image qtquickcontrols2-menubar.png - - MenuBarItem is used as a default \l {MenuBar::}{delegate} type for MenuBar. - Notice that it is not necessary to declare MenuBarItem instances by hand when - using MenuBar. It is sufficient to declare Menu instances as children of the - MenuBar and the respective items are created automatically. - - \sa {Customizing MenuBar}, MenuBar, {Menu Controls} -*/ - -/*! - \qmlsignal void QtQuick.Controls::MenuBarItem::triggered() - - This signal is emitted when the menu bar item is triggered by the user. -*/ - -void QQuickMenuBarItemPrivate::setMenuBar(QQuickMenuBar *newMenuBar) -{ - Q_Q(QQuickMenuBarItem); - if (menuBar == newMenuBar) - return; - - menuBar = newMenuBar; - emit q->menuBarChanged(); -} - -QPalette QQuickMenuBarItemPrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::MenuBar); -} - -QQuickMenuBarItem::QQuickMenuBarItem(QQuickItem *parent) - : QQuickAbstractButton(*(new QQuickMenuBarItemPrivate), parent) -{ - setFocusPolicy(Qt::NoFocus); - connect(this, &QQuickAbstractButton::clicked, this, &QQuickMenuBarItem::triggered); -} - -/*! - \qmlproperty Menu QtQuick.Controls::MenuBarItem::menuBar - \readonly - - This property holds the menu bar that contains this item, - or \c null if the item is not in a menu bar. -*/ -QQuickMenuBar *QQuickMenuBarItem::menuBar() const -{ - Q_D(const QQuickMenuBarItem); - return d->menuBar; -} - -/*! - \qmlproperty Menu QtQuick.Controls::MenuBarItem::menu - - This property holds the menu that this item presents in a - menu bar, or \c null if this item does not have a menu. -*/ -QQuickMenu *QQuickMenuBarItem::menu() const -{ - Q_D(const QQuickMenuBarItem); - return d->menu; -} - -void QQuickMenuBarItem::setMenu(QQuickMenu *menu) -{ - Q_D(QQuickMenuBarItem); - if (d->menu == menu) - return; - - if (d->menu) - disconnect(d->menu, &QQuickMenu::titleChanged, this, &QQuickAbstractButton::setText); - - if (menu) { - setText(menu->title()); - menu->setY(height()); - menu->setParentItem(this); - menu->setClosePolicy(QQuickPopup::CloseOnEscape | QQuickPopup::CloseOnPressOutsideParent | QQuickPopup::CloseOnReleaseOutsideParent); - connect(menu, &QQuickMenu::titleChanged, this, &QQuickAbstractButton::setText); - } - - d->menu = menu; - emit menuChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::MenuBarItem::highlighted - - This property holds whether the menu bar item is highlighted by the user. - - A menu bar item can be highlighted by mouse hover or keyboard navigation. - - The default value is \c false. -*/ -bool QQuickMenuBarItem::isHighlighted() const -{ - Q_D(const QQuickMenuBarItem); - return d->highlighted; -} - -void QQuickMenuBarItem::setHighlighted(bool highlighted) -{ - Q_D(QQuickMenuBarItem); - if (highlighted == d->highlighted) - return; - - d->highlighted = highlighted; - emit highlightedChanged(); -} - -void QQuickMenuBarItem::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickMenuBarItem); - QQuickAbstractButton::geometryChange(newGeometry, oldGeometry); - if (d->menu) - d->menu->setY(newGeometry.height()); -} - -QFont QQuickMenuBarItem::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::MenuBar); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickMenuBarItem::accessibleRole() const -{ - return QAccessible::MenuBar; -} -#endif - -QT_END_NAMESPACE - -#include "moc_qquickmenubaritem_p.cpp" diff --git a/src/quicktemplates2/qquickmenubaritem_p.h b/src/quicktemplates2/qquickmenubaritem_p.h deleted file mode 100644 index a913f242..00000000 --- a/src/quicktemplates2/qquickmenubaritem_p.h +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMENUBARITEM_P_H -#define QQUICKMENUBARITEM_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickMenu; -class QQuickMenuBar; -class QQuickMenuBarItemPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickMenuBarItem : public QQuickAbstractButton -{ - Q_OBJECT - Q_PROPERTY(QQuickMenuBar *menuBar READ menuBar NOTIFY menuBarChanged FINAL) - Q_PROPERTY(QQuickMenu *menu READ menu WRITE setMenu NOTIFY menuChanged FINAL) - Q_PROPERTY(bool highlighted READ isHighlighted WRITE setHighlighted NOTIFY highlightedChanged FINAL) - QML_NAMED_ELEMENT(MenuBarItem) - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickMenuBarItem(QQuickItem *parent = nullptr); - - QQuickMenuBar *menuBar() const; - - QQuickMenu *menu() const; - void setMenu(QQuickMenu *menu); - - bool isHighlighted() const; - void setHighlighted(bool highlighted); - -Q_SIGNALS: - void triggered(); - void menuBarChanged(); - void menuChanged(); - void highlightedChanged(); - -protected: - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickMenuBarItem) - Q_DECLARE_PRIVATE(QQuickMenuBarItem) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickMenuBarItem) - -#endif // QQUICKMENUBARITEM_P_H diff --git a/src/quicktemplates2/qquickmenubaritem_p_p.h b/src/quicktemplates2/qquickmenubaritem_p_p.h deleted file mode 100644 index 22c509dc..00000000 --- a/src/quicktemplates2/qquickmenubaritem_p_p.h +++ /dev/null @@ -1,80 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMENUBARITEM_P_P_H -#define QQUICKMENUBARITEM_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickmenubaritem_p.h> -#include <QtQuickTemplates2/private/qquickabstractbutton_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickMenu; -class QQuickMenuBar; - -class QQuickMenuBarItemPrivate : public QQuickAbstractButtonPrivate -{ - Q_DECLARE_PUBLIC(QQuickMenuBarItem) - -public: - static QQuickMenuBarItemPrivate *get(QQuickMenuBarItem *item) - { - return item->d_func(); - } - - void setMenuBar(QQuickMenuBar *menuBar); - - QPalette defaultPalette() const override; - - bool highlighted = false; - QQuickMenu *menu = nullptr; - QQuickMenuBar *menuBar = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKMENUBARITEM_P_P_H diff --git a/src/quicktemplates2/qquickmenuitem.cpp b/src/quicktemplates2/qquickmenuitem.cpp deleted file mode 100644 index 55902441..00000000 --- a/src/quicktemplates2/qquickmenuitem.cpp +++ /dev/null @@ -1,281 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmenuitem_p.h" -#include "qquickmenuitem_p_p.h" -#include "qquickmenu_p.h" -#include "qquickdeferredexecute_p_p.h" - -#include <QtGui/qpa/qplatformtheme.h> -#include <QtQuick/private/qquickevents_p_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype MenuItem - \inherits AbstractButton -//! \instantiates QQuickMenuItem - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-menus - \brief Presents an item within a Menu. - - MenuItem is a convenience type that implements the AbstractButton API, - providing a familiar way to respond to menu items being \l triggered, for - example. - - MenuItem inherits its API from AbstractButton. For instance, you can set - \l {AbstractButton::text}{text} and \l {Icons in Qt Quick Controls}{icon} - using the AbstractButton API. - - \code - Button { - id: fileButton - text: "File" - onClicked: menu.open() - - Menu { - id: menu - - MenuItem { - text: "New..." - onTriggered: document.reset() - } - MenuItem { - text: "Open..." - onTriggered: openDialog.open() - } - MenuItem { - text: "Save" - onTriggered: saveDialog.open() - } - } - } - \endcode - - \sa {Customizing Menu}, Menu, {Menu Controls} -*/ - -void QQuickMenuItemPrivate::setMenu(QQuickMenu *newMenu) -{ - Q_Q(QQuickMenuItem); - if (menu == newMenu) - return; - - menu = newMenu; - emit q->menuChanged(); -} - -void QQuickMenuItemPrivate::setSubMenu(QQuickMenu *newSubMenu) -{ - Q_Q(QQuickMenuItem); - if (subMenu == newSubMenu) - return; - - if (subMenu) { - QObject::disconnect(subMenu, &QQuickMenu::titleChanged, q, &QQuickAbstractButton::setText); - QObjectPrivate::disconnect(subMenu, &QQuickPopup::enabledChanged, this, &QQuickMenuItemPrivate::updateEnabled); - } - - if (newSubMenu) { - QObject::connect(newSubMenu, &QQuickMenu::titleChanged, q, &QQuickAbstractButton::setText); - QObjectPrivate::connect(newSubMenu, &QQuickPopup::enabledChanged, this, &QQuickMenuItemPrivate::updateEnabled); - q->setText(newSubMenu->title()); - } - - subMenu = newSubMenu; - updateEnabled(); - emit q->subMenuChanged(); -} - -void QQuickMenuItemPrivate::updateEnabled() -{ - Q_Q(QQuickMenuItem); - q->setEnabled(subMenu && subMenu->isEnabled()); -} - -static inline QString arrowName() { return QStringLiteral("arrow"); } - -void QQuickMenuItemPrivate::cancelArrow() -{ - Q_Q(QQuickAbstractButton); - quickCancelDeferred(q, arrowName()); -} - -void QQuickMenuItemPrivate::executeArrow(bool complete) -{ - Q_Q(QQuickMenuItem); - if (arrow.wasExecuted()) - return; - - if (!arrow || complete) - quickBeginDeferred(q, arrowName(), arrow); - if (complete) - quickCompleteDeferred(q, arrowName(), arrow); -} - -bool QQuickMenuItemPrivate::acceptKeyClick(Qt::Key key) const -{ - return key == Qt::Key_Space || key == Qt::Key_Return || key == Qt::Key_Enter; -} - -QPalette QQuickMenuItemPrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::Menu); -} - -/*! - \qmlsignal void QtQuick.Controls::MenuItem::triggered() - - This signal is emitted when the menu item is triggered by the user. -*/ - -QQuickMenuItem::QQuickMenuItem(QQuickItem *parent) - : QQuickAbstractButton(*(new QQuickMenuItemPrivate), parent) -{ - connect(this, &QQuickAbstractButton::clicked, this, &QQuickMenuItem::triggered); -} - -/*! - \qmlproperty bool QtQuick.Controls::MenuItem::highlighted - - This property holds whether the menu item is highlighted by the user. - - A menu item can be highlighted by mouse hover or keyboard navigation. - - The default value is \c false. - - \sa Menu::currentIndex -*/ -bool QQuickMenuItem::isHighlighted() const -{ - Q_D(const QQuickMenuItem); - return d->highlighted; -} - -void QQuickMenuItem::setHighlighted(bool highlighted) -{ - Q_D(QQuickMenuItem); - if (highlighted == d->highlighted) - return; - - d->highlighted = highlighted; - emit highlightedChanged(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty Item QtQuick.Controls::MenuItem::arrow - - This property holds the sub-menu arrow item. - - \sa {Customizing Menu} -*/ -QQuickItem *QQuickMenuItem::arrow() const -{ - QQuickMenuItemPrivate *d = const_cast<QQuickMenuItemPrivate *>(d_func()); - if (!d->arrow) - d->executeArrow(); - return d->arrow; -} - -void QQuickMenuItem::setArrow(QQuickItem *arrow) -{ - Q_D(QQuickMenuItem); - if (d->arrow == arrow) - return; - - if (!d->arrow.isExecuting()) - d->cancelArrow(); - - QQuickControlPrivate::hideOldItem(d->arrow); - d->arrow = arrow; - if (arrow && !arrow->parentItem()) - arrow->setParentItem(this); - if (!d->arrow.isExecuting()) - emit arrowChanged(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty Menu QtQuick.Controls::MenuItem::menu - \readonly - - This property holds the menu that contains this menu item, - or \c null if the item is not in a menu. -*/ -QQuickMenu *QQuickMenuItem::menu() const -{ - Q_D(const QQuickMenuItem); - return d->menu; -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty Menu QtQuick.Controls::MenuItem::subMenu - \readonly - - This property holds the sub-menu that this item presents in - the parent menu, or \c null if this item is not a sub-menu item. -*/ -QQuickMenu *QQuickMenuItem::subMenu() const -{ - Q_D(const QQuickMenuItem); - return d->subMenu; -} - -void QQuickMenuItem::componentComplete() -{ - Q_D(QQuickMenuItem); - d->executeArrow(true); - QQuickAbstractButton::componentComplete(); -} - -QFont QQuickMenuItem::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::Menu); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickMenuItem::accessibleRole() const -{ - return QAccessible::MenuItem; -} -#endif - -QT_END_NAMESPACE - -#include "moc_qquickmenuitem_p.cpp" diff --git a/src/quicktemplates2/qquickmenuitem_p.h b/src/quicktemplates2/qquickmenuitem_p.h deleted file mode 100644 index 817da76b..00000000 --- a/src/quicktemplates2/qquickmenuitem_p.h +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMENUITEM_P_H -#define QQUICKMENUITEM_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickMenu; -class QQuickMenuItemPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickMenuItem : public QQuickAbstractButton -{ - Q_OBJECT - Q_PROPERTY(bool highlighted READ isHighlighted WRITE setHighlighted NOTIFY highlightedChanged FINAL) - // 2.3 (Qt 5.10) - Q_PROPERTY(QQuickItem *arrow READ arrow WRITE setArrow NOTIFY arrowChanged FINAL REVISION(2, 3)) - Q_PROPERTY(QQuickMenu *menu READ menu NOTIFY menuChanged FINAL REVISION(2, 3)) - Q_PROPERTY(QQuickMenu *subMenu READ subMenu NOTIFY subMenuChanged FINAL REVISION(2, 3)) - Q_CLASSINFO("DeferredPropertyNames", "arrow,background,contentItem,indicator") - QML_NAMED_ELEMENT(MenuItem) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickMenuItem(QQuickItem *parent = nullptr); - - bool isHighlighted() const; - void setHighlighted(bool highlighted); - - // 2.3 (Qt 5.10) - QQuickItem *arrow() const; - void setArrow(QQuickItem *arrow); - - QQuickMenu *menu() const; - QQuickMenu *subMenu() const; - -Q_SIGNALS: - void triggered(); - void highlightedChanged(); - // 2.3 (Qt 5.10) - Q_REVISION(2, 3) void arrowChanged(); - Q_REVISION(2, 3) void menuChanged(); - Q_REVISION(2, 3) void subMenuChanged(); - -protected: - void componentComplete() override; - - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickMenuItem) - Q_DECLARE_PRIVATE(QQuickMenuItem) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickMenuItem) - -#endif // QQUICKMENUITEM_P_H diff --git a/src/quicktemplates2/qquickmenuitem_p_p.h b/src/quicktemplates2/qquickmenuitem_p_p.h deleted file mode 100644 index 966e14e7..00000000 --- a/src/quicktemplates2/qquickmenuitem_p_p.h +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMENUITEM_P_P_H -#define QQUICKMENUITEM_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickmenuitem_p.h> -#include <QtQuickTemplates2/private/qquickabstractbutton_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickMenu; - -class QQuickMenuItemPrivate : public QQuickAbstractButtonPrivate -{ - Q_DECLARE_PUBLIC(QQuickMenuItem) - -public: - static QQuickMenuItemPrivate *get(QQuickMenuItem *item) - { - return item->d_func(); - } - - void setMenu(QQuickMenu *menu); - void setSubMenu(QQuickMenu *subMenu); - - void updateEnabled(); - - void cancelArrow(); - void executeArrow(bool complete = false); - - bool acceptKeyClick(Qt::Key key) const override; - - QPalette defaultPalette() const override; - - bool highlighted = false; - QQuickDeferredPointer<QQuickItem> arrow; - QQuickMenu *menu = nullptr; - QQuickMenu *subMenu = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKMENUITEM_P_P_H diff --git a/src/quicktemplates2/qquickmenuseparator.cpp b/src/quicktemplates2/qquickmenuseparator.cpp deleted file mode 100644 index f7f3017d..00000000 --- a/src/quicktemplates2/qquickmenuseparator.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickmenuseparator_p.h" -#include "qquickcontrol_p_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype MenuSeparator - \inherits Control -//! \instantiates QQuickMenuSeparator - \inqmlmodule QtQuick.Controls - \since 5.8 - \ingroup qtquickcontrols2-separators - \brief Separates a group of items in a menu from adjacent items. - - MenuSeparator is used to visually distinguish between groups of items in a - menu by separating them with a line. - - \image qtquickcontrols2-menuseparator.png - - \quotefromfile qtquickcontrols2-menuseparator-custom.qml - \skipto import QtQuick - \printuntil import QtQuick.Controls - \skipto Menu - \printto contentItem.parent: window - \skipline contentItem.parent: window - \printuntil text: qsTr("Exit") - \printuntil } - \printuntil } - - \sa {Customizing Menu}, Menu, {Separator Controls} -*/ - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickMenuSeparatorPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickMenuSeparator) - -public: - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::Menu); } -}; - -QQuickMenuSeparator::QQuickMenuSeparator(QQuickItem *parent) - : QQuickControl(*(new QQuickMenuSeparatorPrivate), parent) -{ -} - -QFont QQuickMenuSeparator::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::Menu); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickMenuSeparator::accessibleRole() const -{ - return QAccessible::Separator; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickmenuseparator_p.h b/src/quicktemplates2/qquickmenuseparator_p.h deleted file mode 100644 index 330aaac4..00000000 --- a/src/quicktemplates2/qquickmenuseparator_p.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKMENUSEPARATOR_P_H -#define QQUICKMENUSEPARATOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickMenuSeparator; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickMenuSeparator : public QQuickControl -{ - Q_OBJECT - QML_NAMED_ELEMENT(MenuSeparator) - QML_ADDED_IN_VERSION(2, 1) - -public: - explicit QQuickMenuSeparator(QQuickItem *parent = nullptr); - -protected: - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickMenuSeparator) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickMenuSeparator) - -#endif // QQUICKMENUSEPARATOR_P_H diff --git a/src/quicktemplates2/qquickoverlay.cpp b/src/quicktemplates2/qquickoverlay.cpp deleted file mode 100644 index 6689d93c..00000000 --- a/src/quicktemplates2/qquickoverlay.cpp +++ /dev/null @@ -1,728 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickcontrol_p_p.h" -#include "qquickoverlay_p.h" -#include "qquickoverlay_p_p.h" -#include "qquickpopupitem_p_p.h" -#include "qquickpopup_p_p.h" -#include "qquickdrawer_p.h" -#include "qquickdrawer_p_p.h" -#include "qquickapplicationwindow_p.h" -#include <QtQml/qqmlinfo.h> -#include <QtQml/qqmlproperty.h> -#include <QtQml/qqmlcomponent.h> -#include <algorithm> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Overlay - \inherits Item -//! \instantiates QQuickOverlay - \inqmlmodule QtQuick.Controls - \since 5.10 - \brief A window overlay for popups. - - Overlay provides a layer for popups, ensuring that popups are displayed above - other content and that the background is dimmed when a \l {Popup::}{modal} or - \l {Popup::dim}{dimmed} popup is visible. - - The overlay is an ordinary Item that covers the entire window. It can be used - as a visual parent to position a popup in scene coordinates. - - \include qquickoverlay-popup-parent.qdocinc - - \sa ApplicationWindow -*/ - -QList<QQuickPopup *> QQuickOverlayPrivate::stackingOrderPopups() const -{ - const QList<QQuickItem *> children = paintOrderChildItems(); - - QList<QQuickPopup *> popups; - popups.reserve(children.count()); - - for (auto it = children.crbegin(), end = children.crend(); it != end; ++it) { - QQuickPopup *popup = qobject_cast<QQuickPopup *>((*it)->parent()); - if (popup) - popups += popup; - } - - return popups; -} - -QList<QQuickDrawer *> QQuickOverlayPrivate::stackingOrderDrawers() const -{ - QList<QQuickDrawer *> sorted(allDrawers); - std::sort(sorted.begin(), sorted.end(), [](const QQuickDrawer *one, const QQuickDrawer *another) { - return one->z() > another->z(); - }); - return sorted; -} - -void QQuickOverlayPrivate::itemGeometryChanged(QQuickItem *, QQuickGeometryChange, const QRectF &) -{ - updateGeometry(); -} - -bool QQuickOverlayPrivate::startDrag(QEvent *event, const QPointF &pos) -{ - Q_Q(QQuickOverlay); - if (allDrawers.isEmpty()) - return false; - - // don't start dragging a drawer if a modal popup overlay is blocking (QTBUG-60602) - QQuickItem *item = q->childAt(pos.x(), pos.y()); - if (item) { - const auto popups = stackingOrderPopups(); - for (QQuickPopup *popup : popups) { - QQuickPopupPrivate *p = QQuickPopupPrivate::get(popup); - if (p->dimmer == item && popup->isVisible() && popup->isModal()) - return false; - } - } - - const QList<QQuickDrawer *> drawers = stackingOrderDrawers(); - for (QQuickDrawer *drawer : drawers) { - QQuickDrawerPrivate *p = QQuickDrawerPrivate::get(drawer); - if (p->startDrag(event)) { - setMouseGrabberPopup(drawer); - return true; - } - } - - return false; -} - -bool QQuickOverlayPrivate::handlePress(QQuickItem *source, QEvent *event, QQuickPopup *target) -{ - if (target) { - if (target->overlayEvent(source, event)) { - setMouseGrabberPopup(target); - return true; - } - return false; - } - - switch (event->type()) { - default: { - if (mouseGrabberPopup) - break; -#if QT_CONFIG(quicktemplates2_multitouch) - Q_FALLTHROUGH(); - case QEvent::TouchBegin: - case QEvent::TouchUpdate: - case QEvent::TouchEnd: -#endif - // allow non-modal popups to close themselves, - // and non-dimming modal popups to block the event - const auto popups = stackingOrderPopups(); - for (QQuickPopup *popup : popups) { - if (popup->overlayEvent(source, event)) { - setMouseGrabberPopup(popup); - return true; - } - } - break; - } - } - - event->ignore(); - return false; -} - -bool QQuickOverlayPrivate::handleMove(QQuickItem *source, QEvent *event, QQuickPopup *target) -{ - if (target) - return target->overlayEvent(source, event); - return false; -} - -bool QQuickOverlayPrivate::handleRelease(QQuickItem *source, QEvent *event, QQuickPopup *target) -{ - if (target) { - setMouseGrabberPopup(nullptr); - if (target->overlayEvent(source, event)) { - setMouseGrabberPopup(nullptr); - return true; - } - } else { - const auto popups = stackingOrderPopups(); - for (QQuickPopup *popup : popups) { - if (popup->overlayEvent(source, event)) - return true; - } - } - return false; -} - -bool QQuickOverlayPrivate::handleMouseEvent(QQuickItem *source, QMouseEvent *event, QQuickPopup *target) -{ - switch (event->type()) { - case QEvent::MouseButtonPress: - if (!target && startDrag(event, event->scenePosition())) - return true; - return handlePress(source, event, target); - case QEvent::MouseMove: - return handleMove(source, event, target ? target : mouseGrabberPopup.data()); - case QEvent::MouseButtonRelease: - return handleRelease(source, event, target ? target : mouseGrabberPopup.data()); - default: - break; - } - return false; -} - -bool QQuickOverlayPrivate::handleHoverEvent(QQuickItem *source, QHoverEvent *event, QQuickPopup *target) -{ - switch (event->type()) { - case QEvent::HoverEnter: - case QEvent::HoverMove: - case QEvent::HoverLeave: - if (target) - return target->overlayEvent(source, event); - return false; - default: - Q_UNREACHABLE(); // function must only be called on hover events - break; - } - return false; -} - -#if QT_CONFIG(quicktemplates2_multitouch) -bool QQuickOverlayPrivate::handleTouchEvent(QQuickItem *source, QTouchEvent *event, QQuickPopup *target) -{ - bool handled = false; - switch (event->type()) { - case QEvent::TouchBegin: - case QEvent::TouchUpdate: - case QEvent::TouchEnd: - for (const QTouchEvent::TouchPoint &point : event->points()) { - switch (point.state()) { - case QEventPoint::Pressed: - if (!target && startDrag(event, point.scenePosition())) - handled = true; - else - handled |= handlePress(source, event, target); - break; - case QEventPoint::Updated: - handled |= handleMove(source, event, target ? target : mouseGrabberPopup.data()); - break; - case QEventPoint::Released: - handled |= handleRelease(source, event, target ? target : mouseGrabberPopup.data()); - break; - default: - break; - } - } - break; - - default: - break; - } - - return handled; -} -#endif - -void QQuickOverlayPrivate::addPopup(QQuickPopup *popup) -{ - Q_Q(QQuickOverlay); - allPopups += popup; - if (QQuickDrawer *drawer = qobject_cast<QQuickDrawer *>(popup)) { - allDrawers += drawer; - q->setVisible(!allDrawers.isEmpty() || !q->childItems().isEmpty()); - } -} - -void QQuickOverlayPrivate::removePopup(QQuickPopup *popup) -{ - Q_Q(QQuickOverlay); - allPopups.removeOne(popup); - if (allDrawers.removeOne(qobject_cast<QQuickDrawer *>(popup))) - q->setVisible(!allDrawers.isEmpty() || !q->childItems().isEmpty()); -} - -void QQuickOverlayPrivate::setMouseGrabberPopup(QQuickPopup *popup) -{ - if (popup && !popup->isVisible()) - popup = nullptr; - mouseGrabberPopup = popup; -} - -void QQuickOverlayPrivate::updateGeometry() -{ - Q_Q(QQuickOverlay); - if (!window) - return; - - QPointF pos; - QSizeF size = window->size(); - qreal rotation = 0; - - switch (window->contentOrientation()) { - case Qt::PrimaryOrientation: - case Qt::PortraitOrientation: - size = window->size(); - break; - case Qt::LandscapeOrientation: - rotation = 90; - pos = QPointF((size.width() - size.height()) / 2, -(size.width() - size.height()) / 2); - size.transpose(); - break; - case Qt::InvertedPortraitOrientation: - rotation = 180; - break; - case Qt::InvertedLandscapeOrientation: - rotation = 270; - pos = QPointF((size.width() - size.height()) / 2, -(size.width() - size.height()) / 2); - size.transpose(); - break; - default: - break; - } - - q->setSize(size); - q->setPosition(pos); - q->setRotation(rotation); -} - -QQuickOverlay::QQuickOverlay(QQuickItem *parent) - : QQuickItem(*(new QQuickOverlayPrivate), parent) -{ - Q_D(QQuickOverlay); - setZ(1000001); // DefaultWindowDecoration+1 - setAcceptedMouseButtons(Qt::AllButtons); -#if QT_CONFIG(quicktemplates2_multitouch) - setAcceptTouchEvents(true); -#endif - setFiltersChildMouseEvents(true); - setVisible(false); - - if (parent) { - d->updateGeometry(); - QQuickItemPrivate::get(parent)->addItemChangeListener(d, QQuickItemPrivate::Geometry); - if (QQuickWindow *window = parent->window()) { - window->installEventFilter(this); - QObjectPrivate::connect(window, &QWindow::contentOrientationChanged, d, &QQuickOverlayPrivate::updateGeometry); - } - } -} - -QQuickOverlay::~QQuickOverlay() -{ - Q_D(QQuickOverlay); - if (QQuickItem *parent = parentItem()) - QQuickItemPrivate::get(parent)->removeItemChangeListener(d, QQuickItemPrivate::Geometry); -} - -QQmlComponent *QQuickOverlay::modal() const -{ - Q_D(const QQuickOverlay); - return d->modal; -} - -void QQuickOverlay::setModal(QQmlComponent *modal) -{ - Q_D(QQuickOverlay); - if (d->modal == modal) - return; - - d->modal = modal; - emit modalChanged(); -} - -QQmlComponent *QQuickOverlay::modeless() const -{ - Q_D(const QQuickOverlay); - return d->modeless; -} - -void QQuickOverlay::setModeless(QQmlComponent *modeless) -{ - Q_D(QQuickOverlay); - if (d->modeless == modeless) - return; - - d->modeless = modeless; - emit modelessChanged(); -} - -QQuickOverlay *QQuickOverlay::overlay(QQuickWindow *window) -{ - if (!window) - return nullptr; - - const char *name = "_q_QQuickOverlay"; - QQuickOverlay *overlay = window->property(name).value<QQuickOverlay *>(); - if (!overlay) { - QQuickItem *content = window->contentItem(); - // Do not re-create the overlay if the window is being destroyed - // and thus, its content item no longer has a window associated. - if (content && content->window()) { - overlay = new QQuickOverlay(window->contentItem()); - window->setProperty(name, QVariant::fromValue(overlay)); - } - } - return overlay; -} - -QQuickOverlayAttached *QQuickOverlay::qmlAttachedProperties(QObject *object) -{ - return new QQuickOverlayAttached(object); -} - -void QQuickOverlay::itemChange(ItemChange change, const ItemChangeData &data) -{ - Q_D(QQuickOverlay); - QQuickItem::itemChange(change, data); - - if (change == ItemChildAddedChange || change == ItemChildRemovedChange) - setVisible(!d->allDrawers.isEmpty() || !childItems().isEmpty()); -} - -void QQuickOverlay::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickOverlay); - QQuickItem::geometryChange(newGeometry, oldGeometry); - for (QQuickPopup *popup : qAsConst(d->allPopups)) - QQuickPopupPrivate::get(popup)->resizeOverlay(); -} - -void QQuickOverlay::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickOverlay); - d->handleMouseEvent(this, event); -} - -void QQuickOverlay::mouseMoveEvent(QMouseEvent *event) -{ - Q_D(QQuickOverlay); - d->handleMouseEvent(this, event); -} - -void QQuickOverlay::mouseReleaseEvent(QMouseEvent *event) -{ - Q_D(QQuickOverlay); - d->handleMouseEvent(this, event); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickOverlay::touchEvent(QTouchEvent *event) -{ - Q_D(QQuickOverlay); - d->handleTouchEvent(this, event); -} -#endif - -#if QT_CONFIG(wheelevent) -void QQuickOverlay::wheelEvent(QWheelEvent *event) -{ - Q_D(QQuickOverlay); - if (d->mouseGrabberPopup) { - d->mouseGrabberPopup->overlayEvent(this, event); - return; - } else { - const auto popups = d->stackingOrderPopups(); - for (QQuickPopup *popup : popups) { - if (popup->overlayEvent(this, event)) - return; - } - } - event->ignore(); -} -#endif - -bool QQuickOverlay::childMouseEventFilter(QQuickItem *item, QEvent *event) -{ - Q_D(QQuickOverlay); - const auto popups = d->stackingOrderPopups(); - for (QQuickPopup *popup : popups) { - QQuickPopupPrivate *p = QQuickPopupPrivate::get(popup); - - // Stop filtering overlay events when reaching a popup item or an item - // that is inside the popup. Let the popup content handle its events. - if (item == p->popupItem || p->popupItem->isAncestorOf(item)) - break; - - // Let the popup try closing itself when pressing or releasing over its - // background dimming OR over another popup underneath, in case the popup - // does not have background dimming. - if (item == p->dimmer || !p->popupItem->isAncestorOf(item)) { - switch (event->type()) { -#if QT_CONFIG(quicktemplates2_multitouch) - case QEvent::TouchBegin: - case QEvent::TouchUpdate: - case QEvent::TouchEnd: - return d->handleTouchEvent(item, static_cast<QTouchEvent *>(event), popup); -#endif - case QEvent::HoverEnter: - case QEvent::HoverMove: - case QEvent::HoverLeave: - return d->handleHoverEvent(item, static_cast<QHoverEvent *>(event), popup); - - case QEvent::MouseButtonPress: - case QEvent::MouseMove: - case QEvent::MouseButtonRelease: - return d->handleMouseEvent(item, static_cast<QMouseEvent *>(event), popup); - - default: - break; - } - } - } - return false; -} - -bool QQuickOverlay::eventFilter(QObject *object, QEvent *event) -{ - Q_D(QQuickOverlay); - if (!isVisible() || object != d->window) - return false; - - switch (event->type()) { -#if QT_CONFIG(quicktemplates2_multitouch) - case QEvent::TouchBegin: - case QEvent::TouchUpdate: - case QEvent::TouchEnd: - if (static_cast<QTouchEvent *>(event)->touchPointStates() & QEventPoint::Pressed) - emit pressed(); - if (static_cast<QTouchEvent *>(event)->touchPointStates() & QEventPoint::Released) - emit released(); - - // allow non-modal popups to close on touch release outside - if (!d->mouseGrabberPopup) { - for (const QTouchEvent::TouchPoint &point : static_cast<QTouchEvent *>(event)->points()) { - if (point.state() == QEventPoint::Released) { - if (d->handleRelease(d->window->contentItem(), event, nullptr)) - break; - } - } - } - - QQuickWindowPrivate::get(d->window)->handleTouchEvent(static_cast<QTouchEvent *>(event)); - - // If a touch event hasn't been accepted after being delivered, there - // were no items interested in touch events at any of the touch points. - // Make sure to accept the touch event in order to receive the consequent - // touch events, to be able to close non-modal popups on release outside. - event->accept(); - return true; -#endif - - case QEvent::MouseButtonPress: -#if QT_CONFIG(quicktemplates2_multitouch) - // do not emit pressed() twice when mouse events have been synthesized from touch events - if (static_cast<QMouseEvent *>(event)->source() == Qt::MouseEventNotSynthesized) -#endif - emit pressed(); - - QQuickWindowPrivate::get(d->window)->handleMouseEvent(static_cast<QMouseEvent *>(event)); - - // If a mouse event hasn't been accepted after being delivered, there - // was no item interested in mouse events at the mouse point. Make sure - // to accept the mouse event in order to receive the consequent mouse - // events, to be able to close non-modal popups on release outside. - event->accept(); - return true; - - case QEvent::MouseButtonRelease: -#if QT_CONFIG(quicktemplates2_multitouch) - // do not emit released() twice when mouse events have been synthesized from touch events - if (static_cast<QMouseEvent *>(event)->source() == Qt::MouseEventNotSynthesized) -#endif - emit released(); - - // allow non-modal popups to close on mouse release outside - if (!d->mouseGrabberPopup) - d->handleRelease(d->window->contentItem(), event, nullptr); - break; - - default: - break; - } - - return false; -} - -class QQuickOverlayAttachedPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickOverlayAttached) - -public: - void setWindow(QQuickWindow *newWindow); - - QQuickWindow *window = nullptr; - QQmlComponent *modal = nullptr; - QQmlComponent *modeless = nullptr; -}; - -void QQuickOverlayAttachedPrivate::setWindow(QQuickWindow *newWindow) -{ - Q_Q(QQuickOverlayAttached); - if (window == newWindow) - return; - - if (QQuickOverlay *oldOverlay = QQuickOverlay::overlay(window)) { - QObject::disconnect(oldOverlay, &QQuickOverlay::pressed, q, &QQuickOverlayAttached::pressed); - QObject::disconnect(oldOverlay, &QQuickOverlay::released, q, &QQuickOverlayAttached::released); - } - - if (QQuickOverlay *newOverlay = QQuickOverlay::overlay(newWindow)) { - QObject::connect(newOverlay, &QQuickOverlay::pressed, q, &QQuickOverlayAttached::pressed); - QObject::connect(newOverlay, &QQuickOverlay::released, q, &QQuickOverlayAttached::released); - } - - window = newWindow; - emit q->overlayChanged(); -} - -/*! - \qmlattachedsignal QtQuick.Controls::Overlay::pressed() - - This attached signal is emitted when the overlay is pressed by the user while - a popup is visible. - - The signal can be attached to any item, popup, or window. When attached to an - item or a popup, the signal is only emitted if the item or popup is in a window. -*/ - -/*! - \qmlattachedsignal QtQuick.Controls::Overlay::released() - - This attached signal is emitted when the overlay is released by the user while - a popup is visible. - - The signal can be attached to any item, popup, or window. When attached to an - item or a popup, the signal is only emitted if the item or popup is in a window. -*/ - -QQuickOverlayAttached::QQuickOverlayAttached(QObject *parent) - : QObject(*(new QQuickOverlayAttachedPrivate), parent) -{ - Q_D(QQuickOverlayAttached); - if (QQuickItem *item = qobject_cast<QQuickItem *>(parent)) { - d->setWindow(item->window()); - QObjectPrivate::connect(item, &QQuickItem::windowChanged, d, &QQuickOverlayAttachedPrivate::setWindow); - } else if (QQuickPopup *popup = qobject_cast<QQuickPopup *>(parent)) { - d->setWindow(popup->window()); - QObjectPrivate::connect(popup, &QQuickPopup::windowChanged, d, &QQuickOverlayAttachedPrivate::setWindow); - } else { - d->setWindow(qobject_cast<QQuickWindow *>(parent)); - } -} - -/*! - \qmlattachedproperty Overlay QtQuick.Controls::Overlay::overlay - \readonly - - This attached property holds the window overlay item. - - The property can be attached to any item, popup, or window. When attached to an - item or a popup, the value is \c null if the item or popup is not in a window. -*/ -QQuickOverlay *QQuickOverlayAttached::overlay() const -{ - Q_D(const QQuickOverlayAttached); - return QQuickOverlay::overlay(d->window); -} - -/*! - \qmlattachedproperty Component QtQuick.Controls::Overlay::modal - - This attached property holds a component to use as a visual item that implements - background dimming for modal popups. It is created for and stacked below visible - modal popups. - - The property can be attached to any popup. - - For example, to change the color of the background dimming for a modal - popup, the following code can be used: - - \snippet qtquickcontrols2-overlay-modal.qml 1 - - \sa Popup::modal -*/ -QQmlComponent *QQuickOverlayAttached::modal() const -{ - Q_D(const QQuickOverlayAttached); - return d->modal; -} - -void QQuickOverlayAttached::setModal(QQmlComponent *modal) -{ - Q_D(QQuickOverlayAttached); - if (d->modal == modal) - return; - - d->modal = modal; - emit modalChanged(); -} - -/*! - \qmlattachedproperty Component QtQuick.Controls::Overlay::modeless - - This attached property holds a component to use as a visual item that implements - background dimming for modeless popups. It is created for and stacked below visible - dimming popups. - - The property can be attached to any popup. - - For example, to change the color of the background dimming for a modeless - popup, the following code can be used: - - \snippet qtquickcontrols2-overlay-modeless.qml 1 - - \sa Popup::dim -*/ -QQmlComponent *QQuickOverlayAttached::modeless() const -{ - Q_D(const QQuickOverlayAttached); - return d->modeless; -} - -void QQuickOverlayAttached::setModeless(QQmlComponent *modeless) -{ - Q_D(QQuickOverlayAttached); - if (d->modeless == modeless) - return; - - d->modeless = modeless; - emit modelessChanged(); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickoverlay_p.h b/src/quicktemplates2/qquickoverlay_p.h deleted file mode 100644 index c6e530e2..00000000 --- a/src/quicktemplates2/qquickoverlay_p.h +++ /dev/null @@ -1,147 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKOVERLAY_P_H -#define QQUICKOVERLAY_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/qquickitem.h> -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> - -QT_BEGIN_NAMESPACE - -class QQmlComponent; -class QQuickOverlayPrivate; -class QQuickOverlayAttached; -class QQuickOverlayAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickOverlay : public QQuickItem -{ - Q_OBJECT - Q_PROPERTY(QQmlComponent *modal READ modal WRITE setModal NOTIFY modalChanged FINAL) - Q_PROPERTY(QQmlComponent *modeless READ modeless WRITE setModeless NOTIFY modelessChanged FINAL) - QML_NAMED_ELEMENT(Overlay) - QML_ATTACHED(QQuickOverlayAttached) - QML_UNCREATABLE("") - QML_ADDED_IN_VERSION(2, 3) - -public: - explicit QQuickOverlay(QQuickItem *parent = nullptr); - ~QQuickOverlay(); - - QQmlComponent *modal() const; - void setModal(QQmlComponent *modal); - - QQmlComponent *modeless() const; - void setModeless(QQmlComponent *modeless); - - static QQuickOverlay *overlay(QQuickWindow *window); - - static QQuickOverlayAttached *qmlAttachedProperties(QObject *object); - -Q_SIGNALS: - void modalChanged(); - void modelessChanged(); - void pressed(); - void released(); - -protected: - void itemChange(ItemChange change, const ItemChangeData &data) override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - - void mousePressEvent(QMouseEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override; -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; -#endif -#if QT_CONFIG(wheelevent) - void wheelEvent(QWheelEvent *event) override; -#endif - bool childMouseEventFilter(QQuickItem *item, QEvent *event) override; - bool eventFilter(QObject *object, QEvent *event) override; - -private: - Q_DISABLE_COPY(QQuickOverlay) - Q_DECLARE_PRIVATE(QQuickOverlay) -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickOverlayAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickOverlay *overlay READ overlay NOTIFY overlayChanged FINAL) - Q_PROPERTY(QQmlComponent *modal READ modal WRITE setModal NOTIFY modalChanged FINAL) - Q_PROPERTY(QQmlComponent *modeless READ modeless WRITE setModeless NOTIFY modelessChanged FINAL) - -public: - explicit QQuickOverlayAttached(QObject *parent = nullptr); - - QQuickOverlay *overlay() const; - - QQmlComponent *modal() const; - void setModal(QQmlComponent *modal); - - QQmlComponent *modeless() const; - void setModeless(QQmlComponent *modeless); - -Q_SIGNALS: - void overlayChanged(); - void modalChanged(); - void modelessChanged(); - void pressed(); - void released(); - -private: - Q_DISABLE_COPY(QQuickOverlayAttached) - Q_DECLARE_PRIVATE(QQuickOverlayAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickOverlay) -QML_DECLARE_TYPEINFO(QQuickOverlay, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKOVERLAY_P_H diff --git a/src/quicktemplates2/qquickoverlay_p_p.h b/src/quicktemplates2/qquickoverlay_p_p.h deleted file mode 100644 index fbb2f86c..00000000 --- a/src/quicktemplates2/qquickoverlay_p_p.h +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKOVERLAY_P_P_H -#define QQUICKOVERLAY_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickoverlay_p.h> - -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickPopup; -class QQuickDrawer; - -class QQuickOverlayPrivate : public QQuickItemPrivate, public QQuickItemChangeListener -{ - Q_DECLARE_PUBLIC(QQuickOverlay) - -public: - static QQuickOverlayPrivate *get(QQuickOverlay *overlay) - { - return overlay->d_func(); - } - - bool startDrag(QEvent *event, const QPointF &pos); - bool handlePress(QQuickItem *source, QEvent *event, QQuickPopup *target); - bool handleMove(QQuickItem *source, QEvent *event, QQuickPopup *target); - bool handleRelease(QQuickItem *source, QEvent *event, QQuickPopup *target); - - bool handleMouseEvent(QQuickItem *source, QMouseEvent *event, QQuickPopup *target = nullptr); - bool handleHoverEvent(QQuickItem *source, QHoverEvent *event, QQuickPopup *target = nullptr); -#if QT_CONFIG(quicktemplates2_multitouch) - bool handleTouchEvent(QQuickItem *source, QTouchEvent *event, QQuickPopup *target = nullptr); -#endif - - void addPopup(QQuickPopup *popup); - void removePopup(QQuickPopup *popup); - void setMouseGrabberPopup(QQuickPopup *popup); - - QList<QQuickPopup *> stackingOrderPopups() const; - QList<QQuickDrawer *> stackingOrderDrawers() const; - - void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override; - - void updateGeometry(); - - QQmlComponent *modal = nullptr; - QQmlComponent *modeless = nullptr; - QList<QQuickPopup *> allPopups; - QList<QQuickDrawer *> allDrawers; - QPointer<QQuickPopup> mouseGrabberPopup; -}; - -QT_END_NAMESPACE - -#endif // QQUICKOVERLAY_P_P_H diff --git a/src/quicktemplates2/qquickpage.cpp b/src/quicktemplates2/qquickpage.cpp deleted file mode 100644 index 86470ebe..00000000 --- a/src/quicktemplates2/qquickpage.cpp +++ /dev/null @@ -1,496 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickpage_p.h" -#include "qquickpage_p_p.h" -#include "qquicktabbar_p.h" -#include "qquicktoolbar_p.h" -#include "qquickdialogbuttonbox_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Page - \inherits Pane -//! \instantiates QQuickPage - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-containers - \ingroup qtquickcontrols2-focusscopes - \brief Styled page control with support for a header and footer. - - Page is a container control which makes it convenient to add - a \l header and \l footer item to a page. - - \image qtquickcontrols2-page-wireframe.png - - Items declared as children of a Page are: - \list - \li automatically parented to the Page's contentItem. Items created - dynamically need to be explicitly parented to the contentItem. - \li not automatically positioned or resized. - \endlist - - The following example snippet illustrates how to use a page-specific - toolbar header and an application-wide tabbar footer. - - \qml - import QtQuick.Controls - import QtQuick.Layouts - - ApplicationWindow { - visible: true - - StackView { - anchors.fill: parent - - initialItem: Page { - header: ToolBar { - // ... - } - - ColumnLayout { - anchors.fill: parent - // ... - } - } - } - - footer: TabBar { - // ... - } - } - \endqml - - \sa ApplicationWindow, {Container Controls}, - {Focus Management in Qt Quick Controls} -*/ - -static const QQuickItemPrivate::ChangeTypes LayoutChanges = QQuickItemPrivate::Geometry | QQuickItemPrivate::Visibility | QQuickItemPrivate::Destroyed - | QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight; - -namespace { - enum Position { - Header, - Footer - }; - - Q_STATIC_ASSERT(int(Header) == int(QQuickTabBar::Header)); - Q_STATIC_ASSERT(int(Footer) == int(QQuickTabBar::Footer)); - - Q_STATIC_ASSERT(int(Header) == int(QQuickToolBar::Header)); - Q_STATIC_ASSERT(int(Footer) == int(QQuickToolBar::Footer)); - - Q_STATIC_ASSERT(int(Header) == int(QQuickDialogButtonBox::Header)); - Q_STATIC_ASSERT(int(Footer) == int(QQuickDialogButtonBox::Footer)); - - static void setPos(QQuickItem *item, Position position) - { - if (QQuickToolBar *toolBar = qobject_cast<QQuickToolBar *>(item)) - toolBar->setPosition(static_cast<QQuickToolBar::Position>(position)); - else if (QQuickTabBar *tabBar = qobject_cast<QQuickTabBar *>(item)) - tabBar->setPosition(static_cast<QQuickTabBar::Position>(position)); - else if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(item)) - buttonBox->setPosition(static_cast<QQuickDialogButtonBox::Position>(position)); - } -} - -void QQuickPagePrivate::relayout() -{ - Q_Q(QQuickPage); - const qreal hh = header && header->isVisible() ? header->height() : 0; - const qreal fh = footer && footer->isVisible() ? footer->height() : 0; - const qreal hsp = hh > 0 ? spacing : 0; - const qreal fsp = fh > 0 ? spacing : 0; - - if (contentItem) { - contentItem->setY(q->topPadding() + hh + hsp); - contentItem->setX(q->leftPadding()); - contentItem->setWidth(q->availableWidth()); - contentItem->setHeight(q->availableHeight() - hh - fh - hsp - fsp); - } - - if (header) - header->setWidth(q->width()); - - if (footer) { - footer->setY(q->height() - footer->height()); - footer->setWidth(q->width()); - } -} - -void QQuickPagePrivate::resizeContent() -{ - relayout(); -} - -void QQuickPagePrivate::itemVisibilityChanged(QQuickItem *item) -{ - Q_Q(QQuickPage); - QQuickPanePrivate::itemVisibilityChanged(item); - if (item == header) { - QBoolBlocker signalGuard(emittingImplicitSizeChangedSignals); - emit q->implicitHeaderWidthChanged(); - emit q->implicitHeaderHeightChanged(); - relayout(); - } else if (item == footer) { - QBoolBlocker signalGuard(emittingImplicitSizeChangedSignals); - emit q->implicitFooterWidthChanged(); - emit q->implicitFooterHeightChanged(); - relayout(); - } -} - -void QQuickPagePrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - Q_Q(QQuickPage); - QQuickPanePrivate::itemImplicitWidthChanged(item); - - // Avoid binding loops by skipping signal emission if we're already doing it. - if (emittingImplicitSizeChangedSignals) - return; - - if (item == header) - emit q->implicitHeaderWidthChanged(); - else if (item == footer) - emit q->implicitFooterWidthChanged(); -} - -void QQuickPagePrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - Q_Q(QQuickPage); - QQuickPanePrivate::itemImplicitHeightChanged(item); - - // Avoid binding loops by skipping signal emission if we're already doing it. - if (emittingImplicitSizeChangedSignals) - return; - - if (item == header) - emit q->implicitHeaderHeightChanged(); - else if (item == footer) - emit q->implicitFooterHeightChanged(); -} - -void QQuickPagePrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF & diff) -{ - QQuickPanePrivate::itemGeometryChanged(item, change, diff); - if (item == header || item == footer) - relayout(); -} - -void QQuickPagePrivate::itemDestroyed(QQuickItem *item) -{ - Q_Q(QQuickPage); - QQuickPanePrivate::itemDestroyed(item); - if (item == header) { - header = nullptr; - relayout(); - emit q->implicitHeaderWidthChanged(); - emit q->implicitHeaderHeightChanged(); - emit q->headerChanged(); - } else if (item == footer) { - footer = nullptr; - relayout(); - emit q->implicitFooterWidthChanged(); - emit q->implicitFooterHeightChanged(); - emit q->footerChanged(); - } -} - -QQuickPage::QQuickPage(QQuickItem *parent) - : QQuickPane(*(new QQuickPagePrivate), parent) -{ -} - -QQuickPage::QQuickPage(QQuickPagePrivate &dd, QQuickItem *parent) - : QQuickPane(dd, parent) -{ -} - -QQuickPage::~QQuickPage() -{ - Q_D(QQuickPage); - if (d->header) - QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, LayoutChanges); - if (d->footer) - QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, LayoutChanges); -} - -/*! - \qmlproperty string QtQuick.Controls::Page::title - - This property holds the page title. - - The title is often displayed at the top of a page to give - the user context about the page they are viewing. - - Page does not render the title itself, but instead relies - on the application to do so. For example: - - \code - ApplicationWindow { - visible: true - width: 400 - height: 400 - - header: Label { - text: view.currentItem.title - horizontalAlignment: Text.AlignHCenter - } - - SwipeView { - id: view - anchors.fill: parent - - Page { - title: qsTr("Home") - } - Page { - title: qsTr("Discover") - } - Page { - title: qsTr("Activity") - } - } - } - \endcode -*/ - -QString QQuickPage::title() const -{ - return d_func()->title; -} - -void QQuickPage::setTitle(const QString &title) -{ - Q_D(QQuickPage); - if (d->title == title) - return; - - d->title = title; - maybeSetAccessibleName(title); - emit titleChanged(); -} - -/*! - \qmlproperty Item QtQuick.Controls::Page::header - - This property holds the page header item. The header item is positioned to - the top, and resized to the width of the page. The default value is \c null. - - \note Assigning a ToolBar, TabBar, or DialogButtonBox as a page header - automatically sets the respective \l ToolBar::position, \l TabBar::position, - or \l DialogButtonBox::position property to \c Header. - - \sa footer, ApplicationWindow::header -*/ -QQuickItem *QQuickPage::header() const -{ - Q_D(const QQuickPage); - return d->header; -} - -void QQuickPage::setHeader(QQuickItem *header) -{ - Q_D(QQuickPage); - if (d->header == header) - return; - - if (d->header) { - QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, LayoutChanges); - d->header->setParentItem(nullptr); - } - d->header = header; - if (header) { - header->setParentItem(this); - QQuickItemPrivate::get(header)->addItemChangeListener(d, LayoutChanges); - if (qFuzzyIsNull(header->z())) - header->setZ(1); - setPos(header, Header); - } - if (isComponentComplete()) - d->relayout(); - emit headerChanged(); -} - -/*! - \qmlproperty Item QtQuick.Controls::Page::footer - - This property holds the page footer item. The footer item is positioned to - the bottom, and resized to the width of the page. The default value is \c null. - - \note Assigning a ToolBar, TabBar, or DialogButtonBox as a page footer - automatically sets the respective \l ToolBar::position, \l TabBar::position, - or \l DialogButtonBox::position property to \c Footer. - - \sa header, ApplicationWindow::footer -*/ -QQuickItem *QQuickPage::footer() const -{ - Q_D(const QQuickPage); - return d->footer; -} - -void QQuickPage::setFooter(QQuickItem *footer) -{ - Q_D(QQuickPage); - if (d->footer == footer) - return; - - if (d->footer) { - QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, LayoutChanges); - d->footer->setParentItem(nullptr); - } - d->footer = footer; - if (footer) { - footer->setParentItem(this); - QQuickItemPrivate::get(footer)->addItemChangeListener(d, LayoutChanges); - if (qFuzzyIsNull(footer->z())) - footer->setZ(1); - setPos(footer, Footer); - } - if (isComponentComplete()) - d->relayout(); - emit footerChanged(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Page::implicitHeaderWidth - \readonly - - This property holds the implicit header width. - - The value is equal to \c {header && header.visible ? header.implicitWidth : 0}. - - \sa implicitHeaderHeight, implicitFooterWidth -*/ -qreal QQuickPage::implicitHeaderWidth() const -{ - Q_D(const QQuickPage); - if (!d->header || !d->header->isVisible()) - return 0; - return d->header->implicitWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Page::implicitHeaderHeight - \readonly - - This property holds the implicit header height. - - The value is equal to \c {header && header.visible ? header.implicitHeight : 0}. - - \sa implicitHeaderWidth, implicitFooterHeight -*/ -qreal QQuickPage::implicitHeaderHeight() const -{ - Q_D(const QQuickPage); - if (!d->header || !d->header->isVisible()) - return 0; - return d->header->implicitHeight(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Page::implicitFooterWidth - \readonly - - This property holds the implicit footer width. - - The value is equal to \c {footer && footer.visible ? footer.implicitWidth : 0}. - - \sa implicitFooterHeight, implicitHeaderWidth -*/ -qreal QQuickPage::implicitFooterWidth() const -{ - Q_D(const QQuickPage); - if (!d->footer || !d->footer->isVisible()) - return 0; - return d->footer->implicitWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Page::implicitFooterHeight - \readonly - - This property holds the implicit footer height. - - The value is equal to \c {footer && footer.visible ? footer.implicitHeight : 0}. - - \sa implicitFooterWidth, implicitHeaderHeight -*/ -qreal QQuickPage::implicitFooterHeight() const -{ - Q_D(const QQuickPage); - if (!d->footer || !d->footer->isVisible()) - return 0; - return d->footer->implicitHeight(); -} - -void QQuickPage::componentComplete() -{ - Q_D(QQuickPage); - QQuickPane::componentComplete(); - d->relayout(); -} - -void QQuickPage::spacingChange(qreal newSpacing, qreal oldSpacing) -{ - Q_D(QQuickPage); - QQuickPane::spacingChange(newSpacing, oldSpacing); - d->relayout(); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickPage::accessibleRole() const -{ - return QAccessible::PageTab; -} - -void QQuickPage::accessibilityActiveChanged(bool active) -{ - Q_D(QQuickPage); - QQuickPane::accessibilityActiveChanged(active); - - if (active) - maybeSetAccessibleName(d->title); -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickpage_p.h b/src/quicktemplates2/qquickpage_p.h deleted file mode 100644 index 0a65f67f..00000000 --- a/src/quicktemplates2/qquickpage_p.h +++ /dev/null @@ -1,123 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPAGE_P_H -#define QQUICKPAGE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickpane_p.h> -#include <QtQml/qqmllist.h> - -QT_BEGIN_NAMESPACE - -class QQuickPagePrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPage : public QQuickPane -{ - Q_OBJECT - Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL) - Q_PROPERTY(QQuickItem *header READ header WRITE setHeader NOTIFY headerChanged FINAL) - Q_PROPERTY(QQuickItem *footer READ footer WRITE setFooter NOTIFY footerChanged FINAL) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal implicitHeaderWidth READ implicitHeaderWidth NOTIFY implicitHeaderWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitHeaderHeight READ implicitHeaderHeight NOTIFY implicitHeaderHeightChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitFooterWidth READ implicitFooterWidth NOTIFY implicitFooterWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitFooterHeight READ implicitFooterHeight NOTIFY implicitFooterHeightChanged FINAL REVISION(2, 5)) - QML_NAMED_ELEMENT(Page) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickPage(QQuickItem *parent = nullptr); - ~QQuickPage(); - - QString title() const; - void setTitle(const QString &title); - - QQuickItem *header() const; - void setHeader(QQuickItem *header); - - QQuickItem *footer() const; - void setFooter(QQuickItem *footer); - - // 2.5 (Qt 5.12) - qreal implicitHeaderWidth() const; - qreal implicitHeaderHeight() const; - - qreal implicitFooterWidth() const; - qreal implicitFooterHeight() const; - -Q_SIGNALS: - void titleChanged(); - void headerChanged(); - void footerChanged(); - // 2.5 (Qt 5.12) - void implicitHeaderWidthChanged(); - void implicitHeaderHeightChanged(); - void implicitFooterWidthChanged(); - void implicitFooterHeightChanged(); - -protected: - QQuickPage(QQuickPagePrivate &dd, QQuickItem *parent); - - void componentComplete() override; - - void spacingChange(qreal newSpacing, qreal oldSpacing) override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; - void accessibilityActiveChanged(bool active) override; -#endif - -private: - Q_DISABLE_COPY(QQuickPage) - Q_DECLARE_PRIVATE(QQuickPage) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPage) - -#endif // QQUICKPAGE_P_H diff --git a/src/quicktemplates2/qquickpage_p_p.h b/src/quicktemplates2/qquickpage_p_p.h deleted file mode 100644 index 6c8b0371..00000000 --- a/src/quicktemplates2/qquickpage_p_p.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPAGE_P_P_H -#define QQUICKPAGE_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickpane_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickPane; - -class QQuickPagePrivate : public QQuickPanePrivate -{ - Q_DECLARE_PUBLIC(QQuickPage) - -public: - void relayout(); - void resizeContent() override; - - void itemVisibilityChanged(QQuickItem *item) override; - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF & diff) override; - void itemDestroyed(QQuickItem *item) override; - - QString title; - QQuickItem *header = nullptr; - QQuickItem *footer = nullptr; - bool emittingImplicitSizeChangedSignals = false; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPAGE_P_P_H diff --git a/src/quicktemplates2/qquickpageindicator.cpp b/src/quicktemplates2/qquickpageindicator.cpp deleted file mode 100644 index 41caa234..00000000 --- a/src/quicktemplates2/qquickpageindicator.cpp +++ /dev/null @@ -1,352 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickpageindicator_p.h" -#include "qquickcontrol_p_p.h" - -#include <QtCore/qmath.h> -#include <QtQuick/private/qquickitem_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype PageIndicator - \inherits Control -//! \instantiates QQuickPageIndicator - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-indicators - \brief Indicates the currently active page. - - PageIndicator is used to indicate the currently active page - in a container of multiple pages. PageIndicator consists of - delegate items that present pages. - - \image qtquickcontrols2-pageindicator.png - - \code - Column { - StackLayout { - id: stackLayout - - Page { - // ... - } - Page { - // ... - } - Page { - // ... - } - } - - PageIndicator { - currentIndex: stackLayout.currentIndex - count: stackLayout.count - } - } - \endcode - - \sa SwipeView, {Customizing PageIndicator}, {Indicator Controls} -*/ - -class QQuickPageIndicatorPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickPageIndicator) - -public: - void handlePress(const QPointF &point, ulong timestamp) override; - void handleMove(const QPointF &point, ulong timestamp) override; - void handleRelease(const QPointF &point, ulong timestamp) override; - void handleUngrab() override; - - QQuickItem *itemAt(const QPointF &pos) const; - void updatePressed(bool pressed, const QPointF &pos = QPointF()); - void setContextProperty(QQuickItem *item, const QString &name, const QVariant &value); - - void itemChildAdded(QQuickItem *, QQuickItem *child) override; - - int count = 0; - int currentIndex = 0; - bool interactive = false; - QQmlComponent *delegate = nullptr; - QQuickItem *pressedItem = nullptr; -}; - -void QQuickPageIndicatorPrivate::handlePress(const QPointF &point, ulong timestamp) -{ - QQuickControlPrivate::handlePress(point, timestamp); - if (interactive) - updatePressed(true, point); -} - -void QQuickPageIndicatorPrivate::handleMove(const QPointF &point, ulong timestamp) -{ - QQuickControlPrivate::handleMove(point, timestamp); - if (interactive) - updatePressed(true, point); -} - -void QQuickPageIndicatorPrivate::handleRelease(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickPageIndicator); - QQuickControlPrivate::handleRelease(point, timestamp); - if (interactive) { - if (pressedItem && contentItem) - q->setCurrentIndex(contentItem->childItems().indexOf(pressedItem)); - updatePressed(false); - } -} - -void QQuickPageIndicatorPrivate::handleUngrab() -{ - QQuickControlPrivate::handleUngrab(); - if (interactive) - updatePressed(false); -} - -QQuickItem *QQuickPageIndicatorPrivate::itemAt(const QPointF &pos) const -{ - Q_Q(const QQuickPageIndicator); - if (!contentItem || !q->contains(pos)) - return nullptr; - - QPointF contentPos = q->mapToItem(contentItem, pos); - QQuickItem *item = contentItem->childAt(contentPos.x(), contentPos.y()); - while (item && item->parentItem() != contentItem) - item = item->parentItem(); - if (item && !QQuickItemPrivate::get(item)->isTransparentForPositioner()) - return item; - - // find the nearest - qreal distance = qInf(); - QQuickItem *nearest = nullptr; - const auto childItems = contentItem->childItems(); - for (QQuickItem *child : childItems) { - if (QQuickItemPrivate::get(child)->isTransparentForPositioner()) - continue; - - QPointF center = child->boundingRect().center(); - QPointF pt = contentItem->mapToItem(child, contentPos); - - qreal len = QLineF(center, pt).length(); - if (len < distance) { - distance = len; - nearest = child; - } - } - return nearest; -} - -void QQuickPageIndicatorPrivate::updatePressed(bool pressed, const QPointF &pos) -{ - QQuickItem *prevItem = pressedItem; - pressedItem = pressed ? itemAt(pos) : nullptr; - if (prevItem != pressedItem) { - setContextProperty(prevItem, QStringLiteral("pressed"), false); - setContextProperty(pressedItem, QStringLiteral("pressed"), pressed); - } -} - -void QQuickPageIndicatorPrivate::setContextProperty(QQuickItem *item, const QString &name, const QVariant &value) -{ - QQmlContext *context = qmlContext(item); - if (context && context->isValid()) { - context = context->parentContext(); - if (context && context->isValid()) - context->setContextProperty(name, value); - } -} - -void QQuickPageIndicatorPrivate::itemChildAdded(QQuickItem *, QQuickItem *child) -{ - if (!QQuickItemPrivate::get(child)->isTransparentForPositioner()) - setContextProperty(child, QStringLiteral("pressed"), false); -} - -QQuickPageIndicator::QQuickPageIndicator(QQuickItem *parent) - : QQuickControl(*(new QQuickPageIndicatorPrivate), parent) -{ -} - -/*! - \qmlproperty int QtQuick.Controls::PageIndicator::count - - This property holds the number of pages. -*/ -int QQuickPageIndicator::count() const -{ - Q_D(const QQuickPageIndicator); - return d->count; -} - -void QQuickPageIndicator::setCount(int count) -{ - Q_D(QQuickPageIndicator); - if (d->count == count) - return; - - d->count = count; - emit countChanged(); -} - -/*! - \qmlproperty int QtQuick.Controls::PageIndicator::currentIndex - - This property holds the index of the current page. -*/ -int QQuickPageIndicator::currentIndex() const -{ - Q_D(const QQuickPageIndicator); - return d->currentIndex; -} - -void QQuickPageIndicator::setCurrentIndex(int index) -{ - Q_D(QQuickPageIndicator); - if (d->currentIndex == index) - return; - - d->currentIndex = index; - emit currentIndexChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::PageIndicator::interactive - - This property holds whether the control is interactive. An interactive page indicator - reacts to presses and automatically changes the \l {currentIndex}{current index} - appropriately. - - \snippet qtquickcontrols2-pageindicator-interactive.qml 1 - - \note Page indicators are typically quite small (in order to avoid - distracting the user from the actual content of the user interface). They - can be hard to click, and might not be easily recognized as interactive by - the user. For these reasons, they are best used to complement primary - methods of navigation (such as \l SwipeView), not replace them. - - The default value is \c false. -*/ -bool QQuickPageIndicator::isInteractive() const -{ - Q_D(const QQuickPageIndicator); - return d->interactive; -} - -void QQuickPageIndicator::setInteractive(bool interactive) -{ - Q_D(QQuickPageIndicator); - if (d->interactive == interactive) - return; - - d->interactive = interactive; - if (interactive) { - setAcceptedMouseButtons(Qt::LeftButton); -#if QT_CONFIG(quicktemplates2_multitouch) - setAcceptTouchEvents(true); -#endif -#if QT_CONFIG(cursor) - setCursor(Qt::ArrowCursor); -#endif - } else { - setAcceptedMouseButtons(Qt::NoButton); -#if QT_CONFIG(quicktemplates2_multitouch) - setAcceptTouchEvents(true); -#endif -#if QT_CONFIG(cursor) - unsetCursor(); -#endif - } - emit interactiveChanged(); -} - -/*! - \qmlproperty Component QtQuick.Controls::PageIndicator::delegate - - This property holds a delegate that presents a page. - - The following properties are available in the context of each delegate: - \table - \row \li \b index : int \li The index of the item - \row \li \b pressed : bool \li Whether the item is pressed - \endtable -*/ -QQmlComponent *QQuickPageIndicator::delegate() const -{ - Q_D(const QQuickPageIndicator); - return d->delegate; -} - -void QQuickPageIndicator::setDelegate(QQmlComponent *delegate) -{ - Q_D(QQuickPageIndicator); - if (d->delegate == delegate) - return; - - d->delegate = delegate; - emit delegateChanged(); -} - -void QQuickPageIndicator::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_D(QQuickPageIndicator); - QQuickControl::contentItemChange(newItem, oldItem); - if (oldItem) - QQuickItemPrivate::get(oldItem)->removeItemChangeListener(d, QQuickItemPrivate::Children); - if (newItem) - QQuickItemPrivate::get(newItem)->addItemChangeListener(d, QQuickItemPrivate::Children); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickPageIndicator::touchEvent(QTouchEvent *event) -{ - Q_D(QQuickPageIndicator); - if (d->interactive) - QQuickControl::touchEvent(event); - else - event->ignore(); // QTBUG-61785 -} -#endif - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickPageIndicator::accessibleRole() const -{ - return QAccessible::Indicator; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickpageindicator_p.h b/src/quicktemplates2/qquickpageindicator_p.h deleted file mode 100644 index a21e88fe..00000000 --- a/src/quicktemplates2/qquickpageindicator_p.h +++ /dev/null @@ -1,109 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPAGEINDICATOR_P_H -#define QQUICKPAGEINDICATOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -QT_BEGIN_NAMESPACE - -class QQmlComponent; -class QQuickPageIndicatorPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPageIndicator : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(int count READ count WRITE setCount NOTIFY countChanged FINAL) - Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged FINAL) - Q_PROPERTY(bool interactive READ isInteractive WRITE setInteractive NOTIFY interactiveChanged FINAL) - Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL) - QML_NAMED_ELEMENT(PageIndicator) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickPageIndicator(QQuickItem *parent = nullptr); - - int count() const; - void setCount(int count); - - int currentIndex() const; - void setCurrentIndex(int index); - - bool isInteractive() const; - void setInteractive(bool interactive); - - QQmlComponent *delegate() const; - void setDelegate(QQmlComponent *delegate); - -Q_SIGNALS: - void countChanged(); - void currentIndexChanged(); - void interactiveChanged(); - void delegateChanged(); - -protected: - void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; - -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; -#endif - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickPageIndicator) - Q_DECLARE_PRIVATE(QQuickPageIndicator) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPageIndicator) - -#endif // QQUICKPAGEINDICATOR_P_H diff --git a/src/quicktemplates2/qquickpane.cpp b/src/quicktemplates2/qquickpane.cpp deleted file mode 100644 index e24eea8b..00000000 --- a/src/quicktemplates2/qquickpane.cpp +++ /dev/null @@ -1,426 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickpane_p.h" -#include "qquickpane_p_p.h" -#include "qquickcontentitem_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Pane - \inherits Control -//! \instantiates QQuickPane - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-containers - \ingroup qtquickcontrols2-focusscopes - \brief Provides a background matching with the application style and theme. - - Pane provides a background color that matches with the application style - and theme. Pane does not provide a layout of its own, but requires you to - position its contents, for instance by creating a \l RowLayout or a - \l ColumnLayout. - - Items declared as children of a Pane are automatically parented to the - Pane's \l[QtQuickControls2]{Control::}{contentItem}. Items created - dynamically need to be explicitly parented to the \c contentItem. - - \section1 Content Sizing - - If only a single item is used within a Pane, it will resize to fit the - implicit size of its contained item. This makes it particularly suitable - for use together with layouts. - - \image qtquickcontrols2-pane.png - - \snippet qtquickcontrols2-pane.qml 1 - - Sometimes there might be two items within the pane: - - \code - Pane { - SwipeView { - // ... - } - PageIndicator { - anchors.horizontalCenter: parent.horizontalCenter - anchors.bottom: parent.bottom - } - } - \endcode - - In this case, Pane cannot calculate a sensible implicit size. Since we're - anchoring the \l PageIndicator over the \l SwipeView, we can simply set the - content size to the view's implicit size: - - \code - Pane { - contentWidth: view.implicitWidth - contentHeight: view.implicitHeight - - SwipeView { - id: view - // ... - } - PageIndicator { - anchors.horizontalCenter: parent.horizontalCenter - anchors.bottom: parent.bottom - } - } - \endcode - - If the \l[QtQuickControls2]{Control::}{contentItem} has no implicit size - and only one child, Pane will use the implicit size of that child. For - example, in the following code, the Pane assumes the size of the Rectangle: - - \code - Pane { - Item { - Rectangle { - implicitWidth: 200 - implicitHeight: 200 - color: "salmon" - } - } - } - \endcode - - \sa {Customizing Pane}, {Container Controls}, - {Focus Management in Qt Quick Controls}, {Event Handling} -*/ - -void QQuickPanePrivate::init() -{ - Q_Q(QQuickPane); - q->setFlag(QQuickItem::ItemIsFocusScope); - q->setAcceptedMouseButtons(Qt::AllButtons); -#if QT_CONFIG(cursor) - q->setCursor(Qt::ArrowCursor); -#endif - connect(q, &QQuickControl::implicitContentWidthChanged, this, &QQuickPanePrivate::updateContentWidth); - connect(q, &QQuickControl::implicitContentHeightChanged, this, &QQuickPanePrivate::updateContentHeight); -} - -QList<QQuickItem *> QQuickPanePrivate::contentChildItems() const -{ - if (!contentItem) - return QList<QQuickItem *>(); - - return contentItem->childItems(); -} - -QQuickItem *QQuickPanePrivate::getContentItem() -{ - Q_Q(QQuickPane); - if (QQuickItem *item = QQuickControlPrivate::getContentItem()) - return item; - - return new QQuickContentItem(q); -} - -void QQuickPanePrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - QQuickControlPrivate::itemImplicitWidthChanged(item); - - if (item == firstChild) - updateImplicitContentWidth(); -} - -void QQuickPanePrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - QQuickControlPrivate::itemImplicitHeightChanged(item); - - if (item == firstChild) - updateImplicitContentHeight(); -} - -void QQuickPanePrivate::contentChildrenChange() -{ - Q_Q(QQuickPane); - QQuickItem *newFirstChild = contentChildItems().value(0); - if (newFirstChild != firstChild) { - if (firstChild) - removeImplicitSizeListener(firstChild); - if (newFirstChild) - addImplicitSizeListener(newFirstChild); - firstChild = newFirstChild; - } - - updateImplicitContentSize(); - emit q->contentChildrenChanged(); -} - -qreal QQuickPanePrivate::getContentWidth() const -{ - if (!contentItem) - return 0; - - const qreal cw = contentItem->implicitWidth(); - if (!qFuzzyIsNull(cw)) - return cw; - - const auto contentChildren = contentChildItems(); - if (contentChildren.count() == 1) - return contentChildren.first()->implicitWidth(); - - return 0; -} - -qreal QQuickPanePrivate::getContentHeight() const -{ - if (!contentItem) - return 0; - - const qreal ch = contentItem->implicitHeight(); - if (!qFuzzyIsNull(ch)) - return ch; - - const auto contentChildren = contentChildItems(); - if (contentChildren.count() == 1) - return contentChildren.first()->implicitHeight(); - - return 0; -} - -void QQuickPanePrivate::updateContentWidth() -{ - Q_Q(QQuickPane); - if (hasContentWidth || qFuzzyCompare(contentWidth, implicitContentWidth)) - return; - - const qreal oldContentWidth = contentWidth; - contentWidth = implicitContentWidth; - q->contentSizeChange(QSizeF(contentWidth, contentHeight), QSizeF(oldContentWidth, contentHeight)); - emit q->contentWidthChanged(); -} - -void QQuickPanePrivate::updateContentHeight() -{ - Q_Q(QQuickPane); - if (hasContentHeight || qFuzzyCompare(contentHeight, implicitContentHeight)) - return; - - const qreal oldContentHeight = contentHeight; - contentHeight = implicitContentHeight; - q->contentSizeChange(QSizeF(contentWidth, contentHeight), QSizeF(contentWidth, oldContentHeight)); - emit q->contentHeightChanged(); -} - -QQuickPane::QQuickPane(QQuickItem *parent) - : QQuickControl(*(new QQuickPanePrivate), parent) -{ - Q_D(QQuickPane); - d->init(); -} - -QQuickPane::~QQuickPane() -{ - Q_D(QQuickPane); - d->removeImplicitSizeListener(d->contentItem); - d->removeImplicitSizeListener(d->firstChild); -} - -QQuickPane::QQuickPane(QQuickPanePrivate &dd, QQuickItem *parent) - : QQuickControl(dd, parent) -{ - Q_D(QQuickPane); - d->init(); -} - -/*! - \qmlproperty real QtQuick.Controls::Pane::contentWidth - - This property holds the content width. It is used for calculating the total - implicit width of the pane. - - For more information, see \l {Content Sizing}. - - \sa contentHeight -*/ -qreal QQuickPane::contentWidth() const -{ - Q_D(const QQuickPane); - return d->contentWidth; -} - -void QQuickPane::setContentWidth(qreal width) -{ - Q_D(QQuickPane); - d->hasContentWidth = true; - if (qFuzzyCompare(d->contentWidth, width)) - return; - - const qreal oldWidth = d->contentWidth; - d->contentWidth = width; - contentSizeChange(QSizeF(width, d->contentHeight), QSizeF(oldWidth, d->contentHeight)); - emit contentWidthChanged(); -} - -void QQuickPane::resetContentWidth() -{ - Q_D(QQuickPane); - if (!d->hasContentWidth) - return; - - d->hasContentHeight = false; - d->updateContentWidth(); -} - -/*! - \qmlproperty real QtQuick.Controls::Pane::contentHeight - - This property holds the content height. It is used for calculating the total - implicit height of the pane. - - For more information, see \l {Content Sizing}. - - \sa contentWidth -*/ -qreal QQuickPane::contentHeight() const -{ - Q_D(const QQuickPane); - return d->contentHeight; -} - -void QQuickPane::setContentHeight(qreal height) -{ - Q_D(QQuickPane); - d->hasContentHeight = true; - if (qFuzzyCompare(d->contentHeight, height)) - return; - - const qreal oldHeight = d->contentHeight; - d->contentHeight = height; - contentSizeChange(QSizeF(d->contentWidth, height), QSizeF(d->contentWidth, oldHeight)); - emit contentHeightChanged(); -} - -void QQuickPane::resetContentHeight() -{ - Q_D(QQuickPane); - if (!d->hasContentHeight) - return; - - d->hasContentHeight = false; - d->updateContentHeight(); -} - -/*! - \qmlproperty list<Object> QtQuick.Controls::Pane::contentData - \qmldefault - - This property holds the list of content data. - - The list contains all objects that have been declared in QML as children - of the pane. - - \note Unlike \c contentChildren, \c contentData does include non-visual QML - objects. - - \sa Item::data, contentChildren -*/ -QQmlListProperty<QObject> QQuickPanePrivate::contentData() -{ - Q_Q(QQuickPane); - return QQmlListProperty<QObject>(q->contentItem(), nullptr, - QQuickItemPrivate::data_append, - QQuickItemPrivate::data_count, - QQuickItemPrivate::data_at, - QQuickItemPrivate::data_clear); -} - -/*! - \qmlproperty list<Item> QtQuick.Controls::Pane::contentChildren - - This property holds the list of content children. - - The list contains all items that have been declared in QML as children - of the pane. - - \note Unlike \c contentData, \c contentChildren does not include non-visual - QML objects. - - \sa Item::children, contentData -*/ -QQmlListProperty<QQuickItem> QQuickPanePrivate::contentChildren() -{ - Q_Q(QQuickPane); - return QQmlListProperty<QQuickItem>(q->contentItem(), nullptr, - QQuickItemPrivate::children_append, - QQuickItemPrivate::children_count, - QQuickItemPrivate::children_at, - QQuickItemPrivate::children_clear); -} - -void QQuickPane::componentComplete() -{ - Q_D(QQuickPane); - QQuickControl::componentComplete(); - d->updateImplicitContentSize(); -} - -void QQuickPane::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_D(QQuickPane); - QQuickControl::contentItemChange(newItem, oldItem); - if (oldItem) { - d->removeImplicitSizeListener(oldItem); - QObjectPrivate::disconnect(oldItem, &QQuickItem::childrenChanged, d, &QQuickPanePrivate::contentChildrenChange); - } - if (newItem) { - d->addImplicitSizeListener(newItem); - QObjectPrivate::connect(newItem, &QQuickItem::childrenChanged, d, &QQuickPanePrivate::contentChildrenChange); - } - d->contentChildrenChange(); -} - -void QQuickPane::contentSizeChange(const QSizeF &newSize, const QSizeF &oldSize) -{ - Q_UNUSED(newSize); - Q_UNUSED(oldSize); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickPane::accessibleRole() const -{ - return QAccessible::Pane; -} -#endif - -QT_END_NAMESPACE - -#include "moc_qquickpane_p.cpp" diff --git a/src/quicktemplates2/qquickpane_p.h b/src/quicktemplates2/qquickpane_p.h deleted file mode 100644 index 2aeb94cd..00000000 --- a/src/quicktemplates2/qquickpane_p.h +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPANE_P_H -#define QQUICKPANE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> -#include <QtQml/qqmllist.h> - -QT_BEGIN_NAMESPACE - -class QQuickPanePrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPane : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth RESET resetContentWidth NOTIFY contentWidthChanged FINAL) - Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight RESET resetContentHeight NOTIFY contentHeightChanged FINAL) - Q_PRIVATE_PROPERTY(QQuickPane::d_func(), QQmlListProperty<QObject> contentData READ contentData FINAL) - Q_PRIVATE_PROPERTY(QQuickPane::d_func(), QQmlListProperty<QQuickItem> contentChildren READ contentChildren NOTIFY contentChildrenChanged FINAL) - Q_CLASSINFO("DefaultProperty", "contentData") - QML_NAMED_ELEMENT(Pane) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickPane(QQuickItem *parent = nullptr); - ~QQuickPane(); - - qreal contentWidth() const; - void setContentWidth(qreal width); - void resetContentWidth(); - - qreal contentHeight() const; - void setContentHeight(qreal height); - void resetContentHeight(); - -Q_SIGNALS: - void contentWidthChanged(); - void contentHeightChanged(); - void contentChildrenChanged(); - -protected: - QQuickPane(QQuickPanePrivate &dd, QQuickItem *parent); - - void componentComplete() override; - - void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; - virtual void contentSizeChange(const QSizeF &newSize, const QSizeF &oldSize); - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickPane) - Q_DECLARE_PRIVATE(QQuickPane) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPane) - -#endif // QQUICKPANE_P_H diff --git a/src/quicktemplates2/qquickpane_p_p.h b/src/quicktemplates2/qquickpane_p_p.h deleted file mode 100644 index 7dac4f3c..00000000 --- a/src/quicktemplates2/qquickpane_p_p.h +++ /dev/null @@ -1,90 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPANE_P_P_H -#define QQUICKPANE_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickPane; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPanePrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickPane) - -public: - void init(); - - virtual QQmlListProperty<QObject> contentData(); - virtual QQmlListProperty<QQuickItem> contentChildren(); - virtual QList<QQuickItem *> contentChildItems() const; - - QQuickItem *getContentItem() override; - - qreal getContentWidth() const override; - qreal getContentHeight() const override; - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - void contentChildrenChange(); - - virtual void updateContentWidth(); - void updateContentHeight(); - - bool hasContentWidth = false; - bool hasContentHeight = false; - qreal contentWidth = 0; - qreal contentHeight = 0; - QQuickItem *firstChild = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPANE_P_P_H diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp deleted file mode 100644 index cb78d634..00000000 --- a/src/quicktemplates2/qquickpopup.cpp +++ /dev/null @@ -1,2771 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickpopup_p.h" -#include "qquickpopup_p_p.h" -#include "qquickpopupanchors_p.h" -#include "qquickpopupitem_p_p.h" -#include "qquickpopuppositioner_p_p.h" -#include "qquickapplicationwindow_p.h" -#include "qquickoverlay_p_p.h" -#include "qquickcontrol_p_p.h" -#include "qquickdialog_p.h" - -#include <QtCore/qloggingcategory.h> -#include <QtQml/qqmlinfo.h> -#include <QtQuick/qquickitem.h> -#include <QtQuick/private/qquicktransition_p.h> -#include <QtQuick/private/qquickitem_p.h> - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcDimmer, "qt.quick.controls.popup.dimmer") -Q_LOGGING_CATEGORY(lcPopup, "qt.quick.controls.popup") - -/*! - \qmltype Popup - \inherits QtObject -//! \instantiates QQuickPopup - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-popups - \ingroup qtquickcontrols2-focusscopes - \brief Base type of popup-like user interface controls. - - Popup is the base type of popup-like user interface controls. It can be - used with \l Window or \l ApplicationWindow. - - \qml - import QtQuick.Window 2.2 - import QtQuick.Controls 2.12 - - ApplicationWindow { - id: window - width: 400 - height: 400 - visible: true - - Button { - text: "Open" - onClicked: popup.open() - } - - Popup { - id: popup - x: 100 - y: 100 - width: 200 - height: 300 - modal: true - focus: true - closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent - } - } - \endqml - - In order to ensure that a popup is displayed above other items in the - scene, it is recommended to use ApplicationWindow. ApplicationWindow also - provides background dimming effects. - - Popup does not provide a layout of its own, but requires you to position - its contents, for instance by creating a \l RowLayout or a \l ColumnLayout. - - Items declared as children of a Popup are automatically parented to the - Popups's \l contentItem. Items created dynamically need to be explicitly - parented to the contentItem. - - \section1 Popup Layout - - The following diagram illustrates the layout of a popup within a window: - - \image qtquickcontrols2-popup.png - - The \l implicitWidth and \l implicitHeight of a popup are typically based - on the implicit sizes of the background and the content item plus any insets - and paddings. These properties determine how large the popup will be when no - explicit \l width or \l height is specified. - - The geometry of the \l contentItem is determined by the padding. The following - example reserves 10px padding between the boundaries of the popup and its content: - - \code - Popup { - padding: 10 - - contentItem: Text { - text: "Content" - } - } - \endcode - - The \l background item fills the entire width and height of the popup, - unless insets or an explicit size have been given for it. - - Negative insets can be used to make the background larger than the popup. - The following example uses negative insets to place a shadow outside the - popup's boundaries: - - \code - Popup { - topInset: -2 - leftInset: -2 - rightInset: -6 - bottomInset: -6 - - background: BorderImage { - source: ":/images/shadowed-background.png" - } - } - \endcode - - \section1 Popup Sizing - - If only a single item is used within a Popup, it will resize to fit the - implicit size of its contained item. This makes it particularly suitable - for use together with layouts. - - \code - Popup { - ColumnLayout { - anchors.fill: parent - CheckBox { text: qsTr("E-mail") } - CheckBox { text: qsTr("Calendar") } - CheckBox { text: qsTr("Contacts") } - } - } - \endcode - - Sometimes there might be two items within the popup: - - \code - Popup { - SwipeView { - // ... - } - PageIndicator { - anchors.horizontalCenter: parent.horizontalCenter - anchors.bottom: parent.bottom - } - } - \endcode - - In this case, Popup cannot calculate a sensible implicit size. Since we're - anchoring the \l PageIndicator over the \l SwipeView, we can simply set the - content size to the view's implicit size: - - \code - Popup { - contentWidth: view.implicitWidth - contentHeight: view.implicitHeight - - SwipeView { - id: view - // ... - } - PageIndicator { - anchors.horizontalCenter: parent.horizontalCenter - anchors.bottom: parent.bottom - } - } - \endcode - - \section1 Popup Positioning - - Similar to items in Qt Quick, Popup's \l x and \l y coordinates are - relative to its parent. This means that opening a popup that is a - child of a \l Button, for example, will cause the popup to be positioned - relative to the button. - - \include qquickoverlay-popup-parent.qdocinc - - Another way to center a popup in the window regardless of its parent item - is to use \l {anchors.centerIn}: - - \snippet qtquickcontrols2-popup.qml centerIn - - To ensure that the popup is positioned within the bounds of the enclosing - window, the \l margins property can be set to a non-negative value. - - \section1 Popup Transitions - - Since Qt 5.15.3 the following properties are restored to their original values from before - the enter transition after the exit transition is completed. - - \list - \li \l opacity - \li \l scale - \endlist - - This allows the built-in styles to animate on these properties without losing any explicitly - defined value. - - \sa {Popup Controls}, {Customizing Popup}, ApplicationWindow -*/ - -/*! - \qmlsignal void QtQuick.Controls::Popup::opened() - - This signal is emitted when the popup is opened. - - \sa aboutToShow() -*/ - -/*! - \qmlsignal void QtQuick.Controls::Popup::closed() - - This signal is emitted when the popup is closed. - - \sa aboutToHide() -*/ - -/*! - \qmlsignal void QtQuick.Controls::Popup::aboutToShow() - - This signal is emitted when the popup is about to show. - - \sa opened() -*/ - -/*! - \qmlsignal void QtQuick.Controls::Popup::aboutToHide() - - This signal is emitted when the popup is about to hide. - - \sa closed() -*/ - -const QQuickPopup::ClosePolicy QQuickPopupPrivate::DefaultClosePolicy = QQuickPopup::CloseOnEscape | QQuickPopup::CloseOnPressOutside; - -QQuickPopupPrivate::QQuickPopupPrivate() - : transitionManager(this) -{ -} - -void QQuickPopupPrivate::init() -{ - Q_Q(QQuickPopup); - createPopupItem(); - popupItem->setVisible(false); - q->setParentItem(qobject_cast<QQuickItem *>(parent)); - connectToPopupItem(); -} - -void QQuickPopupPrivate::createPopupItem() -{ - Q_Q(QQuickPopup); - popupItem = new QQuickPopupItem(q); -} - -void QQuickPopupPrivate::connectToPopupItem() -{ - Q_Q(QQuickPopup); - QObject::connect(popupItem, &QQuickControl::paddingChanged, q, &QQuickPopup::paddingChanged); - QObject::connect(popupItem, &QQuickControl::backgroundChanged, q, &QQuickPopup::backgroundChanged); - QObject::connect(popupItem, &QQuickControl::contentItemChanged, q, &QQuickPopup::contentItemChanged); - QObject::connect(popupItem, &QQuickControl::implicitContentWidthChanged, q, &QQuickPopup::implicitContentWidthChanged); - QObject::connect(popupItem, &QQuickControl::implicitContentHeightChanged, q, &QQuickPopup::implicitContentHeightChanged); - QObject::connect(popupItem, &QQuickControl::implicitBackgroundWidthChanged, q, &QQuickPopup::implicitBackgroundWidthChanged); - QObject::connect(popupItem, &QQuickControl::implicitBackgroundHeightChanged, q, &QQuickPopup::implicitBackgroundHeightChanged); -} - -void QQuickPopupPrivate::closeOrReject() -{ - Q_Q(QQuickPopup); - if (QQuickDialog *dialog = qobject_cast<QQuickDialog*>(q)) - dialog->reject(); - else - q->close(); -} - -bool QQuickPopupPrivate::tryClose(const QPointF &pos, QQuickPopup::ClosePolicy flags) -{ - if (!interactive) - return false; - - static const QQuickPopup::ClosePolicy outsideFlags = QQuickPopup::CloseOnPressOutside | QQuickPopup::CloseOnReleaseOutside; - static const QQuickPopup::ClosePolicy outsideParentFlags = QQuickPopup::CloseOnPressOutsideParent | QQuickPopup::CloseOnReleaseOutsideParent; - - const bool onOutside = closePolicy & (flags & outsideFlags); - const bool onOutsideParent = closePolicy & (flags & outsideParentFlags); - if (onOutside || onOutsideParent) { - if (!contains(pos)) { - if (!onOutsideParent || !parentItem || !parentItem->contains(parentItem->mapFromScene(pos))) { - closeOrReject(); - return true; - } - } - } - return false; -} - -bool QQuickPopupPrivate::contains(const QPointF &scenePos) const -{ - return popupItem->contains(popupItem->mapFromScene(scenePos)); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -bool QQuickPopupPrivate::acceptTouch(const QTouchEvent::TouchPoint &point) -{ - if (point.id() == touchId) - return true; - - if (touchId == -1 && point.state() != QEventPoint::Released) { - touchId = point.id(); - return true; - } - - return false; -} -#endif - -bool QQuickPopupPrivate::blockInput(QQuickItem *item, const QPointF &point) const -{ - // don't block presses and releases - // a) outside a non-modal popup, - // b) to popup children/content, or - // b) outside a modal popups's background dimming - return modal && !popupItem->isAncestorOf(item) && (!dimmer || dimmer->contains(dimmer->mapFromScene(point))); -} - -bool QQuickPopupPrivate::handlePress(QQuickItem *item, const QPointF &point, ulong timestamp) -{ - Q_UNUSED(timestamp); - pressPoint = point; - tryClose(point, QQuickPopup::CloseOnPressOutside | QQuickPopup::CloseOnPressOutsideParent); - return blockInput(item, point); -} - -bool QQuickPopupPrivate::handleMove(QQuickItem *item, const QPointF &point, ulong timestamp) -{ - Q_UNUSED(timestamp); - return blockInput(item, point); -} - -bool QQuickPopupPrivate::handleRelease(QQuickItem *item, const QPointF &point, ulong timestamp) -{ - Q_UNUSED(timestamp); - if (item != popupItem && !contains(pressPoint)) - tryClose(point, QQuickPopup::CloseOnReleaseOutside | QQuickPopup::CloseOnReleaseOutsideParent); - pressPoint = QPointF(); - touchId = -1; - return blockInput(item, point); -} - -void QQuickPopupPrivate::handleUngrab() -{ - Q_Q(QQuickPopup); - QQuickOverlay *overlay = QQuickOverlay::overlay(window); - if (overlay) { - QQuickOverlayPrivate *p = QQuickOverlayPrivate::get(overlay); - if (p->mouseGrabberPopup == q) - p->mouseGrabberPopup = nullptr; - } - pressPoint = QPointF(); - touchId = -1; -} - -bool QQuickPopupPrivate::handleMouseEvent(QQuickItem *item, QMouseEvent *event) -{ - switch (event->type()) { - case QEvent::MouseButtonPress: - return handlePress(item, event->scenePosition(), event->timestamp()); - case QEvent::MouseMove: - return handleMove(item, event->scenePosition(), event->timestamp()); - case QEvent::MouseButtonRelease: - return handleRelease(item, event->scenePosition(), event->timestamp()); - default: - Q_UNREACHABLE(); - return false; - } -} - -bool QQuickPopupPrivate::handleHoverEvent(QQuickItem *item, QHoverEvent *event) -{ - switch (event->type()) { - case QEvent::HoverEnter: - case QEvent::HoverMove: - case QEvent::HoverLeave: - return blockInput(item, event->scenePosition()); - default: - Q_UNREACHABLE(); - return false; - } -} - -#if QT_CONFIG(quicktemplates2_multitouch) -bool QQuickPopupPrivate::handleTouchEvent(QQuickItem *item, QTouchEvent *event) -{ - switch (event->type()) { - case QEvent::TouchBegin: - case QEvent::TouchUpdate: - case QEvent::TouchEnd: - for (const QTouchEvent::TouchPoint &point : event->points()) { - if (!acceptTouch(point)) - return blockInput(item, point.position()); - - switch (point.state()) { - case QEventPoint::Pressed: - return handlePress(item, item->mapToScene(point.position()), event->timestamp()); - case QEventPoint::Updated: - return handleMove(item, item->mapToScene(point.position()), event->timestamp()); - case QEventPoint::Released: - return handleRelease(item, item->mapToScene(point.position()), event->timestamp()); - default: - break; - } - } - break; - - case QEvent::TouchCancel: - handleUngrab(); - break; - - default: - break; - } - - return false; -} -#endif - -bool QQuickPopupPrivate::prepareEnterTransition() -{ - Q_Q(QQuickPopup); - if (!window) { - qmlWarning(q) << "cannot find any window to open popup in."; - return false; - } - - if (transitionState == EnterTransition && transitionManager.isRunning()) - return false; - - if (transitionState != EnterTransition) { - popupItem->setParentItem(QQuickOverlay::overlay(window)); - if (dim) - createOverlay(); - showOverlay(); - emit q->aboutToShow(); - visible = true; - transitionState = EnterTransition; - popupItem->setVisible(true); - getPositioner()->setParentItem(parentItem); - emit q->visibleChanged(); - } - return true; -} - -bool QQuickPopupPrivate::prepareExitTransition() -{ - Q_Q(QQuickPopup); - if (transitionState == ExitTransition && transitionManager.isRunning()) - return false; - - // We need to cache the original scale and opacity values so we can reset it after - // the exit transition is done so they have the original values again - prevScale = popupItem->scale(); - prevOpacity = popupItem->opacity(); - - if (transitionState != ExitTransition) { - // The setFocus(false) call below removes any active focus before we're - // able to check it in finalizeExitTransition. - if (!hadActiveFocusBeforeExitTransition) - hadActiveFocusBeforeExitTransition = popupItem->hasActiveFocus(); - if (focus) - popupItem->setFocus(false); - transitionState = ExitTransition; - hideOverlay(); - emit q->aboutToHide(); - emit q->openedChanged(); - } - return true; -} - -void QQuickPopupPrivate::finalizeEnterTransition() -{ - Q_Q(QQuickPopup); - if (focus) - popupItem->setFocus(true); - transitionState = NoTransition; - getPositioner()->reposition(); - emit q->openedChanged(); - opened(); -} - -void QQuickPopupPrivate::finalizeExitTransition() -{ - Q_Q(QQuickPopup); - getPositioner()->setParentItem(nullptr); - if (popupItem) { - popupItem->setParentItem(nullptr); - popupItem->setVisible(false); - } - destroyOverlay(); - - if (hadActiveFocusBeforeExitTransition && window) { - // restore focus to the next popup in chain, or to the window content if there are no other popups open - QQuickPopup *nextFocusPopup = nullptr; - if (QQuickOverlay *overlay = QQuickOverlay::overlay(window)) { - const auto stackingOrderPopups = QQuickOverlayPrivate::get(overlay)->stackingOrderPopups(); - for (auto popup : stackingOrderPopups) { - if (QQuickPopupPrivate::get(popup)->transitionState != ExitTransition) { - nextFocusPopup = popup; - break; - } - } - } - if (nextFocusPopup && nextFocusPopup->hasFocus()) { - nextFocusPopup->forceActiveFocus(); - } else { - QQuickApplicationWindow *applicationWindow = qobject_cast<QQuickApplicationWindow*>(window); - if (applicationWindow) - applicationWindow->contentItem()->setFocus(true); - else - window->contentItem()->setFocus(true); - } - } - - visible = false; - transitionState = NoTransition; - hadActiveFocusBeforeExitTransition = false; - emit q->visibleChanged(); - emit q->closed(); - if (popupItem) { - popupItem->setScale(prevScale); - popupItem->setOpacity(prevOpacity); - } -} - -void QQuickPopupPrivate::opened() -{ - Q_Q(QQuickPopup); - emit q->opened(); -} - -QMarginsF QQuickPopupPrivate::getMargins() const -{ - Q_Q(const QQuickPopup); - return QMarginsF(q->leftMargin(), q->topMargin(), q->rightMargin(), q->bottomMargin()); -} - -void QQuickPopupPrivate::setTopMargin(qreal value, bool reset) -{ - Q_Q(QQuickPopup); - qreal oldMargin = q->topMargin(); - topMargin = value; - hasTopMargin = !reset; - if ((!reset && !qFuzzyCompare(oldMargin, value)) || (reset && !qFuzzyCompare(oldMargin, margins))) { - emit q->topMarginChanged(); - q->marginsChange(QMarginsF(leftMargin, topMargin, rightMargin, bottomMargin), - QMarginsF(leftMargin, oldMargin, rightMargin, bottomMargin)); - } -} - -void QQuickPopupPrivate::setLeftMargin(qreal value, bool reset) -{ - Q_Q(QQuickPopup); - qreal oldMargin = q->leftMargin(); - leftMargin = value; - hasLeftMargin = !reset; - if ((!reset && !qFuzzyCompare(oldMargin, value)) || (reset && !qFuzzyCompare(oldMargin, margins))) { - emit q->leftMarginChanged(); - q->marginsChange(QMarginsF(leftMargin, topMargin, rightMargin, bottomMargin), - QMarginsF(oldMargin, topMargin, rightMargin, bottomMargin)); - } -} - -void QQuickPopupPrivate::setRightMargin(qreal value, bool reset) -{ - Q_Q(QQuickPopup); - qreal oldMargin = q->rightMargin(); - rightMargin = value; - hasRightMargin = !reset; - if ((!reset && !qFuzzyCompare(oldMargin, value)) || (reset && !qFuzzyCompare(oldMargin, margins))) { - emit q->rightMarginChanged(); - q->marginsChange(QMarginsF(leftMargin, topMargin, rightMargin, bottomMargin), - QMarginsF(leftMargin, topMargin, oldMargin, bottomMargin)); - } -} - -void QQuickPopupPrivate::setBottomMargin(qreal value, bool reset) -{ - Q_Q(QQuickPopup); - qreal oldMargin = q->bottomMargin(); - bottomMargin = value; - hasBottomMargin = !reset; - if ((!reset && !qFuzzyCompare(oldMargin, value)) || (reset && !qFuzzyCompare(oldMargin, margins))) { - emit q->bottomMarginChanged(); - q->marginsChange(QMarginsF(leftMargin, topMargin, rightMargin, bottomMargin), - QMarginsF(leftMargin, topMargin, rightMargin, oldMargin)); - } -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty Object QtQuick.Controls::Popup::anchors.centerIn - - Anchors provide a way to position an item by specifying its - relationship with other items. - - A common use case is to center a popup within its parent. One way to do - this is with the \l[QtQuick]{Item::}{x} and \l[QtQuick]{Item::}{y} properties. Anchors offer - a more convenient approach: - - \qml - Pane { - // ... - - Popup { - anchors.centerIn: parent - } - } - \endqml - - It is also possible to center the popup in the window by using \l Overlay: - - \snippet qtquickcontrols2-popup.qml centerIn - - This makes it easy to center a popup in the window from any component. - - \note Popups can only be centered within their immediate parent or - the window overlay; trying to center in other items will produce a warning. - - \sa {Popup Positioning}, {Item::}{anchors}, {Using Qt Quick Controls types - in property declarations} -*/ -QQuickPopupAnchors *QQuickPopupPrivate::getAnchors() -{ - Q_Q(QQuickPopup); - if (!anchors) - anchors = new QQuickPopupAnchors(q); - return anchors; -} - -QQuickPopupPositioner *QQuickPopupPrivate::getPositioner() -{ - Q_Q(QQuickPopup); - if (!positioner) - positioner = new QQuickPopupPositioner(q); - return positioner; -} - -void QQuickPopupPrivate::setWindow(QQuickWindow *newWindow) -{ - Q_Q(QQuickPopup); - if (window == newWindow) - return; - - if (window) { - QQuickOverlay *overlay = QQuickOverlay::overlay(window); - if (overlay) - QQuickOverlayPrivate::get(overlay)->removePopup(q); - } - - window = newWindow; - - if (newWindow) { - QQuickOverlay *overlay = QQuickOverlay::overlay(newWindow); - if (overlay) - QQuickOverlayPrivate::get(overlay)->addPopup(q); - - QQuickControlPrivate *p = QQuickControlPrivate::get(popupItem); - p->resolveFont(); - if (QQuickApplicationWindow *appWindow = qobject_cast<QQuickApplicationWindow *>(newWindow)) - p->updateLocale(appWindow->locale(), false); // explicit=false - } - - emit q->windowChanged(newWindow); - - if (complete && visible && window) - transitionManager.transitionEnter(); -} - -void QQuickPopupPrivate::itemDestroyed(QQuickItem *item) -{ - Q_Q(QQuickPopup); - if (item == parentItem) - q->setParentItem(nullptr); -} - -void QQuickPopupPrivate::reposition() -{ - getPositioner()->reposition(); -} - -QPalette QQuickPopupPrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::System); -} - -static QQuickItem *createDimmer(QQmlComponent *component, QQuickPopup *popup, QQuickItem *parent) -{ - QQuickItem *item = nullptr; - if (component) { - QQmlContext *creationContext = component->creationContext(); - if (!creationContext) - creationContext = qmlContext(popup); - QQmlContext *context = new QQmlContext(creationContext, popup); - context->setContextObject(popup); - item = qobject_cast<QQuickItem*>(component->beginCreate(context)); - } - - // when there is no overlay component available (with plain QQuickWindow), - // use a plain QQuickItem as a fallback to block hover events - if (!item && popup->isModal()) - item = new QQuickItem; - - if (item) { - item->setOpacity(popup->isVisible() ? 1.0 : 0.0); - item->setParentItem(parent); - item->stackBefore(popup->popupItem()); - item->setZ(popup->z()); - if (popup->isModal()) { - item->setAcceptedMouseButtons(Qt::AllButtons); -#if QT_CONFIG(cursor) - item->setCursor(Qt::ArrowCursor); -#endif -#if QT_CONFIG(quicktemplates2_hover) - // TODO: switch to QStyleHints::useHoverEffects in Qt 5.8 - item->setAcceptHoverEvents(true); - // item->setAcceptHoverEvents(QGuiApplication::styleHints()->useHoverEffects()); - // connect(QGuiApplication::styleHints(), &QStyleHints::useHoverEffectsChanged, item, &QQuickItem::setAcceptHoverEvents); -#endif - } - if (component) - component->completeCreate(); - } - qCDebug(lcDimmer) << "finished creating dimmer from component" << component - << "for popup" << popup << "with parent" << parent << "- item is:" << item; - return item; -} - -void QQuickPopupPrivate::createOverlay() -{ - Q_Q(QQuickPopup); - QQuickOverlay *overlay = QQuickOverlay::overlay(window); - if (!overlay) - return; - - QQmlComponent *component = nullptr; - QQuickOverlayAttached *overlayAttached = qobject_cast<QQuickOverlayAttached *>(qmlAttachedPropertiesObject<QQuickOverlay>(q, false)); - if (overlayAttached) - component = modal ? overlayAttached->modal() : overlayAttached->modeless(); - - if (!component) - component = modal ? overlay->modal() : overlay->modeless(); - - if (!dimmer) - dimmer = createDimmer(component, q, overlay); - resizeOverlay(); -} - -void QQuickPopupPrivate::destroyOverlay() -{ - if (dimmer) { - qCDebug(lcDimmer) << "destroying dimmer" << dimmer; - dimmer->setParentItem(nullptr); - dimmer->deleteLater(); - dimmer = nullptr; - } -} - -void QQuickPopupPrivate::toggleOverlay() -{ - destroyOverlay(); - if (dim) - createOverlay(); -} - -void QQuickPopupPrivate::showOverlay() -{ - // use QQmlProperty instead of QQuickItem::setOpacity() to trigger QML Behaviors - if (dim && dimmer) - QQmlProperty::write(dimmer, QStringLiteral("opacity"), 1.0); -} - -void QQuickPopupPrivate::hideOverlay() -{ - // use QQmlProperty instead of QQuickItem::setOpacity() to trigger QML Behaviors - if (dim && dimmer) - QQmlProperty::write(dimmer, QStringLiteral("opacity"), 0.0); -} - -void QQuickPopupPrivate::resizeOverlay() -{ - if (!dimmer) - return; - - qreal w = window ? window->width() : 0; - qreal h = window ? window->height() : 0; - dimmer->setSize(QSizeF(w, h)); -} - -QQuickPopupTransitionManager::QQuickPopupTransitionManager(QQuickPopupPrivate *popup) - : popup(popup) -{ -} - -void QQuickPopupTransitionManager::transitionEnter() -{ - if (popup->transitionState == QQuickPopupPrivate::ExitTransition) - cancel(); - - if (!popup->prepareEnterTransition()) - return; - - if (popup->window) - transition(popup->enterActions, popup->enter, popup->q_func()); - else - finished(); -} - -void QQuickPopupTransitionManager::transitionExit() -{ - if (!popup->prepareExitTransition()) - return; - - if (popup->window) - transition(popup->exitActions, popup->exit, popup->q_func()); - else - finished(); -} - -void QQuickPopupTransitionManager::finished() -{ - if (popup->transitionState == QQuickPopupPrivate::EnterTransition) - popup->finalizeEnterTransition(); - else if (popup->transitionState == QQuickPopupPrivate::ExitTransition) - popup->finalizeExitTransition(); -} - -QQuickPopup::QQuickPopup(QObject *parent) - : QObject(*(new QQuickPopupPrivate), parent) -{ - Q_D(QQuickPopup); - d->init(); -} - -QQuickPopup::QQuickPopup(QQuickPopupPrivate &dd, QObject *parent) - : QObject(dd, parent) -{ - dd.init(); -} - -QQuickPopup::~QQuickPopup() -{ - Q_D(QQuickPopup); - setParentItem(nullptr); - d->popupItem->ungrabShortcut(); - - // If the popup is destroyed before the exit transition finishes, - // the necessary cleanup (removing modal dimmers that block mouse events, - // emitting closed signal, etc.) won't happen. That's why we do it manually here. - if (d->transitionState == QQuickPopupPrivate::ExitTransition && d->transitionManager.isRunning()) - d->finalizeExitTransition(); - - delete d->popupItem; - d->popupItem = nullptr; - delete d->positioner; - d->positioner = nullptr; -} - -/*! - \qmlmethod void QtQuick.Controls::Popup::open() - - Opens the popup. - - \sa visible -*/ -void QQuickPopup::open() -{ - setVisible(true); -} - -/*! - \qmlmethod void QtQuick.Controls::Popup::close() - - Closes the popup. - - \sa visible -*/ -void QQuickPopup::close() -{ - setVisible(false); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::x - - This property holds the x-coordinate of the popup. - - \sa y, z -*/ -qreal QQuickPopup::x() const -{ - Q_D(const QQuickPopup); - return d->effectiveX; -} - -void QQuickPopup::setX(qreal x) -{ - Q_D(QQuickPopup); - setPosition(QPointF(x, d->y)); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::y - - This property holds the y-coordinate of the popup. - - \sa x, z -*/ -qreal QQuickPopup::y() const -{ - Q_D(const QQuickPopup); - return d->effectiveY; -} - -void QQuickPopup::setY(qreal y) -{ - Q_D(QQuickPopup); - setPosition(QPointF(d->x, y)); -} - -QPointF QQuickPopup::position() const -{ - Q_D(const QQuickPopup); - return QPointF(d->effectiveX, d->effectiveY); -} - -void QQuickPopup::setPosition(const QPointF &pos) -{ - Q_D(QQuickPopup); - const bool xChange = !qFuzzyCompare(d->x, pos.x()); - const bool yChange = !qFuzzyCompare(d->y, pos.y()); - if (!xChange && !yChange) - return; - - d->x = pos.x(); - d->y = pos.y(); - if (d->popupItem->isVisible()) { - d->reposition(); - } else { - if (xChange) - emit xChanged(); - if (yChange) - emit yChanged(); - } -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::z - - This property holds the z-value of the popup. Z-value determines - the stacking order of popups. - - If two visible popups have the same z-value, the last one that - was opened will be on top. - - The default z-value is \c 0. - - \sa x, y -*/ -qreal QQuickPopup::z() const -{ - Q_D(const QQuickPopup); - return d->popupItem->z(); -} - -void QQuickPopup::setZ(qreal z) -{ - Q_D(QQuickPopup); - if (qFuzzyCompare(z, d->popupItem->z())) - return; - d->popupItem->setZ(z); - emit zChanged(); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::width - - This property holds the width of the popup. -*/ -qreal QQuickPopup::width() const -{ - Q_D(const QQuickPopup); - return d->popupItem->width(); -} - -void QQuickPopup::setWidth(qreal width) -{ - Q_D(QQuickPopup); - d->hasWidth = true; - d->popupItem->setWidth(width); -} - -void QQuickPopup::resetWidth() -{ - Q_D(QQuickPopup); - if (!d->hasWidth) - return; - - d->hasWidth = false; - d->popupItem->resetWidth(); - if (d->popupItem->isVisible()) - d->reposition(); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::height - - This property holds the height of the popup. -*/ -qreal QQuickPopup::height() const -{ - Q_D(const QQuickPopup); - return d->popupItem->height(); -} - -void QQuickPopup::setHeight(qreal height) -{ - Q_D(QQuickPopup); - d->hasHeight = true; - d->popupItem->setHeight(height); -} - -void QQuickPopup::resetHeight() -{ - Q_D(QQuickPopup); - if (!d->hasHeight) - return; - - d->hasHeight = false; - d->popupItem->resetHeight(); - if (d->popupItem->isVisible()) - d->reposition(); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::implicitWidth - - This property holds the implicit width of the popup. -*/ -qreal QQuickPopup::implicitWidth() const -{ - Q_D(const QQuickPopup); - return d->popupItem->implicitWidth(); -} - -void QQuickPopup::setImplicitWidth(qreal width) -{ - Q_D(QQuickPopup); - d->popupItem->setImplicitWidth(width); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::implicitHeight - - This property holds the implicit height of the popup. -*/ -qreal QQuickPopup::implicitHeight() const -{ - Q_D(const QQuickPopup); - return d->popupItem->implicitHeight(); -} - -void QQuickPopup::setImplicitHeight(qreal height) -{ - Q_D(QQuickPopup); - d->popupItem->setImplicitHeight(height); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::contentWidth - - This property holds the content width. It is used for calculating the - total implicit width of the Popup. - - For more information, see \l {Popup Sizing}. - - \sa contentHeight -*/ -qreal QQuickPopup::contentWidth() const -{ - Q_D(const QQuickPopup); - return d->popupItem->contentWidth(); -} - -void QQuickPopup::setContentWidth(qreal width) -{ - Q_D(QQuickPopup); - d->popupItem->setContentWidth(width); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::contentHeight - - This property holds the content height. It is used for calculating the - total implicit height of the Popup. - - For more information, see \l {Popup Sizing}. - - \sa contentWidth -*/ -qreal QQuickPopup::contentHeight() const -{ - Q_D(const QQuickPopup); - return d->popupItem->contentHeight(); -} - -void QQuickPopup::setContentHeight(qreal height) -{ - Q_D(QQuickPopup); - d->popupItem->setContentHeight(height); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::availableWidth - \readonly - - This property holds the width available to the \l contentItem after - deducting horizontal padding from the \l {Item::}{width} of the popup. - - \sa padding, leftPadding, rightPadding -*/ -qreal QQuickPopup::availableWidth() const -{ - Q_D(const QQuickPopup); - return d->popupItem->availableWidth(); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::availableHeight - \readonly - - This property holds the height available to the \l contentItem after - deducting vertical padding from the \l {Item::}{height} of the popup. - - \sa padding, topPadding, bottomPadding -*/ -qreal QQuickPopup::availableHeight() const -{ - Q_D(const QQuickPopup); - return d->popupItem->availableHeight(); -} - -/*! - \since QtQuick.Controls 2.1 (Qt 5.8) - \qmlproperty real QtQuick.Controls::Popup::spacing - - This property holds the spacing. - - Spacing is useful for popups that have multiple or repetitive building - blocks. For example, some styles use spacing to determine the distance - between the header, content, and footer of \l Dialog. Spacing is not - enforced by Popup, so each style may interpret it differently, and some - may ignore it altogether. -*/ -qreal QQuickPopup::spacing() const -{ - Q_D(const QQuickPopup); - return d->popupItem->spacing(); -} - -void QQuickPopup::setSpacing(qreal spacing) -{ - Q_D(QQuickPopup); - d->popupItem->setSpacing(spacing); -} - -void QQuickPopup::resetSpacing() -{ - setSpacing(0); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::margins - - This property holds the distance between the edges of the popup and the - edges of its window. - - A popup with negative margins is not pushed within the bounds - of the enclosing window. The default value is \c -1. - - \sa topMargin, leftMargin, rightMargin, bottomMargin, {Popup Layout} -*/ -qreal QQuickPopup::margins() const -{ - Q_D(const QQuickPopup); - return d->margins; -} - -void QQuickPopup::setMargins(qreal margins) -{ - Q_D(QQuickPopup); - if (qFuzzyCompare(d->margins, margins)) - return; - QMarginsF oldMargins(leftMargin(), topMargin(), rightMargin(), bottomMargin()); - d->margins = margins; - emit marginsChanged(); - QMarginsF newMargins(leftMargin(), topMargin(), rightMargin(), bottomMargin()); - if (!qFuzzyCompare(newMargins.top(), oldMargins.top())) - emit topMarginChanged(); - if (!qFuzzyCompare(newMargins.left(), oldMargins.left())) - emit leftMarginChanged(); - if (!qFuzzyCompare(newMargins.right(), oldMargins.right())) - emit rightMarginChanged(); - if (!qFuzzyCompare(newMargins.bottom(), oldMargins.bottom())) - emit bottomMarginChanged(); - marginsChange(newMargins, oldMargins); -} - -void QQuickPopup::resetMargins() -{ - setMargins(-1); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::topMargin - - This property holds the distance between the top edge of the popup and - the top edge of its window. - - A popup with a negative top margin is not pushed within the top edge - of the enclosing window. The default value is \c -1. - - \sa margins, bottomMargin, {Popup Layout} -*/ -qreal QQuickPopup::topMargin() const -{ - Q_D(const QQuickPopup); - if (d->hasTopMargin) - return d->topMargin; - return d->margins; -} - -void QQuickPopup::setTopMargin(qreal margin) -{ - Q_D(QQuickPopup); - d->setTopMargin(margin); -} - -void QQuickPopup::resetTopMargin() -{ - Q_D(QQuickPopup); - d->setTopMargin(-1, true); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::leftMargin - - This property holds the distance between the left edge of the popup and - the left edge of its window. - - A popup with a negative left margin is not pushed within the left edge - of the enclosing window. The default value is \c -1. - - \sa margins, rightMargin, {Popup Layout} -*/ -qreal QQuickPopup::leftMargin() const -{ - Q_D(const QQuickPopup); - if (d->hasLeftMargin) - return d->leftMargin; - return d->margins; -} - -void QQuickPopup::setLeftMargin(qreal margin) -{ - Q_D(QQuickPopup); - d->setLeftMargin(margin); -} - -void QQuickPopup::resetLeftMargin() -{ - Q_D(QQuickPopup); - d->setLeftMargin(-1, true); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::rightMargin - - This property holds the distance between the right edge of the popup and - the right edge of its window. - - A popup with a negative right margin is not pushed within the right edge - of the enclosing window. The default value is \c -1. - - \sa margins, leftMargin, {Popup Layout} -*/ -qreal QQuickPopup::rightMargin() const -{ - Q_D(const QQuickPopup); - if (d->hasRightMargin) - return d->rightMargin; - return d->margins; -} - -void QQuickPopup::setRightMargin(qreal margin) -{ - Q_D(QQuickPopup); - d->setRightMargin(margin); -} - -void QQuickPopup::resetRightMargin() -{ - Q_D(QQuickPopup); - d->setRightMargin(-1, true); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::bottomMargin - - This property holds the distance between the bottom edge of the popup and - the bottom edge of its window. - - A popup with a negative bottom margin is not pushed within the bottom edge - of the enclosing window. The default value is \c -1. - - \sa margins, topMargin, {Popup Layout} -*/ -qreal QQuickPopup::bottomMargin() const -{ - Q_D(const QQuickPopup); - if (d->hasBottomMargin) - return d->bottomMargin; - return d->margins; -} - -void QQuickPopup::setBottomMargin(qreal margin) -{ - Q_D(QQuickPopup); - d->setBottomMargin(margin); -} - -void QQuickPopup::resetBottomMargin() -{ - Q_D(QQuickPopup); - d->setBottomMargin(-1, true); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::padding - - This property holds the default padding. - - \include qquickpopup-padding.qdocinc - - \sa availableWidth, availableHeight, topPadding, leftPadding, rightPadding, bottomPadding -*/ -qreal QQuickPopup::padding() const -{ - Q_D(const QQuickPopup); - return d->popupItem->padding(); -} - -void QQuickPopup::setPadding(qreal padding) -{ - Q_D(QQuickPopup); - d->popupItem->setPadding(padding); -} - -void QQuickPopup::resetPadding() -{ - Q_D(QQuickPopup); - d->popupItem->resetPadding(); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::topPadding - - This property holds the top padding. Unless explicitly set, the value - is equal to \c verticalPadding. - - \include qquickpopup-padding.qdocinc - - \sa padding, bottomPadding, verticalPadding, availableHeight -*/ -qreal QQuickPopup::topPadding() const -{ - Q_D(const QQuickPopup); - return d->popupItem->topPadding(); -} - -void QQuickPopup::setTopPadding(qreal padding) -{ - Q_D(QQuickPopup); - d->popupItem->setTopPadding(padding); -} - -void QQuickPopup::resetTopPadding() -{ - Q_D(QQuickPopup); - d->popupItem->resetTopPadding(); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::leftPadding - - This property holds the left padding. Unless explicitly set, the value - is equal to \c horizontalPadding. - - \include qquickpopup-padding.qdocinc - - \sa padding, rightPadding, horizontalPadding, availableWidth -*/ -qreal QQuickPopup::leftPadding() const -{ - Q_D(const QQuickPopup); - return d->popupItem->leftPadding(); -} - -void QQuickPopup::setLeftPadding(qreal padding) -{ - Q_D(QQuickPopup); - d->popupItem->setLeftPadding(padding); -} - -void QQuickPopup::resetLeftPadding() -{ - Q_D(QQuickPopup); - d->popupItem->resetLeftPadding(); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::rightPadding - - This property holds the right padding. Unless explicitly set, the value - is equal to \c horizontalPadding. - - \include qquickpopup-padding.qdocinc - - \sa padding, leftPadding, horizontalPadding, availableWidth -*/ -qreal QQuickPopup::rightPadding() const -{ - Q_D(const QQuickPopup); - return d->popupItem->rightPadding(); -} - -void QQuickPopup::setRightPadding(qreal padding) -{ - Q_D(QQuickPopup); - d->popupItem->setRightPadding(padding); -} - -void QQuickPopup::resetRightPadding() -{ - Q_D(QQuickPopup); - d->popupItem->resetRightPadding(); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::bottomPadding - - This property holds the bottom padding. Unless explicitly set, the value - is equal to \c verticalPadding. - - \include qquickpopup-padding.qdocinc - - \sa padding, topPadding, verticalPadding, availableHeight -*/ -qreal QQuickPopup::bottomPadding() const -{ - Q_D(const QQuickPopup); - return d->popupItem->bottomPadding(); -} - -void QQuickPopup::setBottomPadding(qreal padding) -{ - Q_D(QQuickPopup); - d->popupItem->setBottomPadding(padding); -} - -void QQuickPopup::resetBottomPadding() -{ - Q_D(QQuickPopup); - d->popupItem->resetBottomPadding(); -} - -/*! - \qmlproperty Locale QtQuick.Controls::Popup::locale - - This property holds the locale of the popup. - - \sa mirrored, {LayoutMirroring}{LayoutMirroring} -*/ -QLocale QQuickPopup::locale() const -{ - Q_D(const QQuickPopup); - return d->popupItem->locale(); -} - -void QQuickPopup::setLocale(const QLocale &locale) -{ - Q_D(QQuickPopup); - d->popupItem->setLocale(locale); -} - -void QQuickPopup::resetLocale() -{ - Q_D(QQuickPopup); - d->popupItem->resetLocale(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::Popup::mirrored - \readonly - - This property holds whether the popup is mirrored. - - This property is provided for convenience. A popup is considered mirrored - when its visual layout direction is right-to-left; that is, when using a - right-to-left locale. - - \sa locale, {Right-to-left User Interfaces} -*/ -bool QQuickPopup::isMirrored() const -{ - Q_D(const QQuickPopup); - return d->popupItem->isMirrored(); -} - -/*! - \qmlproperty font QtQuick.Controls::Popup::font - - This property holds the font currently set for the popup. - - Popup propagates explicit font properties to its children. If you change a specific - property on a popup's font, that property propagates to all of the popup's children, - overriding any system defaults for that property. - - \code - Popup { - font.family: "Courier" - - Column { - Label { - text: qsTr("This will use Courier...") - } - - Switch { - text: qsTr("... and so will this") - } - } - } - \endcode - - \sa Control::font, ApplicationWindow::font -*/ -QFont QQuickPopup::font() const -{ - Q_D(const QQuickPopup); - return d->popupItem->font(); -} - -void QQuickPopup::setFont(const QFont &font) -{ - Q_D(QQuickPopup); - d->popupItem->setFont(font); -} - -void QQuickPopup::resetFont() -{ - Q_D(QQuickPopup); - d->popupItem->resetFont(); -} - -QQuickWindow *QQuickPopup::window() const -{ - Q_D(const QQuickPopup); - return d->window; -} - -QQuickItem *QQuickPopup::popupItem() const -{ - Q_D(const QQuickPopup); - return d->popupItem; -} - -/*! - \qmlproperty Item QtQuick.Controls::Popup::parent - - This property holds the parent item. -*/ -QQuickItem *QQuickPopup::parentItem() const -{ - Q_D(const QQuickPopup); - return d->parentItem; -} - -void QQuickPopup::setParentItem(QQuickItem *parent) -{ - Q_D(QQuickPopup); - if (d->parentItem == parent) - return; - - if (d->parentItem) { - QObjectPrivate::disconnect(d->parentItem, &QQuickItem::windowChanged, d, &QQuickPopupPrivate::setWindow); - QQuickItemPrivate::get(d->parentItem)->removeItemChangeListener(d, QQuickItemPrivate::Destroyed); - } - d->parentItem = parent; - QQuickPopupPositioner *positioner = d->getPositioner(); - if (positioner->parentItem()) - positioner->setParentItem(parent); - if (parent) { - QObjectPrivate::connect(parent, &QQuickItem::windowChanged, d, &QQuickPopupPrivate::setWindow); - QQuickItemPrivate::get(d->parentItem)->addItemChangeListener(d, QQuickItemPrivate::Destroyed); - } else { - close(); - } - d->setWindow(parent ? parent->window() : nullptr); - emit parentChanged(); -} - -void QQuickPopup::resetParentItem() -{ - if (QQuickWindow *window = qobject_cast<QQuickWindow *>(parent())) - setParentItem(window->contentItem()); - else - setParentItem(qobject_cast<QQuickItem *>(parent())); -} - -/*! - \qmlproperty Item QtQuick.Controls::Popup::background - - This property holds the background item. - - \note If the background item has no explicit size specified, it automatically - follows the popup's size. In most cases, there is no need to specify - width or height for a background item. - - \note Most popups use the implicit size of the background item to calculate - the implicit size of the popup itself. If you replace the background item - with a custom one, you should also consider providing a sensible implicit - size for it (unless it is an item like \l Image which has its own implicit - size). - - \sa {Customizing Popup} -*/ -QQuickItem *QQuickPopup::background() const -{ - Q_D(const QQuickPopup); - return d->popupItem->background(); -} - -void QQuickPopup::setBackground(QQuickItem *background) -{ - Q_D(QQuickPopup); - d->popupItem->setBackground(background); -} - -/*! - \qmlproperty Item QtQuick.Controls::Popup::contentItem - - This property holds the content item of the popup. - - The content item is the visual implementation of the popup. When the - popup is made visible, the content item is automatically reparented to - the \l {Overlay::overlay}{overlay item}. - - \note The content item is automatically resized to fit within the - \l padding of the popup. - - \note Most popups use the implicit size of the content item to calculate - the implicit size of the popup itself. If you replace the content item - with a custom one, you should also consider providing a sensible implicit - size for it (unless it is an item like \l Text which has its own implicit - size). - - \sa {Customizing Popup} -*/ -QQuickItem *QQuickPopup::contentItem() const -{ - Q_D(const QQuickPopup); - return d->popupItem->contentItem(); -} - -void QQuickPopup::setContentItem(QQuickItem *item) -{ - Q_D(QQuickPopup); - d->popupItem->setContentItem(item); -} - -/*! - \qmlproperty list<Object> QtQuick.Controls::Popup::contentData - \qmldefault - - This property holds the list of content data. - - The list contains all objects that have been declared in QML as children - of the popup. - - \note Unlike \c contentChildren, \c contentData does include non-visual QML - objects. - - \sa Item::data, contentChildren -*/ -QQmlListProperty<QObject> QQuickPopupPrivate::contentData() -{ - QQuickControlPrivate *p = QQuickControlPrivate::get(popupItem); - if (!p->contentItem) - p->executeContentItem(); - return QQmlListProperty<QObject>(popupItem->contentItem(), nullptr, - QQuickItemPrivate::data_append, - QQuickItemPrivate::data_count, - QQuickItemPrivate::data_at, - QQuickItemPrivate::data_clear); -} - -/*! - \qmlproperty list<Item> QtQuick.Controls::Popup::contentChildren - - This property holds the list of content children. - - The list contains all items that have been declared in QML as children - of the popup. - - \note Unlike \c contentData, \c contentChildren does not include non-visual - QML objects. - - \sa Item::children, contentData -*/ -QQmlListProperty<QQuickItem> QQuickPopupPrivate::contentChildren() -{ - return QQmlListProperty<QQuickItem>(popupItem->contentItem(), nullptr, - QQuickItemPrivate::children_append, - QQuickItemPrivate::children_count, - QQuickItemPrivate::children_at, - QQuickItemPrivate::children_clear); -} - -/*! - \qmlproperty bool QtQuick.Controls::Popup::clip - - This property holds whether clipping is enabled. The default value is \c false. -*/ -bool QQuickPopup::clip() const -{ - Q_D(const QQuickPopup); - return d->popupItem->clip(); -} - -void QQuickPopup::setClip(bool clip) -{ - Q_D(QQuickPopup); - if (clip == d->popupItem->clip()) - return; - d->popupItem->setClip(clip); - emit clipChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::Popup::focus - - This property holds whether the popup wants focus. - - When the popup actually receives focus, \l activeFocus will be \c true. - For more information, see \l {Keyboard Focus in Qt Quick}. - - The default value is \c false. - - \sa activeFocus -*/ -bool QQuickPopup::hasFocus() const -{ - Q_D(const QQuickPopup); - return d->focus; -} - -void QQuickPopup::setFocus(bool focus) -{ - Q_D(QQuickPopup); - if (d->focus == focus) - return; - d->focus = focus; - emit focusChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::Popup::activeFocus - \readonly - - This property holds whether the popup has active focus. - - \sa focus, {Keyboard Focus in Qt Quick} -*/ -bool QQuickPopup::hasActiveFocus() const -{ - Q_D(const QQuickPopup); - return d->popupItem->hasActiveFocus(); -} - -/*! - \qmlproperty bool QtQuick.Controls::Popup::modal - - This property holds whether the popup is modal. - - Modal popups often have a distinctive background dimming effect defined - in \l {Overlay::modal}{Overlay.modal}, and do not allow press - or release events through to items beneath them. For example, if the user - accidentally clicks outside of a popup, any item beneath that popup at - the location of the click will not receive the event. - - On desktop platforms, it is common for modal popups to be closed only when - the escape key is pressed. To achieve this behavior, set - \l closePolicy to \c Popup.CloseOnEscape. By default, \c closePolicy - is set to \c {Popup.CloseOnEscape | Popup.CloseOnPressOutside}, which - means that clicking outside of a modal popup will close it. - - The default value is \c false. - - \sa dim -*/ -bool QQuickPopup::isModal() const -{ - Q_D(const QQuickPopup); - return d->modal; -} - -void QQuickPopup::setModal(bool modal) -{ - Q_D(QQuickPopup); - if (d->modal == modal) - return; - d->modal = modal; - if (d->complete && d->visible) - d->toggleOverlay(); - emit modalChanged(); - - QQuickItemPrivate::get(d->popupItem)->isTabFence = modal; - - if (!d->hasDim) { - setDim(modal); - d->hasDim = false; - } -} - -/*! - \qmlproperty bool QtQuick.Controls::Popup::dim - - This property holds whether the popup dims the background. - - Unless explicitly set, this property follows the value of \l modal. To - return to the default value, set this property to \c undefined. - - \sa modal, {Overlay::modeless}{Overlay.modeless} -*/ -bool QQuickPopup::dim() const -{ - Q_D(const QQuickPopup); - return d->dim; -} - -void QQuickPopup::setDim(bool dim) -{ - Q_D(QQuickPopup); - d->hasDim = true; - - if (d->dim == dim) - return; - - d->dim = dim; - if (d->complete && d->visible) - d->toggleOverlay(); - emit dimChanged(); -} - -void QQuickPopup::resetDim() -{ - Q_D(QQuickPopup); - if (!d->hasDim) - return; - - setDim(d->modal); - d->hasDim = false; -} - -/*! - \qmlproperty bool QtQuick.Controls::Popup::visible - - This property holds whether the popup is visible. The default value is \c false. - - \sa open(), close(), opened -*/ -bool QQuickPopup::isVisible() const -{ - Q_D(const QQuickPopup); - return d->visible && d->popupItem->isVisible(); -} - -void QQuickPopup::setVisible(bool visible) -{ - Q_D(QQuickPopup); - if (d->visible == visible && d->transitionState != QQuickPopupPrivate::ExitTransition) - return; - - if (d->complete) { - if (visible) - d->transitionManager.transitionEnter(); - else - d->transitionManager.transitionExit(); - } else { - d->visible = visible; - } -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::Popup::enabled - - This property holds whether the popup is enabled. The default value is \c true. - - \sa visible, Item::enabled -*/ -bool QQuickPopup::isEnabled() const -{ - Q_D(const QQuickPopup); - return d->popupItem->isEnabled(); -} - -void QQuickPopup::setEnabled(bool enabled) -{ - Q_D(QQuickPopup); - d->popupItem->setEnabled(enabled); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::Popup::opened - - This property holds whether the popup is fully open. The popup is considered opened - when it's visible and neither the \l enter nor \l exit transitions are running. - - \sa open(), close(), visible -*/ -bool QQuickPopup::isOpened() const -{ - Q_D(const QQuickPopup); - return d->transitionState == QQuickPopupPrivate::NoTransition && isVisible(); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::opacity - - This property holds the opacity of the popup. Opacity is specified as a number between - \c 0.0 (fully transparent) and \c 1.0 (fully opaque). The default value is \c 1.0. - - \sa visible -*/ -qreal QQuickPopup::opacity() const -{ - Q_D(const QQuickPopup); - return d->popupItem->opacity(); -} - -void QQuickPopup::setOpacity(qreal opacity) -{ - Q_D(QQuickPopup); - d->popupItem->setOpacity(opacity); -} - -/*! - \qmlproperty real QtQuick.Controls::Popup::scale - - This property holds the scale factor of the popup. The default value is \c 1.0. - - A scale of less than \c 1.0 causes the popup to be rendered at a smaller size, - and a scale greater than \c 1.0 renders the popup at a larger size. Negative - scales are not supported. -*/ -qreal QQuickPopup::scale() const -{ - Q_D(const QQuickPopup); - return d->popupItem->scale(); -} - -void QQuickPopup::setScale(qreal scale) -{ - Q_D(QQuickPopup); - if (qFuzzyCompare(scale, d->popupItem->scale())) - return; - d->popupItem->setScale(scale); - emit scaleChanged(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::Popup::closePolicy - - This property determines the circumstances under which the popup closes. - The flags can be combined to allow several ways of closing the popup. - - The available values are: - \value Popup.NoAutoClose The popup will only close when manually instructed to do so. - \value Popup.CloseOnPressOutside The popup will close when the mouse is pressed outside of it. - \value Popup.CloseOnPressOutsideParent The popup will close when the mouse is pressed outside of its parent. - \value Popup.CloseOnReleaseOutside The popup will close when the mouse is released outside of it. - \value Popup.CloseOnReleaseOutsideParent The popup will close when the mouse is released outside of its parent. - \value Popup.CloseOnEscape The popup will close when the escape key is pressed while the popup - has active focus. - - The default value is \c {Popup.CloseOnEscape | Popup.CloseOnPressOutside}. - - \note There is a known limitation that the \c Popup.CloseOnReleaseOutside - and \c Popup.CloseOnReleaseOutsideParent policies only work with - \l modal popups. -*/ -QQuickPopup::ClosePolicy QQuickPopup::closePolicy() const -{ - Q_D(const QQuickPopup); - return d->closePolicy; -} - -void QQuickPopup::setClosePolicy(ClosePolicy policy) -{ - Q_D(QQuickPopup); - d->hasClosePolicy = true; - if (d->closePolicy == policy) - return; - d->closePolicy = policy; - if (isVisible()) { - if (policy & QQuickPopup::CloseOnEscape) - d->popupItem->grabShortcut(); - else - d->popupItem->ungrabShortcut(); - } - emit closePolicyChanged(); -} - -void QQuickPopup::resetClosePolicy() -{ - Q_D(QQuickPopup); - setClosePolicy(QQuickPopupPrivate::DefaultClosePolicy); - d->hasClosePolicy = false; -} - -/*! - \qmlproperty enumeration QtQuick.Controls::Popup::transformOrigin - - This property holds the origin point for transformations in enter and exit transitions. - - Nine transform origins are available, as shown in the image below. - The default transform origin is \c Popup.Center. - - \image qtquickcontrols2-popup-transformorigin.png - - \sa enter, exit, Item::transformOrigin -*/ -QQuickPopup::TransformOrigin QQuickPopup::transformOrigin() const -{ - Q_D(const QQuickPopup); - return static_cast<TransformOrigin>(d->popupItem->transformOrigin()); -} - -void QQuickPopup::setTransformOrigin(TransformOrigin origin) -{ - Q_D(QQuickPopup); - d->popupItem->setTransformOrigin(static_cast<QQuickItem::TransformOrigin>(origin)); -} - -/*! - \qmlproperty Transition QtQuick.Controls::Popup::enter - - This property holds the transition that is applied to the popup item - when the popup is opened and enters the screen. - - The following example animates the opacity of the popup when it enters - the screen: - \code - Popup { - enter: Transition { - NumberAnimation { property: "opacity"; from: 0.0; to: 1.0 } - } - } - \endcode - - \sa exit -*/ -QQuickTransition *QQuickPopup::enter() const -{ - Q_D(const QQuickPopup); - return d->enter; -} - -void QQuickPopup::setEnter(QQuickTransition *transition) -{ - Q_D(QQuickPopup); - if (d->enter == transition) - return; - d->enter = transition; - emit enterChanged(); -} - -/*! - \qmlproperty Transition QtQuick.Controls::Popup::exit - - This property holds the transition that is applied to the popup item - when the popup is closed and exits the screen. - - The following example animates the opacity of the popup when it exits - the screen: - \code - Popup { - exit: Transition { - NumberAnimation { property: "opacity"; from: 1.0; to: 0.0 } - } - } - \endcode - - \sa enter -*/ -QQuickTransition *QQuickPopup::exit() const -{ - Q_D(const QQuickPopup); - return d->exit; -} - -void QQuickPopup::setExit(QQuickTransition *transition) -{ - Q_D(QQuickPopup); - if (d->exit == transition) - return; - d->exit = transition; - emit exitChanged(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Popup::horizontalPadding - - This property holds the horizontal padding. Unless explicitly set, the value - is equal to \c padding. - - \include qquickpopup-padding.qdocinc - - \sa padding, leftPadding, rightPadding, verticalPadding -*/ -qreal QQuickPopup::horizontalPadding() const -{ - Q_D(const QQuickPopup); - return d->popupItem->horizontalPadding(); -} - -void QQuickPopup::setHorizontalPadding(qreal padding) -{ - Q_D(QQuickPopup); - d->popupItem->setHorizontalPadding(padding); -} - -void QQuickPopup::resetHorizontalPadding() -{ - Q_D(QQuickPopup); - d->popupItem->resetHorizontalPadding(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Popup::verticalPadding - - This property holds the vertical padding. Unless explicitly set, the value - is equal to \c padding. - - \include qquickpopup-padding.qdocinc - - \sa padding, topPadding, bottomPadding, horizontalPadding -*/ -qreal QQuickPopup::verticalPadding() const -{ - Q_D(const QQuickPopup); - return d->popupItem->verticalPadding(); -} - -void QQuickPopup::setVerticalPadding(qreal padding) -{ - Q_D(QQuickPopup); - d->popupItem->setVerticalPadding(padding); -} - -void QQuickPopup::resetVerticalPadding() -{ - Q_D(QQuickPopup); - d->popupItem->resetVerticalPadding(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Popup::implicitContentWidth - \readonly - - This property holds the implicit content width. - - The value is calculated based on the content children. - - \sa implicitContentHeight, implicitBackgroundWidth -*/ -qreal QQuickPopup::implicitContentWidth() const -{ - Q_D(const QQuickPopup); - return d->popupItem->implicitContentWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Popup::implicitContentHeight - \readonly - - This property holds the implicit content height. - - The value is calculated based on the content children. - - \sa implicitContentWidth, implicitBackgroundHeight -*/ -qreal QQuickPopup::implicitContentHeight() const -{ - Q_D(const QQuickPopup); - return d->popupItem->implicitContentHeight(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Popup::implicitBackgroundWidth - \readonly - - This property holds the implicit background width. - - The value is equal to \c {background ? background.implicitWidth : 0}. - - \sa implicitBackgroundHeight, implicitContentWidth -*/ -qreal QQuickPopup::implicitBackgroundWidth() const -{ - Q_D(const QQuickPopup); - return d->popupItem->implicitBackgroundWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Popup::implicitBackgroundHeight - \readonly - - This property holds the implicit background height. - - The value is equal to \c {background ? background.implicitHeight : 0}. - - \sa implicitBackgroundWidth, implicitContentHeight -*/ -qreal QQuickPopup::implicitBackgroundHeight() const -{ - Q_D(const QQuickPopup); - return d->popupItem->implicitBackgroundHeight(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Popup::topInset - - This property holds the top inset for the background. - - \sa {Popup Layout}, bottomInset -*/ -qreal QQuickPopup::topInset() const -{ - Q_D(const QQuickPopup); - return d->popupItem->topInset(); -} - -void QQuickPopup::setTopInset(qreal inset) -{ - Q_D(QQuickPopup); - d->popupItem->setTopInset(inset); -} - -void QQuickPopup::resetTopInset() -{ - Q_D(QQuickPopup); - d->popupItem->resetTopInset(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Popup::leftInset - - This property holds the left inset for the background. - - \sa {Popup Layout}, rightInset -*/ -qreal QQuickPopup::leftInset() const -{ - Q_D(const QQuickPopup); - return d->popupItem->leftInset(); -} - -void QQuickPopup::setLeftInset(qreal inset) -{ - Q_D(QQuickPopup); - d->popupItem->setLeftInset(inset); -} - -void QQuickPopup::resetLeftInset() -{ - Q_D(QQuickPopup); - d->popupItem->resetLeftInset(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Popup::rightInset - - This property holds the right inset for the background. - - \sa {Popup Layout}, leftInset -*/ -qreal QQuickPopup::rightInset() const -{ - Q_D(const QQuickPopup); - return d->popupItem->rightInset(); -} - -void QQuickPopup::setRightInset(qreal inset) -{ - Q_D(QQuickPopup); - d->popupItem->setRightInset(inset); -} - -void QQuickPopup::resetRightInset() -{ - Q_D(QQuickPopup); - d->popupItem->resetRightInset(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Popup::bottomInset - - This property holds the bottom inset for the background. - - \sa {Popup Layout}, topInset -*/ -qreal QQuickPopup::bottomInset() const -{ - Q_D(const QQuickPopup); - return d->popupItem->bottomInset(); -} - -void QQuickPopup::setBottomInset(qreal inset) -{ - Q_D(QQuickPopup); - d->popupItem->setBottomInset(inset); -} - -void QQuickPopup::resetBottomInset() -{ - Q_D(QQuickPopup); - d->popupItem->resetBottomInset(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty palette QtQuick.Controls::Popup::palette - - This property holds the palette currently set for the popup. - - Popup propagates explicit palette properties to its children. If you change a specific - property on a popup's palette, that property propagates to all of the popup's children, - overriding any system defaults for that property. - - \code - Popup { - palette.text: "red" - - Column { - Label { - text: qsTr("This will use red color...") - } - - Switch { - text: qsTr("... and so will this") - } - } - } - \endcode - - \sa Item::palette, Window::palette, ColorGroup, Palette -*/ - -bool QQuickPopup::filtersChildMouseEvents() const -{ - Q_D(const QQuickPopup); - return d->popupItem->filtersChildMouseEvents(); -} - -void QQuickPopup::setFiltersChildMouseEvents(bool filter) -{ - Q_D(QQuickPopup); - d->popupItem->setFiltersChildMouseEvents(filter); -} - -/*! - \qmlmethod QtQuick.Controls::Popup::forceActiveFocus(enumeration reason = Qt.OtherFocusReason) - - Forces active focus on the popup with the given \a reason. - - This method sets focus on the popup and ensures that all ancestor - \l FocusScope objects in the object hierarchy are also given \l focus. - - \sa activeFocus, Qt::FocusReason -*/ -void QQuickPopup::forceActiveFocus(Qt::FocusReason reason) -{ - Q_D(QQuickPopup); - d->popupItem->forceActiveFocus(reason); -} - -void QQuickPopup::classBegin() -{ - Q_D(QQuickPopup); - d->complete = false; - QQmlContext *context = qmlContext(this); - if (context) - QQmlEngine::setContextForObject(d->popupItem, context); - d->popupItem->classBegin(); -} - -void QQuickPopup::componentComplete() -{ - Q_D(QQuickPopup); - qCDebug(lcPopup) << "componentComplete"; - if (!parentItem()) - resetParentItem(); - - if (d->visible && d->window) - d->transitionManager.transitionEnter(); - - d->complete = true; - d->popupItem->componentComplete(); - - if (isVisible()) { - if (d->closePolicy & QQuickPopup::CloseOnEscape) - d->popupItem->grabShortcut(); - else - d->popupItem->ungrabShortcut(); - } -} - -bool QQuickPopup::isComponentComplete() const -{ - Q_D(const QQuickPopup); - return d->complete; -} - -bool QQuickPopup::childMouseEventFilter(QQuickItem *child, QEvent *event) -{ - Q_UNUSED(child); - Q_UNUSED(event); - return false; -} - -void QQuickPopup::focusInEvent(QFocusEvent *event) -{ - event->accept(); -} - -void QQuickPopup::focusOutEvent(QFocusEvent *event) -{ - event->accept(); -} - -void QQuickPopup::keyPressEvent(QKeyEvent *event) -{ - Q_D(QQuickPopup); - event->accept(); - - if (hasActiveFocus() && (event->key() == Qt::Key_Tab || event->key() == Qt::Key_Backtab)) - QQuickItemPrivate::focusNextPrev(d->popupItem, event->key() == Qt::Key_Tab); -} - -void QQuickPopup::keyReleaseEvent(QKeyEvent *event) -{ - event->accept(); -} - -void QQuickPopup::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickPopup); - d->handleMouseEvent(d->popupItem, event); - event->accept(); -} - -void QQuickPopup::mouseMoveEvent(QMouseEvent *event) -{ - Q_D(QQuickPopup); - d->handleMouseEvent(d->popupItem, event); - event->accept(); -} - -void QQuickPopup::mouseReleaseEvent(QMouseEvent *event) -{ - Q_D(QQuickPopup); - d->handleMouseEvent(d->popupItem, event); - event->accept(); -} - -void QQuickPopup::mouseDoubleClickEvent(QMouseEvent *event) -{ - event->accept(); -} - -void QQuickPopup::mouseUngrabEvent() -{ - Q_D(QQuickPopup); - d->handleUngrab(); -} - -bool QQuickPopup::overlayEvent(QQuickItem *item, QEvent *event) -{ - Q_D(QQuickPopup); - switch (event->type()) { - case QEvent::KeyPress: - case QEvent::KeyRelease: - case QEvent::MouseMove: - case QEvent::Wheel: - if (d->modal) - event->accept(); - return d->modal; - -#if QT_CONFIG(quicktemplates2_multitouch) - case QEvent::TouchBegin: - case QEvent::TouchUpdate: - case QEvent::TouchEnd: - return d->handleTouchEvent(item, static_cast<QTouchEvent *>(event)); -#endif - case QEvent::HoverEnter: - case QEvent::HoverMove: - case QEvent::HoverLeave: - return d->handleHoverEvent(item, static_cast<QHoverEvent *>(event)); - - case QEvent::MouseButtonPress: - case QEvent::MouseButtonRelease: - return d->handleMouseEvent(item, static_cast<QMouseEvent *>(event)); - - default: - return false; - } -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickPopup::touchEvent(QTouchEvent *event) -{ - Q_D(QQuickPopup); - d->handleTouchEvent(d->popupItem, event); -} - -void QQuickPopup::touchUngrabEvent() -{ - Q_D(QQuickPopup); - d->handleUngrab(); -} -#endif - -#if QT_CONFIG(wheelevent) -void QQuickPopup::wheelEvent(QWheelEvent *event) -{ - event->accept(); -} -#endif - -void QQuickPopup::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_UNUSED(newItem); - Q_UNUSED(oldItem); -} - -void QQuickPopup::contentSizeChange(const QSizeF &newSize, const QSizeF &oldSize) -{ - if (!qFuzzyCompare(newSize.width(), oldSize.width())) - emit contentWidthChanged(); - if (!qFuzzyCompare(newSize.height(), oldSize.height())) - emit contentHeightChanged(); -} - -void QQuickPopup::fontChange(const QFont &newFont, const QFont &oldFont) -{ - Q_UNUSED(newFont); - Q_UNUSED(oldFont); - emit fontChanged(); -} - -void QQuickPopup::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickPopup); - d->reposition(); - if (!qFuzzyCompare(newGeometry.width(), oldGeometry.width())) { - emit widthChanged(); - emit availableWidthChanged(); - } - if (!qFuzzyCompare(newGeometry.height(), oldGeometry.height())) { - emit heightChanged(); - emit availableHeightChanged(); - } -} - -void QQuickPopup::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - Q_D(QQuickPopup); - - switch (change) { - case QQuickItem::ItemActiveFocusHasChanged: - emit activeFocusChanged(); - break; - case QQuickItem::ItemOpacityHasChanged: - emit opacityChanged(); - break; - case QQuickItem::ItemVisibleHasChanged: - if (isComponentComplete() && d->closePolicy & CloseOnEscape) { - if (data.boolValue) - d->popupItem->grabShortcut(); - else - d->popupItem->ungrabShortcut(); - } - break; - default: - break; - } -} - -void QQuickPopup::localeChange(const QLocale &newLocale, const QLocale &oldLocale) -{ - Q_UNUSED(newLocale); - Q_UNUSED(oldLocale); - emit localeChanged(); -} - -void QQuickPopup::marginsChange(const QMarginsF &newMargins, const QMarginsF &oldMargins) -{ - Q_D(QQuickPopup); - Q_UNUSED(newMargins); - Q_UNUSED(oldMargins); - d->reposition(); -} - -void QQuickPopup::paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) -{ - const bool tp = !qFuzzyCompare(newPadding.top(), oldPadding.top()); - const bool lp = !qFuzzyCompare(newPadding.left(), oldPadding.left()); - const bool rp = !qFuzzyCompare(newPadding.right(), oldPadding.right()); - const bool bp = !qFuzzyCompare(newPadding.bottom(), oldPadding.bottom()); - - if (tp) - emit topPaddingChanged(); - if (lp) - emit leftPaddingChanged(); - if (rp) - emit rightPaddingChanged(); - if (bp) - emit bottomPaddingChanged(); - - if (lp || rp) { - emit horizontalPaddingChanged(); - emit availableWidthChanged(); - } - if (tp || bp) { - emit verticalPaddingChanged(); - emit availableHeightChanged(); - } -} - -void QQuickPopup::spacingChange(qreal newSpacing, qreal oldSpacing) -{ - Q_UNUSED(newSpacing); - Q_UNUSED(oldSpacing); - emit spacingChanged(); -} - -void QQuickPopup::insetChange(const QMarginsF &newInset, const QMarginsF &oldInset) -{ - if (!qFuzzyCompare(newInset.top(), oldInset.top())) - emit topInsetChanged(); - if (!qFuzzyCompare(newInset.left(), oldInset.left())) - emit leftInsetChanged(); - if (!qFuzzyCompare(newInset.right(), oldInset.right())) - emit rightInsetChanged(); - if (!qFuzzyCompare(newInset.bottom(), oldInset.bottom())) - emit bottomInsetChanged(); -} - -QFont QQuickPopup::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::System); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickPopup::accessibleRole() const -{ - return QAccessible::Dialog; -} - -void QQuickPopup::accessibilityActiveChanged(bool active) -{ - Q_UNUSED(active); -} -#endif - -QString QQuickPopup::accessibleName() const -{ - Q_D(const QQuickPopup); - return d->popupItem->accessibleName(); -} - -void QQuickPopup::maybeSetAccessibleName(const QString &name) -{ - Q_D(QQuickPopup); - d->popupItem->maybeSetAccessibleName(name); -} - -QVariant QQuickPopup::accessibleProperty(const char *propertyName) -{ - Q_D(const QQuickPopup); - return d->popupItem->accessibleProperty(propertyName); -} - -bool QQuickPopup::setAccessibleProperty(const char *propertyName, const QVariant &value) -{ - Q_D(QQuickPopup); - return d->popupItem->setAccessibleProperty(propertyName, value); -} - -QT_END_NAMESPACE - -#include "moc_qquickpopup_p.cpp" diff --git a/src/quicktemplates2/qquickpopup_p.h b/src/quicktemplates2/qquickpopup_p.h deleted file mode 100644 index cdbc3cc4..00000000 --- a/src/quicktemplates2/qquickpopup_p.h +++ /dev/null @@ -1,478 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPOPUP_P_H -#define QQUICKPOPUP_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtCore/qmargins.h> -#include <QtGui/qevent.h> -#include <QtCore/qlocale.h> -#include <QtGui/qfont.h> -#include <QtGui/qpalette.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> -#include <QtQml/qqml.h> -#include <QtQml/qqmllist.h> -#include <QtQml/qqmlparserstatus.h> -#include <QtQuick/qquickitem.h> - -#if QT_CONFIG(accessibility) -#include <QtGui/qaccessible.h> -#endif - -QT_BEGIN_NAMESPACE - -class QQuickWindow; -class QQuickPopupAnchors; -class QQuickPopupPrivate; -class QQuickTransition; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopup : public QObject, public QQmlParserStatus -{ - Q_OBJECT - Q_INTERFACES(QQmlParserStatus) - Q_PROPERTY(qreal x READ x WRITE setX NOTIFY xChanged FINAL) - Q_PROPERTY(qreal y READ y WRITE setY NOTIFY yChanged FINAL) - Q_PROPERTY(qreal z READ z WRITE setZ NOTIFY zChanged FINAL) - Q_PROPERTY(qreal width READ width WRITE setWidth RESET resetWidth NOTIFY widthChanged FINAL) - Q_PROPERTY(qreal height READ height WRITE setHeight RESET resetHeight NOTIFY heightChanged FINAL) - Q_PROPERTY(qreal implicitWidth READ implicitWidth WRITE setImplicitWidth NOTIFY implicitWidthChanged FINAL) - Q_PROPERTY(qreal implicitHeight READ implicitHeight WRITE setImplicitHeight NOTIFY implicitHeightChanged FINAL) - Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth NOTIFY contentWidthChanged FINAL) - Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight NOTIFY contentHeightChanged FINAL) - Q_PROPERTY(qreal availableWidth READ availableWidth NOTIFY availableWidthChanged FINAL) - Q_PROPERTY(qreal availableHeight READ availableHeight NOTIFY availableHeightChanged FINAL) - Q_PROPERTY(qreal margins READ margins WRITE setMargins RESET resetMargins NOTIFY marginsChanged FINAL) - Q_PROPERTY(qreal topMargin READ topMargin WRITE setTopMargin RESET resetTopMargin NOTIFY topMarginChanged FINAL) - Q_PROPERTY(qreal leftMargin READ leftMargin WRITE setLeftMargin RESET resetLeftMargin NOTIFY leftMarginChanged FINAL) - Q_PROPERTY(qreal rightMargin READ rightMargin WRITE setRightMargin RESET resetRightMargin NOTIFY rightMarginChanged FINAL) - Q_PROPERTY(qreal bottomMargin READ bottomMargin WRITE setBottomMargin RESET resetBottomMargin NOTIFY bottomMarginChanged FINAL) - Q_PROPERTY(qreal padding READ padding WRITE setPadding RESET resetPadding NOTIFY paddingChanged FINAL) - Q_PROPERTY(qreal topPadding READ topPadding WRITE setTopPadding RESET resetTopPadding NOTIFY topPaddingChanged FINAL) - Q_PROPERTY(qreal leftPadding READ leftPadding WRITE setLeftPadding RESET resetLeftPadding NOTIFY leftPaddingChanged FINAL) - Q_PROPERTY(qreal rightPadding READ rightPadding WRITE setRightPadding RESET resetRightPadding NOTIFY rightPaddingChanged FINAL) - Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding RESET resetBottomPadding NOTIFY bottomPaddingChanged FINAL) - Q_PROPERTY(QLocale locale READ locale WRITE setLocale RESET resetLocale NOTIFY localeChanged FINAL) - Q_PROPERTY(QFont font READ font WRITE setFont RESET resetFont NOTIFY fontChanged FINAL) - Q_PROPERTY(QQuickItem *parent READ parentItem WRITE setParentItem RESET resetParentItem NOTIFY parentChanged FINAL) - Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL) - Q_PROPERTY(QQuickItem *contentItem READ contentItem WRITE setContentItem NOTIFY contentItemChanged FINAL) - Q_PRIVATE_PROPERTY(QQuickPopup::d_func(), QQmlListProperty<QObject> contentData READ contentData) - Q_PRIVATE_PROPERTY(QQuickPopup::d_func(), QQmlListProperty<QQuickItem> contentChildren READ contentChildren NOTIFY contentChildrenChanged FINAL) - Q_PROPERTY(bool clip READ clip WRITE setClip NOTIFY clipChanged FINAL) - Q_PROPERTY(bool focus READ hasFocus WRITE setFocus NOTIFY focusChanged FINAL) - Q_PROPERTY(bool activeFocus READ hasActiveFocus NOTIFY activeFocusChanged FINAL) - Q_PROPERTY(bool modal READ isModal WRITE setModal NOTIFY modalChanged FINAL) - Q_PROPERTY(bool dim READ dim WRITE setDim RESET resetDim NOTIFY dimChanged FINAL) - Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) - Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged FINAL) - Q_PROPERTY(qreal scale READ scale WRITE setScale NOTIFY scaleChanged FINAL) - Q_PROPERTY(ClosePolicy closePolicy READ closePolicy WRITE setClosePolicy RESET resetClosePolicy NOTIFY closePolicyChanged FINAL) - Q_PROPERTY(TransformOrigin transformOrigin READ transformOrigin WRITE setTransformOrigin FINAL) - Q_PROPERTY(QQuickTransition *enter READ enter WRITE setEnter NOTIFY enterChanged FINAL) - Q_PROPERTY(QQuickTransition *exit READ exit WRITE setExit NOTIFY exitChanged FINAL) - // 2.1 (Qt 5.8) - Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing RESET resetSpacing NOTIFY spacingChanged FINAL REVISION(2, 1)) - // 2.3 (Qt 5.10) - Q_PROPERTY(bool opened READ isOpened NOTIFY openedChanged FINAL REVISION(2, 3)) - Q_PROPERTY(bool mirrored READ isMirrored NOTIFY mirroredChanged FINAL REVISION(2, 3)) - Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged FINAL REVISION(2, 3)) - Q_PRIVATE_PROPERTY(QQuickPopup::d_func(), QQuickPalette *palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged REVISION(2, 3)) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal horizontalPadding READ horizontalPadding WRITE setHorizontalPadding RESET resetHorizontalPadding NOTIFY horizontalPaddingChanged FINAL) - Q_PROPERTY(qreal verticalPadding READ verticalPadding WRITE setVerticalPadding RESET resetVerticalPadding NOTIFY verticalPaddingChanged FINAL) - Q_PRIVATE_PROPERTY(QQuickPopup::d_func(), QQuickPopupAnchors *anchors READ getAnchors DESIGNABLE false CONSTANT FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitContentWidth READ implicitContentWidth NOTIFY implicitContentWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitContentHeight READ implicitContentHeight NOTIFY implicitContentHeightChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitBackgroundWidth READ implicitBackgroundWidth NOTIFY implicitBackgroundWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitBackgroundHeight READ implicitBackgroundHeight NOTIFY implicitBackgroundHeightChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal topInset READ topInset WRITE setTopInset RESET resetTopInset NOTIFY topInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal leftInset READ leftInset WRITE setLeftInset RESET resetLeftInset NOTIFY leftInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal rightInset READ rightInset WRITE setRightInset RESET resetRightInset NOTIFY rightInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal bottomInset READ bottomInset WRITE setBottomInset RESET resetBottomInset NOTIFY bottomInsetChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DeferredPropertyNames", "background,contentItem") - Q_CLASSINFO("DefaultProperty", "contentData") - QML_NAMED_ELEMENT(Popup) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickPopup(QObject *parent = nullptr); - ~QQuickPopup(); - - qreal x() const; - void setX(qreal x); - - qreal y() const; - void setY(qreal y); - - QPointF position() const; - void setPosition(const QPointF &pos); - - qreal z() const; - void setZ(qreal z); - - qreal width() const; - void setWidth(qreal width); - void resetWidth(); - - qreal height() const; - void setHeight(qreal height); - void resetHeight(); - - qreal implicitWidth() const; - void setImplicitWidth(qreal width); - - qreal implicitHeight() const; - void setImplicitHeight(qreal height); - - qreal contentWidth() const; - void setContentWidth(qreal width); - - qreal contentHeight() const; - void setContentHeight(qreal height); - - qreal availableWidth() const; - qreal availableHeight() const; - - qreal margins() const; - void setMargins(qreal margins); - void resetMargins(); - - qreal topMargin() const; - void setTopMargin(qreal margin); - void resetTopMargin(); - - qreal leftMargin() const; - void setLeftMargin(qreal margin); - void resetLeftMargin(); - - qreal rightMargin() const; - void setRightMargin(qreal margin); - void resetRightMargin(); - - qreal bottomMargin() const; - void setBottomMargin(qreal margin); - void resetBottomMargin(); - - qreal padding() const; - void setPadding(qreal padding); - void resetPadding(); - - qreal topPadding() const; - void setTopPadding(qreal padding); - void resetTopPadding(); - - qreal leftPadding() const; - void setLeftPadding(qreal padding); - void resetLeftPadding(); - - qreal rightPadding() const; - void setRightPadding(qreal padding); - void resetRightPadding(); - - qreal bottomPadding() const; - void setBottomPadding(qreal padding); - void resetBottomPadding(); - - QLocale locale() const; - void setLocale(const QLocale &locale); - void resetLocale(); - - QFont font() const; - void setFont(const QFont &font); - void resetFont(); - - QQuickWindow *window() const; - QQuickItem *popupItem() const; - - QQuickItem *parentItem() const; - void setParentItem(QQuickItem *parent); - void resetParentItem(); - - QQuickItem *background() const; - void setBackground(QQuickItem *background); - - QQuickItem *contentItem() const; - void setContentItem(QQuickItem *item); - - bool clip() const; - void setClip(bool clip); - - bool hasFocus() const; - void setFocus(bool focus); - - bool hasActiveFocus() const; - - bool isModal() const; - void setModal(bool modal); - - bool dim() const; - void setDim(bool dim); - void resetDim(); - - bool isVisible() const; - virtual void setVisible(bool visible); - - qreal opacity() const; - void setOpacity(qreal opacity); - - qreal scale() const; - void setScale(qreal scale); - - enum ClosePolicyFlag { - NoAutoClose = 0x00, - CloseOnPressOutside = 0x01, - CloseOnPressOutsideParent = 0x02, - CloseOnReleaseOutside = 0x04, - CloseOnReleaseOutsideParent = 0x08, - CloseOnEscape = 0x10 - }; - Q_DECLARE_FLAGS(ClosePolicy, ClosePolicyFlag) - Q_FLAG(ClosePolicy) - - ClosePolicy closePolicy() const; - void setClosePolicy(ClosePolicy policy); - void resetClosePolicy(); - - // keep in sync with Item.TransformOrigin - enum TransformOrigin { - TopLeft, Top, TopRight, - Left, Center, Right, - BottomLeft, Bottom, BottomRight - }; - Q_ENUM(TransformOrigin) - - TransformOrigin transformOrigin() const; - void setTransformOrigin(TransformOrigin); - - QQuickTransition *enter() const; - void setEnter(QQuickTransition *transition); - - QQuickTransition *exit() const; - void setExit(QQuickTransition *transition); - - bool filtersChildMouseEvents() const; - void setFiltersChildMouseEvents(bool filter); - - Q_INVOKABLE void forceActiveFocus(Qt::FocusReason reason = Qt::OtherFocusReason); - - // 2.1 (Qt 5.8) - qreal spacing() const; - void setSpacing(qreal spacing); - void resetSpacing(); - - // 2.3 (Qt 5.10) - bool isOpened() const; - bool isMirrored() const; - - bool isEnabled() const; - void setEnabled(bool enabled); - - // 2.5 (Qt 5.12) - qreal horizontalPadding() const; - void setHorizontalPadding(qreal padding); - void resetHorizontalPadding(); - - qreal verticalPadding() const; - void setVerticalPadding(qreal padding); - void resetVerticalPadding(); - - qreal implicitContentWidth() const; - qreal implicitContentHeight() const; - - qreal implicitBackgroundWidth() const; - qreal implicitBackgroundHeight() const; - - qreal topInset() const; - void setTopInset(qreal inset); - void resetTopInset(); - - qreal leftInset() const; - void setLeftInset(qreal inset); - void resetLeftInset(); - - qreal rightInset() const; - void setRightInset(qreal inset); - void resetRightInset(); - - qreal bottomInset() const; - void setBottomInset(qreal inset); - void resetBottomInset(); - -public Q_SLOTS: - void open(); - void close(); - -Q_SIGNALS: - void opened(); - void closed(); - void aboutToShow(); - void aboutToHide(); - void xChanged(); - void yChanged(); - void zChanged(); - void widthChanged(); - void heightChanged(); - void implicitWidthChanged(); - void implicitHeightChanged(); - void contentWidthChanged(); - void contentHeightChanged(); - void availableWidthChanged(); - void availableHeightChanged(); - void marginsChanged(); - void topMarginChanged(); - void leftMarginChanged(); - void rightMarginChanged(); - void bottomMarginChanged(); - void paddingChanged(); - void topPaddingChanged(); - void leftPaddingChanged(); - void rightPaddingChanged(); - void bottomPaddingChanged(); - void fontChanged(); - void localeChanged(); - void parentChanged(); - void backgroundChanged(); - void contentItemChanged(); - void contentChildrenChanged(); - void clipChanged(); - void focusChanged(); - void activeFocusChanged(); - void modalChanged(); - void dimChanged(); - void visibleChanged(); - void opacityChanged(); - void scaleChanged(); - void closePolicyChanged(); - void enterChanged(); - void exitChanged(); - void windowChanged(QQuickWindow *window); - // 2.1 (Qt 5.8) - Q_REVISION(2, 1) void spacingChanged(); - // 2.3 (Qt 5.10) - Q_REVISION(2, 3) void openedChanged(); - Q_REVISION(2, 3) void mirroredChanged(); - Q_REVISION(2, 3) void enabledChanged(); - Q_REVISION(2, 3) void paletteChanged(); - Q_REVISION(2, 3) void paletteCreated(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void horizontalPaddingChanged(); - Q_REVISION(2, 5) void verticalPaddingChanged(); - Q_REVISION(2, 5) void implicitContentWidthChanged(); - Q_REVISION(2, 5) void implicitContentHeightChanged(); - Q_REVISION(2, 5) void implicitBackgroundWidthChanged(); - Q_REVISION(2, 5) void implicitBackgroundHeightChanged(); - Q_REVISION(2, 5) void topInsetChanged(); - Q_REVISION(2, 5) void leftInsetChanged(); - Q_REVISION(2, 5) void rightInsetChanged(); - Q_REVISION(2, 5) void bottomInsetChanged(); - -protected: - QQuickPopup(QQuickPopupPrivate &dd, QObject *parent); - - void classBegin() override; - void componentComplete() override; - bool isComponentComplete() const; - - virtual bool childMouseEventFilter(QQuickItem *child, QEvent *event); - virtual void focusInEvent(QFocusEvent *event); - virtual void focusOutEvent(QFocusEvent *event); - virtual void keyPressEvent(QKeyEvent *event); - virtual void keyReleaseEvent(QKeyEvent *event); - virtual void mousePressEvent(QMouseEvent *event); - virtual void mouseMoveEvent(QMouseEvent *event); - virtual void mouseReleaseEvent(QMouseEvent *event); - virtual void mouseDoubleClickEvent(QMouseEvent *event); - virtual void mouseUngrabEvent(); - virtual bool overlayEvent(QQuickItem *item, QEvent *event); -#if QT_CONFIG(quicktemplates2_multitouch) - virtual void touchEvent(QTouchEvent *event); - virtual void touchUngrabEvent(); -#endif -#if QT_CONFIG(wheelevent) - virtual void wheelEvent(QWheelEvent *event); -#endif - - virtual void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem); - virtual void contentSizeChange(const QSizeF &newSize, const QSizeF &oldSize); - virtual void fontChange(const QFont &newFont, const QFont &oldFont); - virtual void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry); - virtual void localeChange(const QLocale &newLocale, const QLocale &oldLocale); - virtual void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data); - virtual void marginsChange(const QMarginsF &newMargins, const QMarginsF &oldMargins); - virtual void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding); - virtual void spacingChange(qreal newSpacing, qreal oldSpacing); - virtual void insetChange(const QMarginsF &newInset, const QMarginsF &oldInset); - - virtual QFont defaultFont() const; - -#if QT_CONFIG(accessibility) - virtual QAccessible::Role accessibleRole() const; - virtual void accessibilityActiveChanged(bool active); -#endif - - QString accessibleName() const; - void maybeSetAccessibleName(const QString &name); - - QVariant accessibleProperty(const char *propertyName); - bool setAccessibleProperty(const char *propertyName, const QVariant &value); - -private: - Q_DISABLE_COPY(QQuickPopup) - Q_DECLARE_PRIVATE(QQuickPopup) - friend class QQuickPopupItem; - friend class QQuickOverlay; - friend class QQuickOverlayPrivate; -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickPopup::ClosePolicy) - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPopup) - -#endif // QQUICKPOPUP_P_H diff --git a/src/quicktemplates2/qquickpopup_p_p.h b/src/quicktemplates2/qquickpopup_p_p.h deleted file mode 100644 index 0a00c2aa..00000000 --- a/src/quicktemplates2/qquickpopup_p_p.h +++ /dev/null @@ -1,219 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPOPUP_P_P_H -#define QQUICKPOPUP_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickpopup_p.h> -#include <QtQuickTemplates2/private/qquickcontrol_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -#include <QtCore/private/qobject_p.h> -#include <QtQuick/qquickitem.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> -#include <QtQuick/private/qquicktransitionmanager_p_p.h> -#include <QtQuick/private/qquickitem_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickTransition; -class QQuickTransitionManager; -class QQuickPopup; -class QQuickPopupAnchors; -class QQuickPopupItem; -class QQuickPopupPrivate; -class QQuickPopupPositioner; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopupTransitionManager : public QQuickTransitionManager -{ -public: - QQuickPopupTransitionManager(QQuickPopupPrivate *popup); - - void transitionEnter(); - void transitionExit(); - -protected: - void finished() override; - -private: - QQuickPopupPrivate *popup = nullptr; -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopupPrivate - : public QObjectPrivate - , public QQuickItemChangeListener - , public QQuickPaletteProviderPrivateBase<QQuickPopup, QQuickPopupPrivate> -{ - Q_DECLARE_PUBLIC(QQuickPopup) - -public: - QQuickPopupPrivate(); - - static QQuickPopupPrivate *get(QQuickPopup *popup) - { - return popup->d_func(); - } - - QQmlListProperty<QObject> contentData(); - QQmlListProperty<QQuickItem> contentChildren(); - - virtual void init(); - void createPopupItem(); - void connectToPopupItem(); - void closeOrReject(); - bool tryClose(const QPointF &pos, QQuickPopup::ClosePolicy flags); - - bool contains(const QPointF &scenePos) const; - -#if QT_CONFIG(quicktemplates2_multitouch) - virtual bool acceptTouch(const QTouchEvent::TouchPoint &point); -#endif - virtual bool blockInput(QQuickItem *item, const QPointF &point) const; - - virtual bool handlePress(QQuickItem* item, const QPointF &point, ulong timestamp); - virtual bool handleMove(QQuickItem* item, const QPointF &point, ulong timestamp); - virtual bool handleRelease(QQuickItem* item, const QPointF &point, ulong timestamp); - virtual void handleUngrab(); - - bool handleMouseEvent(QQuickItem *item, QMouseEvent *event); - bool handleHoverEvent(QQuickItem *item, QHoverEvent *event); -#if QT_CONFIG(quicktemplates2_multitouch) - bool handleTouchEvent(QQuickItem *item, QTouchEvent *event); -#endif - - void reposition(); - - void createOverlay(); - void destroyOverlay(); - void toggleOverlay(); - virtual void showOverlay(); - virtual void hideOverlay(); - virtual void resizeOverlay(); - - virtual bool prepareEnterTransition(); - virtual bool prepareExitTransition(); - virtual void finalizeEnterTransition(); - virtual void finalizeExitTransition(); - - virtual void opened(); - - QMarginsF getMargins() const; - - void setTopMargin(qreal value, bool reset = false); - void setLeftMargin(qreal value, bool reset = false); - void setRightMargin(qreal value, bool reset = false); - void setBottomMargin(qreal value, bool reset = false); - - QQuickPopupAnchors *getAnchors(); - virtual QQuickPopupPositioner *getPositioner(); - - void setWindow(QQuickWindow *window); - void itemDestroyed(QQuickItem *item) override; - - QPalette defaultPalette() const override; - - enum TransitionState { - NoTransition, EnterTransition, ExitTransition - }; - - static const QQuickPopup::ClosePolicy DefaultClosePolicy; - - bool focus = false; - bool modal = false; - bool dim = false; - bool hasDim = false; - bool visible = false; - bool complete = true; - bool positioning = false; - bool hasWidth = false; - bool hasHeight = false; - bool hasTopMargin = false; - bool hasLeftMargin = false; - bool hasRightMargin = false; - bool hasBottomMargin = false; - bool allowVerticalFlip = false; - bool allowHorizontalFlip = false; - bool allowVerticalMove = true; - bool allowHorizontalMove = true; - bool allowVerticalResize = true; - bool allowHorizontalResize = true; - bool hadActiveFocusBeforeExitTransition = false; - bool interactive = true; - bool hasClosePolicy = false; - int touchId = -1; - qreal x = 0; - qreal y = 0; - qreal effectiveX = 0; - qreal effectiveY = 0; - qreal margins = -1; - qreal topMargin = 0; - qreal leftMargin = 0; - qreal rightMargin = 0; - qreal bottomMargin = 0; - QPointF pressPoint; - TransitionState transitionState = NoTransition; - QQuickPopup::ClosePolicy closePolicy = DefaultClosePolicy; - QQuickItem *parentItem = nullptr; - QQuickItem *dimmer = nullptr; - QPointer<QQuickWindow> window; - QQuickTransition *enter = nullptr; - QQuickTransition *exit = nullptr; - QQuickPopupItem *popupItem = nullptr; - QQuickPopupPositioner *positioner = nullptr; - QList<QQuickStateAction> enterActions; - QList<QQuickStateAction> exitActions; - QQuickPopupTransitionManager transitionManager; - QQuickPopupAnchors *anchors = nullptr; - qreal prevOpacity = 0; - qreal prevScale = 0; - - friend class QQuickPopupTransitionManager; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPOPUP_P_P_H diff --git a/src/quicktemplates2/qquickpopupanchors.cpp b/src/quicktemplates2/qquickpopupanchors.cpp deleted file mode 100644 index 0d286cc0..00000000 --- a/src/quicktemplates2/qquickpopupanchors.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickpopupanchors_p.h" -#include "qquickpopupanchors_p_p.h" -#include "qquickpopup_p_p.h" - -QT_BEGIN_NAMESPACE - -QQuickPopupAnchors::QQuickPopupAnchors(QQuickPopup *popup) - : QObject(*(new QQuickPopupAnchorsPrivate), popup) -{ - Q_D(QQuickPopupAnchors); - d->popup = popup; -} - -QQuickPopupAnchors::~QQuickPopupAnchors() -{ - Q_D(const QQuickPopupAnchors); - if (d->centerIn) { - auto centerInPrivate = QQuickItemPrivate::get(d->centerIn); - centerInPrivate->removeItemChangeListener(this, QQuickItemPrivate::Destroyed); - } -} - -QQuickItem *QQuickPopupAnchors::centerIn() const -{ - Q_D(const QQuickPopupAnchors); - return d->centerIn; -} - -void QQuickPopupAnchors::setCenterIn(QQuickItem *item) -{ - Q_D(QQuickPopupAnchors); - if (item == d->centerIn) - return; - - if (d->centerIn) { - auto centerInPrivate = QQuickItemPrivate::get(d->centerIn); - centerInPrivate->removeItemChangeListener(this, QQuickItemPrivate::Destroyed); - } - - d->centerIn = item; - - if (d->centerIn) { - auto centerInPrivate = QQuickItemPrivate::get(d->centerIn); - centerInPrivate->addItemChangeListener(this, QQuickItemPrivate::Destroyed); - } - - QQuickPopupPrivate::get(d->popup)->reposition(); - - emit centerInChanged(); -} - -void QQuickPopupAnchors::resetCenterIn() -{ - setCenterIn(nullptr); -} - -void QQuickPopupAnchors::itemDestroyed(QQuickItem *) -{ - resetCenterIn(); -} - -QT_END_NAMESPACE - -#include "moc_qquickpopupanchors_p.cpp" diff --git a/src/quicktemplates2/qquickpopupanchors_p.h b/src/quicktemplates2/qquickpopupanchors_p.h deleted file mode 100644 index dce1c5b2..00000000 --- a/src/quicktemplates2/qquickpopupanchors_p.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPOPUPANCHORS_P_H -#define QQUICKPOPUPANCHORS_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtQml/qqml.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickItem; -class QQuickPopupAnchorsPrivate; -class QQuickPopup; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopupAnchors : public QObject, public QQuickItemChangeListener -{ - Q_OBJECT - Q_PROPERTY(QQuickItem *centerIn READ centerIn WRITE setCenterIn RESET resetCenterIn NOTIFY centerInChanged) - QML_ANONYMOUS - QML_ADDED_IN_VERSION(2, 5) - -public: - explicit QQuickPopupAnchors(QQuickPopup *popup); - ~QQuickPopupAnchors(); - - QQuickItem *centerIn() const; - void setCenterIn(QQuickItem *item); - void resetCenterIn(); - -Q_SIGNALS: - void centerInChanged(); - -private: - void itemDestroyed(QQuickItem *item) override; - - Q_DISABLE_COPY(QQuickPopupAnchors) - Q_DECLARE_PRIVATE(QQuickPopupAnchors) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickPopupAnchors) - -#endif // QQUICKPOPUPANCHORS_P_H diff --git a/src/quicktemplates2/qquickpopupanchors_p_p.h b/src/quicktemplates2/qquickpopupanchors_p_p.h deleted file mode 100644 index 989dc6df..00000000 --- a/src/quicktemplates2/qquickpopupanchors_p_p.h +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPOPUPANCHORS_P_P_H -#define QQUICKPOPUPANCHORS_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/private/qobject_p.h> -#include <QtQuickTemplates2/private/qquickpopup_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickItem; -class QQuickPopup; - -class QQuickPopupAnchorsPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickPopupAnchors) - -public: - static QQuickPopupAnchorsPrivate *get(QQuickPopupAnchors *popupAnchors) - { - return popupAnchors->d_func(); - } - - QQuickPopup *popup = nullptr; - QQuickItem *centerIn = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPOPUPANCHORS_P_P_H diff --git a/src/quicktemplates2/qquickpopupitem.cpp b/src/quicktemplates2/qquickpopupitem.cpp deleted file mode 100644 index 0381dac2..00000000 --- a/src/quicktemplates2/qquickpopupitem.cpp +++ /dev/null @@ -1,438 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickpopupitem_p_p.h" -#include "qquickapplicationwindow_p.h" -#include "qquickshortcutcontext_p_p.h" -#include "qquickpage_p_p.h" -#include "qquickcontentitem_p.h" -#include "qquickpopup_p_p.h" -#include "qquickdeferredexecute_p_p.h" - -#if QT_CONFIG(shortcut) -# include <QtGui/private/qshortcutmap_p.h> -#endif -#include <QtGui/private/qguiapplication_p.h> - -#if QT_CONFIG(accessibility) -#include <QtQuick/private/qquickaccessibleattached_p.h> -#endif - -QT_BEGIN_NAMESPACE - -QQuickPopupItemPrivate::QQuickPopupItemPrivate(QQuickPopup *popup) - : popup(popup) -{ - isTabFence = true; -} - -void QQuickPopupItemPrivate::init() -{ - Q_Q(QQuickPopupItem); - q->setParent(popup); - q->setFlag(QQuickItem::ItemIsFocusScope); - q->setAcceptedMouseButtons(Qt::AllButtons); -#if QT_CONFIG(quicktemplates2_multitouch) - q->setAcceptTouchEvents(true); -#endif -#if QT_CONFIG(cursor) - q->setCursor(Qt::ArrowCursor); -#endif - - q->connect(popup, &QQuickPopup::paletteChanged, q, &QQuickItem::paletteChanged); - q->connect(popup, &QQuickPopup::paletteCreated, q, &QQuickItem::paletteCreated); - -#if QT_CONFIG(quicktemplates2_hover) - // TODO: switch to QStyleHints::useHoverEffects in Qt 5.8 - q->setHoverEnabled(true); - // setAcceptHoverEvents(QGuiApplication::styleHints()->useHoverEffects()); - // connect(QGuiApplication::styleHints(), &QStyleHints::useHoverEffectsChanged, this, &QQuickItem::setAcceptHoverEvents); -#endif -} - -void QQuickPopupItemPrivate::implicitWidthChanged() -{ - QQuickPagePrivate::implicitWidthChanged(); - emit popup->implicitWidthChanged(); -} - -void QQuickPopupItemPrivate::implicitHeightChanged() -{ - QQuickPagePrivate::implicitHeightChanged(); - emit popup->implicitHeightChanged(); -} - -void QQuickPopupItemPrivate::resolveFont() -{ - if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(popup->window())) - inheritFont(window->font()); - else - inheritFont(QQuickTheme::font(QQuickTheme::System)); -} - -QQuickItem *QQuickPopupItemPrivate::getContentItem() -{ - Q_Q(QQuickPopupItem); - if (QQuickItem *item = QQuickPagePrivate::getContentItem()) - return item; - - return new QQuickContentItem(popup, q); -} - -static inline QString contentItemName() { return QStringLiteral("contentItem"); } - -void QQuickPopupItemPrivate::cancelContentItem() -{ - quickCancelDeferred(popup, contentItemName()); -} - -void QQuickPopupItemPrivate::executeContentItem(bool complete) -{ - if (contentItem.wasExecuted()) - return; - - if (!contentItem || complete) - quickBeginDeferred(popup, contentItemName(), contentItem); - if (complete) - quickCompleteDeferred(popup, contentItemName(), contentItem); -} - -static inline QString backgroundName() { return QStringLiteral("background"); } - -void QQuickPopupItemPrivate::cancelBackground() -{ - quickCancelDeferred(popup, backgroundName()); -} - -void QQuickPopupItemPrivate::executeBackground(bool complete) -{ - if (background.wasExecuted()) - return; - - if (!background || complete) - quickBeginDeferred(popup, backgroundName(), background); - if (complete) - quickCompleteDeferred(popup, backgroundName(), background); -} - -QQuickPopupItem::QQuickPopupItem(QQuickPopup *popup) - : QQuickPage(*(new QQuickPopupItemPrivate(popup)), nullptr) -{ - Q_D(QQuickPopupItem); - d->init(); -} - -QQuickPopupItem::QQuickPopupItem(QQuickPopupItemPrivate &dd) : - QQuickPage(dd, nullptr) -{ - Q_D(QQuickPopupItem); - d->init(); -} - -void QQuickPopupItem::grabShortcut() -{ -#if QT_CONFIG(shortcut) - Q_D(QQuickPopupItem); - QGuiApplicationPrivate *pApp = QGuiApplicationPrivate::instance(); - if (!d->backId) - d->backId = pApp->shortcutMap.addShortcut(this, Qt::Key_Back, Qt::WindowShortcut, QQuickShortcutContext::matcher); - if (!d->escapeId) - d->escapeId = pApp->shortcutMap.addShortcut(this, Qt::Key_Escape, Qt::WindowShortcut, QQuickShortcutContext::matcher); -#endif -} - -void QQuickPopupItem::ungrabShortcut() -{ -#if QT_CONFIG(shortcut) - Q_D(QQuickPopupItem); - QGuiApplicationPrivate *pApp = QGuiApplicationPrivate::instance(); - if (d->backId) { - pApp->shortcutMap.removeShortcut(d->backId, this); - d->backId = 0; - } - if (d->escapeId) { - pApp->shortcutMap.removeShortcut(d->escapeId, this); - d->escapeId = 0; - } -#endif -} - -QQuickPalette *QQuickPopupItemPrivate::palette() const -{ - return QQuickPopupPrivate::get(popup)->palette(); -} - -void QQuickPopupItemPrivate::setPalette(QQuickPalette *p) -{ - QQuickPopupPrivate::get(popup)->setPalette(p); -} - -void QQuickPopupItemPrivate::resetPalette() -{ - QQuickPopupPrivate::get(popup)->resetPalette(); -} - -QPalette QQuickPopupItemPrivate::defaultPalette() const -{ - return QQuickPopupPrivate::get(popup)->defaultPalette(); -} - -bool QQuickPopupItemPrivate::providesPalette() const -{ - return QQuickPopupPrivate::get(popup)->providesPalette(); -} - -QPalette QQuickPopupItemPrivate::parentPalette() const -{ - return QQuickPopupPrivate::get(popup)->parentPalette(); -} - -void QQuickPopupItem::updatePolish() -{ - Q_D(QQuickPopupItem); - return QQuickPopupPrivate::get(d->popup)->reposition(); -} - -bool QQuickPopupItem::event(QEvent *event) -{ -#if QT_CONFIG(shortcut) - Q_D(QQuickPopupItem); - if (event->type() == QEvent::Shortcut) { - QShortcutEvent *se = static_cast<QShortcutEvent *>(event); - if (se->shortcutId() == d->escapeId || se->shortcutId() == d->backId) { - QQuickPopupPrivate *p = QQuickPopupPrivate::get(d->popup); - if (p->interactive) { - p->closeOrReject(); - return true; - } - } - } -#endif - return QQuickItem::event(event); -} - -bool QQuickPopupItem::childMouseEventFilter(QQuickItem *child, QEvent *event) -{ - Q_D(QQuickPopupItem); - return d->popup->childMouseEventFilter(child, event); -} - -void QQuickPopupItem::focusInEvent(QFocusEvent *event) -{ - Q_D(QQuickPopupItem); - d->popup->focusInEvent(event); -} - -void QQuickPopupItem::focusOutEvent(QFocusEvent *event) -{ - Q_D(QQuickPopupItem); - d->popup->focusOutEvent(event); -} - -void QQuickPopupItem::keyPressEvent(QKeyEvent *event) -{ - Q_D(QQuickPopupItem); - d->popup->keyPressEvent(event); -} - -void QQuickPopupItem::keyReleaseEvent(QKeyEvent *event) -{ - Q_D(QQuickPopupItem); - d->popup->keyReleaseEvent(event); -} - -void QQuickPopupItem::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickPopupItem); - d->popup->mousePressEvent(event); -} - -void QQuickPopupItem::mouseMoveEvent(QMouseEvent *event) -{ - Q_D(QQuickPopupItem); - d->popup->mouseMoveEvent(event); -} - -void QQuickPopupItem::mouseReleaseEvent(QMouseEvent *event) -{ - Q_D(QQuickPopupItem); - d->popup->mouseReleaseEvent(event); -} - -void QQuickPopupItem::mouseDoubleClickEvent(QMouseEvent *event) -{ - Q_D(QQuickPopupItem); - d->popup->mouseDoubleClickEvent(event); -} - -void QQuickPopupItem::mouseUngrabEvent() -{ - Q_D(QQuickPopupItem); - d->popup->mouseUngrabEvent(); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickPopupItem::touchEvent(QTouchEvent *event) -{ - Q_D(QQuickPopupItem); - d->popup->touchEvent(event); -} - -void QQuickPopupItem::touchUngrabEvent() -{ - Q_D(QQuickPopupItem); - d->popup->touchUngrabEvent(); -} -#endif - -#if QT_CONFIG(wheelevent) -void QQuickPopupItem::wheelEvent(QWheelEvent *event) -{ - Q_D(QQuickPopupItem); - d->popup->wheelEvent(event); -} -#endif - -void QQuickPopupItem::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_D(QQuickPopupItem); - QQuickPage::contentItemChange(newItem, oldItem); - d->popup->contentItemChange(newItem, oldItem); -} - -void QQuickPopupItem::contentSizeChange(const QSizeF &newSize, const QSizeF &oldSize) -{ - Q_D(QQuickPopupItem); - QQuickPage::contentSizeChange(newSize, oldSize); - d->popup->contentSizeChange(newSize, oldSize); -} - -void QQuickPopupItem::fontChange(const QFont &newFont, const QFont &oldFont) -{ - Q_D(QQuickPopupItem); - QQuickPage::fontChange(newFont, oldFont); - d->popup->fontChange(newFont, oldFont); -} - -void QQuickPopupItem::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickPopupItem); - QQuickPage::geometryChange(newGeometry, oldGeometry); - d->popup->geometryChange(newGeometry, oldGeometry); -} - -void QQuickPopupItem::localeChange(const QLocale &newLocale, const QLocale &oldLocale) -{ - Q_D(QQuickPopupItem); - QQuickPage::localeChange(newLocale, oldLocale); - d->popup->localeChange(newLocale, oldLocale); -} - -void QQuickPopupItem::mirrorChange() -{ - Q_D(QQuickPopupItem); - emit d->popup->mirroredChanged(); -} - -void QQuickPopupItem::itemChange(ItemChange change, const ItemChangeData &data) -{ - Q_D(QQuickPopupItem); - QQuickPage::itemChange(change, data); - d->popup->itemChange(change, data); -} - -void QQuickPopupItem::paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) -{ - Q_D(QQuickPopupItem); - QQuickPage::paddingChange(newPadding, oldPadding); - d->popup->paddingChange(newPadding, oldPadding); -} - -void QQuickPopupItem::enabledChange() -{ - Q_D(QQuickPopupItem); - // Just having QQuickPopup connect our QQuickItem::enabledChanged() signal - // to its enabledChanged() signal is enough for the enabled property to work, - // but we must also ensure that its paletteChanged() signal is emitted - // so that bindings to palette are re-evaluated, because QQuickControl::palette() - // returns a different palette depending on whether or not the control is enabled. - // To save a connection, we also emit enabledChanged here. - emit d->popup->enabledChanged(); -} - -QFont QQuickPopupItem::defaultFont() const -{ - Q_D(const QQuickPopupItem); - return d->popup->defaultFont(); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickPopupItem::accessibleRole() const -{ - Q_D(const QQuickPopupItem); - return d->popup->accessibleRole(); -} - -void QQuickPopupItem::accessibilityActiveChanged(bool active) -{ - Q_D(const QQuickPopupItem); - // Can't just use d->popup->accessibleName() here, because that refers to the accessible - // name of us, the popup item, which is not what we want. - const QQuickAccessibleAttached *popupAccessibleAttached = QQuickControlPrivate::accessibleAttached(d->popup); - const QString oldPopupName = popupAccessibleAttached ? popupAccessibleAttached->name() : QString(); - const bool wasNameExplicitlySetOnPopup = popupAccessibleAttached && popupAccessibleAttached->wasNameExplicitlySet(); - - QQuickPage::accessibilityActiveChanged(active); - - QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this); - const QString ourName = accessibleAttached ? accessibleAttached->name() : QString(); - if (wasNameExplicitlySetOnPopup && accessibleAttached && ourName != oldPopupName) { - // The user set Accessible.name on the Popup. Since the Popup and its popup item - // have different accessible attached properties, the popup item doesn't know that - // a name was set on the Popup by the user, and that it should use that, rather than - // whatever QQuickPage sets. That's why we need to do it here. - // To avoid it being overridden by the call to accessibilityActiveChanged() below, - // we set it explicitly. It's safe to do this as the popup item is an internal implementation detail. - accessibleAttached->setName(oldPopupName); - } - - // This allows the different popup types to set a name on their popup item accordingly. - // For example: Dialog uses its title and ToolTip uses its text. - d->popup->accessibilityActiveChanged(active); -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickpopupitem_p.h b/src/quicktemplates2/qquickpopupitem_p.h deleted file mode 100644 index 2947a6e3..00000000 --- a/src/quicktemplates2/qquickpopupitem_p.h +++ /dev/null @@ -1,119 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPOPUPITEM_P_H -#define QQUICKPOPUPITEM_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickpage_p.h> -#include <QtQuickTemplates2/private/qquickpage_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickPopup; -class QQuickPopupItemPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopupItem : public QQuickPage -{ - Q_OBJECT - -public: - explicit QQuickPopupItem(QQuickPopup *popup); - - void grabShortcut(); - void ungrabShortcut(); - -protected: - void updatePolish() override; - - bool event(QEvent *event) override; - bool childMouseEventFilter(QQuickItem *child, QEvent *event) override; - void focusInEvent(QFocusEvent *event) override; - void focusOutEvent(QFocusEvent *event) override; - void keyPressEvent(QKeyEvent *event) override; - void keyReleaseEvent(QKeyEvent *event) override; - void mousePressEvent(QMouseEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override; - void mouseDoubleClickEvent(QMouseEvent *event) override; - void mouseUngrabEvent() override; -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; - void touchUngrabEvent() override; -#endif -#if QT_CONFIG(wheelevent) - void wheelEvent(QWheelEvent *event) override; -#endif - - void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; - void contentSizeChange(const QSizeF &newSize, const QSizeF &oldSize) override; - void fontChange(const QFont &newFont, const QFont &oldFont) override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - void localeChange(const QLocale &newLocale, const QLocale &oldLocale) override; - void mirrorChange() override; - void itemChange(ItemChange change, const ItemChangeData &data) override; - void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override; - void enabledChange() override; - - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; - void accessibilityActiveChanged(bool active) override; -#endif - -protected: - QQuickPopupItem(QQuickPopupItemPrivate &dd); - -private: - Q_DISABLE_COPY(QQuickPopupItem) - Q_DECLARE_PRIVATE(QQuickPopupItem) - friend class QQuickPopup; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPOPUPITEM_P_H diff --git a/src/quicktemplates2/qquickpopupitem_p_p.h b/src/quicktemplates2/qquickpopupitem_p_p.h deleted file mode 100644 index 48b35aa2..00000000 --- a/src/quicktemplates2/qquickpopupitem_p_p.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPOPUPITEM_P_P_H -#define QQUICKPOPUPITEM_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickpopupitem_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickPopup; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopupItemPrivate : public QQuickPagePrivate -{ - Q_DECLARE_PUBLIC(QQuickPopupItem) - -public: - QQuickPopupItemPrivate(QQuickPopup *popup); - - void init(); - - void implicitWidthChanged() override; - void implicitHeightChanged() override; - - void resolveFont() override; - - QQuickItem *getContentItem() override; - - void cancelContentItem() override; - void executeContentItem(bool complete = false) override; - - void cancelBackground() override; - void executeBackground(bool complete = false) override; - - QQuickPalette *palette() const override; - void setPalette(QQuickPalette* p) override; - void resetPalette() override; - - QPalette defaultPalette() const override; - bool providesPalette() const override; - - QPalette parentPalette() const override; - - int backId = 0; - int escapeId = 0; - QQuickPopup *popup = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPOPUPITEM_P_P_H diff --git a/src/quicktemplates2/qquickpopuppositioner.cpp b/src/quicktemplates2/qquickpopuppositioner.cpp deleted file mode 100644 index 1bfaafbe..00000000 --- a/src/quicktemplates2/qquickpopuppositioner.cpp +++ /dev/null @@ -1,310 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickoverlay_p.h" -#include "qquickpopuppositioner_p_p.h" -#include "qquickpopupanchors_p.h" -#include "qquickpopupitem_p_p.h" -#include "qquickpopup_p_p.h" - -#include <QtQml/qqmlinfo.h> -#include <QtQuick/private/qquickitem_p.h> - -QT_BEGIN_NAMESPACE - -static const QQuickItemPrivate::ChangeTypes AncestorChangeTypes = QQuickItemPrivate::Geometry - | QQuickItemPrivate::Parent - | QQuickItemPrivate::Children; - -static const QQuickItemPrivate::ChangeTypes ItemChangeTypes = QQuickItemPrivate::Geometry - | QQuickItemPrivate::Parent; - -QQuickPopupPositioner::QQuickPopupPositioner(QQuickPopup *popup) - : m_popup(popup) -{ -} - -QQuickPopupPositioner::~QQuickPopupPositioner() -{ - if (m_parentItem) { - QQuickItemPrivate::get(m_parentItem)->removeItemChangeListener(this, ItemChangeTypes); - removeAncestorListeners(m_parentItem->parentItem()); - } -} - -QQuickPopup *QQuickPopupPositioner::popup() const -{ - return m_popup; -} - -QQuickItem *QQuickPopupPositioner::parentItem() const -{ - return m_parentItem; -} - -void QQuickPopupPositioner::setParentItem(QQuickItem *parent) -{ - if (m_parentItem == parent) - return; - - if (m_parentItem) { - QQuickItemPrivate::get(m_parentItem)->removeItemChangeListener(this, ItemChangeTypes); - removeAncestorListeners(m_parentItem->parentItem()); - } - - m_parentItem = parent; - - if (!parent) - return; - - QQuickItemPrivate::get(parent)->addItemChangeListener(this, ItemChangeTypes); - addAncestorListeners(parent->parentItem()); - // Store the scale property so the end result of any transition that could effect the scale - // does not influence the top left of the final popup, so it doesn't appear to flip from one - // position to another as a result - m_popupScale = m_popup->popupItem()->scale(); - if (m_popup->popupItem()->isVisible()) - QQuickPopupPrivate::get(m_popup)->reposition(); -} - -void QQuickPopupPositioner::reposition() -{ - QQuickItem *popupItem = m_popup->popupItem(); - if (!popupItem->isVisible()) - return; - - if (m_positioning) { - popupItem->polish(); - return; - } - - const qreal w = popupItem->width() * m_popupScale; - const qreal h = popupItem->height() * m_popupScale; - const qreal iw = popupItem->implicitWidth() * m_popupScale; - const qreal ih = popupItem->implicitHeight() * m_popupScale; - - bool widthAdjusted = false; - bool heightAdjusted = false; - QQuickPopupPrivate *p = QQuickPopupPrivate::get(m_popup); - - const QQuickItem *centerInParent = p->anchors ? p->getAnchors()->centerIn() : nullptr; - const QQuickOverlay *centerInOverlay = qobject_cast<const QQuickOverlay*>(centerInParent); - QRectF rect(!centerInParent ? p->allowHorizontalMove ? p->x : popupItem->x() : 0, - !centerInParent ? p->allowVerticalMove ? p->y : popupItem->y() : 0, - !p->hasWidth && iw > 0 ? iw : w, - !p->hasHeight && ih > 0 ? ih : h); - if (m_parentItem) { - // m_parentItem is the parent that the popup should open in, - // and popupItem()->parentItem() is the overlay, so the mapToItem() calls below - // effectively map the rect to scene coordinates. - if (centerInParent) { - if (centerInParent != parentItem() && !centerInOverlay) { - qmlWarning(m_popup) << "Popup can only be centered within its immediate parent or Overlay.overlay"; - return; - } - - if (centerInOverlay) { - rect.moveCenter(QPointF(qRound(centerInOverlay->width() / 2.0), qRound(centerInOverlay->height() / 2.0))); - } else { - const QPointF parentItemCenter = QPointF(qRound(m_parentItem->width() / 2), qRound(m_parentItem->height() / 2)); - rect.moveCenter(m_parentItem->mapToItem(popupItem->parentItem(), parentItemCenter)); - } - } else { - rect.moveTopLeft(m_parentItem->mapToItem(popupItem->parentItem(), rect.topLeft())); - } - - if (p->window) { - const QMarginsF margins = p->getMargins(); - QRectF bounds(qMax<qreal>(0.0, margins.left()), - qMax<qreal>(0.0, margins.top()), - p->window->width() - qMax<qreal>(0.0, margins.left()) - qMax<qreal>(0.0, margins.right()), - p->window->height() - qMax<qreal>(0.0, margins.top()) - qMax<qreal>(0.0, margins.bottom())); - if (p->window->contentOrientation() == Qt::LandscapeOrientation || p->window->contentOrientation() == Qt::InvertedLandscapeOrientation) - bounds = bounds.transposed(); - - // if the popup doesn't fit horizontally inside the window, try flipping it around (left <-> right) - if (p->allowHorizontalFlip && (rect.left() < bounds.left() || rect.right() > bounds.right())) { - const QRectF flipped(m_parentItem->mapToScene(QPointF(m_parentItem->width() - p->x - rect.width(), p->y)), rect.size()); - if (flipped.intersected(bounds).width() > rect.intersected(bounds).width()) - rect.moveLeft(flipped.left()); - } - - // if the popup doesn't fit vertically inside the window, try flipping it around (above <-> below) - if (p->allowVerticalFlip && (rect.top() < bounds.top() || rect.bottom() > bounds.bottom())) { - const QRectF flipped(m_parentItem->mapToScene(QPointF(p->x, m_parentItem->height() - p->y - rect.height())), rect.size()); - if (flipped.intersected(bounds).height() > rect.intersected(bounds).height()) - rect.moveTop(flipped.top()); - } - - // push inside the margins if specified - if (p->allowVerticalMove) { - if (margins.top() >= 0 && rect.top() < bounds.top()) - rect.moveTop(margins.top()); - if (margins.bottom() >= 0 && rect.bottom() > bounds.bottom()) - rect.moveBottom(bounds.bottom()); - } - if (p->allowHorizontalMove) { - if (margins.left() >= 0 && rect.left() < bounds.left()) - rect.moveLeft(margins.left()); - if (margins.right() >= 0 && rect.right() > bounds.right()) - rect.moveRight(bounds.right()); - } - - if (iw > 0 && (rect.left() < bounds.left() || rect.right() > bounds.right())) { - // neither the flipped or pushed geometry fits inside the window, choose - // whichever side (left vs. right) fits larger part of the popup - if (p->allowHorizontalMove && p->allowHorizontalFlip) { - if (rect.left() < bounds.left() && bounds.left() + rect.width() <= bounds.right()) - rect.moveLeft(bounds.left()); - else if (rect.right() > bounds.right() && bounds.right() - rect.width() >= bounds.left()) - rect.moveRight(bounds.right()); - } - - // as a last resort, adjust the width to fit the window - if (p->allowHorizontalResize) { - if (rect.left() < bounds.left()) { - rect.setLeft(bounds.left()); - widthAdjusted = true; - } - if (rect.right() > bounds.right()) { - rect.setRight(bounds.right()); - widthAdjusted = true; - } - } - } else if (iw > 0 && rect.left() >= bounds.left() && rect.right() <= bounds.right() - && iw != w) { - // restore original width - rect.setWidth(iw); - widthAdjusted = true; - } - - if (ih > 0 && (rect.top() < bounds.top() || rect.bottom() > bounds.bottom())) { - // neither the flipped or pushed geometry fits inside the window, choose - // whichever side (above vs. below) fits larger part of the popup - if (p->allowVerticalMove && p->allowVerticalFlip) { - if (rect.top() < bounds.top() && bounds.top() + rect.height() <= bounds.bottom()) - rect.moveTop(bounds.top()); - else if (rect.bottom() > bounds.bottom() && bounds.bottom() - rect.height() >= bounds.top()) - rect.moveBottom(bounds.bottom()); - } - - // as a last resort, adjust the height to fit the window - if (p->allowVerticalResize) { - if (rect.top() < bounds.top()) { - rect.setTop(bounds.top()); - heightAdjusted = true; - } - if (rect.bottom() > bounds.bottom()) { - rect.setBottom(bounds.bottom()); - heightAdjusted = true; - } - } - } else if (ih > 0 && rect.top() >= bounds.top() && rect.bottom() <= bounds.bottom() - && ih != h) { - // restore original height - rect.setHeight(ih); - heightAdjusted = true; - } - } - } - - m_positioning = true; - - popupItem->setPosition(rect.topLeft()); - - // If the popup was assigned a parent, rect will be in scene coordinates, - // so we need to map its top left back to item coordinates. - // However, if centering within the overlay, the coordinates will be relative - // to the window, so we don't need to do anything. - const QPointF effectivePos = m_parentItem && !centerInOverlay ? m_parentItem->mapFromScene(rect.topLeft()) : rect.topLeft(); - if (!qFuzzyCompare(p->effectiveX, effectivePos.x())) { - p->effectiveX = effectivePos.x(); - emit m_popup->xChanged(); - } - if (!qFuzzyCompare(p->effectiveY, effectivePos.y())) { - p->effectiveY = effectivePos.y(); - emit m_popup->yChanged(); - } - - if (!p->hasWidth && widthAdjusted && rect.width() > 0) - popupItem->setWidth(rect.width() / m_popupScale); - if (!p->hasHeight && heightAdjusted && rect.height() > 0) - popupItem->setHeight(rect.height() / m_popupScale); - m_positioning = false; -} - -void QQuickPopupPositioner::itemGeometryChanged(QQuickItem *, QQuickGeometryChange, const QRectF &) -{ - if (m_parentItem && m_popup->popupItem()->isVisible()) - QQuickPopupPrivate::get(m_popup)->reposition(); -} - -void QQuickPopupPositioner::itemParentChanged(QQuickItem *, QQuickItem *parent) -{ - addAncestorListeners(parent); -} - -void QQuickPopupPositioner::itemChildRemoved(QQuickItem *item, QQuickItem *child) -{ - if (child == m_parentItem || child->isAncestorOf(m_parentItem)) - removeAncestorListeners(item); -} - -void QQuickPopupPositioner::removeAncestorListeners(QQuickItem *item) -{ - if (item == m_parentItem) - return; - - QQuickItem *p = item; - while (p) { - QQuickItemPrivate::get(p)->removeItemChangeListener(this, AncestorChangeTypes); - p = p->parentItem(); - } -} - -void QQuickPopupPositioner::addAncestorListeners(QQuickItem *item) -{ - if (item == m_parentItem) - return; - - QQuickItem *p = item; - while (p) { - QQuickItemPrivate::get(p)->updateOrAddItemChangeListener(this, AncestorChangeTypes); - p = p->parentItem(); - } -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickpopuppositioner_p_p.h b/src/quicktemplates2/qquickpopuppositioner_p_p.h deleted file mode 100644 index 03a2e2fe..00000000 --- a/src/quicktemplates2/qquickpopuppositioner_p_p.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPOPUPPOSITIONER_P_P_H -#define QQUICKPOPUPPOSITIONER_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/private/qquickitemchangelistener_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickItem; -class QQuickPopup; - -class QQuickPopupPositioner : public QQuickItemChangeListener -{ -public: - explicit QQuickPopupPositioner(QQuickPopup *popup); - ~QQuickPopupPositioner(); - - QQuickPopup *popup() const; - - QQuickItem *parentItem() const; - void setParentItem(QQuickItem *parent); - - virtual void reposition(); - -protected: - void itemGeometryChanged(QQuickItem *, QQuickGeometryChange, const QRectF &) override; - void itemParentChanged(QQuickItem *, QQuickItem *parent) override; - void itemChildRemoved(QQuickItem *, QQuickItem *child) override; - - void removeAncestorListeners(QQuickItem *item); - void addAncestorListeners(QQuickItem *item); - - bool m_positioning = false; - QQuickItem *m_parentItem = nullptr; - QQuickPopup *m_popup = nullptr; - qreal m_popupScale = 1.0; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPOPUPPOSITIONER_P_P_H diff --git a/src/quicktemplates2/qquickpresshandler.cpp b/src/quicktemplates2/qquickpresshandler.cpp deleted file mode 100644 index d9ed484b..00000000 --- a/src/quicktemplates2/qquickpresshandler.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickpresshandler_p_p.h" - -#include <QtCore/private/qobject_p.h> -#include <QtGui/qguiapplication.h> -#include <QtGui/qstylehints.h> -#include <QtQuick/qquickitem.h> -#include <QtQuick/private/qquickevents_p_p.h> -#include <QtQuickTemplates2/private/qquicktextarea_p.h> -#include <QtQuickTemplates2/private/qquicktextfield_p.h> - -QT_BEGIN_NAMESPACE - -void QQuickPressHandler::mousePressEvent(QMouseEvent *event) -{ - longPress = false; - pressPos = event->position(); - if (Qt::LeftButton == (event->buttons() & Qt::LeftButton)) { - timer.start(QGuiApplication::styleHints()->mousePressAndHoldInterval(), control); - delayedMousePressEvent = new QMouseEvent(event->type(), event->position().toPoint(), event->button(), event->buttons(), event->modifiers()); - } else { - timer.stop(); - } - - if (isSignalConnected(control, "pressed(QQuickMouseEvent*)", pressedSignalIndex)) { - QQuickMouseEvent mev; - mev.reset(pressPos.x(), pressPos.y(), event->button(), event->buttons(), - event->modifiers(), false/*isClick*/, false/*wasHeld*/); - mev.setAccepted(true); - QQuickMouseEvent *mevPtr = &mev; - void *args[] = { nullptr, &mevPtr }; - QMetaObject::metacall(control, QMetaObject::InvokeMetaMethod, pressedSignalIndex, args); - event->setAccepted(mev.isAccepted()); - } -} - -void QQuickPressHandler::mouseMoveEvent(QMouseEvent *event) -{ - if (qAbs(int(event->position().x() - pressPos.x())) > QGuiApplication::styleHints()->startDragDistance()) - timer.stop(); -} - -void QQuickPressHandler::mouseReleaseEvent(QMouseEvent *event) -{ - if (!longPress) { - timer.stop(); - - if (isSignalConnected(control, "released(QQuickMouseEvent*)", releasedSignalIndex)) { - QQuickMouseEvent mev; - mev.reset(pressPos.x(), pressPos.y(), event->button(), event->buttons(), - event->modifiers(), false/*isClick*/, false/*wasHeld*/); - mev.setAccepted(true); - QQuickMouseEvent *mevPtr = &mev; - void *args[] = { nullptr, &mevPtr }; - QMetaObject::metacall(control, QMetaObject::InvokeMetaMethod, releasedSignalIndex, args); - event->setAccepted(mev.isAccepted()); - } - } -} - -void QQuickPressHandler::timerEvent(QTimerEvent *) -{ - timer.stop(); - clearDelayedMouseEvent(); - - longPress = isSignalConnected(control, "pressAndHold(QQuickMouseEvent*)", pressAndHoldSignalIndex); - if (longPress) { - QQuickMouseEvent mev; -QT_WARNING_PUSH -QT_WARNING_DISABLE_DEPRECATED - mev.reset(pressPos.x(), pressPos.y(), Qt::LeftButton, Qt::LeftButton, - QGuiApplication::keyboardModifiers(), false/*isClick*/, true/*wasHeld*/); -QT_WARNING_POP - mev.setAccepted(true); - // Use fast signal invocation since we already got its index - QQuickMouseEvent *mevPtr = &mev; - void *args[] = { nullptr, &mevPtr }; - QMetaObject::metacall(control, QMetaObject::InvokeMetaMethod, pressAndHoldSignalIndex, args); - if (!mev.isAccepted()) - longPress = false; - } -} - -void QQuickPressHandler::clearDelayedMouseEvent() -{ - if (delayedMousePressEvent) { - delete delayedMousePressEvent; - delayedMousePressEvent = 0; - } -} - -bool QQuickPressHandler::isActive() -{ - return !(timer.isActive() || longPress); -} - -bool QQuickPressHandler::isSignalConnected(QQuickItem *item, const char *signalName, int &signalIndex) -{ - if (signalIndex == -1) - signalIndex = item->metaObject()->indexOfSignal(signalName); - Q_ASSERT(signalIndex != -1); - const auto signalMetaMethod = item->metaObject()->method(signalIndex); - if (QQuickTextArea *textArea = qobject_cast<QQuickTextArea*>(item)) { - return textArea->isSignalConnected(signalMetaMethod); - } else if (QQuickTextField *textField = qobject_cast<QQuickTextField*>(item)) { - return textField->isSignalConnected(signalMetaMethod); - } - qFatal("Unhandled control type for signal name: %s", signalName); - return false; -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickpresshandler_p_p.h b/src/quicktemplates2/qquickpresshandler_p_p.h deleted file mode 100644 index 19312cdd..00000000 --- a/src/quicktemplates2/qquickpresshandler_p_p.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPRESSHANDLER_P_P_H -#define QQUICKPRESSHANDLER_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qpoint.h> -#include <QtCore/qbasictimer.h> - -QT_BEGIN_NAMESPACE - -class QQuickItem; -class QMouseEvent; -class QTimerEvent; - -struct QQuickPressHandler -{ - void mousePressEvent(QMouseEvent *event); - void mouseMoveEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); - void timerEvent(QTimerEvent *event); - - void clearDelayedMouseEvent(); - bool isActive(); - - static bool isSignalConnected(QQuickItem *item, const char *signalName, int &signalIndex); - - QQuickItem *control = nullptr; - QBasicTimer timer; - QPointF pressPos; - bool longPress = false; - int pressAndHoldSignalIndex = -1; - int pressedSignalIndex = -1; - int releasedSignalIndex = -1; - QMouseEvent *delayedMousePressEvent = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPRESSHANDLER_P_P_H diff --git a/src/quicktemplates2/qquickprogressbar.cpp b/src/quicktemplates2/qquickprogressbar.cpp deleted file mode 100644 index 34d3cd1b..00000000 --- a/src/quicktemplates2/qquickprogressbar.cpp +++ /dev/null @@ -1,271 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickprogressbar_p.h" -#include "qquickcontrol_p_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ProgressBar - \inherits Control -//! \instantiates QQuickProgressBar - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-indicators - \brief Indicates the progress of an operation. - - \image qtquickcontrols2-progressbar.gif - - ProgressBar indicates the progress of an operation. The value should be updated - regularly. The range is defined by \l from and \l to, which both can contain any value. - - \code - ProgressBar { - value: 0.5 - } - \endcode - - ProgressBar also supports a special \l indeterminate mode, which is useful, - for example, when unable to determine the size of the item being downloaded, - or if the download progress gets interrupted due to a network disconnection. - - \image qtquickcontrols2-progressbar-indeterminate.gif - - \code - ProgressBar { - indeterminate: true - } - \endcode - - The indeterminate mode is similar to a \l BusyIndicator. Both can be used - to indicate background activity. The main difference is visual, and that - ProgressBar can also present a concrete amount of progress (when it can be - determined). Due to the visual difference, indeterminate progress bars and - busy indicators fit different places in user interfaces. Typical places for - an indeterminate progress bar: - \list - \li at the bottom of a \l ToolBar - \li inline within the content of a \l Page - \li in an \l ItemDelegate to show the progress of a particular item - \endlist - - \sa {Customizing ProgressBar}, BusyIndicator, {Indicator Controls} -*/ - -class QQuickProgressBarPrivate : public QQuickControlPrivate -{ -public: - qreal from = 0; - qreal to = 1; - qreal value = 0; - bool indeterminate = false; -}; - -QQuickProgressBar::QQuickProgressBar(QQuickItem *parent) - : QQuickControl(*(new QQuickProgressBarPrivate), parent) -{ -} - -/*! - \qmlproperty real QtQuick.Controls::ProgressBar::from - - This property holds the starting value for the progress. The default value is \c 0.0. - - \sa to, value -*/ -qreal QQuickProgressBar::from() const -{ - Q_D(const QQuickProgressBar); - return d->from; -} - -void QQuickProgressBar::setFrom(qreal from) -{ - Q_D(QQuickProgressBar); - if (qFuzzyCompare(d->from, from)) - return; - - d->from = from; - emit fromChanged(); - emit positionChanged(); - emit visualPositionChanged(); - if (isComponentComplete()) - setValue(d->value); -} - -/*! - \qmlproperty real QtQuick.Controls::ProgressBar::to - - This property holds the end value for the progress. The default value is \c 1.0. - - \sa from, value -*/ -qreal QQuickProgressBar::to() const -{ - Q_D(const QQuickProgressBar); - return d->to; -} - -void QQuickProgressBar::setTo(qreal to) -{ - Q_D(QQuickProgressBar); - if (qFuzzyCompare(d->to, to)) - return; - - d->to = to; - emit toChanged(); - emit positionChanged(); - emit visualPositionChanged(); - if (isComponentComplete()) - setValue(d->value); -} - -/*! - \qmlproperty real QtQuick.Controls::ProgressBar::value - - This property holds the progress value. The default value is \c 0.0. - - \sa from, to, position -*/ -qreal QQuickProgressBar::value() const -{ - Q_D(const QQuickProgressBar); - return d->value; -} - -void QQuickProgressBar::setValue(qreal value) -{ - Q_D(QQuickProgressBar); - if (isComponentComplete()) - value = d->from > d->to ? qBound(d->to, value, d->from) : qBound(d->from, value, d->to); - - if (qFuzzyCompare(d->value, value)) - return; - - d->value = value; - emit valueChanged(); - emit positionChanged(); - emit visualPositionChanged(); -} - -/*! - \qmlproperty real QtQuick.Controls::ProgressBar::position - \readonly - - This property holds the logical position of the progress. - - The position is expressed as a fraction of the value, in the range - \c {0.0 - 1.0}. For visualizing the progress, the right-to-left - aware \l visualPosition should be used instead. - - \sa value, visualPosition -*/ -qreal QQuickProgressBar::position() const -{ - Q_D(const QQuickProgressBar); - if (qFuzzyCompare(d->from, d->to)) - return 0; - return (d->value - d->from) / (d->to - d->from); -} - -/*! - \qmlproperty real QtQuick.Controls::ProgressBar::visualPosition - \readonly - - This property holds the visual position of the progress. - - The position is expressed as a fraction of the value, in the range \c {0.0 - 1.0}. - When the control is \l {Control::mirrored}{mirrored}, \c visuaPosition is equal - to \c {1.0 - position}. This makes \c visualPosition suitable for visualizing - the progress, taking right-to-left support into account. - - \sa position, value -*/ -qreal QQuickProgressBar::visualPosition() const -{ - if (isMirrored()) - return 1.0 - position(); - return position(); -} - -/*! - \qmlproperty bool QtQuick.Controls::ProgressBar::indeterminate - - This property holds whether the progress bar is in indeterminate mode. - A progress bar in indeterminate mode displays that an operation is in progress, but it - doesn't show how much progress has been made. - - \image qtquickcontrols2-progressbar-indeterminate.gif -*/ -bool QQuickProgressBar::isIndeterminate() const -{ - Q_D(const QQuickProgressBar); - return d->indeterminate; -} - -void QQuickProgressBar::setIndeterminate(bool indeterminate) -{ - Q_D(QQuickProgressBar); - if (d->indeterminate == indeterminate) - return; - - d->indeterminate = indeterminate; - emit indeterminateChanged(); -} - -void QQuickProgressBar::mirrorChange() -{ - QQuickControl::mirrorChange(); - if (!qFuzzyCompare(position(), qreal(0.5))) - emit visualPositionChanged(); -} - -void QQuickProgressBar::componentComplete() -{ - Q_D(QQuickProgressBar); - QQuickControl::componentComplete(); - setValue(d->value); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickProgressBar::accessibleRole() const -{ - return QAccessible::ProgressBar; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickprogressbar_p.h b/src/quicktemplates2/qquickprogressbar_p.h deleted file mode 100644 index 8322670f..00000000 --- a/src/quicktemplates2/qquickprogressbar_p.h +++ /dev/null @@ -1,112 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPROGRESSBAR_P_H -#define QQUICKPROGRESSBAR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickProgressBarPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickProgressBar : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(qreal from READ from WRITE setFrom NOTIFY fromChanged FINAL) - Q_PROPERTY(qreal to READ to WRITE setTo NOTIFY toChanged FINAL) - Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged FINAL) - Q_PROPERTY(qreal position READ position NOTIFY positionChanged FINAL) - Q_PROPERTY(qreal visualPosition READ visualPosition NOTIFY visualPositionChanged FINAL) - Q_PROPERTY(bool indeterminate READ isIndeterminate WRITE setIndeterminate NOTIFY indeterminateChanged FINAL) - QML_NAMED_ELEMENT(ProgressBar) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickProgressBar(QQuickItem *parent = nullptr); - - qreal from() const; - void setFrom(qreal from); - - qreal to() const; - void setTo(qreal to); - - qreal value() const; - void setValue(qreal value); - - qreal position() const; - qreal visualPosition() const; - - bool isIndeterminate() const; - void setIndeterminate(bool indeterminate); - -Q_SIGNALS: - void fromChanged(); - void toChanged(); - void valueChanged(); - void positionChanged(); - void visualPositionChanged(); - void indeterminateChanged(); - -protected: - void mirrorChange() override; - void componentComplete() override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickProgressBar) - Q_DECLARE_PRIVATE(QQuickProgressBar) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickProgressBar) - -#endif // QQUICKPROGRESSBAR_P_H diff --git a/src/quicktemplates2/qquickradiobutton.cpp b/src/quicktemplates2/qquickradiobutton.cpp deleted file mode 100644 index f6c9c38f..00000000 --- a/src/quicktemplates2/qquickradiobutton.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickradiobutton_p.h" -#include "qquickcontrol_p_p.h" -#include "qquickabstractbutton_p_p.h" - -#include <QtGui/qpa/qplatformtheme.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype RadioButton - \inherits AbstractButton -//! \instantiates QQuickRadioButton - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-buttons - \brief Exclusive radio button that can be toggled on or off. - - \image qtquickcontrols2-radiobutton.gif - - RadioButton presents an option button that can be toggled on (checked) or - off (unchecked). Radio buttons are typically used to select one option - from a set of options. - - RadioButton inherits its API from \l AbstractButton. For instance, - you can set \l {AbstractButton::text}{text} and react to - \l {AbstractButton::clicked}{clicks} using the AbstractButton API. - The state of the radio button can be set with the - \l {AbstractButton::}{checked} property. - - Radio buttons are \l {AbstractButton::autoExclusive}{auto-exclusive} - by default. Only one button can be checked at any time amongst radio - buttons that belong to the same parent item; checking another button - automatically unchecks the previously checked one. For radio buttons - that do not share a common parent, ButtonGroup can be used to manage - exclusivity. - - \l RadioDelegate is similar to RadioButton, except that it is typically - used in views. - - \code - ColumnLayout { - RadioButton { - checked: true - text: qsTr("First") - } - RadioButton { - text: qsTr("Second") - } - RadioButton { - text: qsTr("Third") - } - } - \endcode - - \sa ButtonGroup, {Customizing RadioButton}, {Button Controls}, RadioDelegate -*/ - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickRadioButtonPrivate : public QQuickAbstractButtonPrivate -{ - Q_DECLARE_PUBLIC(QQuickRadioButton) - -public: - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::RadioButton); } -}; - -QQuickRadioButton::QQuickRadioButton(QQuickItem *parent) - : QQuickAbstractButton(*(new QQuickRadioButtonPrivate), parent) -{ - setCheckable(true); - setAutoExclusive(true); -} - -QFont QQuickRadioButton::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::RadioButton); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickRadioButton::accessibleRole() const -{ - return QAccessible::RadioButton; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickradiobutton_p.h b/src/quicktemplates2/qquickradiobutton_p.h deleted file mode 100644 index 29e18922..00000000 --- a/src/quicktemplates2/qquickradiobutton_p.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKRADIOBUTTON_P_H -#define QQUICKRADIOBUTTON_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickRadioButtonPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickRadioButton : public QQuickAbstractButton -{ - Q_OBJECT - QML_NAMED_ELEMENT(RadioButton) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickRadioButton(QQuickItem *parent = nullptr); - -protected: - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickRadioButton) - -#endif // QQUICKRADIOBUTTON_P_H diff --git a/src/quicktemplates2/qquickradiodelegate.cpp b/src/quicktemplates2/qquickradiodelegate.cpp deleted file mode 100644 index 69236fc1..00000000 --- a/src/quicktemplates2/qquickradiodelegate.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickradiodelegate_p.h" -#include "qquickabstractbutton_p_p.h" -#include "qquickitemdelegate_p_p.h" - -#include <QtGui/qpa/qplatformtheme.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype RadioDelegate - \inherits ItemDelegate -//! \instantiates QQuickRadioDelegate - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-delegates - \brief Exclusive item delegate with a radio indicator that can be toggled on or off. - - \image qtquickcontrols2-radiodelegate.gif - - RadioDelegate presents an item delegate that can be toggled on (checked) or - off (unchecked). Radio delegates are typically used to select one option - from a set of options. - - RadioDelegate inherits its API from \l ItemDelegate, which is inherited - from AbstractButton. For instance, you can set \l {AbstractButton::text}{text}, - and react to \l {AbstractButton::clicked}{clicks} using the AbstractButton - API. The state of the radio delegate can be set with the - \l {AbstractButton::}{checked} property. - - Radio delegates are \l {AbstractButton::autoExclusive}{auto-exclusive} - by default. Only one delegate can be checked at any time amongst radio - delegates that belong to the same parent item; checking another delegate - automatically unchecks the previously checked one. For radio delegates - that do not share a common parent, ButtonGroup can be used to manage - exclusivity. - - \l RadioButton is similar to RadioDelegate, except that it is typically - not used in views, but rather when there are only a few options, and often - with the requirement that each button is uniquely identifiable. - - \code - ButtonGroup { - id: buttonGroup - } - - ListView { - model: ["Option 1", "Option 2", "Option 3"] - delegate: RadioDelegate { - text: modelData - checked: index == 0 - ButtonGroup.group: buttonGroup - } - } - \endcode - - \sa {Customizing RadioDelegate}, {Delegate Controls}, RadioButton -*/ - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickRadioDelegatePrivate : public QQuickItemDelegatePrivate -{ - Q_DECLARE_PUBLIC(QQuickRadioDelegate) - -public: - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ListView); } -}; - -QQuickRadioDelegate::QQuickRadioDelegate(QQuickItem *parent) - : QQuickItemDelegate(*(new QQuickRadioDelegatePrivate), parent) -{ - setCheckable(true); - setAutoExclusive(true); -} - -QFont QQuickRadioDelegate::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::ListView); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickRadioDelegate::accessibleRole() const -{ - return QAccessible::RadioButton; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickradiodelegate_p.h b/src/quicktemplates2/qquickradiodelegate_p.h deleted file mode 100644 index 0ddff985..00000000 --- a/src/quicktemplates2/qquickradiodelegate_p.h +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKRADIODELEGATE_P_H -#define QQUICKRADIODELEGATE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickitemdelegate_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickRadioDelegatePrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickRadioDelegate : public QQuickItemDelegate -{ - Q_OBJECT - QML_NAMED_ELEMENT(RadioDelegate) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickRadioDelegate(QQuickItem *parent = nullptr); - -protected: - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DECLARE_PRIVATE(QQuickRadioDelegate) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickRadioDelegate) - -#endif // QQUICKRADIODELEGATE_P_H diff --git a/src/quicktemplates2/qquickrangeslider.cpp b/src/quicktemplates2/qquickrangeslider.cpp deleted file mode 100644 index 2348e642..00000000 --- a/src/quicktemplates2/qquickrangeslider.cpp +++ /dev/null @@ -1,1320 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickrangeslider_p.h" -#include "qquickcontrol_p_p.h" -#include "qquickdeferredexecute_p_p.h" - -#include <QtCore/qscopedpointer.h> -#include <QtQuick/private/qquickwindow_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype RangeSlider - \inherits Control -//! \instantiates QQuickRangeSlider - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-input - \ingroup qtquickcontrols2-focusscopes - \brief Used to select a range of values by sliding two handles along a track. - - \image qtquickcontrols2-rangeslider.gif - - RangeSlider is used to select a range specified by two values, by sliding - each handle along a track. - - In the example below, custom \l from and \l to values are set, and the - initial positions of the \l first and \l second handles are set: - - \code - RangeSlider { - from: 1 - to: 100 - first.value: 25 - second.value: 75 - } - \endcode - - In order to perform an action when the value for a particular handle changes, - use the following syntax: - - \code - first.onMoved: console.log("first.value changed to " + first.value) - \endcode - - The \l {first.position} and \l {second.position} properties are expressed as - fractions of the control's size, in the range \c {0.0 - 1.0}. - The \l {first.visualPosition} and \l {second.visualPosition} properties are - the same, except that they are reversed in a - \l {Right-to-left User Interfaces}{right-to-left} application. - The \c visualPosition is useful for positioning the handles when styling - RangeSlider. In the example above, \l {first.visualPosition} will be \c 0.24 - in a left-to-right application, and \c 0.76 in a right-to-left application. - - For a slider that allows the user to select a single value, see \l Slider. - - \sa {Customizing RangeSlider}, {Input Controls}, - {Focus Management in Qt Quick Controls} -*/ - -class QQuickRangeSliderNodePrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickRangeSliderNode) -public: - QQuickRangeSliderNodePrivate(qreal value, QQuickRangeSlider *slider) - : value(value), - slider(slider) - { - } - - bool isFirst() const; - - void setPosition(qreal position, bool ignoreOtherPosition = false); - void updatePosition(bool ignoreOtherPosition = false); - - void cancelHandle(); - void executeHandle(bool complete = false); - - static QQuickRangeSliderNodePrivate *get(QQuickRangeSliderNode *node); - - qreal value = 0; - bool isPendingValue = false; - qreal pendingValue = 0; - qreal position = 0; - QQuickDeferredPointer<QQuickItem> handle; - QQuickRangeSlider *slider = nullptr; - bool pressed = false; - bool hovered = false; - int touchId = -1; -}; - -bool QQuickRangeSliderNodePrivate::isFirst() const -{ - return this == get(slider->first()); -} - -void QQuickRangeSliderNodePrivate::setPosition(qreal position, bool ignoreOtherPosition) -{ - Q_Q(QQuickRangeSliderNode); - - const qreal min = isFirst() || ignoreOtherPosition ? 0.0 : qMax<qreal>(0.0, slider->first()->position()); - const qreal max = !isFirst() || ignoreOtherPosition ? 1.0 : qMin<qreal>(1.0, slider->second()->position()); - position = qBound(min, position, max); - if (!qFuzzyCompare(this->position, position)) { - this->position = position; - emit q->positionChanged(); - emit q->visualPositionChanged(); - } -} - -void QQuickRangeSliderNodePrivate::updatePosition(bool ignoreOtherPosition) -{ - qreal pos = 0; - if (!qFuzzyCompare(slider->from(), slider->to())) - pos = (value - slider->from()) / (slider->to() - slider->from()); - setPosition(pos, ignoreOtherPosition); -} - -static inline QString handleName() { return QStringLiteral("handle"); } - -void QQuickRangeSliderNodePrivate::cancelHandle() -{ - Q_Q(QQuickRangeSliderNode); - quickCancelDeferred(q, handleName()); -} - -void QQuickRangeSliderNodePrivate::executeHandle(bool complete) -{ - Q_Q(QQuickRangeSliderNode); - if (handle.wasExecuted()) - return; - - if (!handle || complete) - quickBeginDeferred(q, handleName(), handle); - if (complete) - quickCompleteDeferred(q, handleName(), handle); -} - -QQuickRangeSliderNodePrivate *QQuickRangeSliderNodePrivate::get(QQuickRangeSliderNode *node) -{ - return node->d_func(); -} - -QQuickRangeSliderNode::QQuickRangeSliderNode(qreal value, QQuickRangeSlider *slider) - : QObject(*(new QQuickRangeSliderNodePrivate(value, slider)), slider) -{ -} - -QQuickRangeSliderNode::~QQuickRangeSliderNode() -{ -} - -qreal QQuickRangeSliderNode::value() const -{ - Q_D(const QQuickRangeSliderNode); - return d->value; -} - -void QQuickRangeSliderNode::setValue(qreal value) -{ - Q_D(QQuickRangeSliderNode); - if (!d->slider->isComponentComplete()) { - d->pendingValue = value; - d->isPendingValue = true; - return; - } - - // First, restrict the first value to be within to and from. - const qreal smaller = qMin(d->slider->to(), d->slider->from()); - const qreal larger = qMax(d->slider->to(), d->slider->from()); - value = qBound(smaller, value, larger); - - // Then, ensure that it doesn't go past the other value, - // a check that depends on whether or not the range is inverted. - const bool invertedRange = d->slider->from() > d->slider->to(); - if (d->isFirst()) { - if (invertedRange) { - if (value < d->slider->second()->value()) - value = d->slider->second()->value(); - } else { - if (value > d->slider->second()->value()) - value = d->slider->second()->value(); - } - } else { - if (invertedRange) { - if (value > d->slider->first()->value()) - value = d->slider->first()->value(); - } else { - if (value < d->slider->first()->value()) - value = d->slider->first()->value(); - } - } - - if (!qFuzzyCompare(d->value, value)) { - d->value = value; - d->updatePosition(); - emit valueChanged(); - } -} - -qreal QQuickRangeSliderNode::position() const -{ - Q_D(const QQuickRangeSliderNode); - return d->position; -} - -qreal QQuickRangeSliderNode::visualPosition() const -{ - Q_D(const QQuickRangeSliderNode); - if (d->slider->orientation() == Qt::Vertical || d->slider->isMirrored()) - return 1.0 - d->position; - return d->position; -} - -QQuickItem *QQuickRangeSliderNode::handle() const -{ - QQuickRangeSliderNodePrivate *d = const_cast<QQuickRangeSliderNodePrivate *>(d_func()); - if (!d->handle) - d->executeHandle(); - return d->handle; -} - -void QQuickRangeSliderNode::setHandle(QQuickItem *handle) -{ - Q_D(QQuickRangeSliderNode); - if (d->handle == handle) - return; - - if (!d->handle.isExecuting()) - d->cancelHandle(); - - const qreal oldImplicitHandleWidth = implicitHandleWidth(); - const qreal oldImplicitHandleHeight = implicitHandleHeight(); - - QQuickControlPrivate::get(d->slider)->removeImplicitSizeListener(d->handle); - QQuickControlPrivate::hideOldItem(d->handle); - d->handle = handle; - - if (handle) { - if (!handle->parentItem()) - handle->setParentItem(d->slider); - - QQuickItem *firstHandle = QQuickRangeSliderNodePrivate::get(d->slider->first())->handle; - QQuickItem *secondHandle = QQuickRangeSliderNodePrivate::get(d->slider->second())->handle; - if (firstHandle && secondHandle) { - // The order of property assignments in QML is undefined, - // but we need the first handle to be before the second due - // to focus order constraints, so check for that here. - const QList<QQuickItem *> childItems = d->slider->childItems(); - const int firstIndex = childItems.indexOf(firstHandle); - const int secondIndex = childItems.indexOf(secondHandle); - if (firstIndex != -1 && secondIndex != -1 && firstIndex > secondIndex) { - firstHandle->stackBefore(secondHandle); - // Ensure we have some way of knowing which handle is above - // the other when it comes to mouse presses, and also that - // they are rendered in the correct order. - secondHandle->setZ(secondHandle->z() + 1); - } - } - - handle->setActiveFocusOnTab(true); - QQuickControlPrivate::get(d->slider)->addImplicitSizeListener(handle); - } - - if (!qFuzzyCompare(oldImplicitHandleWidth, implicitHandleWidth())) - emit implicitHandleWidthChanged(); - if (!qFuzzyCompare(oldImplicitHandleHeight, implicitHandleHeight())) - emit implicitHandleHeightChanged(); - if (!d->handle.isExecuting()) - emit handleChanged(); -} - -bool QQuickRangeSliderNode::isPressed() const -{ - Q_D(const QQuickRangeSliderNode); - return d->pressed; -} - -void QQuickRangeSliderNode::setPressed(bool pressed) -{ - Q_D(QQuickRangeSliderNode); - if (d->pressed == pressed) - return; - - d->pressed = pressed; - d->slider->setAccessibleProperty("pressed", pressed || d->slider->second()->isPressed()); - emit pressedChanged(); -} - -bool QQuickRangeSliderNode::isHovered() const -{ - Q_D(const QQuickRangeSliderNode); - return d->hovered; -} - -void QQuickRangeSliderNode::setHovered(bool hovered) -{ - Q_D(QQuickRangeSliderNode); - if (d->hovered == hovered) - return; - - d->hovered = hovered; - emit hoveredChanged(); -} - -qreal QQuickRangeSliderNode::implicitHandleWidth() const -{ - Q_D(const QQuickRangeSliderNode); - if (!d->handle) - return 0; - return d->handle->implicitWidth(); -} - -qreal QQuickRangeSliderNode::implicitHandleHeight() const -{ - Q_D(const QQuickRangeSliderNode); - if (!d->handle) - return 0; - return d->handle->implicitHeight(); -} - -void QQuickRangeSliderNode::increase() -{ - Q_D(QQuickRangeSliderNode); - qreal step = qFuzzyIsNull(d->slider->stepSize()) ? 0.1 : d->slider->stepSize(); - setValue(d->value + step); -} - -void QQuickRangeSliderNode::decrease() -{ - Q_D(QQuickRangeSliderNode); - qreal step = qFuzzyIsNull(d->slider->stepSize()) ? 0.1 : d->slider->stepSize(); - setValue(d->value - step); -} - -static const qreal defaultFrom = 0.0; -static const qreal defaultTo = 1.0; - -class QQuickRangeSliderPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickRangeSlider) - -public: - QQuickRangeSliderNode *pressedNode(int touchId = -1) const; - -#if QT_CONFIG(quicktemplates2_multitouch) - bool acceptTouch(const QTouchEvent::TouchPoint &point) override; -#endif - void handlePress(const QPointF &point, ulong timestamp) override; - void handleMove(const QPointF &point, ulong timestamp) override; - void handleRelease(const QPointF &point, ulong timestamp) override; - void handleUngrab() override; - - void updateHover(const QPointF &pos); - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - bool live = true; - qreal from = defaultFrom; - qreal to = defaultTo; - qreal stepSize = 0; - qreal touchDragThreshold = -1; - QQuickRangeSliderNode *first = nullptr; - QQuickRangeSliderNode *second = nullptr; - QPointF pressPoint; - Qt::Orientation orientation = Qt::Horizontal; - QQuickRangeSlider::SnapMode snapMode = QQuickRangeSlider::NoSnap; -}; - -static qreal valueAt(const QQuickRangeSlider *slider, qreal position) -{ - return slider->from() + (slider->to() - slider->from()) * position; -} - -static qreal snapPosition(const QQuickRangeSlider *slider, qreal position) -{ - const qreal range = slider->to() - slider->from(); - if (qFuzzyIsNull(range)) - return position; - - const qreal effectiveStep = slider->stepSize() / range; - if (qFuzzyIsNull(effectiveStep)) - return position; - - return qRound(position / effectiveStep) * effectiveStep; -} - -static qreal positionAt(const QQuickRangeSlider *slider, QQuickItem *handle, const QPointF &point) -{ - if (slider->orientation() == Qt::Horizontal) { - const qreal hw = handle ? handle->width() : 0; - const qreal offset = hw / 2; - const qreal extent = slider->availableWidth() - hw; - if (!qFuzzyIsNull(extent)) { - if (slider->isMirrored()) - return (slider->width() - point.x() - slider->rightPadding() - offset) / extent; - return (point.x() - slider->leftPadding() - offset) / extent; - } - } else { - const qreal hh = handle ? handle->height() : 0; - const qreal offset = hh / 2; - const qreal extent = slider->availableHeight() - hh; - if (!qFuzzyIsNull(extent)) - return (slider->height() - point.y() - slider->bottomPadding() - offset) / extent; - } - return 0; -} - -QQuickRangeSliderNode *QQuickRangeSliderPrivate::pressedNode(int touchId) const -{ - if (touchId == -1) - return first->isPressed() ? first : (second->isPressed() ? second : nullptr); - if (QQuickRangeSliderNodePrivate::get(first)->touchId == touchId) - return first; - if (QQuickRangeSliderNodePrivate::get(second)->touchId == touchId) - return second; - return nullptr; -} - -#if QT_CONFIG(quicktemplates2_multitouch) -bool QQuickRangeSliderPrivate::acceptTouch(const QTouchEvent::TouchPoint &point) -{ - int firstId = QQuickRangeSliderNodePrivate::get(first)->touchId; - int secondId = QQuickRangeSliderNodePrivate::get(second)->touchId; - - if (((firstId == -1 || secondId == -1) && point.state() == QEventPoint::Pressed) || point.id() == firstId || point.id() == secondId) { - touchId = point.id(); - return true; - } - - return false; -} -#endif - -void QQuickRangeSliderPrivate::handlePress(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickRangeSlider); - QQuickControlPrivate::handlePress(point, timestamp); - pressPoint = point; - - QQuickItem *firstHandle = first->handle(); - QQuickItem *secondHandle = second->handle(); - const bool firstHit = firstHandle && !first->isPressed() && firstHandle->contains(q->mapToItem(firstHandle, point)); - const bool secondHit = secondHandle && !second->isPressed() && secondHandle->contains(q->mapToItem(secondHandle, point)); - QQuickRangeSliderNode *hitNode = nullptr; - QQuickRangeSliderNode *otherNode = nullptr; - - if (firstHit && secondHit) { - // choose highest - hitNode = firstHandle->z() > secondHandle->z() ? first : second; - otherNode = firstHandle->z() > secondHandle->z() ? second : first; - } else if (firstHit) { - hitNode = first; - otherNode = second; - } else if (secondHit) { - hitNode = second; - otherNode = first; - } else { - // find the nearest - const qreal firstPos = positionAt(q, firstHandle, point); - const qreal secondPos = positionAt(q, secondHandle, point); - const qreal firstDistance = qAbs(firstPos - first->position()); - const qreal secondDistance = qAbs(secondPos - second->position()); - - if (qFuzzyCompare(firstDistance, secondDistance)) { - // same distance => choose the one that can be moved towards the press position - const bool inverted = from > to; - if ((!inverted && firstPos < first->position()) || (inverted && firstPos > first->position())) { - hitNode = first; - otherNode = second; - } else { - hitNode = second; - otherNode = first; - } - } else if (firstDistance < secondDistance) { - hitNode = first; - otherNode = second; - } else { - hitNode = second; - otherNode = first; - } - } - - if (hitNode) { - hitNode->setPressed(true); - if (QQuickItem *handle = hitNode->handle()) - handle->setZ(1); - QQuickRangeSliderNodePrivate::get(hitNode)->touchId = touchId; - } - if (otherNode) { - if (QQuickItem *handle = otherNode->handle()) - handle->setZ(0); - } -} - -void QQuickRangeSliderPrivate::handleMove(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickRangeSlider); - QQuickControlPrivate::handleMove(point, timestamp); - QQuickRangeSliderNode *pressedNode = QQuickRangeSliderPrivate::pressedNode(touchId); - if (pressedNode) { - const qreal oldPos = pressedNode->position(); - qreal pos = positionAt(q, pressedNode->handle(), point); - if (snapMode == QQuickRangeSlider::SnapAlways) - pos = snapPosition(q, pos); - if (live) - pressedNode->setValue(valueAt(q, pos)); - else - QQuickRangeSliderNodePrivate::get(pressedNode)->setPosition(pos); - - if (!qFuzzyCompare(pressedNode->position(), oldPos)) - emit pressedNode->moved(); - } -} - -void QQuickRangeSliderPrivate::handleRelease(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickRangeSlider); - QQuickControlPrivate::handleRelease(point, timestamp); - pressPoint = QPointF(); - - QQuickRangeSliderNode *pressedNode = QQuickRangeSliderPrivate::pressedNode(touchId); - if (!pressedNode) - return; - QQuickRangeSliderNodePrivate *pressedNodePrivate = QQuickRangeSliderNodePrivate::get(pressedNode); - - if (q->keepMouseGrab() || q->keepTouchGrab()) { - const qreal oldPos = pressedNode->position(); - qreal pos = positionAt(q, pressedNode->handle(), point); - if (snapMode != QQuickRangeSlider::NoSnap) - pos = snapPosition(q, pos); - qreal val = valueAt(q, pos); - if (!qFuzzyCompare(val, pressedNode->value())) - pressedNode->setValue(val); - else if (snapMode != QQuickRangeSlider::NoSnap) - pressedNodePrivate->setPosition(pos); - q->setKeepMouseGrab(false); - q->setKeepTouchGrab(false); - - if (!qFuzzyCompare(pressedNode->position(), oldPos)) - emit pressedNode->moved(); - } - pressedNode->setPressed(false); - pressedNodePrivate->touchId = -1; -} - -void QQuickRangeSliderPrivate::handleUngrab() -{ - QQuickControlPrivate::handleUngrab(); - pressPoint = QPointF(); - first->setPressed(false); - second->setPressed(false); - QQuickRangeSliderNodePrivate::get(first)->touchId = -1; - QQuickRangeSliderNodePrivate::get(second)->touchId = -1; -} - -void QQuickRangeSliderPrivate::updateHover(const QPointF &pos) -{ - Q_Q(QQuickRangeSlider); - QQuickItem *firstHandle = first->handle(); - QQuickItem *secondHandle = second->handle(); - first->setHovered(firstHandle && firstHandle->isEnabled() && firstHandle->contains(q->mapToItem(firstHandle, pos))); - second->setHovered(secondHandle && secondHandle->isEnabled() && secondHandle->contains(q->mapToItem(secondHandle, pos))); -} - -void QQuickRangeSliderPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - QQuickControlPrivate::itemImplicitWidthChanged(item); - if (item == first->handle()) - emit first->implicitHandleWidthChanged(); - else if (item == second->handle()) - emit second->implicitHandleWidthChanged(); -} - -void QQuickRangeSliderPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - QQuickControlPrivate::itemImplicitHeightChanged(item); - if (item == first->handle()) - emit first->implicitHandleHeightChanged(); - else if (item == second->handle()) - emit second->implicitHandleHeightChanged(); -} - -QQuickRangeSlider::QQuickRangeSlider(QQuickItem *parent) - : QQuickControl(*(new QQuickRangeSliderPrivate), parent) -{ - Q_D(QQuickRangeSlider); - d->first = new QQuickRangeSliderNode(0.0, this); - d->second = new QQuickRangeSliderNode(1.0, this); - - setFlag(QQuickItem::ItemIsFocusScope); - setAcceptedMouseButtons(Qt::LeftButton); -#if QT_CONFIG(quicktemplates2_multitouch) - setAcceptTouchEvents(true); -#endif -#if QT_CONFIG(cursor) - setCursor(Qt::ArrowCursor); -#endif -} - -QQuickRangeSlider::~QQuickRangeSlider() -{ - Q_D(QQuickRangeSlider); - d->removeImplicitSizeListener(d->first->handle()); - d->removeImplicitSizeListener(d->second->handle()); -} - -/*! - \qmlproperty real QtQuick.Controls::RangeSlider::from - - This property holds the starting value for the range. The default value is \c 0.0. - - \sa to, first.value, second.value -*/ -qreal QQuickRangeSlider::from() const -{ - Q_D(const QQuickRangeSlider); - return d->from; -} - -void QQuickRangeSlider::setFrom(qreal from) -{ - Q_D(QQuickRangeSlider); - if (qFuzzyCompare(d->from, from)) - return; - - d->from = from; - emit fromChanged(); - - if (isComponentComplete()) { - d->first->setValue(d->first->value()); - d->second->setValue(d->second->value()); - } -} - -/*! - \qmlproperty real QtQuick.Controls::RangeSlider::to - - This property holds the end value for the range. The default value is \c 1.0. - - \sa from, first.value, second.value -*/ -qreal QQuickRangeSlider::to() const -{ - Q_D(const QQuickRangeSlider); - return d->to; -} - -void QQuickRangeSlider::setTo(qreal to) -{ - Q_D(QQuickRangeSlider); - if (qFuzzyCompare(d->to, to)) - return; - - d->to = to; - emit toChanged(); - - if (isComponentComplete()) { - d->first->setValue(d->first->value()); - d->second->setValue(d->second->value()); - } -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty qreal QtQuick.Controls::RangeSlider::touchDragThreshold - - This property holds the threshold (in logical pixels) at which a touch drag event will be initiated. - The mouse drag threshold won't be affected. - The default value is \c Qt.styleHints.startDragDistance. - - \sa QStyleHints - -*/ -qreal QQuickRangeSlider::touchDragThreshold() const -{ - Q_D(const QQuickRangeSlider); - return d->touchDragThreshold; -} - -void QQuickRangeSlider::setTouchDragThreshold(qreal touchDragThreshold) -{ - Q_D(QQuickRangeSlider); - if (d->touchDragThreshold == touchDragThreshold) - return; - - d->touchDragThreshold = touchDragThreshold; - emit touchDragThresholdChanged(); -} - -void QQuickRangeSlider::resetTouchDragThreshold() -{ - setTouchDragThreshold(-1); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlmethod real QtQuick.Controls::RangeSlider::valueAt(real position) - - Returns the value for the given \a position. - - \sa first.value, second.value, first.position, second.position, live -*/ -qreal QQuickRangeSlider::valueAt(qreal position) const -{ - Q_D(const QQuickRangeSlider); - const qreal value = (d->to - d->from) * position; - if (qFuzzyIsNull(d->stepSize)) - return d->from + value; - return d->from + qRound(value / d->stepSize) * d->stepSize; -} - -/*! - \qmlproperty real QtQuick.Controls::RangeSlider::first.value - \qmlproperty real QtQuick.Controls::RangeSlider::first.position - \qmlproperty real QtQuick.Controls::RangeSlider::first.visualPosition - \qmlproperty Item QtQuick.Controls::RangeSlider::first.handle - \qmlproperty bool QtQuick.Controls::RangeSlider::first.pressed - \qmlproperty bool QtQuick.Controls::RangeSlider::first.hovered - \qmlproperty real QtQuick.Controls::RangeSlider::first.implicitHandleWidth - \qmlproperty real QtQuick.Controls::RangeSlider::first.implicitHandleHeight - - \table - \header - \li Property - \li Description - \row - \li value - \li This property holds the value of the first handle in the range - \c from - \c to. - - If \l from is greater than \l to, the value of the first handle - must be greater than the second, and vice versa. - - The default value is \c 0.0. - \row - \li handle - \li This property holds the first handle item. - \row - \li visualPosition - \li This property holds the visual position of the first handle. - - The position is expressed as a fraction of the control's size, in the range - \c {0.0 - 1.0}. When the control is \l {Control::mirrored}{mirrored}, the - value is equal to \c {1.0 - position}. This makes the value suitable for - visualizing the slider, taking right-to-left support into account. - \row - \li position - \li This property holds the logical position of the first handle. - - The position is expressed as a fraction of the control's size, in the range - \c {0.0 - 1.0}. For visualizing a slider, the right-to-left aware - \l {first.visualPosition}{visualPosition} should be used instead. - \row - \li pressed - \li This property holds whether the first handle is pressed by either touch, - mouse, or keys. - \row - \li hovered - \li This property holds whether the first handle is hovered. - This property was introduced in QtQuick.Controls 2.1. - \row - \li implicitHandleWidth - \li This property holds the implicit width of the first handle. - This property was introduced in QtQuick.Controls 2.5. - \row - \li implicitHandleHeight - \li This property holds the implicit height of the first handle. - This property was introduced in QtQuick.Controls 2.5. - \endtable - - \sa first.moved(), first.increase(), first.decrease() -*/ -QQuickRangeSliderNode *QQuickRangeSlider::first() const -{ - Q_D(const QQuickRangeSlider); - return d->first; -} - -/*! - \qmlsignal void QtQuick.Controls::RangeSlider::first.moved() - \qmlsignal void QtQuick.Controls::RangeSlider::second.moved() - \since QtQuick.Controls 2.5 - - This signal is emitted when either the first or second handle has been - interactively moved by the user by either touch, mouse, or keys. - - \sa first, second -*/ - -/*! - \qmlproperty real QtQuick.Controls::RangeSlider::second.value - \qmlproperty real QtQuick.Controls::RangeSlider::second.position - \qmlproperty real QtQuick.Controls::RangeSlider::second.visualPosition - \qmlproperty Item QtQuick.Controls::RangeSlider::second.handle - \qmlproperty bool QtQuick.Controls::RangeSlider::second.pressed - \qmlproperty bool QtQuick.Controls::RangeSlider::second.hovered - \qmlproperty real QtQuick.Controls::RangeSlider::second.implicitHandleWidth - \qmlproperty real QtQuick.Controls::RangeSlider::second.implicitHandleHeight - - \table - \header - \li Property - \li Description - \row - \li value - \li This property holds the value of the second handle in the range - \c from - \c to. - - If \l from is greater than \l to, the value of the first handle - must be greater than the second, and vice versa. - - The default value is \c 0.0. - \row - \li handle - \li This property holds the second handle item. - \row - \li visualPosition - \li This property holds the visual position of the second handle. - - The position is expressed as a fraction of the control's size, in the range - \c {0.0 - 1.0}. When the control is \l {Control::mirrored}{mirrored}, the - value is equal to \c {1.0 - position}. This makes the value suitable for - visualizing the slider, taking right-to-left support into account. - \row - \li position - \li This property holds the logical position of the second handle. - - The position is expressed as a fraction of the control's size, in the range - \c {0.0 - 1.0}. For visualizing a slider, the right-to-left aware - \l {second.visualPosition}{visualPosition} should be used instead. - \row - \li pressed - \li This property holds whether the second handle is pressed by either touch, - mouse, or keys. - \row - \li hovered - \li This property holds whether the second handle is hovered. - This property was introduced in QtQuick.Controls 2.1. - \row - \li implicitHandleWidth - \li This property holds the implicit width of the second handle. - This property was introduced in QtQuick.Controls 2.5. - \row - \li implicitHandleHeight - \li This property holds the implicit height of the second handle. - This property was introduced in QtQuick.Controls 2.5. - \endtable - - \sa second.moved(), second.increase(), second.decrease() -*/ -QQuickRangeSliderNode *QQuickRangeSlider::second() const -{ - Q_D(const QQuickRangeSlider); - return d->second; -} - -/*! - \qmlproperty real QtQuick.Controls::RangeSlider::stepSize - - This property holds the step size. The default value is \c 0.0. - - \sa snapMode, first.increase(), first.decrease() -*/ -qreal QQuickRangeSlider::stepSize() const -{ - Q_D(const QQuickRangeSlider); - return d->stepSize; -} - -void QQuickRangeSlider::setStepSize(qreal step) -{ - Q_D(QQuickRangeSlider); - if (qFuzzyCompare(d->stepSize, step)) - return; - - d->stepSize = step; - emit stepSizeChanged(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::RangeSlider::snapMode - - This property holds the snap mode. - - The snap mode determines how the slider handles behave with - regards to the \l stepSize. - - Possible values: - \value RangeSlider.NoSnap The slider does not snap (default). - \value RangeSlider.SnapAlways The slider snaps while the handle is dragged. - \value RangeSlider.SnapOnRelease The slider does not snap while being dragged, but only after the handle is released. - - For visual explanations of the various modes, see the - \l {Slider::}{snapMode} documentation of \l Slider. - - \sa stepSize -*/ -QQuickRangeSlider::SnapMode QQuickRangeSlider::snapMode() const -{ - Q_D(const QQuickRangeSlider); - return d->snapMode; -} - -void QQuickRangeSlider::setSnapMode(SnapMode mode) -{ - Q_D(QQuickRangeSlider); - if (d->snapMode == mode) - return; - - d->snapMode = mode; - emit snapModeChanged(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::RangeSlider::orientation - - This property holds the orientation. - - Possible values: - \value Qt.Horizontal Horizontal (default) - \value Qt.Vertical Vertical - - \sa horizontal, vertical -*/ -Qt::Orientation QQuickRangeSlider::orientation() const -{ - Q_D(const QQuickRangeSlider); - return d->orientation; -} - -void QQuickRangeSlider::setOrientation(Qt::Orientation orientation) -{ - Q_D(QQuickRangeSlider); - if (d->orientation == orientation) - return; - - d->orientation = orientation; - emit orientationChanged(); -} - -/*! - \qmlmethod void QtQuick.Controls::RangeSlider::setValues(real firstValue, real secondValue) - - Sets \l first.value and \l second.value with the given arguments. - - If \l to is larger than \l from and \a firstValue is larger than - \a secondValue, firstValue will be clamped to secondValue. - - If \l from is larger than \l to and secondValue is larger than - firstValue, secondValue will be clamped to firstValue. - - This function may be necessary to set the first and second values - after the control has been completed, as there is a circular - dependency between firstValue and secondValue which can cause - assigned values to be clamped to each other. - - \sa stepSize -*/ -void QQuickRangeSlider::setValues(qreal firstValue, qreal secondValue) -{ - Q_D(QQuickRangeSlider); - // Restrict the values to be within to and from. - const qreal smaller = qMin(d->to, d->from); - const qreal larger = qMax(d->to, d->from); - firstValue = qBound(smaller, firstValue, larger); - secondValue = qBound(smaller, secondValue, larger); - - if (d->from > d->to) { - // If the from and to values are reversed, the secondValue - // might be less than the first value, which is not allowed. - if (secondValue > firstValue) - secondValue = firstValue; - } else { - // Otherwise, clamp first to second if it's too large. - if (firstValue > secondValue) - firstValue = secondValue; - } - - // Then set both values. If they didn't change, no change signal will be emitted. - QQuickRangeSliderNodePrivate *firstPrivate = QQuickRangeSliderNodePrivate::get(d->first); - if (firstValue != firstPrivate->value) { - firstPrivate->value = firstValue; - emit d->first->valueChanged(); - } - - QQuickRangeSliderNodePrivate *secondPrivate = QQuickRangeSliderNodePrivate::get(d->second); - if (secondValue != secondPrivate->value) { - secondPrivate->value = secondValue; - emit d->second->valueChanged(); - } - - // After we've set both values, then we can update the positions. - // If we don't do this last, the positions may be incorrect. - firstPrivate->updatePosition(true); - secondPrivate->updatePosition(); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty bool QtQuick.Controls::RangeSlider::live - - This property holds whether the slider provides live updates for the \l first.value - and \l second.value properties while the respective handles are dragged. - - The default value is \c true. - - \sa first.value, second.value -*/ -bool QQuickRangeSlider::live() const -{ - Q_D(const QQuickRangeSlider); - return d->live; -} - -void QQuickRangeSlider::setLive(bool live) -{ - Q_D(QQuickRangeSlider); - if (d->live == live) - return; - - d->live = live; - emit liveChanged(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::RangeSlider::horizontal - \readonly - - This property holds whether the slider is horizontal. - - \sa orientation -*/ -bool QQuickRangeSlider::isHorizontal() const -{ - Q_D(const QQuickRangeSlider); - return d->orientation == Qt::Horizontal; -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::RangeSlider::vertical - \readonly - - This property holds whether the slider is vertical. - - \sa orientation -*/ -bool QQuickRangeSlider::isVertical() const -{ - Q_D(const QQuickRangeSlider); - return d->orientation == Qt::Vertical; -} - -void QQuickRangeSlider::focusInEvent(QFocusEvent *event) -{ - Q_D(QQuickRangeSlider); - QQuickControl::focusInEvent(event); - - // The active focus ends up to RangeSlider when using forceActiveFocus() - // or QML KeyNavigation. We must forward the focus to one of the handles, - // because RangeSlider handles key events for the focused handle. If - // neither handle has active focus, RangeSlider doesn't do anything. - QQuickItem *handle = nextItemInFocusChain(); - // QQuickItem::nextItemInFocusChain() only works as desired with - // Qt::TabFocusAllControls. otherwise pick the first handle - if (!handle || handle == this) - handle = d->first->handle(); - if (handle) - handle->forceActiveFocus(event->reason()); -} - -void QQuickRangeSlider::keyPressEvent(QKeyEvent *event) -{ - Q_D(QQuickRangeSlider); - QQuickControl::keyPressEvent(event); - - QQuickRangeSliderNode *focusNode = d->first->handle()->hasActiveFocus() - ? d->first : (d->second->handle()->hasActiveFocus() ? d->second : nullptr); - if (!focusNode) - return; - - const qreal oldValue = focusNode->value(); - if (d->orientation == Qt::Horizontal) { - if (event->key() == Qt::Key_Left) { - focusNode->setPressed(true); - if (isMirrored()) - focusNode->increase(); - else - focusNode->decrease(); - event->accept(); - } else if (event->key() == Qt::Key_Right) { - focusNode->setPressed(true); - if (isMirrored()) - focusNode->decrease(); - else - focusNode->increase(); - event->accept(); - } - } else { - if (event->key() == Qt::Key_Up) { - focusNode->setPressed(true); - focusNode->increase(); - event->accept(); - } else if (event->key() == Qt::Key_Down) { - focusNode->setPressed(true); - focusNode->decrease(); - event->accept(); - } - } - if (!qFuzzyCompare(focusNode->value(), oldValue)) - emit focusNode->moved(); -} - -void QQuickRangeSlider::hoverEnterEvent(QHoverEvent *event) -{ - Q_D(QQuickRangeSlider); - QQuickControl::hoverEnterEvent(event); - d->updateHover(event->position()); -} - -void QQuickRangeSlider::hoverMoveEvent(QHoverEvent *event) -{ - Q_D(QQuickRangeSlider); - QQuickControl::hoverMoveEvent(event); - d->updateHover(event->position()); -} - -void QQuickRangeSlider::hoverLeaveEvent(QHoverEvent *event) -{ - Q_D(QQuickRangeSlider); - QQuickControl::hoverLeaveEvent(event); - d->first->setHovered(false); - d->second->setHovered(false); -} - -void QQuickRangeSlider::keyReleaseEvent(QKeyEvent *event) -{ - Q_D(QQuickRangeSlider); - QQuickControl::keyReleaseEvent(event); - d->first->setPressed(false); - d->second->setPressed(false); -} - -void QQuickRangeSlider::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickRangeSlider); - QQuickControl::mousePressEvent(event); - d->handleMove(event->position(), event->timestamp()); - setKeepMouseGrab(true); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickRangeSlider::touchEvent(QTouchEvent *event) -{ - Q_D(QQuickRangeSlider); - switch (event->type()) { - case QEvent::TouchUpdate: - for (const QTouchEvent::TouchPoint &point : event->points()) { - if (!d->acceptTouch(point)) - continue; - - switch (point.state()) { - case QEventPoint::Pressed: - d->handlePress(point.position(), event->timestamp()); - break; - case QEventPoint::Updated: - if (!keepTouchGrab()) { - if (d->orientation == Qt::Horizontal) - setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.position().x() - point.pressPosition().x(), Qt::XAxis, &point, qRound(d->touchDragThreshold))); - else - setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.position().y() - point.pressPosition().y(), Qt::YAxis, &point, qRound(d->touchDragThreshold))); - } - if (keepTouchGrab()) - d->handleMove(point.position(), event->timestamp()); - break; - case QEventPoint::Released: - d->handleRelease(point.position(), event->timestamp()); - break; - default: - break; - } - } - break; - - default: - QQuickControl::touchEvent(event); - break; - } -} -#endif - -void QQuickRangeSlider::mirrorChange() -{ - Q_D(QQuickRangeSlider); - QQuickControl::mirrorChange(); - emit d->first->visualPositionChanged(); - emit d->second->visualPositionChanged(); -} - -void QQuickRangeSlider::classBegin() -{ - Q_D(QQuickRangeSlider); - QQuickControl::classBegin(); - - QQmlContext *context = qmlContext(this); - if (context) { - QQmlEngine::setContextForObject(d->first, context); - QQmlEngine::setContextForObject(d->second, context); - } -} - -void QQuickRangeSlider::componentComplete() -{ - Q_D(QQuickRangeSlider); - QQuickRangeSliderNodePrivate *firstPrivate = QQuickRangeSliderNodePrivate::get(d->first); - QQuickRangeSliderNodePrivate *secondPrivate = QQuickRangeSliderNodePrivate::get(d->second); - firstPrivate->executeHandle(true); - secondPrivate->executeHandle(true); - - QQuickControl::componentComplete(); - - if (firstPrivate->isPendingValue || secondPrivate->isPendingValue - || !qFuzzyCompare(d->from, defaultFrom) || !qFuzzyCompare(d->to, defaultTo)) { - // Properties were set while we were loading. To avoid clamping issues that occur when setting the - // values of first and second overriding values set by the user, set them all at once at the end. - // Another reason that we must set these values here is that the from and to values might have made the old range invalid. - setValues(firstPrivate->isPendingValue ? firstPrivate->pendingValue : firstPrivate->value, - secondPrivate->isPendingValue ? secondPrivate->pendingValue : secondPrivate->value); - - firstPrivate->pendingValue = 0; - firstPrivate->isPendingValue = false; - secondPrivate->pendingValue = 0; - secondPrivate->isPendingValue = false; - } else { - // If there was no pending data, we must still update the positions, - // as first.setValue()/second.setValue() won't be called as part of default construction. - // Don't need to ignore the second position when updating the first position here, - // as our default values are guaranteed to be valid. - firstPrivate->updatePosition(); - secondPrivate->updatePosition(); - } -} - -/*! - \qmlmethod void QtQuick.Controls::RangeSlider::first.increase() - - Increases the value of the handle by stepSize, or \c 0.1 if stepSize is not defined. - - \sa first -*/ - -/*! - \qmlmethod void QtQuick.Controls::RangeSlider::first.decrease() - - Decreases the value of the handle by stepSize, or \c 0.1 if stepSize is not defined. - - \sa first -*/ - -/*! - \qmlmethod void QtQuick.Controls::RangeSlider::second.increase() - - Increases the value of the handle by stepSize, or \c 0.1 if stepSize is not defined. - - \sa second -*/ - -/*! - \qmlmethod void QtQuick.Controls::RangeSlider::second.decrease() - - Decreases the value of the handle by stepSize, or \c 0.1 if stepSize is not defined. - - \sa second -*/ - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickRangeSlider::accessibleRole() const -{ - return QAccessible::Slider; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickrangeslider_p.h b/src/quicktemplates2/qquickrangeslider_p.h deleted file mode 100644 index d767228e..00000000 --- a/src/quicktemplates2/qquickrangeslider_p.h +++ /dev/null @@ -1,229 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKRANGESLIDER_P_H -#define QQUICKRANGESLIDER_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickRangeSliderPrivate; -class QQuickRangeSliderNode; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickRangeSlider : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(qreal from READ from WRITE setFrom NOTIFY fromChanged FINAL) - Q_PROPERTY(qreal to READ to WRITE setTo NOTIFY toChanged FINAL) - Q_PROPERTY(QQuickRangeSliderNode *first READ first CONSTANT FINAL) - Q_PROPERTY(QQuickRangeSliderNode *second READ second CONSTANT FINAL) - Q_PROPERTY(qreal stepSize READ stepSize WRITE setStepSize NOTIFY stepSizeChanged FINAL) - Q_PROPERTY(SnapMode snapMode READ snapMode WRITE setSnapMode NOTIFY snapModeChanged FINAL) - Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged FINAL) - // 2.2 (Qt 5.9) - Q_PROPERTY(bool live READ live WRITE setLive NOTIFY liveChanged FINAL REVISION(2, 2)) - Q_PROPERTY(bool horizontal READ isHorizontal NOTIFY orientationChanged FINAL REVISION(2, 3)) - // 2.3 (Qt 5.10) - Q_PROPERTY(bool vertical READ isVertical NOTIFY orientationChanged FINAL REVISION(2, 3)) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal touchDragThreshold READ touchDragThreshold WRITE setTouchDragThreshold RESET resetTouchDragThreshold NOTIFY touchDragThresholdChanged FINAL REVISION(2, 5)) - QML_NAMED_ELEMENT(RangeSlider) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickRangeSlider(QQuickItem *parent = nullptr); - ~QQuickRangeSlider(); - - qreal from() const; - void setFrom(qreal from); - - qreal to() const; - void setTo(qreal to); - - QQuickRangeSliderNode *first() const; - QQuickRangeSliderNode *second() const; - - qreal stepSize() const; - void setStepSize(qreal step); - - enum SnapMode { - NoSnap, - SnapAlways, - SnapOnRelease - }; - Q_ENUM(SnapMode) - - SnapMode snapMode() const; - void setSnapMode(SnapMode mode); - - Qt::Orientation orientation() const; - void setOrientation(Qt::Orientation orientation); - - Q_INVOKABLE void setValues(qreal firstValue, qreal secondValue); - - // 2.2 (Qt 5.9) - bool live() const; - void setLive(bool live); - - // 2.3 (Qt 5.10) - bool isHorizontal() const; - bool isVertical() const; - - // 2.5 (Qt 5.12) - qreal touchDragThreshold() const; - void setTouchDragThreshold(qreal touchDragThreshold); - void resetTouchDragThreshold(); - Q_REVISION(2, 5) Q_INVOKABLE qreal valueAt(qreal position) const; - -Q_SIGNALS: - void fromChanged(); - void toChanged(); - void stepSizeChanged(); - void snapModeChanged(); - void orientationChanged(); - // 2.2 (Qt 5.9) - Q_REVISION(2, 2) void liveChanged(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void touchDragThresholdChanged(); - -protected: - void focusInEvent(QFocusEvent *event) override; - void hoverEnterEvent(QHoverEvent *event) override; - void hoverMoveEvent(QHoverEvent *event) override; - void hoverLeaveEvent(QHoverEvent *event) override; - void keyPressEvent(QKeyEvent *event) override; - void keyReleaseEvent(QKeyEvent *event) override; - void mousePressEvent(QMouseEvent *event) override; -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; -#endif - void mirrorChange() override; - void classBegin() override; - void componentComplete() override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - friend class QQuickRangeSliderNode; - - Q_DISABLE_COPY(QQuickRangeSlider) - Q_DECLARE_PRIVATE(QQuickRangeSlider) -}; - -class QQuickRangeSliderNodePrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickRangeSliderNode : public QObject -{ - Q_OBJECT - Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged FINAL) - Q_PROPERTY(qreal position READ position NOTIFY positionChanged FINAL) - Q_PROPERTY(qreal visualPosition READ visualPosition NOTIFY visualPositionChanged FINAL) - Q_PROPERTY(QQuickItem *handle READ handle WRITE setHandle NOTIFY handleChanged FINAL) - Q_PROPERTY(bool pressed READ isPressed WRITE setPressed NOTIFY pressedChanged FINAL) - // 2.1 (Qt 5.8) - Q_PROPERTY(bool hovered READ isHovered WRITE setHovered NOTIFY hoveredChanged FINAL REVISION(2, 1)) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal implicitHandleWidth READ implicitHandleWidth NOTIFY implicitHandleWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitHandleHeight READ implicitHandleHeight NOTIFY implicitHandleHeightChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DeferredPropertyNames", "handle") - QML_ANONYMOUS - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickRangeSliderNode(qreal value, QQuickRangeSlider *slider); - ~QQuickRangeSliderNode(); - - qreal value() const; - void setValue(qreal value); - - qreal position() const; - qreal visualPosition() const; - - QQuickItem *handle() const; - void setHandle(QQuickItem *handle); - - bool isPressed() const; - void setPressed(bool pressed); - - // 2.1 (Qt 5.8) - bool isHovered() const; - void setHovered(bool hovered); - - // 2.5 (Qt 5.12) - qreal implicitHandleWidth() const; - qreal implicitHandleHeight() const; - -public Q_SLOTS: - void increase(); - void decrease(); - -Q_SIGNALS: - void valueChanged(); - void positionChanged(); - void visualPositionChanged(); - void handleChanged(); - void pressedChanged(); - // 2.1 (Qt 5.8) - Q_REVISION(2, 1) void hoveredChanged(); - // 2.5 (Qt 5.12) - /*Q_REVISION(2, 5)*/ void moved(); - /*Q_REVISION(2, 5)*/ void implicitHandleWidthChanged(); - /*Q_REVISION(2, 5)*/ void implicitHandleHeightChanged(); - -private: - Q_DISABLE_COPY(QQuickRangeSliderNode) - Q_DECLARE_PRIVATE(QQuickRangeSliderNode) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickRangeSlider) - -#endif // QQUICKRANGESLIDER_P_H diff --git a/src/quicktemplates2/qquickroundbutton.cpp b/src/quicktemplates2/qquickroundbutton.cpp deleted file mode 100644 index 05eb53b0..00000000 --- a/src/quicktemplates2/qquickroundbutton.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickroundbutton_p.h" - -#include <QtQuickTemplates2/private/qquickbutton_p_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype RoundButton - \inherits Button -//! \instantiates QQuickRoundButton - \inqmlmodule QtQuick.Controls - \since 5.8 - \ingroup qtquickcontrols2-buttons - \brief A push-button control with rounded corners that can be clicked by the user. - - \image qtquickcontrols2-roundbutton.png - - RoundButton is identical to \l Button, except that it has a \l radius property - which allows the corners to be rounded without having to customize the - \l background. - - \snippet qtquickcontrols2-roundbutton.qml 1 - - \sa {Customizing RoundButton}, {Button Controls} -*/ - -class QQuickRoundButtonPrivate : public QQuickButtonPrivate -{ - Q_DECLARE_PUBLIC(QQuickRoundButton) - -public: - void setRadius(qreal newRadius = -1.0); - - qreal radius = 0; - bool explicitRadius = false; -}; - -void QQuickRoundButtonPrivate::setRadius(qreal newRadius) -{ - Q_Q(QQuickRoundButton); - const qreal oldRadius = radius; - if (newRadius < 0) - radius = qMax<qreal>(0, qMin<qreal>(width, height) / 2); - else - radius = newRadius; - - if (!qFuzzyCompare(radius, oldRadius)) - emit q->radiusChanged(); -} - -QQuickRoundButton::QQuickRoundButton(QQuickItem *parent) - : QQuickButton(*(new QQuickRoundButtonPrivate), parent) -{ -} - -/*! - \qmlproperty real QtQuick.Controls::RoundButton::radius - - This property holds the radius of the button. - - To create a relatively square button that has slightly rounded corners, - use a small value, such as \c 3. - - To create a completely circular button (the default), use a value that is - equal to half of the width or height of the button, and make the button's - width and height identical. - - To reset this property back to the default value, set its value to - \c undefined. -*/ -qreal QQuickRoundButton::radius() const -{ - Q_D(const QQuickRoundButton); - return d->radius; -} - -void QQuickRoundButton::setRadius(qreal radius) -{ - Q_D(QQuickRoundButton); - d->explicitRadius = true; - d->setRadius(radius); -} - -void QQuickRoundButton::resetRadius() -{ - Q_D(QQuickRoundButton); - d->explicitRadius = false; - d->setRadius(); -} - -void QQuickRoundButton::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickRoundButton); - QQuickControl::geometryChange(newGeometry, oldGeometry); - if (!d->explicitRadius) - d->setRadius(); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickroundbutton_p.h b/src/quicktemplates2/qquickroundbutton_p.h deleted file mode 100644 index fdd46cf8..00000000 --- a/src/quicktemplates2/qquickroundbutton_p.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKROUNDBUTTON_P_H -#define QQUICKROUNDBUTTON_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickbutton_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickRoundButtonPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickRoundButton : public QQuickButton -{ - Q_OBJECT - Q_PROPERTY(qreal radius READ radius WRITE setRadius RESET resetRadius NOTIFY radiusChanged FINAL) - QML_NAMED_ELEMENT(RoundButton) - QML_ADDED_IN_VERSION(2, 1) - -public: - explicit QQuickRoundButton(QQuickItem *parent = nullptr); - - qreal radius() const; - void setRadius(qreal radius); - void resetRadius(); - -Q_SIGNALS: - void radiusChanged(); - -protected: - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - -private: - Q_DISABLE_COPY(QQuickRoundButton) - Q_DECLARE_PRIVATE(QQuickRoundButton) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickRoundButton) - -#endif // QQUICKROUNDBUTTON_P_H diff --git a/src/quicktemplates2/qquickscrollbar.cpp b/src/quicktemplates2/qquickscrollbar.cpp deleted file mode 100644 index 9d62611e..00000000 --- a/src/quicktemplates2/qquickscrollbar.cpp +++ /dev/null @@ -1,1258 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickscrollbar_p.h" -#include "qquickscrollbar_p_p.h" -#include "qquickscrollview_p.h" - -#include <QtQml/qqmlinfo.h> -#include <QtQuick/private/qquickflickable_p.h> -#if QT_CONFIG(accessibility) -#include <QtQuick/private/qquickaccessibleattached_p.h> -#endif - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ScrollBar - \inherits Control -//! \instantiates QQuickScrollBar - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-indicators - \brief Vertical or horizontal interactive scroll bar. - - \image qtquickcontrols2-scrollbar.gif - - ScrollBar is an interactive bar that can be used to scroll to a specific - position. A scroll bar can be either \l vertical or \l horizontal, and can - be attached to any \l Flickable, such as \l ListView and \l GridView. - - \code - Flickable { - // ... - ScrollBar.vertical: ScrollBar { } - } - \endcode - - \section1 Attaching ScrollBar to a Flickable - - When ScrollBar is attached \l {ScrollBar::vertical}{vertically} or - \l {ScrollBar::horizontal}{horizontally} to a Flickable, its geometry and - the following properties are automatically set and updated as appropriate: - - \list - \li \l orientation - \li \l position - \li \l size - \li \l active - \endlist - - An attached ScrollBar re-parents itself to the target Flickable. A vertically - attached ScrollBar resizes itself to the height of the Flickable, and positions - itself to either side of it based on the \l {Control::mirrored}{layout direction}. - A horizontally attached ScrollBar resizes itself to the width of the Flickable, - and positions itself to the bottom. The automatic geometry management can be disabled - by specifying another parent for the attached ScrollBar. This can be useful, for - example, if the ScrollBar should be placed outside a clipping Flickable. This is - demonstrated by the following example: - - \code - Flickable { - id: flickable - clip: true - // ... - ScrollBar.vertical: ScrollBar { - parent: flickable.parent - anchors.top: flickable.top - anchors.left: flickable.right - anchors.bottom: flickable.bottom - } - } - \endcode - - Notice that ScrollBar does not filter key events of the Flickable it is - attached to. The following example illustrates how to implement scrolling - with up and down keys: - - \code - Flickable { - focus: true - - Keys.onUpPressed: scrollBar.decrease() - Keys.onDownPressed: scrollBar.increase() - - ScrollBar.vertical: ScrollBar { id: scrollBar } - } - \endcode - - \section1 Binding the Active State of Horizontal and Vertical Scroll Bars - - Horizontal and vertical scroll bars do not share the \l active state with - each other by default. In order to keep both bars visible whilst scrolling - to either direction, establish a two-way binding between the active states - as presented by the following example: - - \snippet qtquickcontrols2-scrollbar-active.qml 1 - - \section1 Non-attached Scroll Bars - - It is possible to create an instance of ScrollBar without using the - attached property API. This is useful when the behavior of the attached - scroll bar is not sufficient or a \l Flickable is not in use. In the - following example, horizontal and vertical scroll bars are used to - scroll over the text without using \l Flickable: - - \snippet qtquickcontrols2-scrollbar-non-attached.qml 1 - - \image qtquickcontrols2-scrollbar-non-attached.png - - When using a non-attached ScrollBar, the following must be done manually: - - \list - \li Layout the scroll bar (with the \l {Item::}{x} and \l {Item::}{y} or - \l {Item::}{anchors} property, for example). - \li Set the \l size and \l position properties to determine the size and position - of the scroll bar in relation to the scrolled item. - \li Set the \l active property to determine when the scroll bar will be - visible. - \endlist - - \sa ScrollIndicator, {Customizing ScrollBar}, {Indicator Controls} -*/ - -static const QQuickItemPrivate::ChangeTypes changeTypes = QQuickItemPrivate::Geometry | QQuickItemPrivate::Destroyed; -static const QQuickItemPrivate::ChangeTypes horizontalChangeTypes = changeTypes | QQuickItemPrivate::ImplicitHeight; -static const QQuickItemPrivate::ChangeTypes verticalChangeTypes = changeTypes | QQuickItemPrivate::ImplicitWidth; - -QQuickScrollBarPrivate::VisualArea QQuickScrollBarPrivate::visualArea() const -{ - qreal visualPos = position; - if (minimumSize > size) - visualPos = position / (1.0 - size) * (1.0 - minimumSize); - - qreal visualSize = qBound<qreal>(0, qMax(size, minimumSize) + qMin<qreal>(0, visualPos), 1.0 - visualPos); - - visualPos = qBound<qreal>(0, visualPos, 1.0 - visualSize); - - return VisualArea(visualPos, visualSize); -} - -qreal QQuickScrollBarPrivate::logicalPosition(qreal position) const -{ - if (minimumSize > size) - return position * (1.0 - size) / (1.0 - minimumSize); - return position; -} - -qreal QQuickScrollBarPrivate::snapPosition(qreal position) const -{ - const qreal effectiveStep = stepSize * (1.0 - size); - if (qFuzzyIsNull(effectiveStep)) - return position; - - return qRound(position / effectiveStep) * effectiveStep; -} - -qreal QQuickScrollBarPrivate::positionAt(const QPointF &point) const -{ - Q_Q(const QQuickScrollBar); - if (orientation == Qt::Horizontal) - return logicalPosition(point.x() - q->leftPadding()) / q->availableWidth(); - else - return logicalPosition(point.y() - q->topPadding()) / q->availableHeight(); -} - -void QQuickScrollBarPrivate::setInteractive(bool enabled) -{ - Q_Q(QQuickScrollBar); - if (interactive == enabled) - return; - - interactive = enabled; - if (interactive) { - q->setAcceptedMouseButtons(Qt::LeftButton); -#if QT_CONFIG(quicktemplates2_multitouch) - q->setAcceptTouchEvents(true); -#endif -#if QT_CONFIG(cursor) - q->setCursor(Qt::ArrowCursor); -#endif - } else { - q->setAcceptedMouseButtons(Qt::NoButton); -#if QT_CONFIG(quicktemplates2_multitouch) - q->setAcceptTouchEvents(false); -#endif -#if QT_CONFIG(cursor) - q->unsetCursor(); -#endif - q->ungrabMouse(); - } - emit q->interactiveChanged(); -} - -void QQuickScrollBarPrivate::updateActive() -{ - Q_Q(QQuickScrollBar); -#if QT_CONFIG(quicktemplates2_hover) - bool hover = hovered; -#else - bool hover = false; -#endif - q->setActive(moving || (interactive && (pressed || hover))); -} - -void QQuickScrollBarPrivate::resizeContent() -{ - Q_Q(QQuickScrollBar); - if (!contentItem) - return; - - // - negative overshoot (pos < 0): clamp the pos to 0, and deduct the overshoot from the size - // - positive overshoot (pos + size > 1): clamp the size to 1-pos - const VisualArea visual = visualArea(); - - if (orientation == Qt::Horizontal) { - contentItem->setPosition(QPointF(q->leftPadding() + visual.position * q->availableWidth(), q->topPadding())); - contentItem->setSize(QSizeF(q->availableWidth() * visual.size, q->availableHeight())); - } else { - contentItem->setPosition(QPointF(q->leftPadding(), q->topPadding() + visual.position * q->availableHeight())); - contentItem->setSize(QSizeF(q->availableWidth(), q->availableHeight() * visual.size)); - } -} - -void QQuickScrollBarPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - Q_Q(QQuickScrollBar); - QQuickControlPrivate::itemImplicitWidthChanged(item); - QQuickIndicatorButton *indicatorButton = q->decreaseVisual(); - if (!indicatorButton || item != indicatorButton->indicator()) { - indicatorButton = q->increaseVisual(); - if (!indicatorButton || item != indicatorButton->indicator()) - return; - } - if (indicatorButton) - emit indicatorButton->implicitIndicatorWidthChanged(); -} - -void QQuickScrollBarPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - Q_Q(QQuickScrollBar); - QQuickControlPrivate::itemImplicitHeightChanged(item); - QQuickIndicatorButton *indicatorButton = q->decreaseVisual(); - if (!indicatorButton || item != indicatorButton->indicator()) { - indicatorButton = q->increaseVisual(); - if (!indicatorButton || item != indicatorButton->indicator()) - return; - } - if (indicatorButton) - emit indicatorButton->implicitIndicatorHeightChanged(); -} - -void QQuickScrollBarPrivate::handlePress(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickScrollBar); - QQuickControlPrivate::handlePress(point, timestamp); - if (QQuickIndicatorButton *indicatorButton = q->decreaseVisual()) { - QQuickItem *decreaseArrow = indicatorButton->indicator(); - if (decreaseArrow && decreaseArrow->contains(q->mapToItem(decreaseArrow, point + QPointF(0.5, 0.5)))) { - indicatorButton->setPressed(true); - q->decrease(); - return; - } - } - - if (QQuickIndicatorButton *increaseObject = q->increaseVisual()) { - QQuickItem *increaseArrow = increaseObject->indicator(); - if (increaseArrow && increaseArrow->contains(q->mapToItem(increaseArrow, point + QPointF(0.5, 0.5)))) { - increaseObject->setPressed(true); - q->increase(); - return; - } - } - - offset = positionAt(point) - position; - qreal sz = qMax(size, logicalPosition(minimumSize)); - if (offset < 0 || offset > sz) - offset = sz / 2; - q->setPressed(true); -} - -void QQuickScrollBarPrivate::handleMove(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickScrollBar); - QQuickControlPrivate::handleMove(point, timestamp); - - /* - * handleMove() will be called as soon as you hold the mouse button down *anywhere* on the - * ScrollBar, including the increase/decrease button indicator areas. So without the following - * early return, it would move the scrollbar handle to one of its extremeties. That would - * ruin the behavior we would like when clicking e.g. the "increase button": To step the - * scrollbar gently. - */ - if (!pressed) - return; - - qreal pos = qBound<qreal>(0.0, positionAt(point) - offset, 1.0 - size); - if (snapMode == QQuickScrollBar::SnapAlways) - pos = snapPosition(pos); - q->setPosition(pos); -} - -void QQuickScrollBarPrivate::handleRelease(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickScrollBar); - QQuickControlPrivate::handleRelease(point, timestamp); - - if (orientation == Qt::Vertical) { - if (point.y() < q->topPadding() || point.y() >= (q->height() - q->bottomPadding())) - return; - } else /* orientation == Qt::Horizontal */{ - if (point.x() < q->leftPadding() || point.x() >= (q->width() - q->rightPadding())) - return; - } - - qreal pos = qBound<qreal>(0.0, positionAt(point) - offset, 1.0 - size); - if (snapMode != QQuickScrollBar::NoSnap) - pos = snapPosition(pos); - q->setPosition(pos); - offset = 0.0; - q->setPressed(false); -} - -void QQuickScrollBarPrivate::handleUngrab() -{ - Q_Q(QQuickScrollBar); - QQuickControlPrivate::handleUngrab(); - offset = 0.0; - q->setPressed(false); -} - -void QQuickScrollBarPrivate::visualAreaChange(const VisualArea &newVisualArea, const VisualArea &oldVisualArea) -{ - Q_Q(QQuickScrollBar); - if (!qFuzzyCompare(newVisualArea.size, oldVisualArea.size)) - emit q->visualSizeChanged(); - if (!qFuzzyCompare(newVisualArea.position, oldVisualArea.position)) - emit q->visualPositionChanged(); -} - -void QQuickScrollBarPrivate::updateHover(const QPointF &pos, std::optional<bool> newHoverState) -{ - Q_Q(QQuickScrollBar); - auto updateHoverOnButton = [&](QQuickIndicatorButton *sbButton) { - if (sbButton) { - bool hovered = newHoverState.value_or(false); - if (!newHoverState.has_value()) { - if (QQuickItem *indicator = sbButton->indicator()) - hovered = indicator->contains(q->mapToItem(indicator, pos)); - } - sbButton->setHovered(hovered); - } - }; - updateHoverOnButton(q->decreaseVisual()); - updateHoverOnButton(q->increaseVisual()); -} - -QQuickScrollBar::QQuickScrollBar(QQuickItem *parent) - : QQuickControl(*(new QQuickScrollBarPrivate), parent) -{ - Q_D(QQuickScrollBar); - d->decreaseVisual = new QQuickIndicatorButton(this); - d->increaseVisual = new QQuickIndicatorButton(this); - setKeepMouseGrab(true); - setAcceptedMouseButtons(Qt::LeftButton); -#if QT_CONFIG(quicktemplates2_multitouch) - setAcceptTouchEvents(true); -#endif -#if QT_CONFIG(cursor) - setCursor(Qt::ArrowCursor); -#endif -} - -QQuickScrollBarAttached *QQuickScrollBar::qmlAttachedProperties(QObject *object) -{ - return new QQuickScrollBarAttached(object); -} - -/*! - \qmlproperty real QtQuick.Controls::ScrollBar::size - - This property holds the size of the scroll bar, scaled to \c {0.0 - 1.0}. - - \sa {Flickable::visibleArea.heightRatio}{Flickable::visibleArea} - - This property is automatically set when the scroll bar is - \l {Attaching ScrollBar to a Flickable}{attached to a flickable}. - - \sa minimumSize, visualSize -*/ -qreal QQuickScrollBar::size() const -{ - Q_D(const QQuickScrollBar); - return d->size; -} - -void QQuickScrollBar::setSize(qreal size) -{ - Q_D(QQuickScrollBar); - if (qFuzzyCompare(d->size, size)) - return; - - auto oldVisualArea = d->visualArea(); - d->size = size; - if (isComponentComplete()) - d->resizeContent(); - emit sizeChanged(); - d->visualAreaChange(d->visualArea(), oldVisualArea); -} - -/*! - \qmlproperty real QtQuick.Controls::ScrollBar::position - - This property holds the position of the scroll bar, scaled to \c {0.0 - 1.0}. - - \sa {Flickable::visibleArea.yPosition}{Flickable::visibleArea} - - This property is automatically set when the scroll bar is - \l {Attaching ScrollBar to a Flickable}{attached to a flickable}. - - \sa visualPosition -*/ -qreal QQuickScrollBar::position() const -{ - Q_D(const QQuickScrollBar); - return d->position; -} - -void QQuickScrollBar::setPosition(qreal position) -{ - Q_D(QQuickScrollBar); - if (qFuzzyCompare(d->position, position)) - return; - - auto oldVisualArea = d->visualArea(); - d->position = position; - if (isComponentComplete()) - d->resizeContent(); - emit positionChanged(); - d->visualAreaChange(d->visualArea(), oldVisualArea); -} - -/*! - \qmlproperty real QtQuick.Controls::ScrollBar::stepSize - - This property holds the step size. The default value is \c 0.0. - - \sa snapMode, increase(), decrease() -*/ -qreal QQuickScrollBar::stepSize() const -{ - Q_D(const QQuickScrollBar); - return d->stepSize; -} - -void QQuickScrollBar::setStepSize(qreal step) -{ - Q_D(QQuickScrollBar); - if (qFuzzyCompare(d->stepSize, step)) - return; - - d->stepSize = step; - emit stepSizeChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::ScrollBar::active - - This property holds whether the scroll bar is active, i.e. when it's \l pressed - or the attached Flickable is \l {Flickable::moving}{moving}. - - It is possible to keep \l {Binding the Active State of Horizontal and Vertical Scroll Bars} - {both horizontal and vertical bars visible} while scrolling in either direction. - - This property is automatically set when the scroll bar is - \l {Attaching ScrollBar to a Flickable}{attached to a flickable}. -*/ -bool QQuickScrollBar::isActive() const -{ - Q_D(const QQuickScrollBar); - return d->active; -} - -void QQuickScrollBar::setActive(bool active) -{ - Q_D(QQuickScrollBar); - if (d->active == active) - return; - - d->active = active; - emit activeChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::ScrollBar::pressed - - This property holds whether the scroll bar is pressed. -*/ -bool QQuickScrollBar::isPressed() const -{ - Q_D(const QQuickScrollBar); - return d->pressed; -} - -void QQuickScrollBar::setPressed(bool pressed) -{ - Q_D(QQuickScrollBar); - if (!pressed) { - if (QQuickIndicatorButton *button = decreaseVisual()) - button->setPressed(false); - if (QQuickIndicatorButton *button = increaseVisual()) - button->setPressed(false); - } - if (d->pressed == pressed) - return; - - d->pressed = pressed; - setAccessibleProperty("pressed", pressed); - d->updateActive(); - emit pressedChanged(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::ScrollBar::orientation - - This property holds the orientation of the scroll bar. - - Possible values: - \value Qt.Horizontal Horizontal - \value Qt.Vertical Vertical (default) - - This property is automatically set when the scroll bar is - \l {Attaching ScrollBar to a Flickable}{attached to a flickable}. - - \sa horizontal, vertical -*/ -Qt::Orientation QQuickScrollBar::orientation() const -{ - Q_D(const QQuickScrollBar); - return d->orientation; -} - -void QQuickScrollBar::setOrientation(Qt::Orientation orientation) -{ - Q_D(QQuickScrollBar); - if (d->orientation == orientation) - return; - - d->orientation = orientation; - if (isComponentComplete()) - d->resizeContent(); - emit orientationChanged(); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty enumeration QtQuick.Controls::ScrollBar::snapMode - - This property holds the snap mode. - - Possible values: - \value ScrollBar.NoSnap The scrollbar does not snap (default). - \value ScrollBar.SnapAlways The scrollbar snaps while dragged. - \value ScrollBar.SnapOnRelease The scrollbar does not snap while being dragged, but only after released. - - In the following table, the various modes are illustrated with animations. - The movement and the \l stepSize (\c 0.25) are identical in each animation. - - \table - \header - \row \li \b Value \li \b Example - \row \li \c ScrollBar.NoSnap \li \image qtquickcontrols2-scrollbar-nosnap.gif - \row \li \c ScrollBar.SnapAlways \li \image qtquickcontrols2-scrollbar-snapalways.gif - \row \li \c ScrollBar.SnapOnRelease \li \image qtquickcontrols2-scrollbar-snaponrelease.gif - \endtable - - \sa stepSize -*/ -QQuickScrollBar::SnapMode QQuickScrollBar::snapMode() const -{ - Q_D(const QQuickScrollBar); - return d->snapMode; -} - -void QQuickScrollBar::setSnapMode(SnapMode mode) -{ - Q_D(QQuickScrollBar); - if (d->snapMode == mode) - return; - - d->snapMode = mode; - emit snapModeChanged(); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty bool QtQuick.Controls::ScrollBar::interactive - - This property holds whether the scroll bar is interactive. The default value is \c true. - - A non-interactive scroll bar is visually and behaviorally similar to \l ScrollIndicator. - This property is useful for switching between typical mouse- and touch-orientated UIs - with interactive and non-interactive scroll bars, respectively. -*/ -bool QQuickScrollBar::isInteractive() const -{ - Q_D(const QQuickScrollBar); - return d->interactive; -} - -void QQuickScrollBar::setInteractive(bool interactive) -{ - Q_D(QQuickScrollBar); - d->explicitInteractive = true; - d->setInteractive(interactive); -} - -void QQuickScrollBar::resetInteractive() -{ - Q_D(QQuickScrollBar); - d->explicitInteractive = false; - d->setInteractive(true); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty enumeration QtQuick.Controls::ScrollBar::policy - - This property holds the policy of the scroll bar. The default policy is \c ScrollBar.AsNeeded. - - Possible values: - \value ScrollBar.AsNeeded The scroll bar is only shown when the content is too large to fit. - \value ScrollBar.AlwaysOff The scroll bar is never shown. - \value ScrollBar.AlwaysOn The scroll bar is always shown. - - The following example keeps the vertical scroll bar always visible: - - \snippet qtquickcontrols2-scrollbar-policy.qml 1 -*/ -QQuickScrollBar::Policy QQuickScrollBar::policy() const -{ - Q_D(const QQuickScrollBar); - return d->policy; -} - -void QQuickScrollBar::setPolicy(Policy policy) -{ - Q_D(QQuickScrollBar); - if (d->policy == policy) - return; - - d->policy = policy; - emit policyChanged(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::ScrollBar::horizontal - \readonly - - This property holds whether the scroll bar is horizontal. - - \sa orientation -*/ -bool QQuickScrollBar::isHorizontal() const -{ - Q_D(const QQuickScrollBar); - return d->orientation == Qt::Horizontal; -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::ScrollBar::vertical - \readonly - - This property holds whether the scroll bar is vertical. - - \sa orientation -*/ -bool QQuickScrollBar::isVertical() const -{ - Q_D(const QQuickScrollBar); - return d->orientation == Qt::Vertical; -} - -/*! - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty real QtQuick.Controls::ScrollBar::minimumSize - - This property holds the minimum size of the scroll bar, scaled to \c {0.0 - 1.0}. - - \sa size, visualSize, visualPosition -*/ -qreal QQuickScrollBar::minimumSize() const -{ - Q_D(const QQuickScrollBar); - return d->minimumSize; -} - -void QQuickScrollBar::setMinimumSize(qreal minimumSize) -{ - Q_D(QQuickScrollBar); - if (qFuzzyCompare(d->minimumSize, minimumSize)) - return; - - auto oldVisualArea = d->visualArea(); - d->minimumSize = minimumSize; - if (isComponentComplete()) - d->resizeContent(); - emit minimumSizeChanged(); - d->visualAreaChange(d->visualArea(), oldVisualArea); -} - -/*! - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty real QtQuick.Controls::ScrollBar::visualSize - - This property holds the effective visual size of the scroll bar, - which may be limited by the \l {minimumSize}{minimum size}. - - \sa size, minimumSize -*/ -qreal QQuickScrollBar::visualSize() const -{ - Q_D(const QQuickScrollBar); - return d->visualArea().size; -} - -/*! - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty real QtQuick.Controls::ScrollBar::visualPosition - - This property holds the effective visual position of the scroll bar, - which may be limited by the \l {minimumSize}{minimum size}. - - \sa position, minimumSize -*/ -qreal QQuickScrollBar::visualPosition() const -{ - Q_D(const QQuickScrollBar); - return d->visualArea().position; -} - -QQuickIndicatorButton *QQuickScrollBar::decreaseVisual() -{ - Q_D(QQuickScrollBar); - return d->decreaseVisual; -} - -QQuickIndicatorButton *QQuickScrollBar::increaseVisual() -{ - Q_D(QQuickScrollBar); - return d->increaseVisual; -} - -/*! - \qmlmethod void QtQuick.Controls::ScrollBar::increase() - - Increases the position by \l stepSize or \c 0.1 if stepSize is \c 0.0. - - \sa stepSize -*/ -void QQuickScrollBar::increase() -{ - Q_D(QQuickScrollBar); - qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize; - bool wasActive = d->active; - setActive(true); - setPosition(qMin<qreal>(1.0 - d->size, d->position + step)); - setActive(wasActive); -} - -/*! - \qmlmethod void QtQuick.Controls::ScrollBar::decrease() - - Decreases the position by \l stepSize or \c 0.1 if stepSize is \c 0.0. - - \sa stepSize -*/ -void QQuickScrollBar::decrease() -{ - Q_D(QQuickScrollBar); - qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize; - bool wasActive = d->active; - setActive(true); - setPosition(qMax<qreal>(0.0, d->position - step)); - setActive(wasActive); -} - -void QQuickScrollBar::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickScrollBar); - QQuickControl::mousePressEvent(event); - d->handleMove(event->position(), event->timestamp()); -} - -#if QT_CONFIG(quicktemplates2_hover) -void QQuickScrollBar::hoverChange() -{ - Q_D(QQuickScrollBar); - d->updateActive(); -} - -void QQuickScrollBar::hoverEnterEvent(QHoverEvent *event) -{ - Q_D(QQuickScrollBar); - QQuickControl::hoverEnterEvent(event); - d->updateHover(event->position()); -} - -void QQuickScrollBar::hoverMoveEvent(QHoverEvent *event) -{ - Q_D(QQuickScrollBar); - QQuickControl::hoverMoveEvent(event); - d->updateHover(event->position()); -} - -void QQuickScrollBar::hoverLeaveEvent(QHoverEvent *event) -{ - Q_D(QQuickScrollBar); - QQuickControl::hoverLeaveEvent(event); - - d->updateHover(QPoint(), false); //position is not needed when we force it to unhover -} -#endif - -void QQuickScrollBar::classBegin() -{ - Q_D(QQuickScrollBar); - QQuickControl::classBegin(); - - QQmlContext *context = qmlContext(this); - if (context) { - QQmlEngine::setContextForObject(d->decreaseVisual, context); - QQmlEngine::setContextForObject(d->increaseVisual, context); - } -} - -void QQuickScrollBar::componentComplete() -{ - Q_D(QQuickScrollBar); - QQuickIndicatorButtonPrivate::get(d->decreaseVisual)->executeIndicator(true); - QQuickIndicatorButtonPrivate::get(d->increaseVisual)->executeIndicator(true); - - QQuickControl::componentComplete(); -} - -#if QT_CONFIG(accessibility) -void QQuickScrollBar::accessibilityActiveChanged(bool active) -{ - QQuickControl::accessibilityActiveChanged(active); - - Q_D(QQuickScrollBar); - if (active) { - setAccessibleProperty("pressed", d->pressed); - - if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this)) { - connect(accessibleAttached, &QQuickAccessibleAttached::increaseAction, this, &QQuickScrollBar::increase); - connect(accessibleAttached, &QQuickAccessibleAttached::decreaseAction, this, &QQuickScrollBar::decrease); - } - } else { - if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this)) { - disconnect(accessibleAttached, &QQuickAccessibleAttached::increaseAction, this, &QQuickScrollBar::increase); - disconnect(accessibleAttached, &QQuickAccessibleAttached::decreaseAction, this, &QQuickScrollBar::decrease); - } - } -} - -QAccessible::Role QQuickScrollBar::accessibleRole() const -{ - return QAccessible::ScrollBar; -} -#endif - -void QQuickScrollBarAttachedPrivate::setFlickable(QQuickFlickable *item) -{ - if (flickable) { - // NOTE: Use removeItemChangeListener(Geometry) instead of updateOrRemoveGeometryChangeListener(Size). - // The latter doesn't remove the listener but only resets its types. Thus, it leaves behind a dangling - // pointer on destruction. - QQuickItemPrivate::get(flickable)->removeItemChangeListener(this, QQuickItemPrivate::Geometry); - if (horizontal) - cleanupHorizontal(); - if (vertical) - cleanupVertical(); - } - - flickable = item; - - if (item) { - QQuickItemPrivate::get(item)->updateOrAddGeometryChangeListener(this, QQuickGeometryChange::Size); - if (horizontal) - initHorizontal(); - if (vertical) - initVertical(); - } -} - -void QQuickScrollBarAttachedPrivate::initHorizontal() -{ - Q_ASSERT(flickable && horizontal); - - connect(flickable, &QQuickFlickable::movingHorizontallyChanged, this, &QQuickScrollBarAttachedPrivate::activateHorizontal); - - // TODO: export QQuickFlickableVisibleArea - QObject *area = flickable->property("visibleArea").value<QObject *>(); - QObject::connect(area, SIGNAL(widthRatioChanged(qreal)), horizontal, SLOT(setSize(qreal))); - QObject::connect(area, SIGNAL(xPositionChanged(qreal)), horizontal, SLOT(setPosition(qreal))); - - // ensure that the ScrollBar is stacked above the Flickable in a ScrollView - QQuickItem *parent = horizontal->parentItem(); - if (parent && parent == flickable->parentItem()) - horizontal->stackAfter(flickable); - - layoutHorizontal(); - horizontal->setSize(area->property("widthRatio").toReal()); - horizontal->setPosition(area->property("xPosition").toReal()); -} - -void QQuickScrollBarAttachedPrivate::initVertical() -{ - Q_ASSERT(flickable && vertical); - - connect(flickable, &QQuickFlickable::movingVerticallyChanged, this, &QQuickScrollBarAttachedPrivate::activateVertical); - - // TODO: export QQuickFlickableVisibleArea - QObject *area = flickable->property("visibleArea").value<QObject *>(); - QObject::connect(area, SIGNAL(heightRatioChanged(qreal)), vertical, SLOT(setSize(qreal))); - QObject::connect(area, SIGNAL(yPositionChanged(qreal)), vertical, SLOT(setPosition(qreal))); - - // ensure that the ScrollBar is stacked above the Flickable in a ScrollView - QQuickItem *parent = vertical->parentItem(); - if (parent && parent == flickable->parentItem()) - vertical->stackAfter(flickable); - - layoutVertical(); - vertical->setSize(area->property("heightRatio").toReal()); - vertical->setPosition(area->property("yPosition").toReal()); -} - -void QQuickScrollBarAttachedPrivate::cleanupHorizontal() -{ - Q_ASSERT(flickable && horizontal); - - QQuickControlPrivate::hideOldItem(horizontal); - // ScrollBar.qml has a binding to visible and ScrollView.qml has a binding to parent. - // If we just set visible to false and parent to null, these bindings will overwrite - // them upon component completion as part of the binding evaluation. - // That's why we remove the binding completely. - const QQmlProperty visibleProperty(horizontal, QStringLiteral("visible")); - const QQmlProperty parentProperty(horizontal, QStringLiteral("parent")); - QQmlPropertyPrivate::removeBinding(visibleProperty); - QQmlPropertyPrivate::removeBinding(parentProperty); - - disconnect(flickable, &QQuickFlickable::movingHorizontallyChanged, this, &QQuickScrollBarAttachedPrivate::activateHorizontal); - - // TODO: export QQuickFlickableVisibleArea - QObject *area = flickable->property("visibleArea").value<QObject *>(); - QObject::disconnect(area, SIGNAL(widthRatioChanged(qreal)), horizontal, SLOT(setSize(qreal))); - QObject::disconnect(area, SIGNAL(xPositionChanged(qreal)), horizontal, SLOT(setPosition(qreal))); -} - -void QQuickScrollBarAttachedPrivate::cleanupVertical() -{ - Q_ASSERT(flickable && vertical); - - QQuickControlPrivate::hideOldItem(vertical); - const QQmlProperty visibleProperty(vertical, QStringLiteral("visible")); - const QQmlProperty parentProperty(vertical, QStringLiteral("parent")); - QQmlPropertyPrivate::removeBinding(visibleProperty); - QQmlPropertyPrivate::removeBinding(parentProperty); - - disconnect(flickable, &QQuickFlickable::movingVerticallyChanged, this, &QQuickScrollBarAttachedPrivate::activateVertical); - - // TODO: export QQuickFlickableVisibleArea - QObject *area = flickable->property("visibleArea").value<QObject *>(); - QObject::disconnect(area, SIGNAL(heightRatioChanged(qreal)), vertical, SLOT(setSize(qreal))); - QObject::disconnect(area, SIGNAL(yPositionChanged(qreal)), vertical, SLOT(setPosition(qreal))); -} - -void QQuickScrollBarAttachedPrivate::activateHorizontal() -{ - QQuickScrollBarPrivate *p = QQuickScrollBarPrivate::get(horizontal); - p->moving = flickable->isMovingHorizontally(); - p->updateActive(); -} - -void QQuickScrollBarAttachedPrivate::activateVertical() -{ - QQuickScrollBarPrivate *p = QQuickScrollBarPrivate::get(vertical); - p->moving = flickable->isMovingVertically(); - p->updateActive(); -} - -// TODO: QQuickFlickable::maxXYExtent() -class QQuickFriendlyFlickable : public QQuickFlickable -{ - friend class QQuickScrollBarAttachedPrivate; -}; - -void QQuickScrollBarAttachedPrivate::scrollHorizontal() -{ - if (!flickable) - return; - - QQuickFriendlyFlickable *f = reinterpret_cast<QQuickFriendlyFlickable *>(flickable); - - const qreal viewwidth = f->width(); - const qreal maxxextent = -f->maxXExtent() + f->minXExtent(); - const qreal cx = horizontal->position() * (maxxextent + viewwidth) - f->minXExtent(); - - if (!qIsNaN(cx) && !qFuzzyCompare(cx, flickable->contentX())) - flickable->setContentX(cx); -} - -void QQuickScrollBarAttachedPrivate::scrollVertical() -{ - if (!flickable) - return; - - QQuickFriendlyFlickable *f = reinterpret_cast<QQuickFriendlyFlickable *>(flickable); - - const qreal viewheight = f->height(); - const qreal maxyextent = -f->maxYExtent() + f->minYExtent(); - const qreal cy = vertical->position() * (maxyextent + viewheight) - f->minYExtent(); - - if (!qIsNaN(cy) && !qFuzzyCompare(cy, flickable->contentY())) - flickable->setContentY(cy); -} - -void QQuickScrollBarAttachedPrivate::mirrorVertical() -{ - layoutVertical(true); -} - -void QQuickScrollBarAttachedPrivate::layoutHorizontal(bool move) -{ - Q_ASSERT(horizontal && flickable); - if (horizontal->parentItem() != flickable) - return; - horizontal->setWidth(flickable->width()); - if (move) - horizontal->setY(flickable->height() - horizontal->height()); -} - -void QQuickScrollBarAttachedPrivate::layoutVertical(bool move) -{ - Q_ASSERT(vertical && flickable); - if (vertical->parentItem() != flickable) - return; - vertical->setHeight(flickable->height()); - if (move) - vertical->setX(vertical->isMirrored() ? 0 : flickable->width() - vertical->width()); -} - -void QQuickScrollBarAttachedPrivate::itemGeometryChanged(QQuickItem *item, const QQuickGeometryChange change, const QRectF &diff) -{ - Q_UNUSED(item); - Q_UNUSED(change); - if (horizontal && horizontal->height() > 0) { -#ifdef QT_QUICK_NEW_GEOMETRY_CHANGED_HANDLING // TODO: correct/rename diff to oldGeometry - bool move = qFuzzyIsNull(horizontal->y()) || qFuzzyCompare(horizontal->y(), diff.height() - horizontal->height()); -#else - bool move = qFuzzyIsNull(horizontal->y()) || qFuzzyCompare(horizontal->y(), item->height() - diff.height() - horizontal->height()); -#endif - if (flickable) - layoutHorizontal(move); - } - if (vertical && vertical->width() > 0) { -#ifdef QT_QUICK_NEW_GEOMETRY_CHANGED_HANDLING // TODO: correct/rename diff to oldGeometry - bool move = qFuzzyIsNull(vertical->x()) || qFuzzyCompare(vertical->x(), diff.width() - vertical->width()); -#else - bool move = qFuzzyIsNull(vertical->x()) || qFuzzyCompare(vertical->x(), item->width() - diff.width() - vertical->width()); -#endif - if (flickable) - layoutVertical(move); - } -} - -void QQuickScrollBarAttachedPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - if (item == vertical && flickable) - layoutVertical(true); -} - -void QQuickScrollBarAttachedPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - if (item == horizontal && flickable) - layoutHorizontal(true); -} - -void QQuickScrollBarAttachedPrivate::itemDestroyed(QQuickItem *item) -{ - if (item == horizontal) - horizontal = nullptr; - if (item == vertical) - vertical = nullptr; -} - -QQuickScrollBarAttached::QQuickScrollBarAttached(QObject *parent) - : QObject(*(new QQuickScrollBarAttachedPrivate), parent) -{ - Q_D(QQuickScrollBarAttached); - d->setFlickable(qobject_cast<QQuickFlickable *>(parent)); - - if (parent && !d->flickable && !qobject_cast<QQuickScrollView *>(parent)) - qmlWarning(parent) << "ScrollBar must be attached to a Flickable or ScrollView"; -} - -QQuickScrollBarAttached::~QQuickScrollBarAttached() -{ - Q_D(QQuickScrollBarAttached); - if (d->horizontal) { - QQuickItemPrivate::get(d->horizontal)->removeItemChangeListener(d, horizontalChangeTypes); - d->horizontal = nullptr; - } - if (d->vertical) { - QQuickItemPrivate::get(d->vertical)->removeItemChangeListener(d, verticalChangeTypes); - d->vertical = nullptr; - } - d->setFlickable(nullptr); -} - -/*! - \qmlattachedproperty ScrollBar QtQuick.Controls::ScrollBar::horizontal - - This property attaches a horizontal scroll bar to a \l Flickable. - - \code - Flickable { - contentWidth: 2000 - ScrollBar.horizontal: ScrollBar { } - } - \endcode - - \sa {Attaching ScrollBar to a Flickable} -*/ -QQuickScrollBar *QQuickScrollBarAttached::horizontal() const -{ - Q_D(const QQuickScrollBarAttached); - return d->horizontal; -} - -void QQuickScrollBarAttached::setHorizontal(QQuickScrollBar *horizontal) -{ - Q_D(QQuickScrollBarAttached); - if (d->horizontal == horizontal) - return; - - if (d->horizontal) { - QQuickItemPrivate::get(d->horizontal)->removeItemChangeListener(d, horizontalChangeTypes); - QObjectPrivate::disconnect(d->horizontal, &QQuickScrollBar::positionChanged, d, &QQuickScrollBarAttachedPrivate::scrollHorizontal); - - if (d->flickable) - d->cleanupHorizontal(); - } - - d->horizontal = horizontal; - - if (horizontal) { - if (!horizontal->parentItem()) - horizontal->setParentItem(qobject_cast<QQuickItem *>(parent())); - horizontal->setOrientation(Qt::Horizontal); - - QQuickItemPrivate::get(horizontal)->addItemChangeListener(d, horizontalChangeTypes); - QObjectPrivate::connect(horizontal, &QQuickScrollBar::positionChanged, d, &QQuickScrollBarAttachedPrivate::scrollHorizontal); - - if (d->flickable) - d->initHorizontal(); - } - emit horizontalChanged(); -} - -/*! - \qmlattachedproperty ScrollBar QtQuick.Controls::ScrollBar::vertical - - This property attaches a vertical scroll bar to a \l Flickable. - - \code - Flickable { - contentHeight: 2000 - ScrollBar.vertical: ScrollBar { } - } - \endcode - - \sa {Attaching ScrollBar to a Flickable} -*/ -QQuickScrollBar *QQuickScrollBarAttached::vertical() const -{ - Q_D(const QQuickScrollBarAttached); - return d->vertical; -} - -void QQuickScrollBarAttached::setVertical(QQuickScrollBar *vertical) -{ - Q_D(QQuickScrollBarAttached); - if (d->vertical == vertical) - return; - - if (d->vertical) { - QQuickItemPrivate::get(d->vertical)->removeItemChangeListener(d, verticalChangeTypes); - QObjectPrivate::disconnect(d->vertical, &QQuickScrollBar::mirroredChanged, d, &QQuickScrollBarAttachedPrivate::mirrorVertical); - QObjectPrivate::disconnect(d->vertical, &QQuickScrollBar::positionChanged, d, &QQuickScrollBarAttachedPrivate::scrollVertical); - - if (d->flickable) - d->cleanupVertical(); - } - - d->vertical = vertical; - - if (vertical) { - if (!vertical->parentItem()) - vertical->setParentItem(qobject_cast<QQuickItem *>(parent())); - vertical->setOrientation(Qt::Vertical); - - QQuickItemPrivate::get(vertical)->addItemChangeListener(d, verticalChangeTypes); - QObjectPrivate::connect(vertical, &QQuickScrollBar::mirroredChanged, d, &QQuickScrollBarAttachedPrivate::mirrorVertical); - QObjectPrivate::connect(vertical, &QQuickScrollBar::positionChanged, d, &QQuickScrollBarAttachedPrivate::scrollVertical); - - if (d->flickable) - d->initVertical(); - } - emit verticalChanged(); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickscrollbar_p.h b/src/quicktemplates2/qquickscrollbar_p.h deleted file mode 100644 index b7de290b..00000000 --- a/src/quicktemplates2/qquickscrollbar_p.h +++ /dev/null @@ -1,222 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSCROLLBAR_P_H -#define QQUICKSCROLLBAR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> -#include <QtQuickTemplates2/private/qquickindicatorbutton_p.h> -QT_BEGIN_NAMESPACE - -class QQuickScrollBarAttached; -class QQuickScrollBarPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickScrollBar : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(qreal size READ size WRITE setSize NOTIFY sizeChanged FINAL) - Q_PROPERTY(qreal position READ position WRITE setPosition NOTIFY positionChanged FINAL) - Q_PROPERTY(qreal stepSize READ stepSize WRITE setStepSize NOTIFY stepSizeChanged FINAL) - Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged FINAL) - Q_PROPERTY(bool pressed READ isPressed WRITE setPressed NOTIFY pressedChanged FINAL) - Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged FINAL) - // 2.2 (Qt 5.9) - Q_PROPERTY(SnapMode snapMode READ snapMode WRITE setSnapMode NOTIFY snapModeChanged FINAL REVISION(2, 2)) - Q_PROPERTY(bool interactive READ isInteractive WRITE setInteractive RESET resetInteractive NOTIFY interactiveChanged FINAL REVISION(2, 2)) - Q_PROPERTY(Policy policy READ policy WRITE setPolicy NOTIFY policyChanged FINAL REVISION(2, 2)) - // 2.3 (Qt 5.10) - Q_PROPERTY(bool horizontal READ isHorizontal NOTIFY orientationChanged FINAL REVISION(2, 3)) - Q_PROPERTY(bool vertical READ isVertical NOTIFY orientationChanged FINAL REVISION(2, 3)) - // 2.4 (Qt 5.11) - Q_PROPERTY(qreal minimumSize READ minimumSize WRITE setMinimumSize NOTIFY minimumSizeChanged FINAL REVISION(2, 4)) - Q_PROPERTY(qreal visualSize READ visualSize NOTIFY visualSizeChanged FINAL REVISION(2, 4)) - Q_PROPERTY(qreal visualPosition READ visualPosition NOTIFY visualPositionChanged FINAL REVISION(2, 4)) - - Q_PROPERTY(QQuickIndicatorButton *__decreaseVisual READ decreaseVisual CONSTANT FINAL) - Q_PROPERTY(QQuickIndicatorButton *__increaseVisual READ increaseVisual CONSTANT FINAL) - - QML_NAMED_ELEMENT(ScrollBar) - QML_ATTACHED(QQuickScrollBarAttached) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickScrollBar(QQuickItem *parent = nullptr); - - static QQuickScrollBarAttached *qmlAttachedProperties(QObject *object); - - qreal size() const; - qreal position() const; - - qreal stepSize() const; - void setStepSize(qreal step); - - bool isActive() const; - void setActive(bool active); - - bool isPressed() const; - void setPressed(bool pressed); - - Qt::Orientation orientation() const; - void setOrientation(Qt::Orientation orientation); - - // 2.2 (Qt 5.9) - enum SnapMode { - NoSnap, - SnapAlways, - SnapOnRelease - }; - Q_ENUM(SnapMode) - - SnapMode snapMode() const; - void setSnapMode(SnapMode mode); - - bool isInteractive() const; - void setInteractive(bool interactive); - void resetInteractive(); - - enum Policy { - AsNeeded = Qt::ScrollBarAsNeeded, - AlwaysOff = Qt::ScrollBarAlwaysOff, - AlwaysOn = Qt::ScrollBarAlwaysOn - }; - Q_ENUM(Policy) - - Policy policy() const; - void setPolicy(Policy policy); - - // 2.3 (Qt 5.10) - bool isHorizontal() const; - bool isVertical() const; - - // 2.4 (Qt 5.11) - qreal minimumSize() const; - void setMinimumSize(qreal minimumSize); - - qreal visualSize() const; - qreal visualPosition() const; - - QQuickIndicatorButton *decreaseVisual(); - QQuickIndicatorButton *increaseVisual(); - -public Q_SLOTS: - void increase(); - void decrease(); - void setSize(qreal size); - void setPosition(qreal position); - -Q_SIGNALS: - void sizeChanged(); - void positionChanged(); - void stepSizeChanged(); - void activeChanged(); - void pressedChanged(); - void orientationChanged(); - // 2.2 (Qt 5.9) - Q_REVISION(2, 2) void snapModeChanged(); - Q_REVISION(2, 2) void interactiveChanged(); - Q_REVISION(2, 2) void policyChanged(); - // 2.4 (Qt 5.11) - Q_REVISION(2, 4) void minimumSizeChanged(); - Q_REVISION(2, 4) void visualSizeChanged(); - Q_REVISION(2, 4) void visualPositionChanged(); - -protected: - void mousePressEvent(QMouseEvent *event) override; - -#if QT_CONFIG(quicktemplates2_hover) - void hoverChange() override; - void hoverEnterEvent(QHoverEvent *event) override; - void hoverMoveEvent(QHoverEvent *event) override; - void hoverLeaveEvent(QHoverEvent *event) override; -#endif - - void classBegin() override; - void componentComplete() override; - -#if QT_CONFIG(accessibility) - void accessibilityActiveChanged(bool active) override; - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickScrollBar) - Q_DECLARE_PRIVATE(QQuickScrollBar) -}; - -class QQuickScrollBarAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickScrollBarAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickScrollBar *horizontal READ horizontal WRITE setHorizontal NOTIFY horizontalChanged FINAL) - Q_PROPERTY(QQuickScrollBar *vertical READ vertical WRITE setVertical NOTIFY verticalChanged FINAL) - -public: - explicit QQuickScrollBarAttached(QObject *parent = nullptr); - ~QQuickScrollBarAttached(); - - QQuickScrollBar *horizontal() const; - void setHorizontal(QQuickScrollBar *horizontal); - - QQuickScrollBar *vertical() const; - void setVertical(QQuickScrollBar *vertical); - -Q_SIGNALS: - void horizontalChanged(); - void verticalChanged(); - -private: - Q_DISABLE_COPY(QQuickScrollBarAttached) - Q_DECLARE_PRIVATE(QQuickScrollBarAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickScrollBar) -QML_DECLARE_TYPEINFO(QQuickScrollBar, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKSCROLLBAR_P_H diff --git a/src/quicktemplates2/qquickscrollbar_p_p.h b/src/quicktemplates2/qquickscrollbar_p_p.h deleted file mode 100644 index 2c6345e9..00000000 --- a/src/quicktemplates2/qquickscrollbar_p_p.h +++ /dev/null @@ -1,150 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSCROLLBAR_P_P_H -#define QQUICKSCROLLBAR_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickscrollbar_p.h> -#include <QtQuickTemplates2/private/qquickcontrol_p_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickFlickable; -class QQuickIndicatorButton; - -class QQuickScrollBarPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickScrollBar) - -public: - static QQuickScrollBarPrivate *get(QQuickScrollBar *bar) - { - return bar->d_func(); - } - - struct VisualArea - { - VisualArea(qreal pos, qreal sz) - : position(pos), size(sz) { } - qreal position = 0; - qreal size = 0; - }; - VisualArea visualArea() const; - - qreal logicalPosition(qreal position) const; - - qreal snapPosition(qreal position) const; - qreal positionAt(const QPointF &point) const; - void setInteractive(bool interactive); - void updateActive(); - void resizeContent() override; - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - void handlePress(const QPointF &point, ulong timestamp) override; - void handleMove(const QPointF &point, ulong timestamp) override; - void handleRelease(const QPointF &point, ulong timestamp) override; - void handleUngrab() override; - - void visualAreaChange(const VisualArea &newVisualArea, const VisualArea &oldVisualArea); - - void updateHover(const QPointF &pos, std::optional<bool> newHoverState = {}); - - QQuickIndicatorButton *decreaseVisual = nullptr; - QQuickIndicatorButton *increaseVisual = nullptr; - qreal size = 0; - qreal position = 0; - qreal stepSize = 0; - qreal offset = 0; - qreal minimumSize = 0; - bool active = false; - bool pressed = false; - bool moving = false; - bool interactive = true; - bool explicitInteractive = false; - Qt::Orientation orientation = Qt::Vertical; - QQuickScrollBar::SnapMode snapMode = QQuickScrollBar::NoSnap; - QQuickScrollBar::Policy policy = QQuickScrollBar::AsNeeded; -}; - -class QQuickScrollBarAttachedPrivate : public QObjectPrivate, public QQuickItemChangeListener -{ -public: - static QQuickScrollBarAttachedPrivate *get(QQuickScrollBarAttached *attached) - { - return attached->d_func(); - } - - void setFlickable(QQuickFlickable *flickable); - - void initHorizontal(); - void initVertical(); - void cleanupHorizontal(); - void cleanupVertical(); - void activateHorizontal(); - void activateVertical(); - void scrollHorizontal(); - void scrollVertical(); - void mirrorVertical(); - - void layoutHorizontal(bool move = true); - void layoutVertical(bool move = true); - - void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override; - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - void itemDestroyed(QQuickItem *item) override; - - QQuickFlickable *flickable = nullptr; - QQuickScrollBar *horizontal = nullptr; - QQuickScrollBar *vertical = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKSCROLLBAR_P_P_H diff --git a/src/quicktemplates2/qquickscrollindicator.cpp b/src/quicktemplates2/qquickscrollindicator.cpp deleted file mode 100644 index 8c001c01..00000000 --- a/src/quicktemplates2/qquickscrollindicator.cpp +++ /dev/null @@ -1,665 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickscrollindicator_p.h" -#include "qquickcontrol_p_p.h" - -#include <QtQml/qqmlinfo.h> -#include <QtQuick/private/qquickflickable_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ScrollIndicator - \inherits Control -//! \instantiates QQuickScrollIndicator - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-indicators - \brief Vertical or horizontal non-interactive scroll indicator. - - \image qtquickcontrols2-scrollindicator.gif - - ScrollIndicator is a non-interactive indicator that indicates the current scroll - position. A scroll indicator can be either \l vertical or \l horizontal, and can - be attached to any \l Flickable, such as \l ListView and \l GridView. - - \code - Flickable { - // ... - ScrollIndicator.vertical: ScrollIndicator { } - } - \endcode - - \section1 Attaching ScrollIndicator to a Flickable - - \note When ScrollIndicator is attached \l {ScrollIndicator::vertical}{vertically} - or \l {ScrollIndicator::horizontal}{horizontally} to a Flickable, its geometry and - the following properties are automatically set and updated as appropriate: - - \list - \li \l orientation - \li \l position - \li \l size - \li \l active - \endlist - - An attached ScrollIndicator re-parents itself to the target Flickable. A vertically - attached ScrollIndicator resizes itself to the height of the Flickable, and positions - itself to either side of it based on the \l {Control::mirrored}{layout direction}. - A horizontally attached ScrollIndicator resizes itself to the width of the Flickable, - and positions itself to the bottom. The automatic geometry management can be disabled - by specifying another parent for the attached ScrollIndicator. This can be useful, for - example, if the ScrollIndicator should be placed outside a clipping Flickable. This is - demonstrated by the following example: - - \code - Flickable { - id: flickable - clip: true - // ... - ScrollIndicator.vertical: ScrollIndicator { - parent: flickable.parent - anchors.top: flickable.top - anchors.left: flickable.right - anchors.bottom: flickable.bottom - } - } - \endcode - - \section1 Binding the Active State of Horizontal and Vertical Scroll Indicators - - Horizontal and vertical scroll indicators do not share the \l active state with - each other by default. In order to keep both indicators visible whilst scrolling - to either direction, establish a two-way binding between the active states as - presented by the following example: - - \snippet qtquickcontrols2-scrollindicator-active.qml 1 - - \section1 Non-attached Scroll Indicators - - It is possible to create an instance of ScrollIndicator without using the - attached property API. This is useful when the behavior of the attached - scoll indicator is not sufficient or a \l Flickable is not in use. In the - following example, horizontal and vertical scroll indicators are used to - indicate how far the user has scrolled over the text (using \l MouseArea - instead of \l Flickable): - - \snippet qtquickcontrols2-scrollindicator-non-attached.qml 1 - - \image qtquickcontrols2-scrollindicator-non-attached.png - - \sa ScrollBar, {Customizing ScrollIndicator}, {Indicator Controls} -*/ - -static const QQuickItemPrivate::ChangeTypes changeTypes = QQuickItemPrivate::Geometry | QQuickItemPrivate::Destroyed; -static const QQuickItemPrivate::ChangeTypes horizontalChangeTypes = changeTypes | QQuickItemPrivate::ImplicitHeight; -static const QQuickItemPrivate::ChangeTypes verticalChangeTypes = changeTypes | QQuickItemPrivate::ImplicitWidth; - -class QQuickScrollIndicatorPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickScrollIndicator) - -public: - struct VisualArea - { - VisualArea(qreal pos, qreal sz) - : position(pos), size(sz) { } - qreal position = 0; - qreal size = 0; - }; - VisualArea visualArea() const; - void visualAreaChange(const VisualArea &newVisualArea, const VisualArea &oldVisualArea); - - void resizeContent() override; - - qreal size = 0; - qreal minimumSize = 0; - qreal position = 0; - bool active = false; - Qt::Orientation orientation = Qt::Vertical; -}; - -QQuickScrollIndicatorPrivate::VisualArea QQuickScrollIndicatorPrivate::visualArea() const -{ - qreal visualPos = position; - if (minimumSize > size) - visualPos = position / (1.0 - size) * (1.0 - minimumSize); - - qreal visualSize = qBound<qreal>(0, qMax(size, minimumSize) + qMin<qreal>(0, visualPos), 1.0 - visualPos); - - visualPos = qBound<qreal>(0, visualPos, 1.0 - visualSize); - - return VisualArea(visualPos, visualSize); -} - -void QQuickScrollIndicatorPrivate::visualAreaChange(const VisualArea &newVisualArea, const VisualArea &oldVisualArea) -{ - Q_Q(QQuickScrollIndicator); - if (!qFuzzyCompare(newVisualArea.size, oldVisualArea.size)) - emit q->visualSizeChanged(); - if (!qFuzzyCompare(newVisualArea.position, oldVisualArea.position)) - emit q->visualPositionChanged(); -} - -void QQuickScrollIndicatorPrivate::resizeContent() -{ - Q_Q(QQuickScrollIndicator); - if (!contentItem) - return; - - // - negative overshoot (pos < 0): clamp the pos to 0, and deduct the overshoot from the size - // - positive overshoot (pos + size > 1): clamp the size to 1-pos - const VisualArea visual = visualArea(); - - if (orientation == Qt::Horizontal) { - contentItem->setPosition(QPointF(q->leftPadding() + visual.position * q->availableWidth(), q->topPadding())); - contentItem->setSize(QSizeF(q->availableWidth() * visual.size, q->availableHeight())); - } else { - contentItem->setPosition(QPointF(q->leftPadding(), q->topPadding() + visual.position * q->availableHeight())); - contentItem->setSize(QSizeF(q->availableWidth(), q->availableHeight() * visual.size)); - } -} - -QQuickScrollIndicator::QQuickScrollIndicator(QQuickItem *parent) - : QQuickControl(*(new QQuickScrollIndicatorPrivate), parent) -{ -} - -QQuickScrollIndicatorAttached *QQuickScrollIndicator::qmlAttachedProperties(QObject *object) -{ - return new QQuickScrollIndicatorAttached(object); -} - -/*! - \qmlproperty real QtQuick.Controls::ScrollIndicator::size - - This property holds the size of the indicator, scaled to \c {0.0 - 1.0}. - - \sa {Flickable::visibleArea.heightRatio}{Flickable::visibleArea} - - This property is automatically set when the scroll indicator is - \l {Attaching ScrollIndicator to a Flickable}{attached to a flickable}. - - \sa minimumSize, visualSize -*/ -qreal QQuickScrollIndicator::size() const -{ - Q_D(const QQuickScrollIndicator); - return d->size; -} - -void QQuickScrollIndicator::setSize(qreal size) -{ - Q_D(QQuickScrollIndicator); - if (qFuzzyCompare(d->size, size)) - return; - - auto oldVisualArea = d->visualArea(); - d->size = size; - if (isComponentComplete()) - d->resizeContent(); - emit sizeChanged(); - d->visualAreaChange(d->visualArea(), oldVisualArea); -} - -/*! - \qmlproperty real QtQuick.Controls::ScrollIndicator::position - - This property holds the position of the indicator, scaled to \c {0.0 - 1.0}. - - This property is automatically set when the scroll indicator is - \l {Attaching ScrollIndicator to a Flickable}{attached to a flickable}. - - \sa {Flickable::visibleArea.yPosition}{Flickable::visibleArea}, visualPosition -*/ -qreal QQuickScrollIndicator::position() const -{ - Q_D(const QQuickScrollIndicator); - return d->position; -} - -void QQuickScrollIndicator::setPosition(qreal position) -{ - Q_D(QQuickScrollIndicator); - if (qFuzzyCompare(d->position, position)) - return; - - auto oldVisualArea = d->visualArea(); - d->position = position; - if (isComponentComplete()) - d->resizeContent(); - emit positionChanged(); - d->visualAreaChange(d->visualArea(), oldVisualArea); -} - -/*! - \qmlproperty bool QtQuick.Controls::ScrollIndicator::active - - This property holds whether the indicator is active, that is, when the - attached Flickable is \l {Flickable::moving}{moving}. - - It is possible to keep \l {Binding the Active State of Horizontal and Vertical Scroll Indicators} - {both horizontal and vertical indicators visible} while scrolling in either direction. - - This property is automatically set when the scroll indicator is - \l {Attaching ScrollIndicator to a Flickable}{attached to a flickable}. -*/ -bool QQuickScrollIndicator::isActive() const -{ - Q_D(const QQuickScrollIndicator); - return d->active; -} - -void QQuickScrollIndicator::setActive(bool active) -{ - Q_D(QQuickScrollIndicator); - if (d->active == active) - return; - - d->active = active; - emit activeChanged(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::ScrollIndicator::orientation - - This property holds the orientation of the indicator. - - Possible values: - \value Qt.Horizontal Horizontal - \value Qt.Vertical Vertical (default) - - This property is automatically set when the scroll indicator is - \l {Attaching ScrollIndicator to a Flickable}{attached to a flickable}. - - \sa horizontal, vertical -*/ -Qt::Orientation QQuickScrollIndicator::orientation() const -{ - Q_D(const QQuickScrollIndicator); - return d->orientation; -} - -void QQuickScrollIndicator::setOrientation(Qt::Orientation orientation) -{ - Q_D(QQuickScrollIndicator); - if (d->orientation == orientation) - return; - - d->orientation = orientation; - if (isComponentComplete()) - d->resizeContent(); - emit orientationChanged(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::ScrollIndicator::horizontal - \readonly - - This property holds whether the scroll indicator is horizontal. - - \sa orientation -*/ -bool QQuickScrollIndicator::isHorizontal() const -{ - Q_D(const QQuickScrollIndicator); - return d->orientation == Qt::Horizontal; -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::ScrollIndicator::vertical - \readonly - - This property holds whether the scroll indicator is vertical. - - \sa orientation -*/ -bool QQuickScrollIndicator::isVertical() const -{ - Q_D(const QQuickScrollIndicator); - return d->orientation == Qt::Vertical; -} - -/*! - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty real QtQuick.Controls::ScrollIndicator::minimumSize - - This property holds the minimum size of the indicator, scaled to \c {0.0 - 1.0}. - - \sa size, visualSize, visualPosition -*/ -qreal QQuickScrollIndicator::minimumSize() const -{ - Q_D(const QQuickScrollIndicator); - return d->minimumSize; -} - -void QQuickScrollIndicator::setMinimumSize(qreal minimumSize) -{ - Q_D(QQuickScrollIndicator); - if (qFuzzyCompare(d->minimumSize, minimumSize)) - return; - - auto oldVisualArea = d->visualArea(); - d->minimumSize = minimumSize; - if (isComponentComplete()) - d->resizeContent(); - emit minimumSizeChanged(); - d->visualAreaChange(d->visualArea(), oldVisualArea); -} - -/*! - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty real QtQuick.Controls::ScrollIndicator::visualSize - - This property holds the effective visual size of the indicator, - which may be limited by the \l {minimumSize}{minimum size}. - - \sa size, minimumSize -*/ -qreal QQuickScrollIndicator::visualSize() const -{ - Q_D(const QQuickScrollIndicator); - return d->visualArea().size; -} - -/*! - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty real QtQuick.Controls::ScrollIndicator::visualPosition - - This property holds the effective visual position of the indicator, - which may be limited by the \l {minimumSize}{minimum size}. - - \sa position, minimumSize -*/ -qreal QQuickScrollIndicator::visualPosition() const -{ - Q_D(const QQuickScrollIndicator); - return d->visualArea().position; -} - -class QQuickScrollIndicatorAttachedPrivate : public QObjectPrivate, public QQuickItemChangeListener -{ -public: - void activateHorizontal(); - void activateVertical(); - - void layoutHorizontal(bool move = true); - void layoutVertical(bool move = true); - - void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override; - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - void itemDestroyed(QQuickItem *item) override; - - QQuickFlickable *flickable = nullptr; - QQuickScrollIndicator *horizontal = nullptr; - QQuickScrollIndicator *vertical = nullptr; -}; - -void QQuickScrollIndicatorAttachedPrivate::activateHorizontal() -{ - horizontal->setActive(flickable->isMovingHorizontally()); -} - -void QQuickScrollIndicatorAttachedPrivate::activateVertical() -{ - vertical->setActive(flickable->isMovingVertically()); -} - -void QQuickScrollIndicatorAttachedPrivate::layoutHorizontal(bool move) -{ - Q_ASSERT(horizontal && flickable); - if (horizontal->parentItem() != flickable) - return; - horizontal->setWidth(flickable->width()); - if (move) - horizontal->setY(flickable->height() - horizontal->height()); -} - -void QQuickScrollIndicatorAttachedPrivate::layoutVertical(bool move) -{ - Q_ASSERT(vertical && flickable); - if (vertical->parentItem() != flickable) - return; - vertical->setHeight(flickable->height()); - if (move && !QQuickItemPrivate::get(vertical)->isMirrored()) - vertical->setX(flickable->width() - vertical->width()); -} - -void QQuickScrollIndicatorAttachedPrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) -{ - Q_UNUSED(item); - Q_UNUSED(change); - if (horizontal && horizontal->height() > 0) { -#ifdef QT_QUICK_NEW_GEOMETRY_CHANGED_HANDLING // TODO: correct/rename diff to oldGeometry - bool move = qFuzzyIsNull(horizontal->y()) || qFuzzyCompare(horizontal->y(), diff.height() - horizontal->height()); -#else - bool move = qFuzzyIsNull(horizontal->y()) || qFuzzyCompare(horizontal->y(), item->height() - diff.height() - horizontal->height()); -#endif - layoutHorizontal(move); - } - if (vertical && vertical->width() > 0) { -#ifdef QT_QUICK_NEW_GEOMETRY_CHANGED_HANDLING // TODO: correct/rename diff to oldGeometry - bool move = qFuzzyIsNull(vertical->x()) || qFuzzyCompare(vertical->x(), diff.width() - vertical->width()); -#else - bool move = qFuzzyIsNull(vertical->x()) || qFuzzyCompare(vertical->x(), item->width() - diff.width() - vertical->width()); -#endif - layoutVertical(move); - } -} - -void QQuickScrollIndicatorAttachedPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - if (item == vertical) - layoutVertical(true); -} - -void QQuickScrollIndicatorAttachedPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - if (item == horizontal) - layoutHorizontal(true); -} - -void QQuickScrollIndicatorAttachedPrivate::itemDestroyed(QQuickItem *item) -{ - if (item == horizontal) - horizontal = nullptr; - if (item == vertical) - vertical = nullptr; -} - -QQuickScrollIndicatorAttached::QQuickScrollIndicatorAttached(QObject *parent) - : QObject(*(new QQuickScrollIndicatorAttachedPrivate), parent) -{ - Q_D(QQuickScrollIndicatorAttached); - d->flickable = qobject_cast<QQuickFlickable *>(parent); - if (d->flickable) - QQuickItemPrivate::get(d->flickable)->updateOrAddGeometryChangeListener(d, QQuickGeometryChange::Size); - else if (parent) - qmlWarning(parent) << "ScrollIndicator must be attached to a Flickable"; -} - -QQuickScrollIndicatorAttached::~QQuickScrollIndicatorAttached() -{ - Q_D(QQuickScrollIndicatorAttached); - if (d->flickable) { - if (d->horizontal) - QQuickItemPrivate::get(d->horizontal)->removeItemChangeListener(d, horizontalChangeTypes); - if (d->vertical) - QQuickItemPrivate::get(d->vertical)->removeItemChangeListener(d,verticalChangeTypes); - // NOTE: Use removeItemChangeListener(Geometry) instead of updateOrRemoveGeometryChangeListener(Size). - // The latter doesn't remove the listener but only resets its types. Thus, it leaves behind a dangling - // pointer on destruction. - QQuickItemPrivate::get(d->flickable)->removeItemChangeListener(d, QQuickItemPrivate::Geometry); - } -} - -/*! - \qmlattachedproperty ScrollIndicator QtQuick.Controls::ScrollIndicator::horizontal - - This property attaches a horizontal scroll indicator to a \l Flickable. - - \code - Flickable { - contentWidth: 2000 - ScrollIndicator.horizontal: ScrollIndicator { } - } - \endcode - - \sa {Attaching ScrollIndicator to a Flickable} -*/ -QQuickScrollIndicator *QQuickScrollIndicatorAttached::horizontal() const -{ - Q_D(const QQuickScrollIndicatorAttached); - return d->horizontal; -} - -void QQuickScrollIndicatorAttached::setHorizontal(QQuickScrollIndicator *horizontal) -{ - Q_D(QQuickScrollIndicatorAttached); - if (d->horizontal == horizontal) - return; - - if (d->horizontal && d->flickable) { - QQuickItemPrivate::get(d->horizontal)->removeItemChangeListener(d, horizontalChangeTypes); - QObjectPrivate::disconnect(d->flickable, &QQuickFlickable::movingHorizontallyChanged, d, &QQuickScrollIndicatorAttachedPrivate::activateHorizontal); - - // TODO: export QQuickFlickableVisibleArea - QObject *area = d->flickable->property("visibleArea").value<QObject *>(); - disconnect(area, SIGNAL(widthRatioChanged(qreal)), d->horizontal, SLOT(setSize(qreal))); - disconnect(area, SIGNAL(xPositionChanged(qreal)), d->horizontal, SLOT(setPosition(qreal))); - } - - d->horizontal = horizontal; - - if (horizontal && d->flickable) { - if (!horizontal->parentItem()) - horizontal->setParentItem(d->flickable); - horizontal->setOrientation(Qt::Horizontal); - - QQuickItemPrivate::get(horizontal)->addItemChangeListener(d, horizontalChangeTypes); - QObjectPrivate::connect(d->flickable, &QQuickFlickable::movingHorizontallyChanged, d, &QQuickScrollIndicatorAttachedPrivate::activateHorizontal); - - // TODO: export QQuickFlickableVisibleArea - QObject *area = d->flickable->property("visibleArea").value<QObject *>(); - connect(area, SIGNAL(widthRatioChanged(qreal)), horizontal, SLOT(setSize(qreal))); - connect(area, SIGNAL(xPositionChanged(qreal)), horizontal, SLOT(setPosition(qreal))); - - d->layoutHorizontal(); - horizontal->setSize(area->property("widthRatio").toReal()); - horizontal->setPosition(area->property("xPosition").toReal()); - } - emit horizontalChanged(); -} - -/*! - \qmlattachedproperty ScrollIndicator QtQuick.Controls::ScrollIndicator::vertical - - This property attaches a vertical scroll indicator to a \l Flickable. - - \code - Flickable { - contentHeight: 2000 - ScrollIndicator.vertical: ScrollIndicator { } - } - \endcode - - \sa {Attaching ScrollIndicator to a Flickable} -*/ -QQuickScrollIndicator *QQuickScrollIndicatorAttached::vertical() const -{ - Q_D(const QQuickScrollIndicatorAttached); - return d->vertical; -} - -void QQuickScrollIndicatorAttached::setVertical(QQuickScrollIndicator *vertical) -{ - Q_D(QQuickScrollIndicatorAttached); - if (d->vertical == vertical) - return; - - if (d->vertical && d->flickable) { - QQuickItemPrivate::get(d->vertical)->removeItemChangeListener(d, verticalChangeTypes); - QObjectPrivate::disconnect(d->flickable, &QQuickFlickable::movingVerticallyChanged, d, &QQuickScrollIndicatorAttachedPrivate::activateVertical); - - // TODO: export QQuickFlickableVisibleArea - QObject *area = d->flickable->property("visibleArea").value<QObject *>(); - disconnect(area, SIGNAL(heightRatioChanged(qreal)), d->vertical, SLOT(setSize(qreal))); - disconnect(area, SIGNAL(yPositionChanged(qreal)), d->vertical, SLOT(setPosition(qreal))); - } - - d->vertical = vertical; - - if (vertical && d->flickable) { - if (!vertical->parentItem()) - vertical->setParentItem(d->flickable); - vertical->setOrientation(Qt::Vertical); - - QQuickItemPrivate::get(vertical)->addItemChangeListener(d, verticalChangeTypes); - QObjectPrivate::connect(d->flickable, &QQuickFlickable::movingVerticallyChanged, d, &QQuickScrollIndicatorAttachedPrivate::activateVertical); - - // TODO: export QQuickFlickableVisibleArea - QObject *area = d->flickable->property("visibleArea").value<QObject *>(); - connect(area, SIGNAL(heightRatioChanged(qreal)), vertical, SLOT(setSize(qreal))); - connect(area, SIGNAL(yPositionChanged(qreal)), vertical, SLOT(setPosition(qreal))); - - d->layoutVertical(); - vertical->setSize(area->property("heightRatio").toReal()); - vertical->setPosition(area->property("yPosition").toReal()); - } - emit verticalChanged(); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickScrollIndicator::touchEvent(QTouchEvent *event) -{ - event->ignore(); // QTBUG-61785 -} -#endif - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickScrollIndicator::accessibleRole() const -{ - return QAccessible::Indicator; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickscrollindicator_p.h b/src/quicktemplates2/qquickscrollindicator_p.h deleted file mode 100644 index dbad6ffe..00000000 --- a/src/quicktemplates2/qquickscrollindicator_p.h +++ /dev/null @@ -1,162 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSCROLLINDICATOR_P_H -#define QQUICKSCROLLINDICATOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickFlickable; -class QQuickScrollIndicatorAttached; -class QQuickScrollIndicatorPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickScrollIndicator : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(qreal size READ size WRITE setSize NOTIFY sizeChanged FINAL) - Q_PROPERTY(qreal position READ position WRITE setPosition NOTIFY positionChanged FINAL) - Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged FINAL) - Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged FINAL) - // 2.3 (Qt 5.10) - Q_PROPERTY(bool horizontal READ isHorizontal NOTIFY orientationChanged FINAL REVISION(2, 3)) - Q_PROPERTY(bool vertical READ isVertical NOTIFY orientationChanged FINAL REVISION(2, 3)) - // 2.4 (Qt 5.11) - Q_PROPERTY(qreal minimumSize READ minimumSize WRITE setMinimumSize NOTIFY minimumSizeChanged FINAL REVISION(2, 4)) - Q_PROPERTY(qreal visualSize READ visualSize NOTIFY visualSizeChanged FINAL REVISION(2, 4)) - Q_PROPERTY(qreal visualPosition READ visualPosition NOTIFY visualPositionChanged FINAL REVISION(2, 4)) - QML_NAMED_ELEMENT(ScrollIndicator) - QML_ATTACHED(QQuickScrollIndicatorAttached) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickScrollIndicator(QQuickItem *parent = nullptr); - - static QQuickScrollIndicatorAttached *qmlAttachedProperties(QObject *object); - - qreal size() const; - qreal position() const; - - bool isActive() const; - void setActive(bool active); - - Qt::Orientation orientation() const; - void setOrientation(Qt::Orientation orientation); - - // 2.3 (Qt 5.10) - bool isHorizontal() const; - bool isVertical() const; - - // 2.4 (Qt 5.11) - qreal minimumSize() const; - void setMinimumSize(qreal minimumSize); - - qreal visualSize() const; - qreal visualPosition() const; - -public Q_SLOTS: - void setSize(qreal size); - void setPosition(qreal position); - -Q_SIGNALS: - void sizeChanged(); - void positionChanged(); - void activeChanged(); - void orientationChanged(); - // 2.4 (Qt 5.11) - Q_REVISION(2, 4) void minimumSizeChanged(); - Q_REVISION(2, 4) void visualSizeChanged(); - Q_REVISION(2, 4) void visualPositionChanged(); - -protected: -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; -#endif - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickScrollIndicator) - Q_DECLARE_PRIVATE(QQuickScrollIndicator) -}; - -class QQuickScrollIndicatorAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickScrollIndicatorAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickScrollIndicator *horizontal READ horizontal WRITE setHorizontal NOTIFY horizontalChanged FINAL) - Q_PROPERTY(QQuickScrollIndicator *vertical READ vertical WRITE setVertical NOTIFY verticalChanged FINAL) - -public: - explicit QQuickScrollIndicatorAttached(QObject *parent = nullptr); - ~QQuickScrollIndicatorAttached(); - - QQuickScrollIndicator *horizontal() const; - void setHorizontal(QQuickScrollIndicator *horizontal); - - QQuickScrollIndicator *vertical() const; - void setVertical(QQuickScrollIndicator *vertical); - -Q_SIGNALS: - void horizontalChanged(); - void verticalChanged(); - -private: - Q_DISABLE_COPY(QQuickScrollIndicatorAttached) - Q_DECLARE_PRIVATE(QQuickScrollIndicatorAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickScrollIndicator) -QML_DECLARE_TYPEINFO(QQuickScrollIndicator, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKSCROLLINDICATOR_P_H diff --git a/src/quicktemplates2/qquickscrollview.cpp b/src/quicktemplates2/qquickscrollview.cpp deleted file mode 100644 index 1f5adbb7..00000000 --- a/src/quicktemplates2/qquickscrollview.cpp +++ /dev/null @@ -1,623 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickscrollview_p.h" -#include "qquickpane_p_p.h" -#include "qquickscrollbar_p_p.h" - -#include <QtQuick/private/qquickflickable_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ScrollView - \inherits Pane -//! \instantiates QQuickScrollView - \inqmlmodule QtQuick.Controls - \since 5.9 - \ingroup qtquickcontrols2-containers - \ingroup qtquickcontrols2-focusscopes - \brief Scrollable view. - - ScrollView provides scrolling for user-defined content. It can be used to - either replace a \l Flickable, or to decorate an existing one. - - \image qtquickcontrols2-scrollview.png - - The first example demonstrates the simplest usage of ScrollView. - - \snippet qtquickcontrols2-scrollview.qml file - - The second example illustrates using an existing \l Flickable, that is, - a \l ListView. - - \snippet qtquickcontrols2-scrollview-listview.qml file - - \note As of Qt-6.0, ScrollView automatically clips its contents if you - don't use a Flickable as a child. If this is not wanted, you can - set your own Flickable as a child, and control the \l {Item::}{clip} - property on the Flickable explicitly. - - \section2 Sizing - - As with Flickable, there are several things to keep in mind when using - ScrollView: - \list - \li If only a single item is used within a ScrollView, the content size is - automatically calculated based on the implicit size of its contained item. - However, if more than one item is used (or an implicit size is not - provided), the \l {QtQuick.Controls::Pane::}{contentWidth} and - \l {QtQuick.Controls::Pane::}{contentHeight} properties must - be set to the combined size of its contained items. - \li If the content size is less than or equal to the size of the ScrollView, - it will not be scrollable. - \li If you want the ScrollView to only scroll vertically, you can bind - \l {QtQuick.Controls::Pane::}{contentWidth} to - \l {QtQuick.Controls::Control::}{availableWidth} - (and vice versa for contentHeight). This will let the contents fill - out all the available space horizontally inside the ScrollView, taking - any padding or scroll bars into account. - \endlist - - \section2 Scroll Bars - - The horizontal and vertical scroll bars can be accessed and customized using - the \l {ScrollBar::horizontal}{ScrollBar.horizontal} and \l {ScrollBar::vertical} - {ScrollBar.vertical} attached properties. The following example adjusts the scroll - bar policies so that the horizontal scroll bar is always off, and the vertical - scroll bar is always on. - - \snippet qtquickcontrols2-scrollview-policy.qml file - - \section2 Touch vs. Mouse Interaction - - On touch, ScrollView enables flicking and makes the scroll bars non-interactive. - - \image qtquickcontrols2-scrollindicator.gif - - When interacted with a mouse device, flicking is disabled and the scroll bars - are interactive. - - \image qtquickcontrols2-scrollbar.gif - - Scroll bars can be made interactive on touch, or non-interactive when interacted - with a mouse device, by setting the \l {ScrollBar::}{interactive} property explicitly - to \c true or \c false, respectively. - - \snippet qtquickcontrols2-scrollview-interactive.qml file - - \sa ScrollBar, ScrollIndicator, {Customizing ScrollView}, {Container Controls}, - {Focus Management in Qt Quick Controls} -*/ - -class QQuickScrollViewPrivate : public QQuickPanePrivate -{ - Q_DECLARE_PUBLIC(QQuickScrollView) - -public: - QQmlListProperty<QObject> contentData() override; - QQmlListProperty<QQuickItem> contentChildren() override; - QList<QQuickItem *> contentChildItems() const override; - - QQuickItem *getContentItem() override; - - QQuickFlickable *ensureFlickable(bool content); - bool setFlickable(QQuickFlickable *flickable, bool content); - - void flickableContentWidthChanged(); - void flickableContentHeightChanged(); - - qreal getContentWidth() const override; - qreal getContentHeight() const override; - - QQuickScrollBar *verticalScrollBar() const; - QQuickScrollBar *horizontalScrollBar() const; - - void setScrollBarsInteractive(bool interactive); - - static void contentData_append(QQmlListProperty<QObject> *prop, QObject *obj); - static qsizetype contentData_count(QQmlListProperty<QObject> *prop); - static QObject *contentData_at(QQmlListProperty<QObject> *prop, qsizetype index); - static void contentData_clear(QQmlListProperty<QObject> *prop); - - static void contentChildren_append(QQmlListProperty<QQuickItem> *prop, QQuickItem *obj); - static qsizetype contentChildren_count(QQmlListProperty<QQuickItem> *prop); - static QQuickItem *contentChildren_at(QQmlListProperty<QQuickItem> *prop, qsizetype index); - static void contentChildren_clear(QQmlListProperty<QQuickItem> *prop); - - void itemImplicitWidthChanged(QQuickItem *item) override; - - bool wasTouched = false; - QQuickFlickable *flickable = nullptr; - bool flickableHasExplicitContentWidth = true; - bool flickableHasExplicitContentHeight = true; -}; - -QList<QQuickItem *> QQuickScrollViewPrivate::contentChildItems() const -{ - if (!flickable) - return QList<QQuickItem *>(); - - return flickable->contentItem()->childItems(); -} - -QQuickItem *QQuickScrollViewPrivate::getContentItem() -{ - if (!contentItem) - executeContentItem(); - return ensureFlickable(false); -} - -QQuickFlickable *QQuickScrollViewPrivate::ensureFlickable(bool content) -{ - Q_Q(QQuickScrollView); - if (!flickable) { - flickableHasExplicitContentWidth = false; - flickableHasExplicitContentHeight = false; - auto flickable = new QQuickFlickable(q); - // We almost always want to clip the flickable so that flickable - // contents doesn't show up outside the scrollview. The only time - // this is not really needed, is when the scrollview covers the whole - // window and the scrollbars are transient. But for that corner case, if this - // optimization is needed, the user can simply create his own flickable - // child inside the scrollview, and control clipping on it explicit. - flickable->setClip(true); - flickable->setPixelAligned(true); - setFlickable(flickable, content); - } - return flickable; -} - -bool QQuickScrollViewPrivate::setFlickable(QQuickFlickable *item, bool content) -{ - Q_Q(QQuickScrollView); - if (item == flickable) - return false; - - QQuickScrollBarAttached *attached = qobject_cast<QQuickScrollBarAttached *>(qmlAttachedPropertiesObject<QQuickScrollBar>(q, false)); - - if (flickable) { - flickable->removeEventFilter(q); - - if (attached) - QQuickScrollBarAttachedPrivate::get(attached)->setFlickable(nullptr); - - QObjectPrivate::disconnect(flickable->contentItem(), &QQuickItem::childrenChanged, this, &QQuickPanePrivate::contentChildrenChange); - QObjectPrivate::disconnect(flickable, &QQuickFlickable::contentWidthChanged, this, &QQuickScrollViewPrivate::flickableContentWidthChanged); - QObjectPrivate::disconnect(flickable, &QQuickFlickable::contentHeightChanged, this, &QQuickScrollViewPrivate::flickableContentHeightChanged); - } - - flickable = item; - if (content) - q->setContentItem(flickable); - - if (flickable) { - flickable->installEventFilter(q); - if (hasContentWidth) - flickable->setContentWidth(contentWidth); - else - flickableContentWidthChanged(); - if (hasContentHeight) - flickable->setContentHeight(contentHeight); - else - flickableContentHeightChanged(); - - if (attached) - QQuickScrollBarAttachedPrivate::get(attached)->setFlickable(flickable); - - QObjectPrivate::connect(flickable->contentItem(), &QQuickItem::childrenChanged, this, &QQuickPanePrivate::contentChildrenChange); - QObjectPrivate::connect(flickable, &QQuickFlickable::contentWidthChanged, this, &QQuickScrollViewPrivate::flickableContentWidthChanged); - QObjectPrivate::connect(flickable, &QQuickFlickable::contentHeightChanged, this, &QQuickScrollViewPrivate::flickableContentHeightChanged); - } - - return true; -} - -void QQuickScrollViewPrivate::flickableContentWidthChanged() -{ - Q_Q(QQuickScrollView); - if (!flickable || !componentComplete) - return; - - const qreal cw = flickable->contentWidth(); - if (qFuzzyCompare(cw, implicitContentWidth)) - return; - - flickableHasExplicitContentWidth = true; - implicitContentWidth = cw; - emit q->implicitContentWidthChanged(); -} - -void QQuickScrollViewPrivate::flickableContentHeightChanged() -{ - Q_Q(QQuickScrollView); - if (!flickable || !componentComplete) - return; - - const qreal ch = flickable->contentHeight(); - if (qFuzzyCompare(ch, implicitContentHeight)) - return; - - flickableHasExplicitContentHeight = true; - implicitContentHeight = ch; - emit q->implicitContentHeightChanged(); -} - -qreal QQuickScrollViewPrivate::getContentWidth() const -{ - if (flickable && flickableHasExplicitContentWidth) - return flickable->contentWidth(); - - // The scrollview wraps a flickable created by us, and nobody searched for it and - // modified its contentWidth. In that case, since the application does not control - // this flickable, we fall back to calculate the content width based on the child - // items inside it. - return QQuickPanePrivate::getContentWidth(); -} - -qreal QQuickScrollViewPrivate::getContentHeight() const -{ - if (flickable && flickableHasExplicitContentHeight) - return flickable->contentHeight(); - - // The scrollview wraps a flickable created by us, and nobody searched for it and - // modified its contentHeight. In that case, since the application does not control - // this flickable, we fall back to calculate the content height based on the child - // items inside it. - return QQuickPanePrivate::getContentHeight(); -} - -QQuickScrollBar *QQuickScrollViewPrivate::verticalScrollBar() const -{ - Q_Q(const QQuickScrollView); - QQuickScrollBarAttached *attached = qobject_cast<QQuickScrollBarAttached *>(qmlAttachedPropertiesObject<QQuickScrollBar>(q, false)); - if (!attached) - return nullptr; - return attached->vertical(); -} - -QQuickScrollBar *QQuickScrollViewPrivate::horizontalScrollBar() const -{ - Q_Q(const QQuickScrollView); - QQuickScrollBarAttached *attached = qobject_cast<QQuickScrollBarAttached *>(qmlAttachedPropertiesObject<QQuickScrollBar>(q, false)); - if (!attached) - return nullptr; - return attached->horizontal(); -} - -void QQuickScrollViewPrivate::setScrollBarsInteractive(bool interactive) -{ - QQuickScrollBar *hbar = horizontalScrollBar(); - if (hbar) { - QQuickScrollBarPrivate *p = QQuickScrollBarPrivate::get(hbar); - if (!p->explicitInteractive) - p->setInteractive(interactive); - } - - QQuickScrollBar *vbar = verticalScrollBar(); - if (vbar) { - QQuickScrollBarPrivate *p = QQuickScrollBarPrivate::get(vbar); - if (!p->explicitInteractive) - p->setInteractive(interactive); - } -} - -void QQuickScrollViewPrivate::contentData_append(QQmlListProperty<QObject> *prop, QObject *obj) -{ - QQuickScrollViewPrivate *p = static_cast<QQuickScrollViewPrivate *>(prop->data); - if (!p->flickable && p->setFlickable(qobject_cast<QQuickFlickable *>(obj), true)) - return; - - QQuickFlickable *flickable = p->ensureFlickable(true); - Q_ASSERT(flickable); - QQmlListProperty<QObject> data = flickable->flickableData(); - data.append(&data, obj); -} - -qsizetype QQuickScrollViewPrivate::contentData_count(QQmlListProperty<QObject> *prop) -{ - QQuickScrollViewPrivate *p = static_cast<QQuickScrollViewPrivate *>(prop->data); - if (!p->flickable) - return 0; - - QQmlListProperty<QObject> data = p->flickable->flickableData(); - return data.count(&data); -} - -QObject *QQuickScrollViewPrivate::contentData_at(QQmlListProperty<QObject> *prop, qsizetype index) -{ - QQuickScrollViewPrivate *p = static_cast<QQuickScrollViewPrivate *>(prop->data); - if (!p->flickable) - return nullptr; - - QQmlListProperty<QObject> data = p->flickable->flickableData(); - return data.at(&data, index); -} - -void QQuickScrollViewPrivate::contentData_clear(QQmlListProperty<QObject> *prop) -{ - QQuickScrollViewPrivate *p = static_cast<QQuickScrollViewPrivate *>(prop->data); - if (!p->flickable) - return; - - QQmlListProperty<QObject> data = p->flickable->flickableData(); - return data.clear(&data); -} - -void QQuickScrollViewPrivate::contentChildren_append(QQmlListProperty<QQuickItem> *prop, QQuickItem *item) -{ - QQuickScrollViewPrivate *p = static_cast<QQuickScrollViewPrivate *>(prop->data); - if (!p->flickable) - p->setFlickable(qobject_cast<QQuickFlickable *>(item), true); - - QQuickFlickable *flickable = p->ensureFlickable(true); - Q_ASSERT(flickable); - QQmlListProperty<QQuickItem> children = flickable->flickableChildren(); - children.append(&children, item); -} - -qsizetype QQuickScrollViewPrivate::contentChildren_count(QQmlListProperty<QQuickItem> *prop) -{ - QQuickScrollViewPrivate *p = static_cast<QQuickScrollViewPrivate *>(prop->data); - if (!p->flickable) - return 0; - - QQmlListProperty<QQuickItem> children = p->flickable->flickableChildren(); - return children.count(&children); -} - -QQuickItem *QQuickScrollViewPrivate::contentChildren_at(QQmlListProperty<QQuickItem> *prop, qsizetype index) -{ - QQuickScrollViewPrivate *p = static_cast<QQuickScrollViewPrivate *>(prop->data); - if (!p->flickable) - return nullptr; - - QQmlListProperty<QQuickItem> children = p->flickable->flickableChildren(); - return children.at(&children, index); -} - -void QQuickScrollViewPrivate::contentChildren_clear(QQmlListProperty<QQuickItem> *prop) -{ - QQuickScrollViewPrivate *p = static_cast<QQuickScrollViewPrivate *>(prop->data); - if (!p->flickable) - return; - - QQmlListProperty<QQuickItem> children = p->flickable->flickableChildren(); - children.clear(&children); -} - -void QQuickScrollViewPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - // a special case for width<->height dependent content (wrapping text) in ScrollView - if (contentWidth < 0 && !componentComplete) - return; - - QQuickPanePrivate::itemImplicitWidthChanged(item); -} - -QQuickScrollView::QQuickScrollView(QQuickItem *parent) - : QQuickPane(*(new QQuickScrollViewPrivate), parent) -{ - Q_D(QQuickScrollView); - d->contentWidth = -1; - d->contentHeight = -1; - - setFiltersChildMouseEvents(true); - setWheelEnabled(true); -} - -/*! - \qmlproperty list<Object> QtQuick.Controls::ScrollView::contentData - \qmldefault - - This property holds the list of content data. - - The list contains all objects that have been declared in QML as children of the view. - - \note Unlike \c contentChildren, \c contentData does include non-visual QML objects. - - \sa Item::data, contentChildren -*/ -QQmlListProperty<QObject> QQuickScrollViewPrivate::contentData() -{ - Q_Q(QQuickScrollView); - return QQmlListProperty<QObject>(q, this, - QQuickScrollViewPrivate::contentData_append, - QQuickScrollViewPrivate::contentData_count, - QQuickScrollViewPrivate::contentData_at, - QQuickScrollViewPrivate::contentData_clear); -} - -/*! - \qmlproperty list<Item> QtQuick.Controls::ScrollView::contentChildren - - This property holds the list of content children. - - The list contains all items that have been declared in QML as children of the view. - - \note Unlike \c contentData, \c contentChildren does not include non-visual QML objects. - - \sa Item::children, contentData -*/ -QQmlListProperty<QQuickItem> QQuickScrollViewPrivate::contentChildren() -{ - Q_Q(QQuickScrollView); - return QQmlListProperty<QQuickItem>(q, this, - QQuickScrollViewPrivate::contentChildren_append, - QQuickScrollViewPrivate::contentChildren_count, - QQuickScrollViewPrivate::contentChildren_at, - QQuickScrollViewPrivate::contentChildren_clear); -} - -bool QQuickScrollView::childMouseEventFilter(QQuickItem *item, QEvent *event) -{ - Q_D(QQuickScrollView); - switch (event->type()) { - case QEvent::TouchBegin: - d->wasTouched = true; - d->setScrollBarsInteractive(false); - return false; - - case QEvent::TouchEnd: - d->wasTouched = false; - return false; - - case QEvent::MouseButtonPress: - // NOTE: Flickable does not handle touch events, only synthesized mouse events - if (static_cast<QMouseEvent *>(event)->source() == Qt::MouseEventNotSynthesized) { - d->wasTouched = false; - d->setScrollBarsInteractive(true); - return false; - } - return !d->wasTouched && item == d->flickable; - - case QEvent::MouseMove: - case QEvent::MouseButtonRelease: - if (static_cast<QMouseEvent *>(event)->source() == Qt::MouseEventNotSynthesized) - return item == d->flickable; - break; - - case QEvent::HoverEnter: - case QEvent::HoverMove: - if (d->wasTouched && (item == d->verticalScrollBar() || item == d->horizontalScrollBar())) - d->setScrollBarsInteractive(true); - break; - - default: - break; - } - - return false; -} - -bool QQuickScrollView::eventFilter(QObject *object, QEvent *event) -{ - Q_D(QQuickScrollView); - if (event->type() == QEvent::Wheel) { - d->setScrollBarsInteractive(true); - if (!d->wheelEnabled) - return true; - } - return QQuickPane::eventFilter(object, event); -} - -void QQuickScrollView::keyPressEvent(QKeyEvent *event) -{ - Q_D(QQuickScrollView); - QQuickPane::keyPressEvent(event); - switch (event->key()) { - case Qt::Key_Up: - if (QQuickScrollBar *vbar = d->verticalScrollBar()) { - vbar->decrease(); - event->accept(); - } - break; - case Qt::Key_Down: - if (QQuickScrollBar *vbar = d->verticalScrollBar()) { - vbar->increase(); - event->accept(); - } - break; - case Qt::Key_Left: - if (QQuickScrollBar *hbar = d->horizontalScrollBar()) { - hbar->decrease(); - event->accept(); - } - break; - case Qt::Key_Right: - if (QQuickScrollBar *hbar = d->horizontalScrollBar()) { - hbar->increase(); - event->accept(); - } - break; - default: - event->ignore(); - break; - } -} - -void QQuickScrollView::componentComplete() -{ - Q_D(QQuickScrollView); - QQuickPane::componentComplete(); - if (!d->contentItem) - d->ensureFlickable(true); -} - -void QQuickScrollView::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_D(QQuickScrollView); - if (newItem != d->flickable) { - // The new flickable was not created by us. In that case, we always - // assume/require that it has an explicit content size assigned. - d->flickableHasExplicitContentWidth = true; - d->flickableHasExplicitContentHeight = true; - auto newItemAsFlickable = qobject_cast<QQuickFlickable *>(newItem); - if (newItem && !newItemAsFlickable) - qmlWarning(this) << "ScrollView only supports Flickable types as its contentItem"; - d->setFlickable(newItemAsFlickable, false); - } - QQuickPane::contentItemChange(newItem, oldItem); -} - -void QQuickScrollView::contentSizeChange(const QSizeF &newSize, const QSizeF &oldSize) -{ - Q_D(QQuickScrollView); - QQuickPane::contentSizeChange(newSize, oldSize); - if (d->flickable) { - // Only set the content size on the flickable if the flickable doesn't - // have an explicit assignment from before. Otherwise we can end up overwriting - // assignments done to those properties by the application. The - // exception is if the application has assigned a content size - // directly to the scrollview, which will then win even if the - // application has assigned something else to the flickable. - if (d->hasContentWidth || !d->flickableHasExplicitContentWidth) - d->flickable->setContentWidth(newSize.width()); - if (d->hasContentHeight || !d->flickableHasExplicitContentHeight) - d->flickable->setContentHeight(newSize.height()); - } -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickScrollView::accessibleRole() const -{ - return QAccessible::Pane; -} -#endif - -QT_END_NAMESPACE - -#include "moc_qquickscrollview_p.cpp" diff --git a/src/quicktemplates2/qquickscrollview_p.h b/src/quicktemplates2/qquickscrollview_p.h deleted file mode 100644 index 7eea46dd..00000000 --- a/src/quicktemplates2/qquickscrollview_p.h +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSCROLLVIEW_P_H -#define QQUICKSCROLLVIEW_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickpane_p.h> -#include <QtQml/qqmllist.h> - -QT_BEGIN_NAMESPACE - -class QQuickScrollViewPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickScrollView : public QQuickPane -{ - Q_OBJECT - QML_NAMED_ELEMENT(ScrollView) - QML_ADDED_IN_VERSION(2, 2) - -public: - explicit QQuickScrollView(QQuickItem *parent = nullptr); - -protected: - bool childMouseEventFilter(QQuickItem *item, QEvent *event) override; - bool eventFilter(QObject *object, QEvent *event) override; - void keyPressEvent(QKeyEvent *event) override; - - void componentComplete() override; - void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; - void contentSizeChange(const QSizeF &newSize, const QSizeF &oldSize) override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickScrollView) - Q_DECLARE_PRIVATE(QQuickScrollView) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickScrollView) - -#endif // QQUICKSCROLLVIEW_P_H diff --git a/src/quicktemplates2/qquickselectionrectangle.cpp b/src/quicktemplates2/qquickselectionrectangle.cpp deleted file mode 100644 index 5910e16b..00000000 --- a/src/quicktemplates2/qquickselectionrectangle.cpp +++ /dev/null @@ -1,540 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickselectionrectangle_p.h" -#include "qquickselectionrectangle_p_p.h" - -#include <QtQml/qqmlinfo.h> - -#include <QtQuick/private/qquicktableview_p_p.h> - -#include "qquickscrollview_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype SelectionRectangle - \inherits Control -//! \instantiates QQuickSelectionRectangle - \inqmlmodule QtQuick.Controls - \since 6.2 - \ingroup utilities - \brief Used to select table cells inside a TableView - - \image qtquickcontrols2-selectionrectangle.png - - SelectionRectangle is used for selecting table cells in a TableView. It lets - the user start a selection by doing a pointer drag inside the viewport, or by - doing a long press on top of a cell. - - For a SelectionRectangle to be able to select cells, TableView must have - an ItemSelectionModel assigned. The ItemSelectionModel will store any - selections done on the model, and can be used for querying - which cells that the user has selected. - - The following example shows how you can make a SelectionRectangle target - a TableView: - - \snippet qtquickcontrols2-selectionrectangle.qml 0 - - \note A SelectionRectangle itself is not shown as part of a selection. Only the - delegates (like topLeftHandle and bottomRightHandle) are used. - You should also consider \l {Selecting items}{rendering the TableView delegate as selected}. - - \sa TableView, TableView::selectionModel, ItemSelectionModel -*/ - -/*! - \qmlproperty Item QtQuick.Controls::SelectionRectangle::target - - This property holds the TableView on which the - SelectionRectangle should act. -*/ - -/*! - \qmlproperty bool QtQuick.Controls::SelectionRectangle::active - \readonly - - This property is \c true while the user is performing a - selection. The selection will be active from the time the - the user starts to select, and until the selection is - removed again, for example from tapping inside the viewport. -*/ - -/*! - \qmlproperty bool QtQuick.Controls::SelectionRectangle::dragging - \readonly - - This property is \c true whenever the user is doing a pointer drag or - a handle drag to adjust the selection rectangle. -*/ - -/*! - \qmlproperty Component QtQuick.Controls::SelectionRectangle::topLeftHandle - - This property holds the delegate that will be shown on the center of the - top-left corner of the selection rectangle. When a handle is - provided, the user can drag it to adjust the selection. - - Set this property to \c null if you don't want a selection handle on the top-left. - - \sa bottomRightHandle -*/ - -/*! - \qmlproperty Component QtQuick.Controls::SelectionRectangle::bottomRightHandle - - This property holds the delegate that will be shown on the center of the - top-left corner of the selection rectangle. When a handle is - provided, the user can drag it to adjust the selection. - - Set this property to \c null if you don't want a selection handle on the bottom-right. - - \sa topLeftHandle -*/ - -/*! - \qmlproperty enumeration QtQuick.Controls::SelectionRectangle::selectionMode - - This property holds when a selection should start. - - \value SelectionRectangle.Drag A selection will start by doing a pointer drag inside the viewport - \value SelectionRectangle.PressAndHold A selection will start by doing a press and hold on top a cell - \value SelectionRectangle.Auto SelectionRectangle will choose which mode to use based on the target - and the platform. This normally means \c PressAndHold on touch based platforms, and \c Drag on desktop. - However, \c Drag will only be used if it doesn't conflict with flicking. This means that - TableView will need to be configured with \c interactive set to \c false, or placed - inside a ScrollView (where flicking, by default, is off for mouse events), for \c Drag to be chosen. - - The default value is \c Auto. -*/ - -/*! - \qmlattachedproperty SelectionRectangle QtQuick::SelectionRectangle::control - - This attached property holds the SelectionRectangle that manages the delegate instance. - It is attached to each handle instance. -*/ - -/*! - \qmlattachedproperty bool QtQuick::SelectionRectangle::dragging - - This attached property will be \c true if the user is dragging on the handle. - It is attached to each handle instance. -*/ - -QQuickSelectionRectanglePrivate::QQuickSelectionRectanglePrivate() - : QQuickControlPrivate() -{ - m_tapHandler = new QQuickTapHandler(); - m_dragHandler = new QQuickDragHandler(); - m_dragHandler->setTarget(nullptr); - - QObject::connect(&m_scrollTimer, &QTimer::timeout, [&]{ - if (m_topLeftHandle && m_draggedHandle == m_topLeftHandle) - m_selectable->setSelectionStartPos(m_scrollToPoint); - else - m_selectable->setSelectionEndPos(m_scrollToPoint); - updateHandles(); - const QSizeF dist = m_selectable->scrollTowardsSelectionPoint(m_scrollToPoint, m_scrollSpeed); - m_scrollToPoint.rx() += dist.width() > 0 ? m_scrollSpeed.width() : -m_scrollSpeed.width(); - m_scrollToPoint.ry() += dist.height() > 0 ? m_scrollSpeed.height() : -m_scrollSpeed.height(); - m_scrollSpeed = QSizeF(qAbs(dist.width() * 0.007), qAbs(dist.height() * 0.007)); - }); - - QObject::connect(m_tapHandler, &QQuickTapHandler::tapped, [=](QEventPoint) { - m_selectable->clearSelection(); - updateActiveState(false); - }); - - QObject::connect(m_tapHandler, &QQuickTapHandler::longPressed, [=]() { - if (!m_alwaysAcceptPressAndHold) { - if (m_selectionMode == QQuickSelectionRectangle::Auto) { - // In Auto mode, we only accept press and hold from touch - if (m_tapHandler->point().device()->pointerType() != QPointingDevice::PointerType::Finger) - return; - } else if (m_selectionMode != QQuickSelectionRectangle::PressAndHold) { - return; - } - } - - const QPointF pos = m_tapHandler->point().position(); - m_selectable->clearSelection(); - m_selectable->setSelectionStartPos(pos); - m_selectable->setSelectionEndPos(pos); - updateHandles(); - updateActiveState(true); - }); - - QObject::connect(m_dragHandler, &QQuickDragHandler::activeChanged, [=]() { - const QPointF pos = m_dragHandler->centroid().position(); - if (m_dragHandler->active()) { - m_selectable->clearSelection(); - m_selectable->setSelectionStartPos(pos); - m_selectable->setSelectionEndPos(pos); - m_draggedHandle = nullptr; - updateHandles(); - updateActiveState(true); - updateDraggingState(true); - } else { - m_scrollTimer.stop(); - m_selectable->normalizeSelection(); - updateDraggingState(false); - } - }); - - QObject::connect(m_dragHandler, &QQuickDragHandler::centroidChanged, [=]() { - if (!m_dragging) - return; - const QPointF pos = m_dragHandler->centroid().position(); - m_selectable->setSelectionEndPos(pos); - updateHandles(); - scrollTowardsPos(pos); - }); -} - -void QQuickSelectionRectanglePrivate::scrollTowardsPos(const QPointF &pos) -{ - m_scrollToPoint = pos; - if (m_scrollTimer.isActive()) - return; - - const QSizeF dist = m_selectable->scrollTowardsSelectionPoint(m_scrollToPoint, m_scrollSpeed); - if (!dist.isNull()) - m_scrollTimer.start(1); -} - -void QQuickSelectionRectanglePrivate::updateDraggingState(bool dragging) -{ - if (dragging != m_dragging) { - m_dragging = dragging; - emit q_func()->draggingChanged(); - } - - if (auto attached = getAttachedObject(m_draggedHandle)) - attached->setDragging(dragging); -} - -void QQuickSelectionRectanglePrivate::updateActiveState(bool active) -{ - if (active == m_active) - return; - - m_active = active; - emit q_func()->activeChanged(); -} - -QQuickItem *QQuickSelectionRectanglePrivate::createHandle(QQmlComponent *delegate) -{ - Q_Q(QQuickSelectionRectangle); - - const bool topLeft = (delegate == m_topLeftHandleDelegate); - - // Incubate the handle - const auto handlerTarget = m_selectable->selectionPointerHandlerTarget(); - QObject *obj = delegate->beginCreate(QQmlEngine::contextForObject(q)); - QQuickItem *handleItem = qobject_cast<QQuickItem*>(obj); - if (auto attached = getAttachedObject(handleItem)) - attached->setControl(q); - delegate->completeCreate(); - handleItem->setParentItem(handlerTarget); - if (handleItem->z() == 0) - handleItem->setZ(100); - - // Add pointer handlers to it - QQuickDragHandler *dragHandler = new QQuickDragHandler(); - dragHandler->setTarget(nullptr); - dragHandler->setParent(handleItem); - QQuickItemPrivate::get(handleItem)->addPointerHandler(dragHandler); - - QObject::connect(dragHandler, &QQuickDragHandler::activeChanged, [=]() { - if (dragHandler->active()) { - const QPointF localPos = dragHandler->centroid().position(); - const QPointF pos = handleItem->mapToItem(handleItem->parentItem(), localPos); - if (topLeft) - m_selectable->setSelectionStartPos(pos); - else - m_selectable->setSelectionEndPos(pos); - - m_draggedHandle = handleItem; - updateHandles(); - updateDraggingState(true); - } else { - m_scrollTimer.stop(); - m_selectable->normalizeSelection(); - updateDraggingState(false); - } - }); - - QObject::connect(dragHandler, &QQuickDragHandler::centroidChanged, [=]() { - if (!m_dragging) - return; - - const QPointF localPos = dragHandler->centroid().position(); - const QPointF pos = handleItem->mapToItem(handleItem->parentItem(), localPos); - if (topLeft) - m_selectable->setSelectionStartPos(pos); - else - m_selectable->setSelectionEndPos(pos); - - updateHandles(); - scrollTowardsPos(pos); - }); - - return handleItem; -} - -void QQuickSelectionRectanglePrivate::updateHandles() -{ - if (!m_selectable) - return; - - const QRectF rect = m_selectable->selectionRectangle().normalized(); - - if (!m_topLeftHandle && m_topLeftHandleDelegate) - m_topLeftHandle = createHandle(m_topLeftHandleDelegate); - - if (!m_bottomRightHandle && m_bottomRightHandleDelegate) - m_bottomRightHandle = createHandle(m_bottomRightHandleDelegate); - - if (m_topLeftHandle) { - m_topLeftHandle->setX(rect.x() - (m_topLeftHandle->width() / 2)); - m_topLeftHandle->setY(rect.y() - (m_topLeftHandle->height() / 2)); - } - - if (m_bottomRightHandle) { - m_bottomRightHandle->setX(rect.x() + rect.width() - (m_bottomRightHandle->width() / 2)); - m_bottomRightHandle->setY(rect.y() + rect.height() - (m_bottomRightHandle->height() / 2)); - } -} - -void QQuickSelectionRectanglePrivate::connectToTarget() -{ - // To support QuickSelectionRectangle::Auto, we need to listen for changes to the target - if (const auto flickable = qobject_cast<QQuickFlickable *>(m_target)) { - connect(flickable, &QQuickFlickable::interactiveChanged, this, &QQuickSelectionRectanglePrivate::updateSelectionMode); - } -} - -void QQuickSelectionRectanglePrivate::updateSelectionMode() -{ - Q_Q(QQuickSelectionRectangle); - - const bool enabled = q->isEnabled(); - m_tapHandler->setEnabled(enabled); - - if (m_selectionMode == QQuickSelectionRectangle::Auto) { - if (qobject_cast<QQuickScrollView *>(m_target->parentItem())) { - // ScrollView allows flicking with touch, but not with mouse. So we do - // the same here: you can drag to select with a mouse, but not with touch. - m_dragHandler->setAcceptedDevices(QInputDevice::DeviceType::Mouse); - m_dragHandler->setEnabled(enabled); - } else if (const auto flickable = qobject_cast<QQuickFlickable *>(m_target)) { - m_dragHandler->setEnabled(enabled && !flickable->isInteractive()); - } else { - m_dragHandler->setAcceptedDevices(QInputDevice::DeviceType::Mouse); - m_dragHandler->setEnabled(enabled); - } - } else if (m_selectionMode == QQuickSelectionRectangle::Drag) { - m_dragHandler->setAcceptedDevices(QInputDevice::DeviceType::AllDevices); - m_dragHandler->setEnabled(enabled); - } else { - m_dragHandler->setEnabled(false); - } - - // If you can't select using a drag, we always accept a PressAndHold - m_alwaysAcceptPressAndHold = !m_dragHandler->enabled(); -} - -QQuickSelectionRectangleAttached *QQuickSelectionRectanglePrivate::getAttachedObject(const QObject *object) const -{ - QObject *attachedObject = qmlAttachedPropertiesObject<QQuickSelectionRectangle>(object); - return static_cast<QQuickSelectionRectangleAttached *>(attachedObject); -} - -// -------------------------------------------------------- - -QQuickSelectionRectangle::QQuickSelectionRectangle(QQuickItem *parent) - : QQuickControl(*(new QQuickSelectionRectanglePrivate), parent) -{ - Q_D(QQuickSelectionRectangle); - - QObject::connect(this, &QQuickItem::enabledChanged, [=]() { - d->m_scrollTimer.stop(); - d->updateSelectionMode(); - d->updateDraggingState(false); - d->updateActiveState(false); - }); -} - -QQuickItem *QQuickSelectionRectangle::target() const -{ - return d_func()->m_target; -} - -void QQuickSelectionRectangle::setTarget(QQuickItem *target) -{ - Q_D(QQuickSelectionRectangle); - if (d->m_target == target) - return; - - if (d->m_selectable) { - d->m_scrollTimer.stop(); - d->m_tapHandler->setParent(nullptr); - d->m_dragHandler->setParent(nullptr); - d->m_target->disconnect(this); - } - - d->m_target = target; - d->m_selectable = nullptr; - - if (d->m_target) { - d->m_selectable = dynamic_cast<QQuickSelectable *>(QObjectPrivate::get(d->m_target.data())); - if (!d->m_selectable) - qmlWarning(this) << "the assigned target is not supported by the control"; - } - - if (d->m_selectable) { - const auto handlerTarget = d->m_selectable->selectionPointerHandlerTarget(); - d->m_dragHandler->setParent(handlerTarget); - d->m_tapHandler->setParent(handlerTarget); - QQuickItemPrivate::get(handlerTarget)->addPointerHandler(d->m_tapHandler); - QQuickItemPrivate::get(handlerTarget)->addPointerHandler(d->m_dragHandler); - d->connectToTarget(); - d->updateSelectionMode(); - } - - emit targetChanged(); -} - -bool QQuickSelectionRectangle::active() -{ - return d_func()->m_active; -} - -bool QQuickSelectionRectangle::dragging() -{ - return d_func()->m_dragging; -} - -QQuickSelectionRectangle::SelectionMode QQuickSelectionRectangle::selectionMode() const -{ - return d_func()->m_selectionMode; -} - -void QQuickSelectionRectangle::setSelectionMode(QQuickSelectionRectangle::SelectionMode selectionMode) -{ - Q_D(QQuickSelectionRectangle); - if (d->m_selectionMode == selectionMode) - return; - - d->m_selectionMode = selectionMode; - - if (d->m_target) - d->updateSelectionMode(); - - emit selectionModeChanged(); -} - -QQmlComponent *QQuickSelectionRectangle::topLeftHandle() const -{ - return d_func()->m_topLeftHandleDelegate; -} - -void QQuickSelectionRectangle::setTopLeftHandle(QQmlComponent *topLeftHandle) -{ - Q_D(QQuickSelectionRectangle); - if (d->m_topLeftHandleDelegate == topLeftHandle) - return; - - d->m_topLeftHandleDelegate = topLeftHandle; - emit topLeftHandleChanged(); -} - -QQmlComponent *QQuickSelectionRectangle::bottomRightHandle() const -{ - return d_func()->m_bottomRightHandleDelegate; -} - -void QQuickSelectionRectangle::setBottomRightHandle(QQmlComponent *bottomRightHandle) -{ - Q_D(QQuickSelectionRectangle); - if (d->m_bottomRightHandleDelegate == bottomRightHandle) - return; - - d->m_bottomRightHandleDelegate = bottomRightHandle; - emit bottomRightHandleChanged(); -} - -QQuickSelectionRectangleAttached *QQuickSelectionRectangle::qmlAttachedProperties(QObject *obj) -{ - return new QQuickSelectionRectangleAttached(obj); -} - -QQuickSelectionRectangleAttached::QQuickSelectionRectangleAttached(QObject *parent) - : QObject(parent) -{ -} - -QQuickSelectionRectangle *QQuickSelectionRectangleAttached::control() const -{ - return m_control; -} - -void QQuickSelectionRectangleAttached::setControl(QQuickSelectionRectangle *control) -{ - if (m_control == control) - return; - - m_control = control; - emit controlChanged(); -} - -bool QQuickSelectionRectangleAttached::dragging() const -{ - return m_dragging; -} - -void QQuickSelectionRectangleAttached::setDragging(bool dragging) -{ - if (m_dragging == dragging) - return; - - m_dragging = dragging; - emit draggingChanged(); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickselectionrectangle_p.h b/src/quicktemplates2/qquickselectionrectangle_p.h deleted file mode 100644 index 3acf1b10..00000000 --- a/src/quicktemplates2/qquickselectionrectangle_p.h +++ /dev/null @@ -1,143 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSELECTIONRECTANGLE_P_H -#define QQUICKSELECTIONRECTANGLE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuick/qquickitem.h> -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickSelectionRectanglePrivate; -class QQuickSelectable; -class QQuickSelectionRectangleAttached; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSelectionRectangle : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(SelectionMode selectionMode READ selectionMode WRITE setSelectionMode NOTIFY selectionModeChanged FINAL) - Q_PROPERTY(QQuickItem *target READ target WRITE setTarget NOTIFY targetChanged FINAL) - Q_PROPERTY(QQmlComponent *topLeftHandle READ topLeftHandle WRITE setTopLeftHandle NOTIFY topLeftHandleChanged FINAL) - Q_PROPERTY(QQmlComponent *bottomRightHandle READ bottomRightHandle WRITE setBottomRightHandle NOTIFY bottomRightHandleChanged FINAL) - Q_PROPERTY(bool active READ active NOTIFY activeChanged FINAL) - Q_PROPERTY(bool dragging READ dragging NOTIFY draggingChanged FINAL) - - QML_NAMED_ELEMENT(SelectionRectangle) - QML_ATTACHED(QQuickSelectionRectangleAttached) - QML_ADDED_IN_VERSION(6, 2) - -public: - enum SelectionMode { - Drag, - PressAndHold, - Auto - }; - Q_ENUM(SelectionMode) - - explicit QQuickSelectionRectangle(QQuickItem *parent = nullptr); - - QQuickItem *target() const; - void setTarget(QQuickItem *target); - - bool active(); - bool dragging(); - - SelectionMode selectionMode() const; - void setSelectionMode(SelectionMode selectionMode); - - QQmlComponent *topLeftHandle() const; - void setTopLeftHandle(QQmlComponent *topLeftHandle); - QQmlComponent *bottomRightHandle() const; - void setBottomRightHandle(QQmlComponent *bottomRightHandle); - - static QQuickSelectionRectangleAttached *qmlAttachedProperties(QObject *obj); - -Q_SIGNALS: - void targetChanged(); - bool activeChanged(); - bool draggingChanged(); - void topLeftHandleChanged(); - void bottomRightHandleChanged(); - void selectionModeChanged(); - -private: - Q_DISABLE_COPY(QQuickSelectionRectangle) - Q_DECLARE_PRIVATE(QQuickSelectionRectangle) -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSelectionRectangleAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickSelectionRectangle *control READ control NOTIFY controlChanged FINAL) - Q_PROPERTY(bool dragging READ dragging NOTIFY draggingChanged FINAL) - -public: - QQuickSelectionRectangleAttached(QObject *parent); - - QQuickSelectionRectangle *control() const; - void setControl(QQuickSelectionRectangle *control); - - bool dragging() const; - void setDragging(bool dragging); - -Q_SIGNALS: - void controlChanged(); - void draggingChanged(); - -private: - QPointer<QQuickSelectionRectangle> m_control; - bool m_dragging = false; - - friend class QQuickSelectionRectanglePrivate; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickSelectionRectangle) - -#endif // QQUICKSELECTIONRECTANGLE_P_H diff --git a/src/quicktemplates2/qquickselectionrectangle_p_p.h b/src/quicktemplates2/qquickselectionrectangle_p_p.h deleted file mode 100644 index 2ed3e035..00000000 --- a/src/quicktemplates2/qquickselectionrectangle_p_p.h +++ /dev/null @@ -1,110 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSELECTIONRECTANGLE_P_P_H -#define QQUICKSELECTIONRECTANGLE_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qquickselectionrectangle_p.h" - -#include <QtCore/qpointer.h> -#include <QtCore/qtimer.h> - -#include <QtQuick/private/qquickselectable_p.h> -#include <QtQuick/private/qquicktaphandler_p.h> -#include <QtQuick/private/qquickdraghandler_p.h> - -#include <QtQuickTemplates2/private/qquickcontrol_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickSelectionRectanglePrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickSelectionRectangle) - -public: - QQuickSelectionRectanglePrivate(); - - void updateDraggingState(bool isDragging); - void updateActiveState(bool isActive); - void updateHandles(); - void updateSelectionMode(); - void connectToTarget(); - void scrollTowardsPos(const QPointF &pos); - - QQuickItem *createHandle(QQmlComponent *delegate); - - QQuickSelectionRectangleAttached *getAttachedObject(const QObject *object) const; - -public: - QPointer<QQuickItem> m_target; - - QQmlComponent *m_topLeftHandleDelegate = nullptr; - QQmlComponent *m_bottomRightHandleDelegate = nullptr; - QPointer<QQuickItem> m_topLeftHandle; - QPointer<QQuickItem> m_bottomRightHandle; - QPointer<QQuickItem> m_draggedHandle = nullptr; - - QQuickSelectable *m_selectable = nullptr; - - QQuickTapHandler *m_tapHandler = nullptr; - QQuickDragHandler *m_dragHandler = nullptr; - - QTimer m_scrollTimer; - QPointF m_scrollToPoint; - QSizeF m_scrollSpeed = QSizeF(1, 1); - - QQuickSelectionRectangle::SelectionMode m_selectionMode = QQuickSelectionRectangle::Auto; - bool m_alwaysAcceptPressAndHold = false; - - bool m_enabled = true; - bool m_active = false; - bool m_dragging = false; -}; - -QT_END_NAMESPACE - -#endif // QQUICKSELECTIONRECTANGLE_P_P_H diff --git a/src/quicktemplates2/qquickshortcutcontext.cpp b/src/quicktemplates2/qquickshortcutcontext.cpp deleted file mode 100644 index b2b03e5d..00000000 --- a/src/quicktemplates2/qquickshortcutcontext.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickshortcutcontext_p_p.h" -#include "qquickoverlay_p_p.h" -#include "qquicktooltip_p.h" -#include "qquickpopup_p.h" - -#include <QtGui/qguiapplication.h> -#include <QtQuick/qquickrendercontrol.h> - -QT_BEGIN_NAMESPACE - -static bool isBlockedByPopup(QQuickItem *item) -{ - if (!item || !item->window()) - return false; - - QQuickOverlay *overlay = QQuickOverlay::overlay(item->window()); - const auto popups = QQuickOverlayPrivate::get(overlay)->stackingOrderPopups(); - for (QQuickPopup *popup : popups) { - if (qobject_cast<QQuickToolTip *>(popup)) - continue; // ignore tooltips (QTBUG-60492) - if (popup->isModal() || popup->closePolicy() & QQuickPopup::CloseOnEscape) { - return item != popup->popupItem() && !popup->popupItem()->isAncestorOf(item); - } - } - - return false; -} - -bool QQuickShortcutContext::matcher(QObject *obj, Qt::ShortcutContext context) -{ - QQuickItem *item = nullptr; - switch (context) { - case Qt::ApplicationShortcut: - return true; - case Qt::WindowShortcut: - while (obj && !obj->isWindowType()) { - item = qobject_cast<QQuickItem *>(obj); - if (item && item->window()) { - obj = item->window(); - break; - } else if (QQuickPopup *popup = qobject_cast<QQuickPopup *>(obj)) { - obj = popup->window(); - item = popup->popupItem(); - break; - } - obj = obj->parent(); - } - if (QWindow *renderWindow = QQuickRenderControl::renderWindowFor(qobject_cast<QQuickWindow *>(obj))) - obj = renderWindow; - return obj && obj == QGuiApplication::focusWindow() && !isBlockedByPopup(item); - default: - return false; - } -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickshortcutcontext_p_p.h b/src/quicktemplates2/qquickshortcutcontext_p_p.h deleted file mode 100644 index 44e63f1e..00000000 --- a/src/quicktemplates2/qquickshortcutcontext_p_p.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSHORTCUTCONTEXT_P_P_H -#define QQUICKSHORTCUTCONTEXT_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qnamespace.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> - -QT_BEGIN_NAMESPACE - -class QObject; - -struct Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickShortcutContext -{ - static bool matcher(QObject *object, Qt::ShortcutContext context); -}; - -QT_END_NAMESPACE - -#endif // QQUICKSHORTCUTCONTEXT_P_P_H diff --git a/src/quicktemplates2/qquickslider.cpp b/src/quicktemplates2/qquickslider.cpp deleted file mode 100644 index 7f6b025d..00000000 --- a/src/quicktemplates2/qquickslider.cpp +++ /dev/null @@ -1,893 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickslider_p.h" -#include "qquickcontrol_p_p.h" -#include "qquickdeferredexecute_p_p.h" - -#include <QtQuick/private/qquickwindow_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Slider - \inherits Control -//! \instantiates QQuickSlider - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-input - \brief Used to select a value by sliding a handle along a track. - - \image qtquickcontrols2-slider.gif - - Slider is used to select a value by sliding a handle along a track. - - In the example below, custom \l from, \l value, and \l to values are set: - - \code - Slider { - from: 1 - value: 25 - to: 100 - } - \endcode - - The \l position property is expressed as a fraction of the control's size, - in the range \c {0.0 - 1.0}. The \l visualPosition property is - the same, except that it is reversed in a - \l {Right-to-left User Interfaces}{right-to-left} application. The - visualPosition is useful for positioning the handle when styling Slider. - In the example above, \l visualPosition will be \c 0.24 in a left-to-right - application, and \c 0.76 in a right-to-left application. - - For a slider that allows the user to select a range by providing two - handles, see \l RangeSlider. - - \sa {Customizing Slider}, {Input Controls} -*/ - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlsignal QtQuick.Controls::Slider::moved() - - This signal is emitted when the slider has been interactively moved - by the user by either touch, mouse, wheel, or keys. -*/ - -class QQuickSliderPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickSlider) - -public: - qreal snapPosition(qreal position) const; - qreal positionAt(const QPointF &point) const; - void setPosition(qreal position); - void updatePosition(); - - void handlePress(const QPointF &point, ulong timestamp) override; - void handleMove(const QPointF &point, ulong timestamp) override; - void handleRelease(const QPointF &point, ulong timestamp) override; - void handleUngrab() override; - - void cancelHandle(); - void executeHandle(bool complete = false); - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - qreal from = 0; - qreal to = 1; - qreal value = 0; - qreal position = 0; - qreal stepSize = 0; - qreal touchDragThreshold = -1; // in QQuickWindowPrivate::dragOverThreshold, '-1' implies using styleHints::startDragDistance() - bool live = true; - bool pressed = false; - QPointF pressPoint; - Qt::Orientation orientation = Qt::Horizontal; - QQuickSlider::SnapMode snapMode = QQuickSlider::NoSnap; - QQuickDeferredPointer<QQuickItem> handle; -}; - -qreal QQuickSliderPrivate::snapPosition(qreal position) const -{ - const qreal range = to - from; - if (qFuzzyIsNull(range)) - return position; - - const qreal effectiveStep = stepSize / range; - if (qFuzzyIsNull(effectiveStep)) - return position; - - return qRound(position / effectiveStep) * effectiveStep; -} - -qreal QQuickSliderPrivate::positionAt(const QPointF &point) const -{ - Q_Q(const QQuickSlider); - qreal pos = 0.0; - if (orientation == Qt::Horizontal) { - const qreal hw = handle ? handle->width() : 0; - const qreal offset = hw / 2; - const qreal extent = q->availableWidth() - hw; - if (!qFuzzyIsNull(extent)) { - if (q->isMirrored()) - pos = (q->width() - point.x() - q->rightPadding() - offset) / extent; - else - pos = (point.x() - q->leftPadding() - offset) / extent; - } - } else { - const qreal hh = handle ? handle->height() : 0; - const qreal offset = hh / 2; - const qreal extent = q->availableHeight() - hh; - if (!qFuzzyIsNull(extent)) - pos = (q->height() - point.y() - q->bottomPadding() - offset) / extent; - } - return qBound<qreal>(0.0, pos, 1.0); -} - -void QQuickSliderPrivate::setPosition(qreal pos) -{ - Q_Q(QQuickSlider); - pos = qBound<qreal>(0.0, pos, 1.0); - if (qFuzzyCompare(position, pos)) - return; - - position = pos; - emit q->positionChanged(); - emit q->visualPositionChanged(); -} - -void QQuickSliderPrivate::updatePosition() -{ - qreal pos = 0; - if (!qFuzzyCompare(from, to)) - pos = (value - from) / (to - from); - setPosition(pos); -} - -void QQuickSliderPrivate::handlePress(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickSlider); - QQuickControlPrivate::handlePress(point, timestamp); - pressPoint = point; - q->setPressed(true); -} - -void QQuickSliderPrivate::handleMove(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickSlider); - QQuickControlPrivate::handleMove(point, timestamp); - const qreal oldPos = position; - qreal pos = positionAt(point); - if (snapMode == QQuickSlider::SnapAlways) - pos = snapPosition(pos); - if (live) - q->setValue(q->valueAt(pos)); - if (!live || snapMode == QQuickSlider::NoSnap || snapMode == QQuickSlider::SnapOnRelease) - setPosition(pos); - if (!qFuzzyCompare(pos, oldPos)) - emit q->moved(); -} - -void QQuickSliderPrivate::handleRelease(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickSlider); - QQuickControlPrivate::handleRelease(point, timestamp); - pressPoint = QPointF(); - const qreal oldPos = position; - qreal pos = positionAt(point); - if (snapMode != QQuickSlider::NoSnap) - pos = snapPosition(pos); - qreal val = q->valueAt(pos); - if (!qFuzzyCompare(val, value)) - q->setValue(val); - else if (snapMode != QQuickSlider::NoSnap) - setPosition(pos); - if (!qFuzzyCompare(pos, oldPos)) - emit q->moved(); - q->setKeepMouseGrab(false); - q->setKeepTouchGrab(false); - q->setPressed(false); -} - -void QQuickSliderPrivate::handleUngrab() -{ - Q_Q(QQuickSlider); - QQuickControlPrivate::handleUngrab(); - pressPoint = QPointF(); - q->setPressed(false); -} - -static inline QString handleName() { return QStringLiteral("handle"); } - -void QQuickSliderPrivate::cancelHandle() -{ - Q_Q(QQuickSlider); - quickCancelDeferred(q, handleName()); -} - -void QQuickSliderPrivate::executeHandle(bool complete) -{ - Q_Q(QQuickSlider); - if (handle.wasExecuted()) - return; - - if (!handle || complete) - quickBeginDeferred(q, handleName(), handle); - if (complete) - quickCompleteDeferred(q, handleName(), handle); -} - -void QQuickSliderPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - Q_Q(QQuickSlider); - QQuickControlPrivate::itemImplicitWidthChanged(item); - if (item == handle) - emit q->implicitHandleWidthChanged(); -} - -void QQuickSliderPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - Q_Q(QQuickSlider); - QQuickControlPrivate::itemImplicitHeightChanged(item); - if (item == handle) - emit q->implicitHandleHeightChanged(); -} - -QQuickSlider::QQuickSlider(QQuickItem *parent) - : QQuickControl(*(new QQuickSliderPrivate), parent) -{ - setActiveFocusOnTab(true); -#ifdef Q_OS_MACOS - setFocusPolicy(Qt::TabFocus); -#else - setFocusPolicy(Qt::StrongFocus); -#endif - setAcceptedMouseButtons(Qt::LeftButton); -#if QT_CONFIG(quicktemplates2_multitouch) - setAcceptTouchEvents(true); -#endif -#if QT_CONFIG(cursor) - setCursor(Qt::ArrowCursor); -#endif -} - -QQuickSlider::~QQuickSlider() -{ - Q_D(QQuickSlider); - d->removeImplicitSizeListener(d->handle); -} - -/*! - \qmlproperty real QtQuick.Controls::Slider::from - - This property holds the starting value for the range. The default value is \c 0.0. - - \sa to, value -*/ -qreal QQuickSlider::from() const -{ - Q_D(const QQuickSlider); - return d->from; -} - -void QQuickSlider::setFrom(qreal from) -{ - Q_D(QQuickSlider); - if (qFuzzyCompare(d->from, from)) - return; - - d->from = from; - emit fromChanged(); - if (isComponentComplete()) { - setValue(d->value); - d->updatePosition(); - } -} - -/*! - \qmlproperty real QtQuick.Controls::Slider::to - - This property holds the end value for the range. The default value is \c 1.0. - - \sa from, value -*/ -qreal QQuickSlider::to() const -{ - Q_D(const QQuickSlider); - return d->to; -} - -void QQuickSlider::setTo(qreal to) -{ - Q_D(QQuickSlider); - if (qFuzzyCompare(d->to, to)) - return; - - d->to = to; - emit toChanged(); - if (isComponentComplete()) { - setValue(d->value); - d->updatePosition(); - } -} - -/*! - \qmlproperty real QtQuick.Controls::Slider::value - - This property holds the value in the range \c from - \c to. The default value is \c 0.0. - - \sa position -*/ -qreal QQuickSlider::value() const -{ - Q_D(const QQuickSlider); - return d->value; -} - -void QQuickSlider::setValue(qreal value) -{ - Q_D(QQuickSlider); - if (isComponentComplete()) - value = d->from > d->to ? qBound(d->to, value, d->from) : qBound(d->from, value, d->to); - - if (qFuzzyCompare(d->value, value)) - return; - - d->value = value; - d->updatePosition(); - emit valueChanged(); -} - -/*! - \qmlproperty real QtQuick.Controls::Slider::position - \readonly - - This property holds the logical position of the handle. - - The position is expressed as a fraction of the control's size, in the range - \c {0.0 - 1.0}. For visualizing a slider, the right-to-left aware - \l visualPosition should be used instead. - - \sa value, visualPosition, valueAt() -*/ -qreal QQuickSlider::position() const -{ - Q_D(const QQuickSlider); - return d->position; -} - -/*! - \qmlproperty real QtQuick.Controls::Slider::visualPosition - \readonly - - This property holds the visual position of the handle. - - The position is expressed as a fraction of the control's size, in the range - \c {0.0 - 1.0}. When the control is \l {Control::mirrored}{mirrored}, the - value is equal to \c {1.0 - position}. This makes the value suitable for - visualizing the slider, taking right-to-left support into account. - - \sa position -*/ -qreal QQuickSlider::visualPosition() const -{ - Q_D(const QQuickSlider); - if (d->orientation == Qt::Vertical || isMirrored()) - return 1.0 - d->position; - return d->position; -} - -/*! - \qmlproperty real QtQuick.Controls::Slider::stepSize - - This property holds the step size. The default value is \c 0.0. - - \sa snapMode, increase(), decrease() -*/ -qreal QQuickSlider::stepSize() const -{ - Q_D(const QQuickSlider); - return d->stepSize; -} - -void QQuickSlider::setStepSize(qreal step) -{ - Q_D(QQuickSlider); - if (qFuzzyCompare(d->stepSize, step)) - return; - - d->stepSize = step; - emit stepSizeChanged(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::Slider::snapMode - - This property holds the snap mode. - - The snap mode determines how the slider handle behaves with - regards to the \l stepSize. - - Possible values: - \value Slider.NoSnap The slider does not snap (default). - \value Slider.SnapAlways The slider snaps while the handle is dragged. - \value Slider.SnapOnRelease The slider does not snap while being dragged, but only after the handle is released. - - In the following table, the various modes are illustrated with animations. - The movement of the mouse cursor and the \l stepSize (\c 0.2) are identical - in each animation. - - \table - \header - \row \li \b Value \li \b Example - \row \li \c Slider.NoSnap \li \image qtquickcontrols2-slider-nosnap.gif - \row \li \c Slider.SnapAlways \li \image qtquickcontrols2-slider-snapalways.gif - \row \li \c Slider.SnapOnRelease \li \image qtquickcontrols2-slider-snaponrelease.gif - \endtable - - \sa stepSize -*/ -QQuickSlider::SnapMode QQuickSlider::snapMode() const -{ - Q_D(const QQuickSlider); - return d->snapMode; -} - -void QQuickSlider::setSnapMode(SnapMode mode) -{ - Q_D(QQuickSlider); - if (d->snapMode == mode) - return; - - d->snapMode = mode; - emit snapModeChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::Slider::pressed - - This property holds whether the slider is pressed by either touch, mouse, - or keys. -*/ -bool QQuickSlider::isPressed() const -{ - Q_D(const QQuickSlider); - return d->pressed; -} - -void QQuickSlider::setPressed(bool pressed) -{ - Q_D(QQuickSlider); - if (d->pressed == pressed) - return; - - d->pressed = pressed; - setAccessibleProperty("pressed", pressed); - emit pressedChanged(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::Slider::horizontal - \readonly - - This property holds whether the slider is horizontal. - - \sa orientation -*/ -bool QQuickSlider::isHorizontal() const -{ - Q_D(const QQuickSlider); - return d->orientation == Qt::Horizontal; -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::Slider::vertical - \readonly - - This property holds whether the slider is vertical. - - \sa orientation -*/ -bool QQuickSlider::isVertical() const -{ - Q_D(const QQuickSlider); - return d->orientation == Qt::Vertical; -} - -/*! - \qmlproperty enumeration QtQuick.Controls::Slider::orientation - - This property holds the orientation. - - Possible values: - \value Qt.Horizontal Horizontal (default) - \value Qt.Vertical Vertical - - \sa horizontal, vertical -*/ -Qt::Orientation QQuickSlider::orientation() const -{ - Q_D(const QQuickSlider); - return d->orientation; -} - -void QQuickSlider::setOrientation(Qt::Orientation orientation) -{ - Q_D(QQuickSlider); - if (d->orientation == orientation) - return; - - d->orientation = orientation; - emit orientationChanged(); -} - -/*! - \qmlproperty Item QtQuick.Controls::Slider::handle - - This property holds the handle item. - - \sa {Customizing Slider} -*/ -QQuickItem *QQuickSlider::handle() const -{ - QQuickSliderPrivate *d = const_cast<QQuickSliderPrivate *>(d_func()); - if (!d->handle) - d->executeHandle(); - return d->handle; -} - -void QQuickSlider::setHandle(QQuickItem *handle) -{ - Q_D(QQuickSlider); - if (d->handle == handle) - return; - - if (!d->handle.isExecuting()) - d->cancelHandle(); - - const qreal oldImplicitHandleWidth = implicitHandleWidth(); - const qreal oldImplicitHandleHeight = implicitHandleHeight(); - - d->removeImplicitSizeListener(d->handle); - QQuickControlPrivate::hideOldItem(d->handle); - d->handle = handle; - - if (handle) { - if (!handle->parentItem()) - handle->setParentItem(this); - d->addImplicitSizeListener(handle); - } - - if (!qFuzzyCompare(oldImplicitHandleWidth, implicitHandleWidth())) - emit implicitHandleWidthChanged(); - if (!qFuzzyCompare(oldImplicitHandleHeight, implicitHandleHeight())) - emit implicitHandleHeightChanged(); - if (!d->handle.isExecuting()) - emit handleChanged(); -} - -/*! - \since QtQuick.Controls 2.1 (Qt 5.8) - \qmlmethod real QtQuick.Controls::Slider::valueAt(real position) - - Returns the value for the given \a position. - - \sa value, position -*/ -qreal QQuickSlider::valueAt(qreal position) const -{ - Q_D(const QQuickSlider); - const qreal value = (d->to - d->from) * position; - if (qFuzzyIsNull(d->stepSize)) - return d->from + value; - return d->from + qRound(value / d->stepSize) * d->stepSize; -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty bool QtQuick.Controls::Slider::live - - This property holds whether the slider provides live updates for the \l value - property while the handle is dragged. - - The default value is \c true. - - \sa value, valueAt() -*/ -bool QQuickSlider::live() const -{ - Q_D(const QQuickSlider); - return d->live; -} - -void QQuickSlider::setLive(bool live) -{ - Q_D(QQuickSlider); - if (d->live == live) - return; - - d->live = live; - emit liveChanged(); -} - -/*! - \qmlmethod void QtQuick.Controls::Slider::increase() - - Increases the value by \l stepSize or \c 0.1 if stepSize is not defined. - - \sa stepSize -*/ -void QQuickSlider::increase() -{ - Q_D(QQuickSlider); - qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize; - setValue(d->value + step); -} - -/*! - \qmlmethod void QtQuick.Controls::Slider::decrease() - - Decreases the value by \l stepSize or \c 0.1 if stepSize is not defined. - - \sa stepSize -*/ -void QQuickSlider::decrease() -{ - Q_D(QQuickSlider); - qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize; - setValue(d->value - step); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty qreal QtQuick.Controls::Slider::touchDragThreshold - - This property holds the threshold (in logical pixels) at which a touch drag event will be initiated. - The mouse drag threshold won't be affected. - The default value is \c Qt.styleHints.startDragDistance. - - \sa QStyleHints -*/ -qreal QQuickSlider::touchDragThreshold() const -{ - Q_D(const QQuickSlider); - return d->touchDragThreshold; -} - -void QQuickSlider::setTouchDragThreshold(qreal touchDragThreshold) -{ - Q_D(QQuickSlider); - if (d->touchDragThreshold == touchDragThreshold) - return; - - d->touchDragThreshold = touchDragThreshold; - emit touchDragThresholdChanged(); -} - -void QQuickSlider::resetTouchDragThreshold() -{ - setTouchDragThreshold(-1); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Slider::implicitHandleWidth - \readonly - - This property holds the implicit handle width. - - The value is equal to \c {handle ? handle.implicitWidth : 0}. - - This is typically used, together with \l {Control::}{implicitContentWidth} and - \l {Control::}{implicitBackgroundWidth}, to calculate the \l {Item::}{implicitWidth}. - - \sa implicitHandleHeight -*/ -qreal QQuickSlider::implicitHandleWidth() const -{ - Q_D(const QQuickSlider); - if (!d->handle) - return 0; - return d->handle->implicitWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::Slider::implicitHandleHeight - \readonly - - This property holds the implicit handle height. - - The value is equal to \c {handle ? handle.implicitHeight : 0}. - - This is typically used, together with \l {Control::}{implicitContentHeight} and - \l {Control::}{implicitBackgroundHeight}, to calculate the \l {Item::}{implicitHeight}. - - \sa implicitHandleWidth -*/ -qreal QQuickSlider::implicitHandleHeight() const -{ - Q_D(const QQuickSlider); - if (!d->handle) - return 0; - return d->handle->implicitHeight(); -} - -void QQuickSlider::keyPressEvent(QKeyEvent *event) -{ - Q_D(QQuickSlider); - QQuickControl::keyPressEvent(event); - - const qreal oldValue = d->value; - if (d->orientation == Qt::Horizontal) { - if (event->key() == Qt::Key_Left) { - setPressed(true); - if (isMirrored()) - increase(); - else - decrease(); - event->accept(); - } else if (event->key() == Qt::Key_Right) { - setPressed(true); - if (isMirrored()) - decrease(); - else - increase(); - event->accept(); - } - } else { - if (event->key() == Qt::Key_Up) { - setPressed(true); - increase(); - event->accept(); - } else if (event->key() == Qt::Key_Down) { - setPressed(true); - decrease(); - event->accept(); - } - } - if (!qFuzzyCompare(d->value, oldValue)) - emit moved(); -} - -void QQuickSlider::keyReleaseEvent(QKeyEvent *event) -{ - QQuickControl::keyReleaseEvent(event); - setPressed(false); -} - -void QQuickSlider::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickSlider); - QQuickControl::mousePressEvent(event); - d->handleMove(event->position(), event->timestamp()); - setKeepMouseGrab(true); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickSlider::touchEvent(QTouchEvent *event) -{ - Q_D(QQuickSlider); - switch (event->type()) { - case QEvent::TouchUpdate: - for (const QTouchEvent::TouchPoint &point : event->points()) { - if (!d->acceptTouch(point)) - continue; - - switch (point.state()) { - case QEventPoint::Pressed: - d->handlePress(point.position(), event->timestamp()); - break; - case QEventPoint::Updated: - if (!keepTouchGrab()) { - if (d->orientation == Qt::Horizontal) - setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.position().x() - d->pressPoint.x(), Qt::XAxis, &point, qRound(d->touchDragThreshold))); - else - setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.position().y() - d->pressPoint.y(), Qt::YAxis, &point, qRound(d->touchDragThreshold))); - } - if (keepTouchGrab()) - d->handleMove(point.position(), event->timestamp()); - break; - case QEventPoint::Released: - d->handleRelease(point.position(), event->timestamp()); - break; - default: - break; - } - } - break; - - default: - QQuickControl::touchEvent(event); - break; - } -} -#endif - -#if QT_CONFIG(wheelevent) -void QQuickSlider::wheelEvent(QWheelEvent *event) -{ - Q_D(QQuickSlider); - QQuickControl::wheelEvent(event); - if (d->wheelEnabled) { - const qreal oldValue = d->value; - const QPointF angle = event->angleDelta(); - const qreal delta = (qFuzzyIsNull(angle.y()) ? angle.x() : (event->inverted() ? -angle.y() : angle.y())) / QWheelEvent::DefaultDeltasPerStep; - const qreal step = qFuzzyIsNull(d->stepSize) ? 0.1 : d->stepSize; - setValue(oldValue + step * delta); - const bool wasMoved = !qFuzzyCompare(d->value, oldValue); - if (wasMoved) - emit moved(); - } -} -#endif - -void QQuickSlider::mirrorChange() -{ - QQuickControl::mirrorChange(); - emit visualPositionChanged(); -} - -void QQuickSlider::componentComplete() -{ - Q_D(QQuickSlider); - d->executeHandle(true); - QQuickControl::componentComplete(); - setValue(d->value); - d->updatePosition(); -} - -#if QT_CONFIG(accessibility) -void QQuickSlider::accessibilityActiveChanged(bool active) -{ - QQuickControl::accessibilityActiveChanged(active); - - Q_D(QQuickSlider); - if (active) - setAccessibleProperty("pressed", d->pressed); -} - -QAccessible::Role QQuickSlider::accessibleRole() const -{ - return QAccessible::Slider; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickslider_p.h b/src/quicktemplates2/qquickslider_p.h deleted file mode 100644 index ac03f7f9..00000000 --- a/src/quicktemplates2/qquickslider_p.h +++ /dev/null @@ -1,190 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSLIDER_P_H -#define QQUICKSLIDER_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickSliderPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSlider : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(qreal from READ from WRITE setFrom NOTIFY fromChanged FINAL) - Q_PROPERTY(qreal to READ to WRITE setTo NOTIFY toChanged FINAL) - Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged FINAL) - Q_PROPERTY(qreal position READ position NOTIFY positionChanged FINAL) - Q_PROPERTY(qreal visualPosition READ visualPosition NOTIFY visualPositionChanged FINAL) - Q_PROPERTY(qreal stepSize READ stepSize WRITE setStepSize NOTIFY stepSizeChanged FINAL) - Q_PROPERTY(SnapMode snapMode READ snapMode WRITE setSnapMode NOTIFY snapModeChanged FINAL) - Q_PROPERTY(bool pressed READ isPressed WRITE setPressed NOTIFY pressedChanged FINAL) - Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged FINAL) - Q_PROPERTY(QQuickItem *handle READ handle WRITE setHandle NOTIFY handleChanged FINAL) - Q_PROPERTY(bool live READ live WRITE setLive NOTIFY liveChanged FINAL REVISION(2, 2)) - // 2.3 (Qt 5.10) - Q_PROPERTY(bool horizontal READ isHorizontal NOTIFY orientationChanged FINAL REVISION(2, 3)) - Q_PROPERTY(bool vertical READ isVertical NOTIFY orientationChanged FINAL REVISION(2, 3)) - // 2.5 (Qt 5.12) - Q_PROPERTY(qreal touchDragThreshold READ touchDragThreshold WRITE setTouchDragThreshold RESET resetTouchDragThreshold NOTIFY touchDragThresholdChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitHandleWidth READ implicitHandleWidth NOTIFY implicitHandleWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitHandleHeight READ implicitHandleHeight NOTIFY implicitHandleHeightChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DeferredPropertyNames", "background,handle") - QML_NAMED_ELEMENT(Slider) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickSlider(QQuickItem *parent = nullptr); - ~QQuickSlider(); - - qreal from() const; - void setFrom(qreal from); - - qreal to() const; - void setTo(qreal to); - - qreal value() const; - void setValue(qreal value); - - qreal position() const; - qreal visualPosition() const; - - qreal stepSize() const; - void setStepSize(qreal step); - - enum SnapMode { - NoSnap, - SnapAlways, - SnapOnRelease - }; - Q_ENUM(SnapMode) - - SnapMode snapMode() const; - void setSnapMode(SnapMode mode); - - bool isPressed() const; - void setPressed(bool pressed); - - Qt::Orientation orientation() const; - void setOrientation(Qt::Orientation orientation); - - QQuickItem *handle() const; - void setHandle(QQuickItem *handle); - - // 2.1 (Qt 5.8) - Q_REVISION(2, 1) Q_INVOKABLE qreal valueAt(qreal position) const; - - // 2.2 (Qt 5.9) - bool live() const; - void setLive(bool live); - - // 2.3 (Qt 5.10) - bool isHorizontal() const; - bool isVertical() const; - - // 2.5 (Qt 5.12) - qreal touchDragThreshold() const; - void setTouchDragThreshold(qreal touchDragThreshold); - void resetTouchDragThreshold(); - - qreal implicitHandleWidth() const; - qreal implicitHandleHeight() const; - -public Q_SLOTS: - void increase(); - void decrease(); - -Q_SIGNALS: - void fromChanged(); - void toChanged(); - void valueChanged(); - void positionChanged(); - void visualPositionChanged(); - void stepSizeChanged(); - void snapModeChanged(); - void pressedChanged(); - void orientationChanged(); - void handleChanged(); - // 2.2 (Qt 5.9) - Q_REVISION(2, 2) void moved(); - Q_REVISION(2, 2) void liveChanged(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void touchDragThresholdChanged(); - Q_REVISION(2, 5) void implicitHandleWidthChanged(); - Q_REVISION(2, 5) void implicitHandleHeightChanged(); - -protected: - void keyPressEvent(QKeyEvent *event) override; - void keyReleaseEvent(QKeyEvent *event) override; - void mousePressEvent(QMouseEvent *event) override; -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; -#endif -#if QT_CONFIG(wheelevent) - void wheelEvent(QWheelEvent *event) override; -#endif - - void mirrorChange() override; - void componentComplete() override; - -#if QT_CONFIG(accessibility) - void accessibilityActiveChanged(bool active) override; - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickSlider) - Q_DECLARE_PRIVATE(QQuickSlider) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickSlider) - -#endif // QQUICKSLIDER_P_H diff --git a/src/quicktemplates2/qquickspinbox.cpp b/src/quicktemplates2/qquickspinbox.cpp deleted file mode 100644 index b26c9aa6..00000000 --- a/src/quicktemplates2/qquickspinbox.cpp +++ /dev/null @@ -1,1057 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickspinbox_p.h" -#include "qquickcontrol_p_p.h" -#include "qquickindicatorbutton_p.h" -#include "qquickdeferredexecute_p_p.h" - -#include <QtGui/qguiapplication.h> -#include <QtGui/qstylehints.h> - -#include <QtQml/qqmlinfo.h> -#include <QtQml/private/qqmllocale_p.h> -#include <QtQml/private/qqmlengine_p.h> -#include <QtQuick/private/qquicktextinput_p.h> - -QT_BEGIN_NAMESPACE - -// copied from qabstractbutton.cpp -static const int AUTO_REPEAT_DELAY = 300; -static const int AUTO_REPEAT_INTERVAL = 100; - -/*! - \qmltype SpinBox - \inherits Control -//! \instantiates QQuickSpinBox - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup input - \ingroup qtquickcontrols2-focusscopes - \brief Allows the user to select from a set of preset values. - - \image qtquickcontrols2-spinbox.png - - SpinBox allows the user to choose an integer value by clicking the up - or down indicator buttons, or by pressing up or down on the keyboard. - Optionally, SpinBox can be also made \l editable, so the user can enter - a text value in the input field. - - By default, SpinBox provides discrete values in the range of \c [0-99] - with a \l stepSize of \c 1. - - \snippet qtquickcontrols2-spinbox.qml 1 - - \section2 Custom Values - - \image qtquickcontrols2-spinbox-textual.png - - Even though SpinBox works on integer values, it can be customized to - accept arbitrary input values. The following snippet demonstrates how - \l validator, \l textFromValue and \l valueFromText can be used to - customize the default behavior. - - \snippet qtquickcontrols2-spinbox-textual.qml 1 - - In the same manner, SpinBox can be customized to accept floating point - numbers: - - \image qtquickcontrols2-spinbox-double.png - - \snippet qtquickcontrols2-spinbox-double.qml 1 - - \sa Tumbler, {Customizing SpinBox}, {Focus Management in Qt Quick Controls} -*/ - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlsignal QtQuick.Controls::SpinBox::valueModified() - - This signal is emitted when the spin box value has been interactively - modified by the user by either touch, mouse, wheel, or keys. -*/ - -class QQuickSpinBoxPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickSpinBox) - -public: - int boundValue(int value, bool wrap) const; - void updateValue(); - bool setValue(int value, bool wrap, bool modified); - bool stepBy(int steps, bool modified); - void increase(bool modified); - void decrease(bool modified); - - int effectiveStepSize() const; - - void updateDisplayText(bool modified = false); - void setDisplayText(const QString &displayText, bool modified = false); - - bool upEnabled() const; - void updateUpEnabled(); - bool downEnabled() const; - void updateDownEnabled(); - void updateHover(const QPointF &pos); - - void startRepeatDelay(); - void startPressRepeat(); - void stopPressRepeat(); - - void handlePress(const QPointF &point, ulong timestamp) override; - void handleMove(const QPointF &point, ulong timestamp) override; - void handleRelease(const QPointF &point, ulong timestamp) override; - void handleUngrab() override; - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::SpinBox); } - - bool editable = false; - bool wrap = false; - int from = 0; - int to = 99; - int value = 0; - int stepSize = 1; - int delayTimer = 0; - int repeatTimer = 0; - QString displayText; - QQuickIndicatorButton *up = nullptr; - QQuickIndicatorButton *down = nullptr; - QValidator *validator = nullptr; - mutable QJSValue textFromValue; - mutable QJSValue valueFromText; - Qt::InputMethodHints inputMethodHints = Qt::ImhDigitsOnly; -}; - -int QQuickSpinBoxPrivate::boundValue(int value, bool wrap) const -{ - bool inverted = from > to; - if (!wrap) - return inverted ? qBound(to, value, from) : qBound(from, value, to); - - int f = inverted ? to : from; - int t = inverted ? from : to; - if (value < f) - value = t; - else if (value > t) - value = f; - - return value; -} - -void QQuickSpinBoxPrivate::updateValue() -{ - Q_Q(QQuickSpinBox); - if (contentItem) { - QVariant text = contentItem->property("text"); - if (text.isValid()) { - int val = 0; - QQmlEngine *engine = qmlEngine(q); - if (engine && valueFromText.isCallable()) { - QV4::ExecutionEngine *v4 = QQmlEnginePrivate::getV4Engine(engine); - QJSValue loc = QJSValuePrivate::fromReturnedValue(QQmlLocale::wrap(v4, locale)); - val = valueFromText.call(QJSValueList() << text.toString() << loc).toInt(); - } else { - val = locale.toInt(text.toString()); - } - setValue(val, /* allowWrap = */ false, /* modified = */ true); - } - } -} - -// modified indicates if the value was modified by the user and not programatically -// this is then passed on to updateDisplayText to indicate that the user has modified -// the value so it may need to trigger an update of the contentItem's text too - -bool QQuickSpinBoxPrivate::setValue(int newValue, bool allowWrap, bool modified) -{ - Q_Q(QQuickSpinBox); - int correctedValue = newValue; - if (q->isComponentComplete()) - correctedValue = boundValue(newValue, allowWrap); - - if (!modified && newValue == correctedValue && newValue == value) - return false; - - const bool emitSignals = (value != correctedValue); - value = correctedValue; - - updateDisplayText(modified); - updateUpEnabled(); - updateDownEnabled(); - - // Only emit the signals if the corrected value is not the same as the - // original value to avoid unnecessary updates - if (emitSignals) { - emit q->valueChanged(); - if (modified) - emit q->valueModified(); - } - return true; -} - -bool QQuickSpinBoxPrivate::stepBy(int steps, bool modified) -{ - return setValue(value + steps, wrap, modified); -} - -void QQuickSpinBoxPrivate::increase(bool modified) -{ - setValue(value + effectiveStepSize(), wrap, modified); -} - -void QQuickSpinBoxPrivate::decrease(bool modified) -{ - setValue(value - effectiveStepSize(), wrap, modified); -} - -int QQuickSpinBoxPrivate::effectiveStepSize() const -{ - return from > to ? -1 * stepSize : stepSize; -} - -void QQuickSpinBoxPrivate::updateDisplayText(bool modified) -{ - Q_Q(QQuickSpinBox); - QString text; - QQmlEngine *engine = qmlEngine(q); - if (engine && textFromValue.isCallable()) { - QV4::ExecutionEngine *v4 = QQmlEnginePrivate::getV4Engine(engine); - QJSValue loc = QJSValuePrivate::fromReturnedValue(QQmlLocale::wrap(v4, locale)); - text = textFromValue.call(QJSValueList() << value << loc).toString(); - } else { - text = locale.toString(value); - } - setDisplayText(text, modified); -} - -void QQuickSpinBoxPrivate::setDisplayText(const QString &text, bool modified) -{ - Q_Q(QQuickSpinBox); - - if (!modified && displayText == text) - return; - - displayText = text; - emit q->displayTextChanged(); -} - -bool QQuickSpinBoxPrivate::upEnabled() const -{ - const QQuickItem *upIndicator = up->indicator(); - return upIndicator && upIndicator->isEnabled(); -} - -void QQuickSpinBoxPrivate::updateUpEnabled() -{ - QQuickItem *upIndicator = up->indicator(); - if (!upIndicator) - return; - - upIndicator->setEnabled(wrap || (from < to ? value < to : value > to)); -} - -bool QQuickSpinBoxPrivate::downEnabled() const -{ - const QQuickItem *downIndicator = down->indicator(); - return downIndicator && downIndicator->isEnabled(); -} - -void QQuickSpinBoxPrivate::updateDownEnabled() -{ - QQuickItem *downIndicator = down->indicator(); - if (!downIndicator) - return; - - downIndicator->setEnabled(wrap || (from < to ? value > from : value < from)); -} - -void QQuickSpinBoxPrivate::updateHover(const QPointF &pos) -{ - Q_Q(QQuickSpinBox); - QQuickItem *ui = up->indicator(); - QQuickItem *di = down->indicator(); - up->setHovered(ui && ui->isEnabled() && ui->contains(q->mapToItem(ui, pos))); - down->setHovered(di && di->isEnabled() && di->contains(q->mapToItem(di, pos))); -} - -void QQuickSpinBoxPrivate::startRepeatDelay() -{ - Q_Q(QQuickSpinBox); - stopPressRepeat(); - delayTimer = q->startTimer(AUTO_REPEAT_DELAY); -} - -void QQuickSpinBoxPrivate::startPressRepeat() -{ - Q_Q(QQuickSpinBox); - stopPressRepeat(); - repeatTimer = q->startTimer(AUTO_REPEAT_INTERVAL); -} - -void QQuickSpinBoxPrivate::stopPressRepeat() -{ - Q_Q(QQuickSpinBox); - if (delayTimer > 0) { - q->killTimer(delayTimer); - delayTimer = 0; - } - if (repeatTimer > 0) { - q->killTimer(repeatTimer); - repeatTimer = 0; - } -} - -void QQuickSpinBoxPrivate::handlePress(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickSpinBox); - QQuickControlPrivate::handlePress(point, timestamp); - QQuickItem *ui = up->indicator(); - QQuickItem *di = down->indicator(); - up->setPressed(ui && ui->isEnabled() && ui->contains(ui->mapFromItem(q, point))); - down->setPressed(di && di->isEnabled() && di->contains(di->mapFromItem(q, point))); - - bool pressed = up->isPressed() || down->isPressed(); - q->setAccessibleProperty("pressed", pressed); - if (pressed) - startRepeatDelay(); -} - -void QQuickSpinBoxPrivate::handleMove(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickSpinBox); - QQuickControlPrivate::handleMove(point, timestamp); - QQuickItem *ui = up->indicator(); - QQuickItem *di = down->indicator(); - up->setHovered(ui && ui->isEnabled() && ui->contains(ui->mapFromItem(q, point))); - up->setPressed(up->isHovered()); - down->setHovered(di && di->isEnabled() && di->contains(di->mapFromItem(q, point))); - down->setPressed(down->isHovered()); - - bool pressed = up->isPressed() || down->isPressed(); - q->setAccessibleProperty("pressed", pressed); - if (!pressed) - stopPressRepeat(); -} - -void QQuickSpinBoxPrivate::handleRelease(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickSpinBox); - QQuickControlPrivate::handleRelease(point, timestamp); - QQuickItem *ui = up->indicator(); - QQuickItem *di = down->indicator(); - - int oldValue = value; - if (up->isPressed()) { - up->setPressed(false); - if (repeatTimer <= 0 && ui && ui->contains(ui->mapFromItem(q, point))) - q->increase(); - } else if (down->isPressed()) { - down->setPressed(false); - if (repeatTimer <= 0 && di && di->contains(di->mapFromItem(q, point))) - q->decrease(); - } - if (value != oldValue) - emit q->valueModified(); - - q->setAccessibleProperty("pressed", false); - stopPressRepeat(); -} - -void QQuickSpinBoxPrivate::handleUngrab() -{ - Q_Q(QQuickSpinBox); - QQuickControlPrivate::handleUngrab(); - up->setPressed(false); - down->setPressed(false); - - q->setAccessibleProperty("pressed", false); - stopPressRepeat(); -} - -void QQuickSpinBoxPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - QQuickControlPrivate::itemImplicitWidthChanged(item); - if (item == up->indicator()) - emit up->implicitIndicatorWidthChanged(); - else if (item == down->indicator()) - emit down->implicitIndicatorWidthChanged(); -} - -void QQuickSpinBoxPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - QQuickControlPrivate::itemImplicitHeightChanged(item); - if (item == up->indicator()) - emit up->implicitIndicatorHeightChanged(); - else if (item == down->indicator()) - emit down->implicitIndicatorHeightChanged(); -} - -QQuickSpinBox::QQuickSpinBox(QQuickItem *parent) - : QQuickControl(*(new QQuickSpinBoxPrivate), parent) -{ - Q_D(QQuickSpinBox); - d->up = new QQuickIndicatorButton(this); - d->down = new QQuickIndicatorButton(this); - - setFlag(ItemIsFocusScope); - setFiltersChildMouseEvents(true); - setAcceptedMouseButtons(Qt::LeftButton); -#if QT_CONFIG(cursor) - setCursor(Qt::ArrowCursor); -#endif -} - -QQuickSpinBox::~QQuickSpinBox() -{ - Q_D(QQuickSpinBox); - d->removeImplicitSizeListener(d->up->indicator()); - d->removeImplicitSizeListener(d->down->indicator()); -} - -/*! - \qmlproperty int QtQuick.Controls::SpinBox::from - - This property holds the starting value for the range. The default value is \c 0. - - \sa to, value -*/ -int QQuickSpinBox::from() const -{ - Q_D(const QQuickSpinBox); - return d->from; -} - -void QQuickSpinBox::setFrom(int from) -{ - Q_D(QQuickSpinBox); - if (d->from == from) - return; - - d->from = from; - emit fromChanged(); - if (isComponentComplete()) { - if (!d->setValue(d->value, /* allowWrap = */ false, /* modified = */ false)) { - d->updateUpEnabled(); - d->updateDownEnabled(); - } - } -} - -/*! - \qmlproperty int QtQuick.Controls::SpinBox::to - - This property holds the end value for the range. The default value is \c 99. - - \sa from, value -*/ -int QQuickSpinBox::to() const -{ - Q_D(const QQuickSpinBox); - return d->to; -} - -void QQuickSpinBox::setTo(int to) -{ - Q_D(QQuickSpinBox); - if (d->to == to) - return; - - d->to = to; - emit toChanged(); - if (isComponentComplete()) { - if (!d->setValue(d->value, /* allowWrap = */false, /* modified = */ false)) { - d->updateUpEnabled(); - d->updateDownEnabled(); - } - } -} - -/*! - \qmlproperty int QtQuick.Controls::SpinBox::value - - This property holds the value in the range \c from - \c to. The default value is \c 0. -*/ -int QQuickSpinBox::value() const -{ - Q_D(const QQuickSpinBox); - return d->value; -} - -void QQuickSpinBox::setValue(int value) -{ - Q_D(QQuickSpinBox); - d->setValue(value, /* allowWrap = */ false, /* modified = */ false); -} - -/*! - \qmlproperty int QtQuick.Controls::SpinBox::stepSize - - This property holds the step size. The default value is \c 1. - - \sa increase(), decrease() -*/ -int QQuickSpinBox::stepSize() const -{ - Q_D(const QQuickSpinBox); - return d->stepSize; -} - -void QQuickSpinBox::setStepSize(int step) -{ - Q_D(QQuickSpinBox); - if (d->stepSize == step) - return; - - d->stepSize = step; - emit stepSizeChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::SpinBox::editable - - This property holds whether the spinbox is editable. The default value is \c false. - - \sa validator -*/ -bool QQuickSpinBox::isEditable() const -{ - Q_D(const QQuickSpinBox); - return d->editable; -} - -void QQuickSpinBox::setEditable(bool editable) -{ - Q_D(QQuickSpinBox); - if (d->editable == editable) - return; - -#if QT_CONFIG(cursor) - if (d->contentItem) { - if (editable) - d->contentItem->setCursor(Qt::IBeamCursor); - else - d->contentItem->unsetCursor(); - } -#endif - - d->editable = editable; - setAccessibleProperty("editable", editable); - emit editableChanged(); -} - -/*! - \qmlproperty Validator QtQuick.Controls::SpinBox::validator - - This property holds the input text validator for editable spinboxes. By - default, SpinBox uses \l IntValidator to accept input of integer numbers. - - \code - SpinBox { - id: control - validator: IntValidator { - locale: control.locale.name - bottom: Math.min(control.from, control.to) - top: Math.max(control.from, control.to) - } - } - \endcode - - \sa editable, textFromValue, valueFromText, {Control::locale}{locale} -*/ -QValidator *QQuickSpinBox::validator() const -{ - Q_D(const QQuickSpinBox); - return d->validator; -} - -void QQuickSpinBox::setValidator(QValidator *validator) -{ - Q_D(QQuickSpinBox); - if (d->validator == validator) - return; - - d->validator = validator; - emit validatorChanged(); -} - -/*! - \qmlproperty function QtQuick.Controls::SpinBox::textFromValue - - This property holds a callback function that is called whenever - an integer value needs to be converted to display text. - - The default function can be overridden to display custom text for a given - value. This applies to both editable and non-editable spinboxes; - for example, when using the up and down buttons or a mouse wheel to - increment and decrement the value, the new value is converted to display - text using this function. - - The callback function signature is \c {string function(value, locale)}. - The function can have one or two arguments, where the first argument - is the value to be converted, and the optional second argument is the - locale that should be used for the conversion, if applicable. - - The default implementation does the conversion using - \l {QtQml::Number::toLocaleString()}{Number.toLocaleString}(): - - \code - textFromValue: function(value, locale) { return Number(value).toLocaleString(locale, 'f', 0); } - \endcode - - \note When applying a custom \c textFromValue implementation for editable - spinboxes, a matching \l valueFromText implementation must be provided - to be able to convert the custom text back to an integer value. - - \sa valueFromText, validator, {Control::locale}{locale} -*/ -QJSValue QQuickSpinBox::textFromValue() const -{ - Q_D(const QQuickSpinBox); - if (!d->textFromValue.isCallable()) { - QQmlEngine *engine = qmlEngine(this); - if (engine) - d->textFromValue = engine->evaluate(QStringLiteral("(function(value, locale) { return Number(value).toLocaleString(locale, 'f', 0); })")); - } - return d->textFromValue; -} - -void QQuickSpinBox::setTextFromValue(const QJSValue &callback) -{ - Q_D(QQuickSpinBox); - if (!callback.isCallable()) { - qmlWarning(this) << "textFromValue must be a callable function"; - return; - } - d->textFromValue = callback; - emit textFromValueChanged(); -} - -/*! - \qmlproperty function QtQuick.Controls::SpinBox::valueFromText - - This property holds a callback function that is called whenever - input text needs to be converted to an integer value. - - This function only needs to be overridden when \l textFromValue - is overridden for an editable spinbox. - - The callback function signature is \c {int function(text, locale)}. - The function can have one or two arguments, where the first argument - is the text to be converted, and the optional second argument is the - locale that should be used for the conversion, if applicable. - - The default implementation does the conversion using \l {QtQml::Locale}{Number.fromLocaleString()}: - - \code - valueFromText: function(text, locale) { return Number.fromLocaleString(locale, text); } - \endcode - - \note When applying a custom \l textFromValue implementation for editable - spinboxes, a matching \c valueFromText implementation must be provided - to be able to convert the custom text back to an integer value. - - \sa textFromValue, validator, {Control::locale}{locale} -*/ -QJSValue QQuickSpinBox::valueFromText() const -{ - Q_D(const QQuickSpinBox); - if (!d->valueFromText.isCallable()) { - QQmlEngine *engine = qmlEngine(this); - if (engine) - d->valueFromText = engine->evaluate(QStringLiteral("(function(text, locale) { return Number.fromLocaleString(locale, text); })")); - } - return d->valueFromText; -} - -void QQuickSpinBox::setValueFromText(const QJSValue &callback) -{ - Q_D(QQuickSpinBox); - if (!callback.isCallable()) { - qmlWarning(this) << "valueFromText must be a callable function"; - return; - } - d->valueFromText = callback; - emit valueFromTextChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::SpinBox::up.pressed - \qmlproperty Item QtQuick.Controls::SpinBox::up.indicator - \qmlproperty bool QtQuick.Controls::SpinBox::up.hovered - \qmlproperty real QtQuick.Controls::SpinBox::up.implicitIndicatorWidth - \qmlproperty real QtQuick.Controls::SpinBox::up.implicitIndicatorHeight - - These properties hold the up indicator item and whether it is pressed or - hovered. The \c up.hovered property was introduced in QtQuick.Controls 2.1, - and the \c up.implicitIndicatorWidth and \c up.implicitIndicatorHeight - properties were introduced in QtQuick.Controls 2.5. - - \sa increase() -*/ -QQuickIndicatorButton *QQuickSpinBox::up() const -{ - Q_D(const QQuickSpinBox); - return d->up; -} - -/*! - \qmlproperty bool QtQuick.Controls::SpinBox::down.pressed - \qmlproperty Item QtQuick.Controls::SpinBox::down.indicator - \qmlproperty bool QtQuick.Controls::SpinBox::down.hovered - \qmlproperty real QtQuick.Controls::SpinBox::down.implicitIndicatorWidth - \qmlproperty real QtQuick.Controls::SpinBox::down.implicitIndicatorHeight - - These properties hold the down indicator item and whether it is pressed or - hovered. The \c down.hovered property was introduced in QtQuick.Controls 2.1, - and the \c down.implicitIndicatorWidth and \c down.implicitIndicatorHeight - properties were introduced in QtQuick.Controls 2.5. - - \sa decrease() -*/ -QQuickIndicatorButton *QQuickSpinBox::down() const -{ - Q_D(const QQuickSpinBox); - return d->down; -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty flags QtQuick.Controls::SpinBox::inputMethodHints - - This property provides hints to the input method about the expected content - of the spin box and how it should operate. - - The default value is \c Qt.ImhDigitsOnly. - - \include inputmethodhints.qdocinc -*/ -Qt::InputMethodHints QQuickSpinBox::inputMethodHints() const -{ - Q_D(const QQuickSpinBox); - return d->inputMethodHints; -} - -void QQuickSpinBox::setInputMethodHints(Qt::InputMethodHints hints) -{ - Q_D(QQuickSpinBox); - if (d->inputMethodHints == hints) - return; - - d->inputMethodHints = hints; - emit inputMethodHintsChanged(); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty bool QtQuick.Controls::SpinBox::inputMethodComposing - \readonly - - This property holds whether an editable spin box has partial text input from an input method. - - While it is composing, an input method may rely on mouse or key events from the spin box to - edit or commit the partial text. This property can be used to determine when to disable event - handlers that may interfere with the correct operation of an input method. -*/ -bool QQuickSpinBox::isInputMethodComposing() const -{ - Q_D(const QQuickSpinBox); - return d->contentItem && d->contentItem->property("inputMethodComposing").toBool(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::SpinBox::wrap - - This property holds whether the spinbox wraps. The default value is \c false. - - If wrap is \c true, stepping past \l to changes the value to \l from and vice versa. -*/ -bool QQuickSpinBox::wrap() const -{ - Q_D(const QQuickSpinBox); - return d->wrap; -} - -void QQuickSpinBox::setWrap(bool wrap) -{ - Q_D(QQuickSpinBox); - if (d->wrap == wrap) - return; - - d->wrap = wrap; - if (d->value == d->from || d->value == d->to) { - d->updateUpEnabled(); - d->updateDownEnabled(); - } - emit wrapChanged(); -} - -/*! - \since QtQuick.Controls 2.4 (Qt 5.11) - \qmlproperty string QtQuick.Controls::SpinBox::displayText - \readonly - - This property holds the textual value of the spinbox. - - The value of the property is based on \l textFromValue and \l {Control::} - {locale}, and equal to: - \badcode - var text = spinBox.textFromValue(spinBox.value, spinBox.locale) - \endcode - - \sa textFromValue -*/ -QString QQuickSpinBox::displayText() const -{ - Q_D(const QQuickSpinBox); - return d->displayText; -} - -/*! - \qmlmethod void QtQuick.Controls::SpinBox::increase() - - Increases the value by \l stepSize, or \c 1 if stepSize is not defined. - - \sa stepSize -*/ -void QQuickSpinBox::increase() -{ - Q_D(QQuickSpinBox); - d->increase(false); -} - -/*! - \qmlmethod void QtQuick.Controls::SpinBox::decrease() - - Decreases the value by \l stepSize, or \c 1 if stepSize is not defined. - - \sa stepSize -*/ -void QQuickSpinBox::decrease() -{ - Q_D(QQuickSpinBox); - d->decrease(false); -} - -void QQuickSpinBox::focusInEvent(QFocusEvent *event) -{ - Q_D(QQuickSpinBox); - QQuickControl::focusInEvent(event); - - // When an editable SpinBox gets focus, it must pass on the focus to its editor. - if (d->editable && d->contentItem && !d->contentItem->hasActiveFocus()) - d->contentItem->forceActiveFocus(event->reason()); -} - -void QQuickSpinBox::hoverEnterEvent(QHoverEvent *event) -{ - Q_D(QQuickSpinBox); - QQuickControl::hoverEnterEvent(event); - d->updateHover(event->position()); -} - -void QQuickSpinBox::hoverMoveEvent(QHoverEvent *event) -{ - Q_D(QQuickSpinBox); - QQuickControl::hoverMoveEvent(event); - d->updateHover(event->position()); -} - -void QQuickSpinBox::hoverLeaveEvent(QHoverEvent *event) -{ - Q_D(QQuickSpinBox); - QQuickControl::hoverLeaveEvent(event); - d->down->setHovered(false); - d->up->setHovered(false); -} - -void QQuickSpinBox::keyPressEvent(QKeyEvent *event) -{ - Q_D(QQuickSpinBox); - QQuickControl::keyPressEvent(event); - - switch (event->key()) { - case Qt::Key_Up: - if (d->upEnabled()) { - d->increase(true); - d->up->setPressed(true); - event->accept(); - } - break; - - case Qt::Key_Down: - if (d->downEnabled()) { - d->decrease(true); - d->down->setPressed(true); - event->accept(); - } - break; - - default: - break; - } - - setAccessibleProperty("pressed", d->up->isPressed() || d->down->isPressed()); -} - -void QQuickSpinBox::keyReleaseEvent(QKeyEvent *event) -{ - Q_D(QQuickSpinBox); - QQuickControl::keyReleaseEvent(event); - - if (d->editable && (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return)) - d->updateValue(); - - d->up->setPressed(false); - d->down->setPressed(false); - setAccessibleProperty("pressed", false); -} - -void QQuickSpinBox::timerEvent(QTimerEvent *event) -{ - Q_D(QQuickSpinBox); - QQuickControl::timerEvent(event); - if (event->timerId() == d->delayTimer) { - d->startPressRepeat(); - } else if (event->timerId() == d->repeatTimer) { - if (d->up->isPressed()) - d->increase(true); - else if (d->down->isPressed()) - d->decrease(true); - } -} - -#if QT_CONFIG(wheelevent) -void QQuickSpinBox::wheelEvent(QWheelEvent *event) -{ - Q_D(QQuickSpinBox); - QQuickControl::wheelEvent(event); - if (d->wheelEnabled) { - const QPointF angle = event->angleDelta(); - const qreal delta = (qFuzzyIsNull(angle.y()) ? angle.x() : angle.y()) / QWheelEvent::DefaultDeltasPerStep; - d->stepBy(qRound(d->effectiveStepSize() * delta), true); - } -} -#endif - -void QQuickSpinBox::classBegin() -{ - Q_D(QQuickSpinBox); - QQuickControl::classBegin(); - - QQmlContext *context = qmlContext(this); - if (context) { - QQmlEngine::setContextForObject(d->up, context); - QQmlEngine::setContextForObject(d->down, context); - } -} - -void QQuickSpinBox::componentComplete() -{ - Q_D(QQuickSpinBox); - QQuickIndicatorButtonPrivate::get(d->up)->executeIndicator(true); - QQuickIndicatorButtonPrivate::get(d->down)->executeIndicator(true); - - QQuickControl::componentComplete(); - if (!d->setValue(d->value, /* allowWrap = */ false, /* modified = */ false)) { - d->updateDisplayText(); - d->updateUpEnabled(); - d->updateDownEnabled(); - } -} - -void QQuickSpinBox::itemChange(ItemChange change, const ItemChangeData &value) -{ - Q_D(QQuickSpinBox); - QQuickControl::itemChange(change, value); - if (d->editable && change == ItemActiveFocusHasChanged && !value.boolValue) - d->updateValue(); -} - -void QQuickSpinBox::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_D(QQuickSpinBox); - if (QQuickTextInput *oldInput = qobject_cast<QQuickTextInput *>(oldItem)) - disconnect(oldInput, &QQuickTextInput::inputMethodComposingChanged, this, &QQuickSpinBox::inputMethodComposingChanged); - - if (newItem) { - newItem->setActiveFocusOnTab(true); - if (d->activeFocus) - newItem->forceActiveFocus(d->focusReason); -#if QT_CONFIG(cursor) - if (d->editable) - newItem->setCursor(Qt::IBeamCursor); -#endif - - if (QQuickTextInput *newInput = qobject_cast<QQuickTextInput *>(newItem)) - connect(newInput, &QQuickTextInput::inputMethodComposingChanged, this, &QQuickSpinBox::inputMethodComposingChanged); - } -} - -void QQuickSpinBox::localeChange(const QLocale &newLocale, const QLocale &oldLocale) -{ - Q_D(QQuickSpinBox); - QQuickControl::localeChange(newLocale, oldLocale); - d->updateDisplayText(); -} - -QFont QQuickSpinBox::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::SpinBox); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickSpinBox::accessibleRole() const -{ - return QAccessible::SpinBox; -} - -void QQuickSpinBox::accessibilityActiveChanged(bool active) -{ - Q_D(QQuickSpinBox); - QQuickControl::accessibilityActiveChanged(active); - - if (active) - setAccessibleProperty("editable", d->editable); -} -#endif - -QT_END_NAMESPACE - -#include "moc_qquickspinbox_p.cpp" diff --git a/src/quicktemplates2/qquickspinbox_p.h b/src/quicktemplates2/qquickspinbox_p.h deleted file mode 100644 index 9e64e96e..00000000 --- a/src/quicktemplates2/qquickspinbox_p.h +++ /dev/null @@ -1,183 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSPINBOX_P_H -#define QQUICKSPINBOX_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> -#include <QtQml/qjsvalue.h> - -QT_BEGIN_NAMESPACE - -class QValidator; -class QQuickSpinBoxPrivate; -class QQuickIndicatorButton; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSpinBox : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(int from READ from WRITE setFrom NOTIFY fromChanged FINAL) - Q_PROPERTY(int to READ to WRITE setTo NOTIFY toChanged FINAL) - Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged FINAL) - Q_PROPERTY(int stepSize READ stepSize WRITE setStepSize NOTIFY stepSizeChanged FINAL) - Q_PROPERTY(bool editable READ isEditable WRITE setEditable NOTIFY editableChanged FINAL) - Q_PROPERTY(QValidator *validator READ validator WRITE setValidator NOTIFY validatorChanged FINAL) - Q_PROPERTY(QJSValue textFromValue READ textFromValue WRITE setTextFromValue NOTIFY textFromValueChanged FINAL) - Q_PROPERTY(QJSValue valueFromText READ valueFromText WRITE setValueFromText NOTIFY valueFromTextChanged FINAL) - Q_PROPERTY(QQuickIndicatorButton *up READ up CONSTANT FINAL) - Q_PROPERTY(QQuickIndicatorButton *down READ down CONSTANT FINAL) - // 2.2 (Qt 5.9) - Q_PROPERTY(Qt::InputMethodHints inputMethodHints READ inputMethodHints WRITE setInputMethodHints NOTIFY inputMethodHintsChanged FINAL REVISION(2, 2)) - Q_PROPERTY(bool inputMethodComposing READ isInputMethodComposing NOTIFY inputMethodComposingChanged FINAL REVISION(2, 2)) - // 2.3 (Qt 5.10) - Q_PROPERTY(bool wrap READ wrap WRITE setWrap NOTIFY wrapChanged FINAL REVISION(2, 3)) - // 2.4 (Qt 5.11) - Q_PROPERTY(QString displayText READ displayText NOTIFY displayTextChanged FINAL REVISION(2, 4)) - QML_NAMED_ELEMENT(SpinBox) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickSpinBox(QQuickItem *parent = nullptr); - ~QQuickSpinBox(); - - int from() const; - void setFrom(int from); - - int to() const; - void setTo(int to); - - int value() const; - void setValue(int value); - - int stepSize() const; - void setStepSize(int step); - - bool isEditable() const; - void setEditable(bool editable); - - QValidator *validator() const; - void setValidator(QValidator *validator); - - QJSValue textFromValue() const; - void setTextFromValue(const QJSValue &callback); - - QJSValue valueFromText() const; - void setValueFromText(const QJSValue &callback); - - QQuickIndicatorButton *up() const; - QQuickIndicatorButton *down() const; - - // 2.2 (Qt 5.9) - Qt::InputMethodHints inputMethodHints() const; - void setInputMethodHints(Qt::InputMethodHints hints); - - bool isInputMethodComposing() const; - - // 2.3 (Qt 5.10) - bool wrap() const; - void setWrap(bool wrap); - - // 2.4 (Qt 5.11) - QString displayText() const; - -public Q_SLOTS: - void increase(); - void decrease(); - -Q_SIGNALS: - void fromChanged(); - void toChanged(); - void valueChanged(); - void stepSizeChanged(); - void editableChanged(); - void validatorChanged(); - void textFromValueChanged(); - void valueFromTextChanged(); - // 2.2 (Qt 5.9) - Q_REVISION(2, 2) void valueModified(); - Q_REVISION(2, 2) void inputMethodHintsChanged(); - Q_REVISION(2, 2) void inputMethodComposingChanged(); - // 2.3 (Qt 5.10) - Q_REVISION(2, 3) void wrapChanged(); - // 2.4 (Qt 5.11) - Q_REVISION(2, 4) void displayTextChanged(); - -protected: - void focusInEvent(QFocusEvent *event) override; - void hoverEnterEvent(QHoverEvent *event) override; - void hoverMoveEvent(QHoverEvent *event) override; - void hoverLeaveEvent(QHoverEvent *event) override; - void keyPressEvent(QKeyEvent *event) override; - void keyReleaseEvent(QKeyEvent *event) override; - void timerEvent(QTimerEvent *event) override; -#if QT_CONFIG(wheelevent) - void wheelEvent(QWheelEvent *event) override; -#endif - - void classBegin() override; - void componentComplete() override; - void itemChange(ItemChange change, const ItemChangeData &value) override; - void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; - void localeChange(const QLocale &newLocale, const QLocale &oldLocale) override; - - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; - void accessibilityActiveChanged(bool active) override; -#endif - -private: - Q_DISABLE_COPY(QQuickSpinBox) - Q_DECLARE_PRIVATE(QQuickSpinBox) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickSpinBox) - -#endif // QQUICKSPINBOX_P_H diff --git a/src/quicktemplates2/qquicksplitview.cpp b/src/quicktemplates2/qquicksplitview.cpp deleted file mode 100644 index a6f70b32..00000000 --- a/src/quicktemplates2/qquicksplitview.cpp +++ /dev/null @@ -1,2089 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicksplitview_p.h" -#include "qquicksplitview_p_p.h" -#include "qquickcontentitem_p.h" - -#include <QtCore/qdebug.h> -#include <QtCore/qloggingcategory.h> -#include <QtCore/qcborarray.h> -#include <QtCore/qcbormap.h> -#include <QtCore/qcborvalue.h> -#include <QtQml/QQmlInfo> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype SplitView - \inherits Container -//! \instantiates QQuickSplitView - \inqmlmodule QtQuick.Controls - \since 5.13 - \ingroup qtquickcontrols2-containers - \ingroup qtquickcontrols2-focusscopes - \brief Lays out items with a draggable splitter between each item. - - SplitView is a control that lays out items horizontally or vertically with - a draggable splitter between each item. - - SplitView supports the following attached properties on items it manages: - - \list - \li \l{minimumWidth}{SplitView.minimumWidth} - \li \l{minimumHeight}{SplitView.minimumHeight} - \li \l{preferredWidth}{SplitView.preferredWidth} - \li \l{preferredHeight}{SplitView.preferredHeight} - \li \l{maximumWidth}{SplitView.maximumWidth} - \li \l{maximumHeight}{SplitView.maximumHeight} - \li \l{fillWidth}{SplitView.fillWidth} (true for only one child) - \li \l{fillHeight}{SplitView.fillHeight} (true for only one child) - \endlist - - In addition, each handle has the following read-only attached properties: - - \list - \li \l{SplitHandle::hovered}{SplitHandle.hovered} - \li \l{SplitHandle::pressed}{SplitHandle.pressed} - \endlist - - \note Handles should be purely visual and not handle events, as it can - interfere with their hovered and pressed states. - - The preferred size of items in a SplitView can be specified via - \l{Item::}{implicitWidth} and \l{Item::}{implicitHeight} or - \c SplitView.preferredWidth and \c SplitView.preferredHeight: - - \code - SplitView { - anchors.fill: parent - - Item { - SplitView.preferredWidth: 50 - } - - // ... - } - \endcode - - For a horizontal SplitView, it's not necessary to specify the preferred - height of each item, as they will be resized to the height of the view. - This applies in reverse for vertical views. - - When a split handle is dragged, the \c SplitView.preferredWidth or - \c SplitView.preferredHeight property is overwritten, depending on the - \l orientation of the view. - - To limit the size of items in a horizontal view, use the following - properties: - - \code - SplitView { - anchors.fill: parent - - Item { - SplitView.minimumWidth: 25 - SplitView.preferredWidth: 50 - SplitView.maximumWidth: 100 - } - - // ... - } - \endcode - - To limit the size of items in a vertical view, use the following - properties: - - \code - SplitView { - anchors.fill: parent - orientation: Qt.Vertical - - Item { - SplitView.minimumHeight: 25 - SplitView.preferredHeight: 50 - SplitView.maximumHeight: 100 - } - - // ... - } - \endcode - - There will always be one item (the fill item) in the SplitView that has - \c SplitView.fillWidth set to \c true (or \c SplitView.fillHeight, if - \l orientation is \c Qt.Vertical). This means that the item will get all - leftover space when other items have been laid out. By default, the last - visible child of the SplitView will have this set, but it can be changed by - explicitly setting \c fillWidth to \c true on another item. - - A handle can belong to the item either on the left or top side, or on the - right or bottom side: - - \list - \li If the fill item is to the right: the handle belongs to the left - item. - \li If the fill item is on the left: the handle belongs to the right - item. - \endlist - - To create a SplitView with three items, and let the center item get - superfluous space, one could do the following: - - \code - SplitView { - anchors.fill: parent - orientation: Qt.Horizontal - - Rectangle { - implicitWidth: 200 - SplitView.maximumWidth: 400 - color: "lightblue" - Label { - text: "View 1" - anchors.centerIn: parent - } - } - Rectangle { - id: centerItem - SplitView.minimumWidth: 50 - SplitView.fillWidth: true - color: "lightgray" - Label { - text: "View 2" - anchors.centerIn: parent - } - } - Rectangle { - implicitWidth: 200 - color: "lightgreen" - Label { - text: "View 3" - anchors.centerIn: parent - } - } - } - \endcode - - \section1 Serializing SplitView's State - - The main purpose of SplitView is to allow users to easily configure the - size of various UI elements. In addition, the user's preferred sizes should - be remembered across sessions. To achieve this, the values of the \c - SplitView.preferredWidth and \c SplitView.preferredHeight properties can be - serialized using the \l saveState() and \l restoreState() functions: - - \qml - import QtQuick.Controls - import Qt.labs.settings - - ApplicationWindow { - // ... - - Component.onCompleted: splitView.restoreState(settings.splitView) - Component.onDestruction: settings.splitView = splitView.saveState() - - Settings { - id: settings - property var splitView - } - - SplitView { - id: splitView - // ... - } - } - \endqml - - Alternatively, the \l {Settings::}{value()} and \l {Settings::}{setValue()} - functions of \l Settings can be used: - - \qml - import QtQuick.Controls - import Qt.labs.settings - - ApplicationWindow { - // ... - - Component.onCompleted: splitView.restoreState(settings.value("ui/splitview")) - Component.onDestruction: settings.setValue("ui/splitview", splitView.saveState()) - - Settings { - id: settings - } - - SplitView { - id: splitView - // ... - } - } - \endqml - - \sa SplitHandle, {Customizing SplitView}, {Container Controls} -*/ - -Q_LOGGING_CATEGORY(qlcQQuickSplitView, "qt.quick.controls.splitview") -Q_LOGGING_CATEGORY(qlcQQuickSplitViewMouse, "qt.quick.controls.splitview.mouse") -Q_LOGGING_CATEGORY(qlcQQuickSplitViewState, "qt.quick.controls.splitview.state") - -void QQuickSplitViewPrivate::updateFillIndex() -{ - const int count = contentModel->count(); - const bool horizontal = isHorizontal(); - - qCDebug(qlcQQuickSplitView) << "looking for fillWidth/Height item amongst" << count << "items"; - - m_fillIndex = -1; - int i = 0; - int lastVisibleIndex = -1; - for (; i < count; ++i) { - QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->object(i)); - if (!item->isVisible()) - continue; - - lastVisibleIndex = i; - - const QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>( - qmlAttachedPropertiesObject<QQuickSplitView>(item, false)); - if (!attached) - continue; - - if ((horizontal && attached->fillWidth()) || (!horizontal && attached->fillHeight())) { - m_fillIndex = i; - qCDebug(qlcQQuickSplitView) << "found fillWidth/Height item at index" << m_fillIndex; - break; - } - } - - if (m_fillIndex == -1) { - // If there was no item with fillWidth/fillHeight set, m_fillIndex will be -1, - // and we'll set it to the last visible item. - // If there was an item with fillWidth/fillHeight set, we were already done and this will be skipped. - m_fillIndex = lastVisibleIndex != -1 ? lastVisibleIndex : count - 1; - qCDebug(qlcQQuickSplitView) << "found no fillWidth/Height item; using last item at index" << m_fillIndex; - } -} - -/* - Resizes split items according to their preferred size and any constraints. - - If a split item is being resized due to a split handle being dragged, - it will be resized accordingly. - - Items that aren't visible are skipped. -*/ -void QQuickSplitViewPrivate::layoutResizeSplitItems(qreal &usedWidth, qreal &usedHeight, int &indexBeingResizedDueToDrag) -{ - const int count = contentModel->count(); - const bool horizontal = isHorizontal(); - for (int index = 0; index < count; ++index) { - QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->object(index)); - if (!item->isVisible()) { - // The item is not visible, so skip it. - qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": split item " << item - << " at index " << index << " is not visible; skipping it and its handles (if any)"; - continue; - } - - const QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); - QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>( - qmlAttachedPropertiesObject<QQuickSplitView>(item, false)); - const auto sizeData = effectiveSizeData(itemPrivate, attached); - - const bool resizeLeftItem = m_fillIndex > m_pressedHandleIndex; - // True if any handle is pressed. - const bool isAHandlePressed = m_pressedHandleIndex != -1; - // True if this particular item is being resized as a result of a handle being dragged. - const bool isBeingResized = isAHandlePressed && ((resizeLeftItem && index == m_pressedHandleIndex) - || (!resizeLeftItem && index == m_nextVisibleIndexAfterPressedHandle)); - if (isBeingResized) { - indexBeingResizedDueToDrag = index; - qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": dragging handle for item"; - } - - const qreal size = horizontal ? width : height; - qreal requestedSize = 0; - if (isBeingResized) { - // Don't let the mouse go past either edge of the SplitView. - const qreal clampedMousePos = horizontal - ? qBound(qreal(0.0), m_mousePos.x(), qreal(width)) - : qBound(qreal(0.0), m_mousePos.y(), qreal(height)); - - // We also need to ensure that the item's edge doesn't go too far - // out and hence give the item more space than is available. - const int firstIndex = resizeLeftItem ? m_nextVisibleIndexAfterPressedHandle : 0; - const int lastIndex = resizeLeftItem ? contentModel->count() - 1 : m_pressedHandleIndex; - const qreal accumulated = accumulatedSize(firstIndex, lastIndex); - - const qreal mousePosRelativeToLeftHandleEdge = horizontal - ? m_pressPos.x() - m_handlePosBeforePress.x() - : m_pressPos.y() - m_handlePosBeforePress.y(); - - const QQuickItem *pressedHandleItem = m_handleItems.at(m_pressedHandleIndex); - const qreal pressedHandleSize = horizontal ? pressedHandleItem->width() : pressedHandleItem->height(); - - if (resizeLeftItem) { - // The handle shouldn't cross other handles, so use the right edge of - // the first handle to the left as the left edge. - qreal leftEdge = 0; - if (m_pressedHandleIndex - 1 >= 0) { - const QQuickItem *leftHandle = m_handleItems.at(m_pressedHandleIndex - 1); - leftEdge = horizontal - ? leftHandle->x() + leftHandle->width() - : leftHandle->y() + leftHandle->height(); - } - - // The mouse can be clicked anywhere in the handle, and if we don't account for - // its position within the handle, the handle will jump when dragged. - const qreal pressedHandlePos = clampedMousePos - mousePosRelativeToLeftHandleEdge; - - const qreal rightStop = size - accumulated - pressedHandleSize; - qreal leftStop = qMax(leftEdge, pressedHandlePos); - // qBound() doesn't care if min is greater than max, but we do. - if (leftStop > rightStop) - leftStop = rightStop; - const qreal newHandlePos = qBound(leftStop, pressedHandlePos, rightStop); - const qreal newItemSize = newHandlePos - leftEdge; - - // Modify the preferredWidth, otherwise the original implicitWidth/preferredWidth - // will be used on the next layout (when it's no longer being resized). - if (!attached) { - // Force the attached object to be created since we rely on it. - attached = qobject_cast<QQuickSplitViewAttached*>( - qmlAttachedPropertiesObject<QQuickSplitView>(item, true)); - } - - /* - Users could conceivably respond to size changes in items by setting attached - SplitView properties: - - onWidthChanged: if (width < 10) secondItem.SplitView.preferredWidth = 100 - - We handle this by doing another layout after the current layout if the - attached/implicit size properties are set during this layout. However, we also - need to set preferredWidth/Height here (for reasons mentioned in the comment above), - but we don't want this to count as a request for a delayed layout, so we guard against it. - */ - m_ignoreNextLayoutRequest = true; - - if (horizontal) - attached->setPreferredWidth(newItemSize); - else - attached->setPreferredHeight(newItemSize); - - // We still need to use requestedWidth in the setWidth() call below, - // because sizeData has already been calculated and now contains an old - // effectivePreferredWidth value. - requestedSize = newItemSize; - - qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": resized (dragged) " << item - << " (clampedMousePos=" << clampedMousePos - << " pressedHandlePos=" << pressedHandlePos - << " accumulated=" << accumulated - << " leftEdge=" << leftEdge - << " leftStop=" << leftStop - << " rightStop=" << rightStop - << " newHandlePos=" << newHandlePos - << " newItemSize=" << newItemSize << ")"; - } else { // Resizing the item on the right. - // The handle shouldn't cross other handles, so use the left edge of - // the first handle to the right as the right edge. - qreal rightEdge = size; - if (m_nextVisibleIndexAfterPressedHandle < m_handleItems.size()) { - const QQuickItem *rightHandle = m_handleItems.at(m_nextVisibleIndexAfterPressedHandle); - rightEdge = horizontal ? rightHandle->x() : rightHandle->y(); - } - - // The mouse can be clicked anywhere in the handle, and if we don't account for - // its position within the handle, the handle will jump when dragged. - const qreal pressedHandlePos = clampedMousePos - mousePosRelativeToLeftHandleEdge; - - const qreal leftStop = accumulated - pressedHandleSize; - qreal rightStop = qMin(rightEdge - pressedHandleSize, pressedHandlePos); - // qBound() doesn't care if min is greater than max, but we do. - if (rightStop < leftStop) - rightStop = leftStop; - const qreal newHandlePos = qBound(leftStop, pressedHandlePos, rightStop); - const qreal newItemSize = rightEdge - (newHandlePos + pressedHandleSize); - - // Modify the preferredWidth, otherwise the original implicitWidth/preferredWidth - // will be used on the next layout (when it's no longer being resized). - if (!attached) { - // Force the attached object to be created since we rely on it. - attached = qobject_cast<QQuickSplitViewAttached*>( - qmlAttachedPropertiesObject<QQuickSplitView>(item, true)); - } - - m_ignoreNextLayoutRequest = true; - - if (horizontal) - attached->setPreferredWidth(newItemSize); - else - attached->setPreferredHeight(newItemSize); - - // We still need to use requestedSize in the setWidth()/setHeight() call below, - // because sizeData has already been calculated and now contains an old - // effectivePreferredWidth/Height value. - requestedSize = newItemSize; - - qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": resized (dragged) " << item - << " (clampedMousePos=" << clampedMousePos - << " pressedHandlePos=" << pressedHandlePos - << " accumulated=" << accumulated - << " leftEdge=" << rightEdge - << " leftStop=" << leftStop - << " rightStop=" << rightStop - << " newHandlePos=" << newHandlePos - << " newItemSize=" << newItemSize << ")"; - } - } else if (index != m_fillIndex) { - // No handle is being dragged and we're not the fill item, - // so set our preferred size as we normally would. - requestedSize = horizontal - ? sizeData.effectivePreferredWidth : sizeData.effectivePreferredHeight; - } - - if (index != m_fillIndex) { - if (horizontal) { - item->setWidth(qBound( - sizeData.effectiveMinimumWidth, - requestedSize, - sizeData.effectiveMaximumWidth)); - item->setHeight(height); - } else { - item->setWidth(width); - item->setHeight(qBound( - sizeData.effectiveMinimumHeight, - requestedSize, - sizeData.effectiveMaximumHeight)); - } - - qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": resized split item " << item - << " (effective" - << " minW=" << sizeData.effectiveMinimumWidth - << ", minH=" << sizeData.effectiveMinimumHeight - << ", prfW=" << sizeData.effectivePreferredWidth - << ", prfH=" << sizeData.effectivePreferredHeight - << ", maxW=" << sizeData.effectiveMaximumWidth - << ", maxH=" << sizeData.effectiveMaximumHeight << ")"; - - // Keep track of how much space has been used so far. - if (horizontal) - usedWidth += item->width(); - else - usedHeight += item->height(); - } else if (indexBeingResizedDueToDrag != m_fillIndex) { - // The fill item is resized afterwards, outside of the loop. - qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": skipping fill item as we resize it last"; - } - - // Also account for the size of the handle for this item (if any). - // We do this for the fill item too, which is why it's outside of the check above. - if (index < count - 1 && m_handle) { - QQuickItem *handleItem = m_handleItems.at(index); - // The handle for an item that's not visible will usually already be skipped - // with the item visibility check higher up, but if the view looks like this - // [ visible ] | [ visible (fill) ] | [ hidden ] - // ^ - // hidden - // and we're iterating over the second item (which is visible but has no handle), - // we need to add an extra check for it to avoid it still taking up space. - if (handleItem->isVisible()) { - if (horizontal) { - qCDebug(qlcQQuickSplitView).nospace() << " - " << index - << ": handle takes up " << handleItem->width() << " width"; - usedWidth += handleItem->width(); - } else { - qCDebug(qlcQQuickSplitView).nospace() << " - " << index - << ": handle takes up " << handleItem->height() << " height"; - usedHeight += handleItem->height(); - } - } else { - qCDebug(qlcQQuickSplitView).nospace() << " - " << index << ": handle is not visible; skipping it"; - } - } - } -} - -/* - Resizes the fill item by giving it the remaining space - after all other items have been resized. - - Items that aren't visible are skipped. -*/ -void QQuickSplitViewPrivate::layoutResizeFillItem(QQuickItem *fillItem, - qreal &usedWidth, qreal &usedHeight, int indexBeingResizedDueToDrag) -{ - // Only bother resizing if it it's visible. Also, if it's being resized due to a drag, - // then we've already set its size in layoutResizeSplitItems(), so no need to do it here. - if (!fillItem->isVisible() || indexBeingResizedDueToDrag == m_fillIndex) { - qCDebug(qlcQQuickSplitView).nospace() << m_fillIndex << ": - fill item " << fillItem - << " is not visible or was already resized due to a drag;" - << " skipping it and its handles (if any)"; - return; - } - - const QQuickItemPrivate *fillItemPrivate = QQuickItemPrivate::get(fillItem); - const QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>( - qmlAttachedPropertiesObject<QQuickSplitView>(fillItem, false)); - const auto fillSizeData = effectiveSizeData(fillItemPrivate, attached); - if (isHorizontal()) { - fillItem->setWidth(qBound( - fillSizeData.effectiveMinimumWidth, - width - usedWidth, - fillSizeData.effectiveMaximumWidth)); - fillItem->setHeight(height); - } else { - fillItem->setWidth(width); - fillItem->setHeight(qBound( - fillSizeData.effectiveMinimumHeight, - height - usedHeight, - fillSizeData.effectiveMaximumHeight)); - } - - qCDebug(qlcQQuickSplitView).nospace() << " - " << m_fillIndex - << ": resized split fill item " << fillItem << " (effective" - << " minW=" << fillSizeData.effectiveMinimumWidth - << ", minH=" << fillSizeData.effectiveMinimumHeight - << ", maxW=" << fillSizeData.effectiveMaximumWidth - << ", maxH=" << fillSizeData.effectiveMaximumHeight << ")"; -} - -/* - Positions items by laying them out in a row or column. - - Items that aren't visible are skipped. -*/ -void QQuickSplitViewPrivate::layoutPositionItems(const QQuickItem *fillItem) -{ - const bool horizontal = isHorizontal(); - const int count = contentModel->count(); - qreal usedWidth = 0; - qreal usedHeight = 0; - - for (int i = 0; i < count; ++i) { - QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->object(i)); - if (!item->isVisible()) { - qCDebug(qlcQQuickSplitView).nospace() << " - " << i << ": split item " << item - << " is not visible; skipping it and its handles (if any)"; - continue; - } - - // Position the item. - if (horizontal) { - item->setX(usedWidth); - item->setY(0); - } else { - item->setX(0); - item->setY(usedHeight); - } - - // Keep track of how much space has been used so far. - if (horizontal) - usedWidth += item->width(); - else - usedHeight += item->height(); - - if (Q_UNLIKELY(qlcQQuickSplitView().isDebugEnabled())) { - const QQuickItemPrivate *fillItemPrivate = QQuickItemPrivate::get(fillItem); - const QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>( - qmlAttachedPropertiesObject<QQuickSplitView>(fillItem, false)); - const auto sizeData = effectiveSizeData(fillItemPrivate, attached); - qCDebug(qlcQQuickSplitView).nospace() << " - " << i << ": positioned " - << (i == m_fillIndex ? "fill item " : "item ") << item << " (effective" - << " minW=" << sizeData.effectiveMinimumWidth - << ", minH=" << sizeData.effectiveMinimumHeight - << ", prfW=" << sizeData.effectivePreferredWidth - << ", prfH=" << sizeData.effectivePreferredHeight - << ", maxW=" << sizeData.effectiveMaximumWidth - << ", maxH=" << sizeData.effectiveMaximumHeight << ")"; - } - - // Position the handle for this item (if any). - if (i < count - 1 && m_handle) { - // Position the handle. - QQuickItem *handleItem = m_handleItems.at(i); - handleItem->setX(horizontal ? usedWidth : 0); - handleItem->setY(horizontal ? 0 : usedHeight); - - if (horizontal) - usedWidth += handleItem->width(); - else - usedHeight += handleItem->height(); - - qCDebug(qlcQQuickSplitView).nospace() << " - " << i << ": positioned handle " << handleItem; - } - } -} - -void QQuickSplitViewPrivate::requestLayout() -{ - Q_Q(QQuickSplitView); - q->polish(); -} - -void QQuickSplitViewPrivate::layout() -{ - if (!componentComplete) - return; - - if (m_layingOut) - return; - - const int count = contentModel->count(); - if (count <= 0) - return; - - Q_ASSERT_X(m_fillIndex < count, Q_FUNC_INFO, qPrintable( - QString::fromLatin1("m_fillIndex is %1 but our count is %2").arg(m_fillIndex).arg(count))); - - Q_ASSERT_X(!m_handle || m_handleItems.size() == count - 1, Q_FUNC_INFO, qPrintable(QString::fromLatin1( - "Expected %1 handle items, but there are %2").arg(count - 1).arg(m_handleItems.size()))); - - // We allow mouse events to instantly trigger layouts, whereas with e.g. - // attached properties being set, we require a delayed layout. - // To prevent recursive calls during mouse events, we need this guard. - QBoolBlocker guard(m_layingOut, true); - - const bool horizontal = isHorizontal(); - qCDebug(qlcQQuickSplitView) << "laying out" << count << "split items" - << (horizontal ? "horizontally" : "vertically") << "in SplitView" << q_func(); - - qreal usedWidth = 0; - qreal usedHeight = 0; - int indexBeingResizedDueToDrag = -1; - - qCDebug(qlcQQuickSplitView) << " resizing:"; - - // First, resize the items. We need to do this first because otherwise fill - // items would take up all of the remaining space as soon as they are encountered. - layoutResizeSplitItems(usedWidth, usedHeight, indexBeingResizedDueToDrag); - - qCDebug(qlcQQuickSplitView).nospace() - << " - (remaining width=" << width - usedWidth - << " remaining height=" << height - usedHeight << ")"; - - // Give the fill item the remaining space. - QQuickItem *fillItem = qobject_cast<QQuickItem*>(contentModel->object(m_fillIndex)); - layoutResizeFillItem(fillItem, usedWidth, usedHeight, indexBeingResizedDueToDrag); - - qCDebug(qlcQQuickSplitView) << " positioning:"; - - // Position the items. - layoutPositionItems(fillItem); - - qCDebug(qlcQQuickSplitView).nospace() << "finished layouting"; -} - -void QQuickSplitViewPrivate::createHandles() -{ - Q_ASSERT(m_handle); - // A handle only makes sense if there are two items on either side. - if (contentModel->count() <= 1) - return; - - // Create new handle items if there aren't enough. - const int count = contentModel->count() - 1; - qCDebug(qlcQQuickSplitView) << "creating" << count << "handles"; - m_handleItems.reserve(count); - for (int i = 0; i < count; ++i) - createHandleItem(i); -} - -void QQuickSplitViewPrivate::createHandleItem(int index) -{ - Q_Q(QQuickSplitView); - if (contentModel->count() <= 1) - return; - - qCDebug(qlcQQuickSplitView) << "- creating handle for split item at index" << index - << "from handle component" << m_handle; - - // If we don't use the correct context, it won't be possible to refer to - // the control's id from within the delegate. - QQmlContext *creationContext = m_handle->creationContext(); - // The component might not have been created in QML, in which case - // the creation context will be null and we have to create it ourselves. - if (!creationContext) - creationContext = qmlContext(q); - QQmlContext *context = new QQmlContext(creationContext, q); - context->setContextObject(q); - QQuickItem *handleItem = qobject_cast<QQuickItem*>(m_handle->beginCreate(context)); - if (handleItem) { - qCDebug(qlcQQuickSplitView) << "- successfully created handle item" << handleItem << "for split item at index" << index; - - // Insert the item to our list of items *before* its parent is set to us, - // so that we can avoid it being added as a content item by checking - // if it is in the list in isContent(). - m_handleItems.insert(index, handleItem); - - handleItem->setParentItem(q); - - m_handle->completeCreate(); - resizeHandle(handleItem); - } -} - -void QQuickSplitViewPrivate::removeExcessHandles() -{ - int excess = m_handleItems.size() - qMax(0, contentModel->count() - 1); - qCDebug(qlcQQuickSplitView) << "removing" << excess << "excess handles from the end of our list"; - for (; excess > 0; --excess) { - QQuickItem *handleItem = m_handleItems.takeLast(); - delete handleItem; - } -} - -qreal QQuickSplitViewPrivate::accumulatedSize(int firstIndex, int lastIndex) const -{ - qreal size = 0.0; - const bool horizontal = isHorizontal(); - for (int i = firstIndex; i <= lastIndex; ++i) { - QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->object(i)); - if (item->isVisible()) { - if (i != m_fillIndex) { - size += horizontal ? item->width() : item->height(); - } else { - // If the fill item has a minimum size specified, we must respect it. - const QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>( - qmlAttachedPropertiesObject<QQuickSplitView>(item, false)); - if (attached) { - const QQuickSplitViewAttachedPrivate *attachedPrivate - = QQuickSplitViewAttachedPrivate::get(attached); - if (horizontal && attachedPrivate->m_isMinimumWidthSet) - size += attachedPrivate->m_minimumWidth; - else if (!horizontal && attachedPrivate->m_isMinimumHeightSet) - size += attachedPrivate->m_minimumHeight; - } - } - } - - // Only add the handle's width if there's actually a handle for this split item index. - if (i < lastIndex || lastIndex < contentModel->count() - 1) { - const QQuickItem *handleItem = m_handleItems.at(i); - if (handleItem->isVisible()) - size += horizontal ? handleItem->width() : handleItem->height(); - } - } - return size; -} - -qreal effectiveMinimumWidth(const QQuickSplitViewAttachedPrivate *attachedPrivate) -{ - return attachedPrivate && attachedPrivate->m_isMinimumWidthSet ? attachedPrivate->m_minimumWidth : 0; -} - -qreal effectiveMinimumHeight(const QQuickSplitViewAttachedPrivate *attachedPrivate) -{ - return attachedPrivate && attachedPrivate->m_isMinimumHeightSet ? attachedPrivate->m_minimumHeight : 0; -} - -qreal effectivePreferredWidth(const QQuickSplitViewAttachedPrivate *attachedPrivate, - const QQuickItemPrivate *itemPrivate) -{ - return attachedPrivate && attachedPrivate->m_isPreferredWidthSet - ? attachedPrivate->m_preferredWidth : itemPrivate->implicitWidth; -} - -qreal effectivePreferredHeight(const QQuickSplitViewAttachedPrivate *attachedPrivate, - const QQuickItemPrivate *itemPrivate) -{ - return attachedPrivate && attachedPrivate->m_isPreferredHeightSet - ? attachedPrivate->m_preferredHeight : itemPrivate->implicitHeight; -} - -qreal effectiveMaximumWidth(const QQuickSplitViewAttachedPrivate *attachedPrivate) -{ - return attachedPrivate && attachedPrivate->m_isMaximumWidthSet - ? attachedPrivate->m_maximumWidth : std::numeric_limits<qreal>::infinity(); -} - -qreal effectiveMaximumHeight(const QQuickSplitViewAttachedPrivate *attachedPrivate) -{ - return attachedPrivate && attachedPrivate->m_isMaximumHeightSet - ? attachedPrivate->m_maximumHeight : std::numeric_limits<qreal>::infinity(); -} - -// We don't just take an index, because the item and attached properties object -// will both be used outside of this function by calling code, so save some -// time by not accessing them twice. -QQuickSplitViewPrivate::EffectiveSizeData QQuickSplitViewPrivate::effectiveSizeData( - const QQuickItemPrivate *itemPrivate, const QQuickSplitViewAttached *attached) const -{ - EffectiveSizeData data; - const QQuickSplitViewAttachedPrivate *attachedPrivate = attached ? QQuickSplitViewAttachedPrivate::get(attached) : nullptr; - data.effectiveMinimumWidth = effectiveMinimumWidth(attachedPrivate); - data.effectiveMinimumHeight = effectiveMinimumHeight(attachedPrivate); - data.effectivePreferredWidth = effectivePreferredWidth(attachedPrivate, itemPrivate); - data.effectivePreferredHeight = effectivePreferredHeight(attachedPrivate, itemPrivate); - data.effectiveMaximumWidth = effectiveMaximumWidth(attachedPrivate); - data.effectiveMaximumHeight = effectiveMaximumHeight(attachedPrivate); - return data; -} - -int QQuickSplitViewPrivate::handleIndexForSplitIndex(int splitIndex) const -{ - // If it's the first and only item in the view, it doesn't have a handle, - // so return -1: splitIndex (0) - 1. - // If it's the last item in the view, it doesn't have a handle, so use - // the handle for the previous item. - return splitIndex == contentModel->count() - 1 ? splitIndex - 1 : splitIndex; -} - -void QQuickSplitViewPrivate::destroyHandles() -{ - qCDebug(qlcQQuickSplitView) << "destroying" << m_handleItems.size() << "handles"; - qDeleteAll(m_handleItems); - m_handleItems.clear(); -} - -void QQuickSplitViewPrivate::resizeHandle(QQuickItem *handleItem) -{ - const bool horizontal = isHorizontal(); - handleItem->setWidth(horizontal ? handleItem->implicitWidth() : width); - handleItem->setHeight(horizontal ? height : handleItem->implicitHeight()); -} - -void QQuickSplitViewPrivate::resizeHandles() -{ - for (QQuickItem *handleItem : m_handleItems) - resizeHandle(handleItem); -} - -void QQuickSplitViewPrivate::updateHandleVisibilities() -{ - // If this is the first item that is visible, we won't have any - // handles yet, because we don't create a handle if we only have one item. - if (m_handleItems.isEmpty()) - return; - - // If the visibility/children change makes any item the last (right/bottom-most) - // visible item, we don't want to display a handle for it either: - // [ visible (fill) ] | [ hidden ] | [ hidden ] - // ^ ^ - // hidden hidden - const int count = contentModel->count(); - int lastVisibleItemIndex = -1; - for (int i = count - 1; i >= 0; --i) { - const QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->object(i)); - if (item->isVisible()) { - lastVisibleItemIndex = i; - break; - } - } - - for (int i = 0; i < count - 1; ++i) { - const QQuickItem *item = qobject_cast<QQuickItem*>(contentModel->object(i)); - QQuickItem *handleItem = m_handleItems.at(i); - if (i != lastVisibleItemIndex) - handleItem->setVisible(item->isVisible()); - else - handleItem->setVisible(false); - qCDebug(qlcQQuickSplitView) << "set visible property of handle" << handleItem << "at index" - << i << "to" << handleItem->isVisible(); - } -} - -void QQuickSplitViewPrivate::updateHoveredHandle(QQuickItem *hoveredItem) -{ - Q_Q(QQuickSplitView); - qCDebug(qlcQQuickSplitViewMouse) << "updating hovered handle after" << hoveredItem << "was hovered"; - - const int oldHoveredHandleIndex = m_hoveredHandleIndex; - m_hoveredHandleIndex = m_handleItems.indexOf(hoveredItem); - if (m_hoveredHandleIndex == oldHoveredHandleIndex) - return; - - // First, clear the hovered flag of any previously-hovered handle. - if (oldHoveredHandleIndex != -1) { - QQuickItem *oldHoveredHandle = m_handleItems.at(oldHoveredHandleIndex); - QQuickSplitHandleAttached *oldHoveredHandleAttached = qobject_cast<QQuickSplitHandleAttached*>( - qmlAttachedPropertiesObject<QQuickSplitHandleAttached>(oldHoveredHandle, true)); - QQuickSplitHandleAttachedPrivate::get(oldHoveredHandleAttached)->setHovered(false); - qCDebug(qlcQQuickSplitViewMouse) << "handle item at index" << oldHoveredHandleIndex << "is no longer hovered"; - } - - if (m_hoveredHandleIndex != -1) { - QQuickSplitHandleAttached *handleAttached = qobject_cast<QQuickSplitHandleAttached*>( - qmlAttachedPropertiesObject<QQuickSplitHandleAttached>(hoveredItem, true)); - QQuickSplitHandleAttachedPrivate::get(handleAttached)->setHovered(true); - qCDebug(qlcQQuickSplitViewMouse) << "handle item at index" << m_hoveredHandleIndex << "is now hovered"; - } else { - qCDebug(qlcQQuickSplitViewMouse) << "either there is no hovered item or" << hoveredItem << "is not a handle"; - } - -#if QT_CONFIG(cursor) - if (m_hoveredHandleIndex != -1) - q->setCursor(m_orientation == Qt::Horizontal ? Qt::SplitHCursor : Qt::SplitVCursor); - else - q->setCursor(Qt::ArrowCursor); -#endif -} - -void QQuickSplitViewPrivate::setResizing(bool resizing) -{ - Q_Q(QQuickSplitView); - if (resizing == m_resizing) - return; - - m_resizing = resizing; - emit q->resizingChanged(); -} - -bool QQuickSplitViewPrivate::isHorizontal() const -{ - return m_orientation == Qt::Horizontal; -} - -QQuickItem *QQuickSplitViewPrivate::getContentItem() -{ - Q_Q(QQuickSplitView); - if (QQuickItem *item = QQuickContainerPrivate::getContentItem()) - return item; - - return new QQuickContentItem(q); -} - -void QQuickSplitViewPrivate::handlePress(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickSplitView); - QQuickContainerPrivate::handlePress(point, timestamp); - - QQuickItem *pressedItem = q->childAt(point.x(), point.y()); - const int pressedHandleIndex = m_handleItems.indexOf(pressedItem); - if (pressedHandleIndex != -1) { - m_pressedHandleIndex = pressedHandleIndex; - m_pressPos = point; - m_mousePos = point; - - const QQuickItem *leftOrTopItem = qobject_cast<QQuickItem*>(contentModel->object(m_pressedHandleIndex)); - // Find the first item to the right/bottom of this one that is visible. - QQuickItem *rightOrBottomItem = nullptr; - m_nextVisibleIndexAfterPressedHandle = -1; - for (int i = m_pressedHandleIndex + 1; i < contentModel->count(); ++i) { - auto nextItem = qobject_cast<QQuickItem*>(contentModel->object(i)); - if (nextItem->isVisible()) { - rightOrBottomItem = nextItem; - m_nextVisibleIndexAfterPressedHandle = i; - break; - } - } - Q_ASSERT_X(rightOrBottomItem, Q_FUNC_INFO, qPrintable(QString::fromLatin1( - "Failed to find a visible item to the right/bottom of the one that was pressed at index %1; this shouldn't happen") - .arg(m_pressedHandleIndex))); - - const bool isHorizontal = m_orientation == Qt::Horizontal; - m_leftOrTopItemSizeBeforePress = isHorizontal ? leftOrTopItem->width() : leftOrTopItem->height(); - m_rightOrBottomItemSizeBeforePress = isHorizontal ? rightOrBottomItem->width() : rightOrBottomItem->height(); - m_handlePosBeforePress = pressedItem->position(); - - // Avoid e.g. Flickable stealing our drag if we're inside it. - q->setKeepMouseGrab(true); - - // Force the attached object to be created since we rely on it. - QQuickSplitHandleAttached *handleAttached = qobject_cast<QQuickSplitHandleAttached*>( - qmlAttachedPropertiesObject<QQuickSplitHandleAttached>(pressedItem, true)); - QQuickSplitHandleAttachedPrivate::get(handleAttached)->setPressed(true); - - setResizing(true); - - qCDebug(qlcQQuickSplitViewMouse).nospace() << "handled press -" - << " left/top index=" << m_pressedHandleIndex << "," - << " size before press=" << m_leftOrTopItemSizeBeforePress << "," - << " item=" << leftOrTopItem - << " right/bottom index=" << m_nextVisibleIndexAfterPressedHandle << "," - << " size before press=" << m_rightOrBottomItemSizeBeforePress - << " item=" << rightOrBottomItem; - } -} - -void QQuickSplitViewPrivate::handleMove(const QPointF &point, ulong timestamp) -{ - QQuickContainerPrivate::handleMove(point, timestamp); - - if (m_pressedHandleIndex != -1) { - m_mousePos = point; - // Don't request layouts for input events because we want - // resizing to be as responsive and smooth as possible. - updatePolish(); - } -} - -void QQuickSplitViewPrivate::handleRelease(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickSplitView); - QQuickContainerPrivate::handleRelease(point, timestamp); - - if (m_pressedHandleIndex != -1) { - QQuickItem *pressedHandle = m_handleItems.at(m_pressedHandleIndex); - QQuickSplitHandleAttached *handleAttached = qobject_cast<QQuickSplitHandleAttached*>( - qmlAttachedPropertiesObject<QQuickSplitHandleAttached>(pressedHandle, true)); - QQuickSplitHandleAttachedPrivate::get(handleAttached)->setPressed(false); - } - - setResizing(false); - - m_pressedHandleIndex = -1; - m_pressPos = QPointF(); - m_mousePos = QPointF(); - m_handlePosBeforePress = QPointF(); - m_leftOrTopItemSizeBeforePress = 0.0; - m_rightOrBottomItemSizeBeforePress = 0.0; - q->setKeepMouseGrab(false); -} - -void QQuickSplitViewPrivate::itemVisibilityChanged(QQuickItem *item) -{ - const int itemIndex = contentModel->indexOf(item, nullptr); - Q_ASSERT(itemIndex != -1); - - qCDebug(qlcQQuickSplitView) << "visible property of split item" - << item << "at index" << itemIndex << "changed to" << item->isVisible(); - - // The visibility of an item just changed, so we need to update the visibility - // of the corresponding handle (if one exists). - - const int handleIndex = handleIndexForSplitIndex(itemIndex); - if (handleIndex != -1) { - QQuickItem *handleItem = m_handleItems.at(handleIndex); - handleItem->setVisible(item->isVisible()); - - qCDebug(qlcQQuickSplitView) << "set visible property of handle item" - << handleItem << "at index" << handleIndex << "to" << item->isVisible(); - } - - updateHandleVisibilities(); - updateFillIndex(); - requestLayout(); -} - -void QQuickSplitViewPrivate::itemImplicitWidthChanged(QQuickItem *) -{ - requestLayout(); -} - -void QQuickSplitViewPrivate::itemImplicitHeightChanged(QQuickItem *) -{ - requestLayout(); -} - -void QQuickSplitViewPrivate::updatePolish() -{ - layout(); -} - -QQuickSplitViewPrivate *QQuickSplitViewPrivate::get(QQuickSplitView *splitView) -{ - return splitView->d_func(); -} - -QQuickSplitView::QQuickSplitView(QQuickItem *parent) - : QQuickContainer(*(new QQuickSplitViewPrivate), parent) -{ - Q_D(QQuickSplitView); - d->changeTypes |= QQuickItemPrivate::Visibility; - - setAcceptedMouseButtons(Qt::LeftButton); - setFiltersChildMouseEvents(true); -} - -QQuickSplitView::QQuickSplitView(QQuickSplitViewPrivate &dd, QQuickItem *parent) - : QQuickContainer(dd, parent) -{ - Q_D(QQuickSplitView); - d->changeTypes |= QQuickItemPrivate::Visibility; - - setAcceptedMouseButtons(Qt::LeftButton); - setFiltersChildMouseEvents(true); -} - -QQuickSplitView::~QQuickSplitView() -{ - Q_D(QQuickSplitView); - for (int i = 0; i < d->contentModel->count(); ++i) { - QQuickItem *item = qobject_cast<QQuickItem*>(d->contentModel->object(i)); - d->removeImplicitSizeListener(item); - } -} - -/*! - \qmlproperty enumeration QtQuick.Controls::SplitView::orientation - - This property holds the orientation of the SplitView. - - The orientation determines how the split items are laid out: - - Possible values: - \value Qt.Horizontal The items are laid out horizontally (default). - \value Qt.Vertical The items are laid out vertically. -*/ -Qt::Orientation QQuickSplitView::orientation() const -{ - Q_D(const QQuickSplitView); - return d->m_orientation; -} - -void QQuickSplitView::setOrientation(Qt::Orientation orientation) -{ - Q_D(QQuickSplitView); - if (orientation == d->m_orientation) - return; - - d->m_orientation = orientation; - d->resizeHandles(); - d->requestLayout(); - emit orientationChanged(); -} - -/*! - \qmlproperty bool QtQuick.Controls::SplitView::resizing - \readonly - - This property is \c true when the user is resizing - split items by dragging on the splitter handles. -*/ -bool QQuickSplitView::isResizing() const -{ - Q_D(const QQuickSplitView); - return d->m_resizing; -} - -/*! - \qmlproperty Component QtQuick.Controls::SplitView::handle - - This property holds the handle component. - - An instance of this component will be instantiated \c {count - 1} - times, as long as \c count is greater than than \c {1}. - - The following table explains how each handle will be resized - depending on the orientation of the split view: - - \table - \header - \li Orientation - \li Handle Width - \li Handle Height - \row - \li \c Qt.Horizontal - \li \c implicitWidth - \li The \c height of the SplitView. - \row - \li \c Qt.Vertical - \li The \c width of the SplitView. - \li \c implicitHeight - \endtable - - To change the size of the handle for mouse and touch events without - changing its visual size, use a \l {Item::}{containmentMask}: - - \snippet qtquickcontrols2-splitview-handle-containmentmask.qml 1 - - \sa {Customizing SplitView} -*/ -QQmlComponent *QQuickSplitView::handle() -{ - Q_D(const QQuickSplitView); - return d->m_handle; -} - -void QQuickSplitView::setHandle(QQmlComponent *handle) -{ - Q_D(QQuickSplitView); - if (handle == d->m_handle) - return; - - qCDebug(qlcQQuickSplitView) << "setting handle" << handle; - - if (d->m_handle) - d->destroyHandles(); - - d->m_handle = handle; - - if (d->m_handle) { - d->createHandles(); - d->updateHandleVisibilities(); - } - - d->requestLayout(); - - emit handleChanged(); -} - -bool QQuickSplitView::isContent(QQuickItem *item) const -{ - Q_D(const QQuickSplitView); - if (!qmlContext(item)) - return false; - - if (QQuickItemPrivate::get(item)->isTransparentForPositioner()) - return false; - - return !d->m_handleItems.contains(item); -} - -QQuickSplitViewAttached *QQuickSplitView::qmlAttachedProperties(QObject *object) -{ - return new QQuickSplitViewAttached(object); -} - -/*! - \qmlmethod var QtQuick.Controls::SplitView::saveState() - - Saves the preferred sizes of split items into a byte array and returns it. - - \sa {Serializing SplitView's State}, restoreState() -*/ -QVariant QQuickSplitView::saveState() -{ - Q_D(QQuickSplitView); - qCDebug(qlcQQuickSplitViewState) << "saving state for split items in" << this; - - // Save the preferred sizes of each split item. - QCborArray cborArray; - for (int i = 0; i < d->contentModel->count(); ++i) { - const QQuickItem *item = qobject_cast<QQuickItem*>(d->contentModel->object(i)); - const QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>( - qmlAttachedPropertiesObject<QQuickSplitView>(item, false)); - // Don't serialise stuff if we don't need to. If a split item was given a preferred - // size in QML or it was dragged, it will have an attached object and either - // m_isPreferredWidthSet or m_isPreferredHeightSet (or both) will be true, - // so items without these can be skipped. We write the index of each item - // that has data so that we know which item to set it on when restoring. - if (!attached) - continue; - - const QQuickSplitViewAttachedPrivate *attachedPrivate = QQuickSplitViewAttachedPrivate::get(attached); - if (!attachedPrivate->m_isPreferredWidthSet && !attachedPrivate->m_isPreferredHeightSet) - continue; - - QCborMap cborMap; - cborMap[QLatin1String("index")] = i; - if (attachedPrivate->m_isPreferredWidthSet) { - cborMap[QLatin1String("preferredWidth")] = static_cast<double>(attachedPrivate->m_preferredWidth); - - qCDebug(qlcQQuickSplitViewState).nospace() << "- wrote preferredWidth of " - << attachedPrivate->m_preferredWidth << " for split item " << item << " at index " << i; - } - if (attachedPrivate->m_isPreferredHeightSet) { - cborMap[QLatin1String("preferredHeight")] = static_cast<double>(attachedPrivate->m_preferredHeight); - - qCDebug(qlcQQuickSplitViewState).nospace() << "- wrote preferredHeight of " - << attachedPrivate->m_preferredHeight << " for split item " << item << " at index " << i; - } - - cborArray.append(cborMap); - } - - const QByteArray byteArray = cborArray.toCborValue().toCbor(); - qCDebug(qlcQQuickSplitViewState) << "the resulting byte array is:" << byteArray; - return QVariant(byteArray); -} - -/*! - \qmlmethod bool QtQuick.Controls::SplitView::restoreState(state) - - Reads the preferred sizes from \a state and applies them to the split items. - - Returns \c true if the state was successfully restored, otherwise \c false. - - \sa {Serializing SplitView's State}, saveState() -*/ -bool QQuickSplitView::restoreState(const QVariant &state) -{ - const QByteArray cborByteArray = state.toByteArray(); - Q_D(QQuickSplitView); - if (cborByteArray.isEmpty()) - return false; - - QCborParserError parserError; - const QCborValue cborValue(QCborValue::fromCbor(cborByteArray, &parserError)); - if (parserError.error != QCborError::NoError) { - qmlWarning(this) << "Error reading SplitView state:" << parserError.errorString(); - return false; - } - - qCDebug(qlcQQuickSplitViewState) << "restoring state for split items of" << this - << "from the following string:" << state; - - const QCborArray cborArray(cborValue.toArray()); - const int ourCount = d->contentModel->count(); - // This could conceivably happen if items were removed from the SplitView since the state was last saved. - if (cborArray.size() > ourCount) { - qmlWarning(this) << "Error reading SplitView state: expected " - << ourCount << " or less split items but got " << cborArray.size(); - return false; - } - - for (auto it = cborArray.constBegin(); it != cborArray.constEnd(); ++it) { - QCborMap cborMap(it->toMap()); - const int splitItemIndex = cborMap.value(QLatin1String("index")).toInteger(); - const bool isPreferredWidthSet = cborMap.contains(QLatin1String("preferredWidth")); - const bool isPreferredHeightSet = cborMap.contains(QLatin1String("preferredHeight")); - - QQuickItem *item = qobject_cast<QQuickItem*>(d->contentModel->object(splitItemIndex)); - // If the split item does not have a preferred size specified in QML, it could still have - // been resized via dragging before it was saved. In this case, it won't have an - // attached object upon application startup, so we create it. - QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>( - qmlAttachedPropertiesObject<QQuickSplitView>(item, true)); - if (isPreferredWidthSet) { - const qreal preferredWidth = cborMap.value(QLatin1String("preferredWidth")).toDouble(); - attached->setPreferredWidth(preferredWidth); - } - if (isPreferredHeightSet) { - const qreal preferredHeight = cborMap.value(QLatin1String("preferredHeight")).toDouble(); - attached->setPreferredHeight(preferredHeight); - } - - const QQuickSplitViewAttachedPrivate *attachedPrivate = QQuickSplitViewAttachedPrivate::get(attached); - qCDebug(qlcQQuickSplitViewState).nospace() - << "- restored the following state for split item " << item << " at index " << splitItemIndex - << ": preferredWidthSet=" << attachedPrivate->m_isPreferredWidthSet - << " preferredWidth=" << attachedPrivate->m_preferredWidth - << " preferredHeightSet=" << attachedPrivate->m_isPreferredHeightSet - << " preferredHeight=" << attachedPrivate->m_preferredHeight; - } - - return true; -} - -void QQuickSplitView::componentComplete() -{ - Q_D(QQuickSplitView); - QQuickControl::componentComplete(); - d->resizeHandles(); - d->updateFillIndex(); - d->updatePolish(); -} - -void QQuickSplitView::hoverMoveEvent(QHoverEvent *event) -{ - Q_D(QQuickSplitView); - QQuickContainer::hoverMoveEvent(event); - - QQuickItem *hoveredItem = childAt(event->position().toPoint().x(), event->position().toPoint().y()); - d->updateHoveredHandle(hoveredItem); -} - -bool QQuickSplitView::childMouseEventFilter(QQuickItem *item, QEvent *event) -{ - Q_D(QQuickSplitView); - qCDebug(qlcQQuickSplitViewMouse) << "childMouseEventFilter called with" << item << event; - if (event->type() != QEvent::HoverEnter) - return false; - - // If a child item received a hover enter event, then it means our handle is no longer hovered. - // Handles should be purely visual and not accept hover events, - // so we should never get hover events for them here. - d->updateHoveredHandle(nullptr); - return false; -} - -void QQuickSplitView::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickSplitView); - QQuickControl::geometryChange(newGeometry, oldGeometry); - d->resizeHandles(); - d->requestLayout(); -} - -void QQuickSplitView::itemAdded(int index, QQuickItem *item) -{ - Q_D(QQuickSplitView); - if (QQuickItemPrivate::get(item)->isTransparentForPositioner()) - return; - - const int count = d->contentModel->count(); - qCDebug(qlcQQuickSplitView).nospace() << "split item " << item << " added at index " << index - << "; there are now " << count << " items"; - - QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>( - qmlAttachedPropertiesObject<QQuickSplitView>(item, false)); - if (attached) - QQuickSplitViewAttachedPrivate::get(attached)->setView(this); - - // Only need to add handles if we have more than one split item. - if (count > 1) { - // If the item was added at the end, it shouldn't get a handle; - // the handle always goes to the split item on the left. - d->createHandleItem(index < count - 1 ? index : index - 1); - } - - d->addImplicitSizeListener(item); - - d->updateHandleVisibilities(); - d->updateFillIndex(); - d->requestLayout(); -} - -void QQuickSplitView::itemMoved(int index, QQuickItem *item) -{ - Q_D(QQuickSplitView); - if (QQuickItemPrivate::get(item)->isTransparentForPositioner()) - return; - - qCDebug(qlcQQuickSplitView) << "split item" << item << "moved to index" << index; - - d->updateHandleVisibilities(); - d->updateFillIndex(); - d->requestLayout(); -} - -void QQuickSplitView::itemRemoved(int index, QQuickItem *item) -{ - Q_D(QQuickSplitView); - if (QQuickItemPrivate::get(item)->isTransparentForPositioner()) - return; - - qCDebug(qlcQQuickSplitView).nospace() << "split item " << item << " removed from index " << index - << "; there are now " << d->contentModel->count() << " items"; - - // Clear hovered/pressed handle if there are any. - if (d->m_hoveredHandleIndex != -1 || d->m_pressedHandleIndex != -1) { - const int handleIndex = d->m_hoveredHandleIndex != -1 ? d->m_hoveredHandleIndex : d->m_pressedHandleIndex; - QQuickItem *itemHandle = d->m_handleItems.at(handleIndex); - QQuickSplitHandleAttached *handleAttached = qobject_cast<QQuickSplitHandleAttached*>( - qmlAttachedPropertiesObject<QQuickSplitHandleAttached>(itemHandle, false)); - if (handleAttached) { - auto handleAttachedPrivate = QQuickSplitHandleAttachedPrivate::get(handleAttached); - handleAttachedPrivate->setHovered(false); - handleAttachedPrivate->setPressed(false); - } - - setKeepMouseGrab(false); - d->m_hoveredHandleIndex = -1; - d->m_pressedHandleIndex = -1; - } - - // Unset any attached properties since the item is no longer owned by us. - QQuickSplitViewAttached *attached = qobject_cast<QQuickSplitViewAttached*>( - qmlAttachedPropertiesObject<QQuickSplitView>(item, false)); - if (attached) - QQuickSplitViewAttachedPrivate::get(attached)->setView(this); - - d->removeImplicitSizeListener(item); - - d->removeExcessHandles(); - d->updateHandleVisibilities(); - d->updateFillIndex(); - d->requestLayout(); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickSplitView::accessibleRole() const -{ - return QAccessible::Pane; -} -#endif - -QQuickSplitViewAttached::QQuickSplitViewAttached(QObject *parent) - : QObject(*(new QQuickSplitViewAttachedPrivate), parent) -{ - Q_D(QQuickSplitViewAttached); - QQuickItem *item = qobject_cast<QQuickItem *>(parent); - if (!item) { - qmlWarning(parent) << "SplitView: attached properties can only be used on Items"; - return; - } - - if (QQuickItemPrivate::get(item)->isTransparentForPositioner()) - return; - - d->m_splitItem = item; - - // Child items get added to SplitView's contentItem, so we have to ensure - // that exists first before trying to set m_splitView. - // Apparently, in some cases it's normal for the parent item - // to not exist until shortly after this constructor has run. - if (!item->parentItem()) - return; - - // This will get hit when attached SplitView properties are imperatively set - // on an item that previously had none set, for example. - QQuickSplitView *splitView = qobject_cast<QQuickSplitView*>(item->parentItem()->parentItem()); - if (!splitView) { - qmlWarning(parent) << "SplitView: attached properties must be accessed through a direct child of SplitView"; - return; - } - - d->setView(splitView); -} - -/*! - \qmlattachedproperty SplitView QtQuick.Controls::SplitView::view - - This attached property holds the split view of the item it is - attached to, or \c null if the item is not in a split view. -*/ -QQuickSplitView *QQuickSplitViewAttached::view() const -{ - Q_D(const QQuickSplitViewAttached); - return d->m_splitView; -} - -/*! - \qmlattachedproperty real QtQuick.Controls::SplitView::minimumWidth - - This attached property controls the minimum width of the split item. - The \l preferredWidth is bound within the \l minimumWidth and - \l maximumWidth. A split item cannot be dragged to be smaller than - its \c minimumWidth. - - The default value is \c 0. To reset this property to its default value, - set it to \c undefined. - - \sa maximumWidth, preferredWidth, fillWidth, minimumHeight -*/ -qreal QQuickSplitViewAttached::minimumWidth() const -{ - Q_D(const QQuickSplitViewAttached); - return d->m_minimumWidth; -} - -void QQuickSplitViewAttached::setMinimumWidth(qreal width) -{ - Q_D(QQuickSplitViewAttached); - d->m_isMinimumWidthSet = true; - if (qFuzzyCompare(width, d->m_minimumWidth)) - return; - - d->m_minimumWidth = width; - d->requestLayoutView(); - emit minimumWidthChanged(); -} - -void QQuickSplitViewAttached::resetMinimumWidth() -{ - Q_D(QQuickSplitViewAttached); - const qreal oldEffectiveMinimumWidth = effectiveMinimumWidth(d); - - d->m_isMinimumWidthSet = false; - d->m_minimumWidth = -1; - - const qreal newEffectiveMinimumWidth = effectiveMinimumWidth(d); - if (qFuzzyCompare(newEffectiveMinimumWidth, oldEffectiveMinimumWidth)) - return; - - d->requestLayoutView(); - emit minimumWidthChanged(); -} - -/*! - \qmlattachedproperty real QtQuick.Controls::SplitView::minimumHeight - - This attached property controls the minimum height of the split item. - The \l preferredHeight is bound within the \l minimumHeight and - \l maximumHeight. A split item cannot be dragged to be smaller than - its \c minimumHeight. - - The default value is \c 0. To reset this property to its default value, - set it to \c undefined. - - \sa maximumHeight, preferredHeight, fillHeight, minimumWidth -*/ -qreal QQuickSplitViewAttached::minimumHeight() const -{ - Q_D(const QQuickSplitViewAttached); - return d->m_minimumHeight; -} - -void QQuickSplitViewAttached::setMinimumHeight(qreal height) -{ - Q_D(QQuickSplitViewAttached); - d->m_isMinimumHeightSet = true; - if (qFuzzyCompare(height, d->m_minimumHeight)) - return; - - d->m_minimumHeight = height; - d->requestLayoutView(); - emit minimumHeightChanged(); -} - -void QQuickSplitViewAttached::resetMinimumHeight() -{ - Q_D(QQuickSplitViewAttached); - const qreal oldEffectiveMinimumHeight = effectiveMinimumHeight(d); - - d->m_isMinimumHeightSet = false; - d->m_minimumHeight = -1; - - const qreal newEffectiveMinimumHeight = effectiveMinimumHeight(d); - if (qFuzzyCompare(newEffectiveMinimumHeight, oldEffectiveMinimumHeight)) - return; - - d->requestLayoutView(); - emit minimumHeightChanged(); -} - -/*! - \qmlattachedproperty real QtQuick.Controls::SplitView::preferredWidth - - This attached property controls the preferred width of the split item. The - preferred width will be used as the size of the item, and will be bound - within the \l minimumWidth and \l maximumWidth. If the preferred width - is not set, the item's \l {Item::}{implicitWidth} will be used. - - When a split item is resized, the preferredWidth will be set in order - to keep track of the new size. - - By default, this property is not set, and therefore - \l {Item::}{implicitWidth} will be used instead. To reset this property to - its default value, set it to \c undefined. - - \note Do not set the \l{Item::}{width} property of a split item, as it will be - overwritten upon each layout of the SplitView. - - \sa minimumWidth, maximumWidth, fillWidth, preferredHeight -*/ -qreal QQuickSplitViewAttached::preferredWidth() const -{ - Q_D(const QQuickSplitViewAttached); - return d->m_preferredWidth; -} - -void QQuickSplitViewAttached::setPreferredWidth(qreal width) -{ - Q_D(QQuickSplitViewAttached); - d->m_isPreferredWidthSet = true; - // Make sure that we clear this flag now, before we emit the change signals - // which could cause another setter to be called. - auto splitViewPrivate = d->m_splitView ? QQuickSplitViewPrivate::get(d->m_splitView) : nullptr; - const bool ignoreNextLayoutRequest = splitViewPrivate && splitViewPrivate->m_ignoreNextLayoutRequest; - if (splitViewPrivate) - splitViewPrivate->m_ignoreNextLayoutRequest = false; - - if (qFuzzyCompare(width, d->m_preferredWidth)) - return; - - d->m_preferredWidth = width; - - if (!ignoreNextLayoutRequest) { - // We are currently in the middle of performing a layout, and the user (not our internal code) - // changed the preferred width of one of the split items, so request another layout. - d->requestLayoutView(); - } - - emit preferredWidthChanged(); -} - -void QQuickSplitViewAttached::resetPreferredWidth() -{ - Q_D(QQuickSplitViewAttached); - const qreal oldEffectivePreferredWidth = effectivePreferredWidth( - d, QQuickItemPrivate::get(d->m_splitItem)); - - d->m_isPreferredWidthSet = false; - d->m_preferredWidth = -1; - - const qreal newEffectivePreferredWidth = effectivePreferredWidth( - d, QQuickItemPrivate::get(d->m_splitItem)); - if (qFuzzyCompare(newEffectivePreferredWidth, oldEffectivePreferredWidth)) - return; - - d->requestLayoutView(); - emit preferredWidthChanged(); -} - -/*! - \qmlattachedproperty real QtQuick.Controls::SplitView::preferredHeight - - This attached property controls the preferred height of the split item. The - preferred height will be used as the size of the item, and will be bound - within the \l minimumHeight and \l maximumHeight. If the preferred height - is not set, the item's \l{Item::}{implicitHeight} will be used. - - When a split item is resized, the preferredHeight will be set in order - to keep track of the new size. - - By default, this property is not set, and therefore - \l{Item::}{implicitHeight} will be used instead. To reset this property to - its default value, set it to \c undefined. - - \note Do not set the \l{Item::}{height} property of a split item, as it will be - overwritten upon each layout of the SplitView. - - \sa minimumHeight, maximumHeight, fillHeight, preferredWidth -*/ -qreal QQuickSplitViewAttached::preferredHeight() const -{ - Q_D(const QQuickSplitViewAttached); - return d->m_preferredHeight; -} - -void QQuickSplitViewAttached::setPreferredHeight(qreal height) -{ - Q_D(QQuickSplitViewAttached); - d->m_isPreferredHeightSet = true; - // Make sure that we clear this flag now, before we emit the change signals - // which could cause another setter to be called. - auto splitViewPrivate = d->m_splitView ? QQuickSplitViewPrivate::get(d->m_splitView) : nullptr; - const bool ignoreNextLayoutRequest = splitViewPrivate && splitViewPrivate->m_ignoreNextLayoutRequest; - if (splitViewPrivate) - splitViewPrivate->m_ignoreNextLayoutRequest = false; - - if (qFuzzyCompare(height, d->m_preferredHeight)) - return; - - d->m_preferredHeight = height; - - if (!ignoreNextLayoutRequest) { - // We are currently in the middle of performing a layout, and the user (not our internal code) - // changed the preferred height of one of the split items, so request another layout. - d->requestLayoutView(); - } - - emit preferredHeightChanged(); -} - -void QQuickSplitViewAttached::resetPreferredHeight() -{ - Q_D(QQuickSplitViewAttached); - const qreal oldEffectivePreferredHeight = effectivePreferredHeight( - d, QQuickItemPrivate::get(d->m_splitItem)); - - d->m_isPreferredHeightSet = false; - d->m_preferredHeight = -1; - - const qreal newEffectivePreferredHeight = effectivePreferredHeight( - d, QQuickItemPrivate::get(d->m_splitItem)); - if (qFuzzyCompare(newEffectivePreferredHeight, oldEffectivePreferredHeight)) - return; - - d->requestLayoutView(); - emit preferredHeightChanged(); -} - -/*! - \qmlattachedproperty real QtQuick.Controls::SplitView::maximumWidth - - This attached property controls the maximum width of the split item. - The \l preferredWidth is bound within the \l minimumWidth and - \l maximumWidth. A split item cannot be dragged to be larger than - its \c maximumWidth. - - The default value is \c Infinity. To reset this property to its default - value, set it to \c undefined. - - \sa minimumWidth, preferredWidth, fillWidth, maximumHeight -*/ -qreal QQuickSplitViewAttached::maximumWidth() const -{ - Q_D(const QQuickSplitViewAttached); - return d->m_maximumWidth; -} - -void QQuickSplitViewAttached::setMaximumWidth(qreal width) -{ - Q_D(QQuickSplitViewAttached); - d->m_isMaximumWidthSet = true; - if (qFuzzyCompare(width, d->m_maximumWidth)) - return; - - d->m_maximumWidth = width; - d->requestLayoutView(); - emit maximumWidthChanged(); -} - -void QQuickSplitViewAttached::resetMaximumWidth() -{ - Q_D(QQuickSplitViewAttached); - const qreal oldEffectiveMaximumWidth = effectiveMaximumWidth(d); - - d->m_isMaximumWidthSet = false; - d->m_maximumWidth = -1; - - const qreal newEffectiveMaximumWidth = effectiveMaximumWidth(d); - if (qFuzzyCompare(newEffectiveMaximumWidth, oldEffectiveMaximumWidth)) - return; - - d->requestLayoutView(); - emit maximumWidthChanged(); -} - -/*! - \qmlattachedproperty real QtQuick.Controls::SplitView::maximumHeight - - This attached property controls the maximum height of the split item. - The \l preferredHeight is bound within the \l minimumHeight and - \l maximumHeight. A split item cannot be dragged to be larger than - its \c maximumHeight. - - The default value is \c Infinity. To reset this property to its default - value, set it to \c undefined. - - \sa minimumHeight, preferredHeight, fillHeight, maximumWidth -*/ -qreal QQuickSplitViewAttached::maximumHeight() const -{ - Q_D(const QQuickSplitViewAttached); - return d->m_maximumHeight; -} - -void QQuickSplitViewAttached::setMaximumHeight(qreal height) -{ - Q_D(QQuickSplitViewAttached); - d->m_isMaximumHeightSet = true; - if (qFuzzyCompare(height, d->m_maximumHeight)) - return; - - d->m_maximumHeight = height; - d->requestLayoutView(); - emit maximumHeightChanged(); -} - -void QQuickSplitViewAttached::resetMaximumHeight() -{ - Q_D(QQuickSplitViewAttached); - const qreal oldEffectiveMaximumHeight = effectiveMaximumHeight(d); - - d->m_isMaximumHeightSet = false; - d->m_maximumHeight = -1; - - const qreal newEffectiveMaximumHeight = effectiveMaximumHeight(d); - if (qFuzzyCompare(newEffectiveMaximumHeight, oldEffectiveMaximumHeight)) - return; - - d->requestLayoutView(); - emit maximumHeightChanged(); -} - -/*! - \qmlattachedproperty bool QtQuick.Controls::SplitView::fillWidth - - This attached property controls whether the item takes the remaining space - in the split view after all other items have been laid out. - - By default, the last visible child of the split view will have this set, - but it can be changed by explicitly setting \c fillWidth to \c true on - another item. - - The width of a split item with \c fillWidth set to \c true is still - restricted within its \l minimumWidth and \l maximumWidth. - - \sa minimumWidth, preferredWidth, maximumWidth, fillHeight -*/ -bool QQuickSplitViewAttached::fillWidth() const -{ - Q_D(const QQuickSplitViewAttached); - return d->m_fillWidth; -} - -void QQuickSplitViewAttached::setFillWidth(bool fill) -{ - Q_D(QQuickSplitViewAttached); - d->m_isFillWidthSet = true; - if (fill == d->m_fillWidth) - return; - - d->m_fillWidth = fill; - if (d->m_splitView && d->m_splitView->orientation() == Qt::Horizontal) - QQuickSplitViewPrivate::get(d->m_splitView)->updateFillIndex(); - d->requestLayoutView(); - emit fillWidthChanged(); -} - -/*! - \qmlattachedproperty bool QtQuick.Controls::SplitView::fillHeight - - This attached property controls whether the item takes the remaining space - in the split view after all other items have been laid out. - - By default, the last visible child of the split view will have this set, - but it can be changed by explicitly setting \c fillHeight to \c true on - another item. - - The height of a split item with \c fillHeight set to \c true is still - restricted within its \l minimumHeight and \l maximumHeight. - - \sa minimumHeight, preferredHeight, maximumHeight, fillWidth -*/ -bool QQuickSplitViewAttached::fillHeight() const -{ - Q_D(const QQuickSplitViewAttached); - return d->m_fillHeight; -} - -void QQuickSplitViewAttached::setFillHeight(bool fill) -{ - Q_D(QQuickSplitViewAttached); - d->m_isFillHeightSet = true; - if (fill == d->m_fillHeight) - return; - - d->m_fillHeight = fill; - if (d->m_splitView && d->m_splitView->orientation() == Qt::Vertical) - QQuickSplitViewPrivate::get(d->m_splitView)->updateFillIndex(); - d->requestLayoutView(); - emit fillHeightChanged(); -} - -QQuickSplitViewAttachedPrivate::QQuickSplitViewAttachedPrivate() - : m_fillWidth(false) - , m_fillHeight(false) - , m_isFillWidthSet(false) - , m_isFillHeightSet(false) - , m_isMinimumWidthSet(false) - , m_isMinimumHeightSet(false) - , m_isPreferredWidthSet(false) - , m_isPreferredHeightSet(false) - , m_isMaximumWidthSet(false) - , m_isMaximumHeightSet(false) - , m_minimumWidth(0) - , m_minimumHeight(0) - , m_preferredWidth(-1) - , m_preferredHeight(-1) - , m_maximumWidth(std::numeric_limits<qreal>::infinity()) - , m_maximumHeight(std::numeric_limits<qreal>::infinity()) -{ -} - -void QQuickSplitViewAttachedPrivate::setView(QQuickSplitView *newView) -{ - Q_Q(QQuickSplitViewAttached); - if (newView == m_splitView) - return; - - m_splitView = newView; - qCDebug(qlcQQuickSplitView) << "set SplitView" << newView << "on attached object" << this; - emit q->viewChanged(); -} - -void QQuickSplitViewAttachedPrivate::requestLayoutView() -{ - if (m_splitView) - QQuickSplitViewPrivate::get(m_splitView)->requestLayout(); -} - -QQuickSplitViewAttachedPrivate *QQuickSplitViewAttachedPrivate::get(QQuickSplitViewAttached *attached) -{ - return attached->d_func(); -} - -const QQuickSplitViewAttachedPrivate *QQuickSplitViewAttachedPrivate::get(const QQuickSplitViewAttached *attached) -{ - return attached->d_func(); -} - -QQuickSplitHandleAttachedPrivate::QQuickSplitHandleAttachedPrivate() - : m_hovered(false) - , m_pressed(false) -{ -} - -void QQuickSplitHandleAttachedPrivate::setHovered(bool hovered) -{ - Q_Q(QQuickSplitHandleAttached); - if (hovered == m_hovered) - return; - - m_hovered = hovered; - emit q->hoveredChanged(); -} - -void QQuickSplitHandleAttachedPrivate::setPressed(bool pressed) -{ - Q_Q(QQuickSplitHandleAttached); - if (pressed == m_pressed) - return; - - m_pressed = pressed; - emit q->pressedChanged(); -} - -QQuickSplitHandleAttachedPrivate *QQuickSplitHandleAttachedPrivate::get(QQuickSplitHandleAttached *attached) -{ - return attached->d_func(); -} - -const QQuickSplitHandleAttachedPrivate *QQuickSplitHandleAttachedPrivate::get(const QQuickSplitHandleAttached *attached) -{ - return attached->d_func(); -} - -QQuickSplitHandleAttached::QQuickSplitHandleAttached(QObject *parent) - : QObject(*(new QQuickSplitHandleAttachedPrivate), parent) -{ -} - -/*! - \qmltype SplitHandle - \inherits QtObject -//! \instantiates QQuickSplitHandleAttached - \inqmlmodule QtQuick.Controls - \since 5.13 - \brief Provides attached properties for SplitView handles. - - SplitHandle provides attached properties for \l SplitView handles. - - For split items themselves, use the attached \l SplitView properties. - - \sa SplitView -*/ - -/*! - \qmlattachedproperty bool QtQuick.Controls::SplitHandle::hovered - - This attached property holds whether the split handle is hovered. - - \sa pressed -*/ -bool QQuickSplitHandleAttached::isHovered() const -{ - Q_D(const QQuickSplitHandleAttached); - return d->m_hovered; -} - -/*! - \qmlattachedproperty bool QtQuick.Controls::SplitHandle::pressed - - This attached property holds whether the split handle is pressed. - - \sa hovered -*/ -bool QQuickSplitHandleAttached::isPressed() const -{ - Q_D(const QQuickSplitHandleAttached); - return d->m_pressed; -} - -QQuickSplitHandleAttached *QQuickSplitHandleAttached::qmlAttachedProperties(QObject *object) -{ - return new QQuickSplitHandleAttached(object); -} - -QT_END_NAMESPACE - -#include "moc_qquicksplitview_p.cpp" diff --git a/src/quicktemplates2/qquicksplitview_p.h b/src/quicktemplates2/qquicksplitview_p.h deleted file mode 100644 index 55b45ed8..00000000 --- a/src/quicktemplates2/qquicksplitview_p.h +++ /dev/null @@ -1,226 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSPLITVIEW_P_H -#define QQUICKSPLITVIEW_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontainer_p.h> -#include <QtQml/qqmllist.h> - -QT_BEGIN_NAMESPACE - -class QQuickSplitViewPrivate; -class QQuickSplitViewAttached; -class QQuickSplitViewAttachedPrivate; -class QQuickSplitHandleAttached; -class QQuickSplitHandleAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSplitView : public QQuickContainer -{ - Q_OBJECT - Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged FINAL) - Q_PROPERTY(bool resizing READ isResizing NOTIFY resizingChanged) - Q_PROPERTY(QQmlComponent *handle READ handle WRITE setHandle NOTIFY handleChanged FINAL) - QML_NAMED_ELEMENT(SplitView) - QML_ATTACHED(QQuickSplitViewAttached) - QML_ADDED_IN_VERSION(2, 13) - -public: - explicit QQuickSplitView(QQuickItem *parent = nullptr); - ~QQuickSplitView() override; - - Qt::Orientation orientation() const; - void setOrientation(Qt::Orientation orientation); - - bool isResizing() const; - - QQmlComponent *handle(); - void setHandle(QQmlComponent *handle); - - bool isContent(QQuickItem *item) const override; - - static QQuickSplitViewAttached *qmlAttachedProperties(QObject *object); - - // Based on the same code in QMainWindow. - enum VersionMarkers { - VersionMarker = 0xff - }; - Q_INVOKABLE QVariant saveState(); - Q_INVOKABLE bool restoreState(const QVariant &state); - -Q_SIGNALS: - void orientationChanged(); - void resizingChanged(); - void handleChanged(); - -protected: - QQuickSplitView(QQuickSplitViewPrivate &dd, QQuickItem *parent); - - void componentComplete() override; - void hoverMoveEvent(QHoverEvent *event) override; - bool childMouseEventFilter(QQuickItem *item, QEvent *event) override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - - void itemAdded(int index, QQuickItem *item) override; - void itemMoved(int index, QQuickItem *item) override; - void itemRemoved(int index, QQuickItem *item) override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickSplitView) - Q_DECLARE_PRIVATE(QQuickSplitView) -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSplitViewAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickSplitView *view READ view NOTIFY viewChanged FINAL) - Q_PROPERTY(qreal minimumWidth READ minimumWidth WRITE setMinimumWidth - RESET resetMinimumWidth NOTIFY minimumWidthChanged FINAL) - Q_PROPERTY(qreal minimumHeight READ minimumHeight WRITE setMinimumHeight - RESET resetMinimumHeight NOTIFY minimumHeightChanged FINAL) - Q_PROPERTY(qreal preferredWidth READ preferredWidth WRITE setPreferredWidth - RESET resetPreferredWidth NOTIFY preferredWidthChanged FINAL) - Q_PROPERTY(qreal preferredHeight READ preferredHeight WRITE setPreferredHeight - RESET resetPreferredHeight NOTIFY preferredHeightChanged FINAL) - Q_PROPERTY(qreal maximumWidth READ maximumWidth WRITE setMaximumWidth - RESET resetMaximumWidth NOTIFY maximumWidthChanged FINAL) - Q_PROPERTY(qreal maximumHeight READ maximumHeight WRITE setMaximumHeight - RESET resetMaximumHeight NOTIFY maximumHeightChanged FINAL) - Q_PROPERTY(bool fillHeight READ fillHeight WRITE setFillHeight NOTIFY fillHeightChanged FINAL) - Q_PROPERTY(bool fillWidth READ fillWidth WRITE setFillWidth NOTIFY fillWidthChanged FINAL) - -public: - explicit QQuickSplitViewAttached(QObject *parent = nullptr); - - QQuickSplitView *view() const; - - qreal minimumWidth() const; - void setMinimumWidth(qreal width); - void resetMinimumWidth(); - - qreal minimumHeight() const; - void setMinimumHeight(qreal height); - void resetMinimumHeight(); - - qreal preferredWidth() const; - void setPreferredWidth(qreal width); - void resetPreferredWidth(); - - qreal preferredHeight() const; - void setPreferredHeight(qreal height); - void resetPreferredHeight(); - - qreal maximumWidth() const; - void setMaximumWidth(qreal width); - void resetMaximumWidth(); - - qreal maximumHeight() const; - void setMaximumHeight(qreal height); - void resetMaximumHeight(); - - bool fillWidth() const; - void setFillWidth(bool fill); - - bool fillHeight() const; - void setFillHeight(bool fill); - -Q_SIGNALS: - void viewChanged(); - void minimumWidthChanged(); - void minimumHeightChanged(); - void preferredWidthChanged(); - void preferredHeightChanged(); - void maximumWidthChanged(); - void maximumHeightChanged(); - void fillWidthChanged(); - void fillHeightChanged(); - -private: - Q_DISABLE_COPY(QQuickSplitViewAttached) - Q_DECLARE_PRIVATE(QQuickSplitViewAttached) -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSplitHandleAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(bool hovered READ isHovered NOTIFY hoveredChanged FINAL) - Q_PROPERTY(bool pressed READ isPressed NOTIFY pressedChanged FINAL) - QML_NAMED_ELEMENT(SplitHandle) - QML_ATTACHED(QQuickSplitHandleAttached) - QML_UNCREATABLE("") - QML_ADDED_IN_VERSION(2, 13) - -public: - explicit QQuickSplitHandleAttached(QObject *parent = nullptr); - - bool isHovered() const; - bool isPressed() const; - - static QQuickSplitHandleAttached *qmlAttachedProperties(QObject *object); - -Q_SIGNALS: - void hoveredChanged(); - void pressedChanged(); - -private: - Q_DISABLE_COPY(QQuickSplitHandleAttached) - Q_DECLARE_PRIVATE(QQuickSplitHandleAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickSplitView) -QML_DECLARE_TYPEINFO(QQuickSplitView, QML_HAS_ATTACHED_PROPERTIES) - -QML_DECLARE_TYPE(QQuickSplitHandleAttached) -QML_DECLARE_TYPEINFO(QQuickSplitHandleAttached, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKSPLITVIEW_P_H diff --git a/src/quicktemplates2/qquicksplitview_p_p.h b/src/quicktemplates2/qquicksplitview_p_p.h deleted file mode 100644 index ebf51bf9..00000000 --- a/src/quicktemplates2/qquicksplitview_p_p.h +++ /dev/null @@ -1,180 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSPLITVIEW_P_P_H -#define QQUICKSPLITVIEW_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontainer_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickSplitView; -class QQuickSplitViewAttached; -class QQuickSplitHandleAttached; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSplitViewPrivate : public QQuickContainerPrivate -{ - Q_DECLARE_PUBLIC(QQuickSplitView) - -public: - void updateFillIndex(); - void layoutResizeSplitItems(qreal &usedWidth, qreal &usedHeight, int &indexBeingResizedDueToDrag); - void layoutResizeFillItem(QQuickItem *fillItem, qreal &usedWidth, qreal &usedHeight, int indexBeingResizedDueToDrag); - void layoutPositionItems(const QQuickItem *fillItem); - void requestLayout(); - void layout(); - void createHandles(); - void createHandleItem(int index); - void removeExcessHandles(); - void destroyHandles(); - void resizeHandle(QQuickItem *handleItem); - void resizeHandles(); - void updateHandleVisibilities(); - void updateHoveredHandle(QQuickItem *hoveredItem); - void setResizing(bool resizing); - - bool isHorizontal() const; - qreal accumulatedSize(int firstIndex, int lastIndex) const; - - struct EffectiveSizeData { - qreal effectiveMinimumWidth; - qreal effectiveMinimumHeight; - qreal effectivePreferredWidth; - qreal effectivePreferredHeight; - qreal effectiveMaximumWidth; - qreal effectiveMaximumHeight; - }; - - EffectiveSizeData effectiveSizeData(const QQuickItemPrivate *itemPrivate, - const QQuickSplitViewAttached *attached) const; - - int handleIndexForSplitIndex(int splitIndex) const; - - QQuickItem *getContentItem() override; - void handlePress(const QPointF &point, ulong timestamp) override; - void handleMove(const QPointF &point, ulong timestamp) override; - void handleRelease(const QPointF &point, ulong timestamp) override; - - void itemVisibilityChanged(QQuickItem *item) override; - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - void updatePolish() override; - - static QQuickSplitViewPrivate *get(QQuickSplitView *splitView); - - Qt::Orientation m_orientation = Qt::Horizontal; - QQmlComponent *m_handle = nullptr; - QList<QQuickItem*> m_handleItems; - int m_hoveredHandleIndex = -1; - int m_pressedHandleIndex = -1; - int m_nextVisibleIndexAfterPressedHandle = -1; - QPointF m_pressPos; - QPointF m_mousePos; - QPointF m_handlePosBeforePress; - qreal m_leftOrTopItemSizeBeforePress = 0.0; - qreal m_rightOrBottomItemSizeBeforePress = 0.0; - int m_fillIndex = -1; - bool m_layingOut = false; - bool m_ignoreNextLayoutRequest = false; - bool m_resizing = false; -}; - -class QQuickSplitViewAttachedPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickSplitViewAttached) - -public: - QQuickSplitViewAttachedPrivate(); - - void setView(QQuickSplitView *newView); - void requestLayoutView(); - - static QQuickSplitViewAttachedPrivate *get(QQuickSplitViewAttached *attached); - static const QQuickSplitViewAttachedPrivate *get(const QQuickSplitViewAttached *attached); - - QQuickItem *m_splitItem = nullptr; - QQuickSplitView *m_splitView = nullptr; - - unsigned m_fillWidth : 1; - unsigned m_fillHeight : 1; - unsigned m_isFillWidthSet : 1; - unsigned m_isFillHeightSet : 1; - unsigned m_isMinimumWidthSet : 1; - unsigned m_isMinimumHeightSet : 1; - unsigned m_isPreferredWidthSet : 1; - unsigned m_isPreferredHeightSet : 1; - unsigned m_isMaximumWidthSet : 1; - unsigned m_isMaximumHeightSet : 1; - qreal m_minimumWidth; - qreal m_minimumHeight; - qreal m_preferredWidth; - qreal m_preferredHeight; - qreal m_maximumWidth; - qreal m_maximumHeight; -}; - -class QQuickSplitHandleAttachedPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickSplitHandleAttached) - -public: - QQuickSplitHandleAttachedPrivate(); - - void setHovered(bool hovered); - void setPressed(bool pressed); - - static QQuickSplitHandleAttachedPrivate *get(QQuickSplitHandleAttached *attached); - static const QQuickSplitHandleAttachedPrivate *get(const QQuickSplitHandleAttached *attached); - - unsigned m_hovered : 1; - unsigned m_pressed : 1; -}; - -QT_END_NAMESPACE - -#endif // QQUICKSPLITVIEW_P_P_H diff --git a/src/quicktemplates2/qquickstackelement.cpp b/src/quicktemplates2/qquickstackelement.cpp deleted file mode 100644 index b275f96b..00000000 --- a/src/quicktemplates2/qquickstackelement.cpp +++ /dev/null @@ -1,320 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstackelement_p_p.h" -#include "qquickstackview_p_p.h" - -#include <QtQml/qqmlinfo.h> -#include <QtQml/qqmlengine.h> -#include <QtQml/qqmlcomponent.h> -#include <QtQml/qqmlincubator.h> -#include <QtQml/private/qv4qobjectwrapper_p.h> -#include <QtQml/private/qqmlcomponent_p.h> -#include <QtQml/private/qqmlengine_p.h> - -QT_BEGIN_NAMESPACE - -static QQuickStackViewAttached *attachedStackObject(QQuickStackElement *element) -{ - QQuickStackViewAttached *attached = qobject_cast<QQuickStackViewAttached *>(qmlAttachedPropertiesObject<QQuickStackView>(element->item, false)); - if (attached) - QQuickStackViewAttachedPrivate::get(attached)->element = element; - return attached; -} - -class QQuickStackIncubator : public QQmlIncubator -{ -public: - QQuickStackIncubator(QQuickStackElement *element) - : QQmlIncubator(Synchronous), - element(element) - { - } - -protected: - void setInitialState(QObject *object) override { element->incubate(object); } - -private: - QQuickStackElement *element; -}; - -QQuickStackElement::QQuickStackElement() - : QQuickItemViewTransitionableItem(nullptr) -{ -} - -QQuickStackElement::~QQuickStackElement() -{ - if (item) - QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::Destroyed); - - if (ownComponent) - delete component; - - QQuickStackViewAttached *attached = attachedStackObject(this); - if (item) { - if (ownItem) { - item->setParentItem(nullptr); - item->deleteLater(); - item = nullptr; - } else { - setVisible(false); - if (!widthValid) - item->resetWidth(); - if (!heightValid) - item->resetHeight(); - if (item->parentItem() != originalParent) { - item->setParentItem(originalParent); - } else { - if (attached) - QQuickStackViewAttachedPrivate::get(attached)->itemParentChanged(item, nullptr); - } - } - } - - if (attached) - emit attached->removed(); - - delete context; -} - -QQuickStackElement *QQuickStackElement::fromString(const QString &str, QQuickStackView *view, QString *error) -{ - QUrl url(http://code.qt.io/str); - if (!url.isValid()) { - *error = QStringLiteral("invalid url: ") + str; - return nullptr; - } - - if (url.isRelative()) - url = qmlContext(view)->resolvedUrl(url); - - QQuickStackElement *element = new QQuickStackElement; - element->component = new QQmlComponent(qmlEngine(view), url, view); - element->ownComponent = true; - return element; -} - -QQuickStackElement *QQuickStackElement::fromObject(QObject *object, QQuickStackView *view, QString *error) -{ - Q_UNUSED(view); - QQmlComponent *component = qobject_cast<QQmlComponent *>(object); - QQuickItem *item = qobject_cast<QQuickItem *>(object); - if (!component && !item) { - *error = QQmlMetaType::prettyTypeName(object) + QStringLiteral(" is not supported. Must be Item or Component."); - return nullptr; - } - - QQuickStackElement *element = new QQuickStackElement; - element->component = qobject_cast<QQmlComponent *>(object); - element->item = qobject_cast<QQuickItem *>(object); - if (element->item) - element->originalParent = element->item->parentItem(); - return element; -} - -bool QQuickStackElement::load(QQuickStackView *parent) -{ - setView(parent); - if (!item) { - ownItem = true; - - if (component->isLoading()) { - QObject::connect(component, &QQmlComponent::statusChanged, [this](QQmlComponent::Status status) { - if (status == QQmlComponent::Ready) - load(view); - else if (status == QQmlComponent::Error) - QQuickStackViewPrivate::get(view)->warn(component->errorString().trimmed()); - }); - return true; - } - - QQmlContext *creationContext = component->creationContext(); - if (!creationContext) - creationContext = qmlContext(parent); - context = new QQmlContext(creationContext, parent); - context->setContextObject(parent); - - QQuickStackIncubator incubator(this); - component->create(incubator, context); - if (component->isError()) - QQuickStackViewPrivate::get(parent)->warn(component->errorString().trimmed()); - } else { - initialize(); - } - return item; -} - -void QQuickStackElement::incubate(QObject *object) -{ - item = qmlobject_cast<QQuickItem *>(object); - if (item) { - QQmlEngine::setObjectOwnership(item, QQmlEngine::CppOwnership); - item->setParent(view); - initialize(); - } -} - -void QQuickStackElement::initialize() -{ - if (!item || init) - return; - - QQuickItemPrivate *p = QQuickItemPrivate::get(item); - if (!(widthValid = p->widthValid())) - item->setWidth(view->width()); - if (!(heightValid = p->heightValid())) - item->setHeight(view->height()); - item->setParentItem(view); - p->addItemChangeListener(this, QQuickItemPrivate::Destroyed); - - if (!properties.isUndefined()) { - QQmlEngine *engine = qmlEngine(view); - Q_ASSERT(engine); - QV4::ExecutionEngine *v4 = QQmlEnginePrivate::getV4Engine(engine); - Q_ASSERT(v4); - QV4::Scope scope(v4); - QV4::ScopedValue ipv(scope, properties.value()); - QV4::Scoped<QV4::QmlContext> qmlContext(scope, qmlCallingContext.value()); - QV4::ScopedValue qmlObject(scope, QV4::QObjectWrapper::wrap(v4, item)); - RequiredProperties requiredPropertiesCurrentlyNotSupported; - QQmlComponentPrivate::setInitialProperties(v4, qmlContext, qmlObject, ipv, requiredPropertiesCurrentlyNotSupported, item); - properties.clear(); - } - - init = true; -} - -void QQuickStackElement::setIndex(int value) -{ - if (index == value) - return; - - index = value; - QQuickStackViewAttached *attached = attachedStackObject(this); - if (attached) - emit attached->indexChanged(); -} - -void QQuickStackElement::setView(QQuickStackView *value) -{ - if (view == value) - return; - - view = value; - QQuickStackViewAttached *attached = attachedStackObject(this); - if (attached) - emit attached->viewChanged(); -} - -void QQuickStackElement::setStatus(QQuickStackView::Status value) -{ - if (status == value) - return; - - status = value; - QQuickStackViewAttached *attached = attachedStackObject(this); - if (!attached) - return; - - switch (value) { - case QQuickStackView::Inactive: - emit attached->deactivated(); - break; - case QQuickStackView::Deactivating: - emit attached->deactivating(); - break; - case QQuickStackView::Activating: - emit attached->activating(); - break; - case QQuickStackView::Active: - emit attached->activated(); - break; - default: - Q_UNREACHABLE(); - break; - } - - emit attached->statusChanged(); -} - -void QQuickStackElement::setVisible(bool visible) -{ - QQuickStackViewAttached *attached = attachedStackObject(this); - if (!item || (attached && QQuickStackViewAttachedPrivate::get(attached)->explicitVisible)) - return; - - item->setVisible(visible); -} - -void QQuickStackElement::transitionNextReposition(QQuickItemViewTransitioner *transitioner, QQuickItemViewTransitioner::TransitionType type, bool asTarget) -{ - if (transitioner) - transitioner->transitionNextReposition(this, type, asTarget); -} - -bool QQuickStackElement::prepareTransition(QQuickItemViewTransitioner *transitioner, const QRectF &viewBounds) -{ - if (transitioner) { - if (item) { - QQuickAnchors *anchors = QQuickItemPrivate::get(item)->_anchors; - // TODO: expose QQuickAnchorLine so we can test for other conflicting anchors - if (anchors && (anchors->fill() || anchors->centerIn())) - qmlWarning(item) << "StackView has detected conflicting anchors. Transitions may not execute properly."; - } - - // TODO: add force argument to QQuickItemViewTransitionableItem::prepareTransition()? - nextTransitionToSet = true; - nextTransitionFromSet = true; - nextTransitionFrom += QPointF(1, 1); - return QQuickItemViewTransitionableItem::prepareTransition(transitioner, index, viewBounds); - } - return false; -} - -void QQuickStackElement::startTransition(QQuickItemViewTransitioner *transitioner, QQuickStackView::Status status) -{ - setStatus(status); - if (transitioner) - QQuickItemViewTransitionableItem::startTransition(transitioner, index); -} - -void QQuickStackElement::itemDestroyed(QQuickItem *) -{ - item = nullptr; -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickstackelement_p_p.h b/src/quicktemplates2/qquickstackelement_p_p.h deleted file mode 100644 index 65e73244..00000000 --- a/src/quicktemplates2/qquickstackelement_p_p.h +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTACKELEMENT_P_P_H -#define QQUICKSTACKELEMENT_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickstackview_p.h> -#include <QtQuickTemplates2/private/qquickcontrol_p_p.h> -#include <QtQuick/private/qquickitemviewtransition_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> -#include <QtQml/private/qv4persistent_p.h> - -QT_BEGIN_NAMESPACE - -class QQmlContext; -class QQmlComponent; -struct QQuickStackTransition; - -class QQuickStackElement : public QQuickItemViewTransitionableItem, public QQuickItemChangeListener -{ - QQuickStackElement(); - -public: - ~QQuickStackElement(); - - static QQuickStackElement *fromString(const QString &str, QQuickStackView *view, QString *error); - static QQuickStackElement *fromObject(QObject *object, QQuickStackView *view, QString *error); - - bool load(QQuickStackView *parent); - void incubate(QObject *object); - void initialize(); - - void setIndex(int index); - void setView(QQuickStackView *view); - void setStatus(QQuickStackView::Status status); - void setVisible(bool visible); - - void transitionNextReposition(QQuickItemViewTransitioner *transitioner, QQuickItemViewTransitioner::TransitionType type, bool asTarget); - bool prepareTransition(QQuickItemViewTransitioner *transitioner, const QRectF &viewBounds); - void startTransition(QQuickItemViewTransitioner *transitioner, QQuickStackView::Status status); - - void itemDestroyed(QQuickItem *item) override; - - int index = -1; - bool init = false; - bool removal = false; - bool ownItem = false; - bool ownComponent = false; - bool widthValid = false; - bool heightValid = false; - QQmlContext *context = nullptr; - QQmlComponent *component = nullptr; - QQuickStackView *view = nullptr; - QPointer<QQuickItem> originalParent; - QQuickStackView::Status status = QQuickStackView::Inactive; - QV4::PersistentValue properties; - QV4::PersistentValue qmlCallingContext; -}; - -QT_END_NAMESPACE - -#endif // QQUICKSTACKELEMENT_P_P_H diff --git a/src/quicktemplates2/qquickstacktransition.cpp b/src/quicktemplates2/qquickstacktransition.cpp deleted file mode 100644 index a0192d1b..00000000 --- a/src/quicktemplates2/qquickstacktransition.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstacktransition_p_p.h" -#include "qquickstackelement_p_p.h" -#include "qquickstackview_p_p.h" - -QT_BEGIN_NAMESPACE - -static QQuickStackTransition exitTransition(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - QQuickStackTransition st; - st.status = QQuickStackView::Deactivating; - st.element = element; - - const QQuickItemViewTransitioner *transitioner = QQuickStackViewPrivate::get(view)->transitioner; - - switch (operation) { - case QQuickStackView::PushTransition: - st.type = QQuickItemViewTransitioner::AddTransition; - if (transitioner) - st.transition = transitioner->addDisplacedTransition; - break; - case QQuickStackView::ReplaceTransition: - st.type = QQuickItemViewTransitioner::MoveTransition; - if (transitioner) - st.transition = transitioner->moveDisplacedTransition; - break; - case QQuickStackView::PopTransition: - st.target = true; - st.type = QQuickItemViewTransitioner::RemoveTransition; - st.viewBounds = view->boundingRect(); - if (transitioner) - st.transition = transitioner->removeTransition; - break; - default: - Q_UNREACHABLE(); - break; - } - - return st; -} - -static QQuickStackTransition enterTransition(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - QQuickStackTransition st; - st.status = QQuickStackView::Activating; - st.element = element; - - const QQuickItemViewTransitioner *transitioner = QQuickStackViewPrivate::get(view)->transitioner; - - switch (operation) { - case QQuickStackView::PushTransition: - st.target = true; - st.type = QQuickItemViewTransitioner::AddTransition; - st.viewBounds = view->boundingRect(); - if (transitioner) - st.transition = transitioner->addTransition; - break; - case QQuickStackView::ReplaceTransition: - st.target = true; - st.type = QQuickItemViewTransitioner::MoveTransition; - st.viewBounds = view->boundingRect(); - if (transitioner) - st.transition = transitioner->moveTransition; - break; - case QQuickStackView::PopTransition: - st.type = QQuickItemViewTransitioner::RemoveTransition; - if (transitioner) - st.transition = transitioner->removeDisplacedTransition; - break; - default: - Q_UNREACHABLE(); - break; - } - - return st; -} - -static QQuickStackView::Operation operationTransition(QQuickStackView::Operation operation, QQuickStackView::Operation transition) -{ - if (operation == QQuickStackView::Immediate || operation == QQuickStackView::Transition) - return transition; - return operation; -} - -QQuickStackTransition QQuickStackTransition::popExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - return exitTransition(operationTransition(operation, QQuickStackView::PopTransition), element, view); -} - -QQuickStackTransition QQuickStackTransition::popEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - return enterTransition(operationTransition(operation, QQuickStackView::PopTransition), element, view); -} - -QQuickStackTransition QQuickStackTransition::pushExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - return exitTransition(operationTransition(operation, QQuickStackView::PushTransition), element, view); -} - -QQuickStackTransition QQuickStackTransition::pushEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - return enterTransition(operationTransition(operation, QQuickStackView::PushTransition), element, view); -} - -QQuickStackTransition QQuickStackTransition::replaceExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - return exitTransition(operationTransition(operation, QQuickStackView::ReplaceTransition), element, view); -} - -QQuickStackTransition QQuickStackTransition::replaceEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view) -{ - return enterTransition(operationTransition(operation, QQuickStackView::ReplaceTransition), element, view); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickstacktransition_p_p.h b/src/quicktemplates2/qquickstacktransition_p_p.h deleted file mode 100644 index 3a08fb4a..00000000 --- a/src/quicktemplates2/qquickstacktransition_p_p.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTACKTRANSITION_P_P_H -#define QQUICKSTACKTRANSITION_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickstackview_p.h> -#include <QtQuick/private/qquickitemviewtransition_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickStackElement; - -struct QQuickStackTransition -{ - static QQuickStackTransition popExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); - static QQuickStackTransition popEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); - - static QQuickStackTransition pushExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); - static QQuickStackTransition pushEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); - - static QQuickStackTransition replaceExit(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); - static QQuickStackTransition replaceEnter(QQuickStackView::Operation operation, QQuickStackElement *element, QQuickStackView *view); - - bool target = false; - QQuickStackView::Status status = QQuickStackView::Inactive; - QQuickItemViewTransitioner::TransitionType type = QQuickItemViewTransitioner::NoTransition; - QRectF viewBounds; - QQuickStackElement *element = nullptr; - QQuickTransition *transition = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKSTACKTRANSITION_P_P_H diff --git a/src/quicktemplates2/qquickstackview.cpp b/src/quicktemplates2/qquickstackview.cpp deleted file mode 100644 index 7bf4c3d3..00000000 --- a/src/quicktemplates2/qquickstackview.cpp +++ /dev/null @@ -1,1404 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstackview_p.h" -#include "qquickstackview_p_p.h" -#include "qquickstackelement_p_p.h" -#include "qquickstacktransition_p_p.h" - -#include <QtCore/qscopedvaluerollback.h> -#include <QtQml/qjsvalue.h> -#include <QtQml/qqmlengine.h> -#include <QtQml/qqmlinfo.h> - -#include <private/qv4qobjectwrapper_p.h> -#include <private/qqmlengine_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype StackView - \inherits Control -//! \instantiates QQuickStackView - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-navigation - \ingroup qtquickcontrols2-containers - \ingroup qtquickcontrols2-focusscopes - \brief Provides a stack-based navigation model. - - \image qtquickcontrols2-stackview-wireframe.png - - StackView can be used with a set of inter-linked information pages. For - example, an email application with separate views to list the latest emails, - view a specific email, and list/view the attachments. The email list view - is pushed onto the stack as users open an email, and popped out as they - choose to go back. - - The following snippet demonstrates a simple use case, where the \c mainView - is pushed onto and popped out of the stack on relevant button click: - - \qml - ApplicationWindow { - title: qsTr("Hello World") - width: 640 - height: 480 - visible: true - - StackView { - id: stack - initialItem: mainView - anchors.fill: parent - } - - Component { - id: mainView - - Row { - spacing: 10 - - Button { - text: "Push" - onClicked: stack.push(mainView) - } - Button { - text: "Pop" - enabled: stack.depth > 1 - onClicked: stack.pop() - - } - Text { - text: stack.depth - } - } - } - } - \endqml - - \section1 Using StackView in an Application - - Using StackView in an application is as simple as adding it as a child to - a Window. The stack is usually anchored to the edges of the window, except - at the top or bottom where it might be anchored to a status bar, or some - other similar UI component. The stack can then be used by invoking its - navigation methods. The first item to show in the StackView is the one - that was assigned to \l initialItem, or the topmost item if \l initialItem - is not set. - - \section1 Basic Navigation - - StackView supports three primary navigation operations: push(), pop(), and - replace(). These correspond to classic stack operations where "push" adds - an item to the top of a stack, "pop" removes the top item from the - stack, and "replace" is like a pop followed by a push, which replaces the - topmost item with the new item. The topmost item in the stack - corresponds to the one that is \l{StackView::currentItem}{currently} - visible on screen. Logically, "push" navigates forward or deeper into the - application UI, "pop" navigates backward, and "replace" replaces the - \l currentItem. - - \section2 Pushing Items - - In the following animation, three \l Label controls are pushed onto a - stack view with the \l push() function: - - \image qtquickcontrols2-stackview-push.gif - - The stack now contains the following items: \c [A, B, C]. - - \note When the stack is empty, a push() operation will not have a - transition animation because there is nothing to transition from (typically - on application start-up). - - \section2 Popping Items - - Continuing on from the example above, the topmost item on the stack is - removed with a call to \l pop(): - - \image qtquickcontrols2-stackview-pop.gif - - The stack now contains the following items: \c [A, B]. - - \note A pop() operation on a stack with depth 1 or 0 does nothing. In such - cases, the stack can be emptied using the \l clear() method. - - \section3 Unwinding Items via Pop - - Sometimes, it is necessary to go back more than a single step in the stack. - For example, to return to a "main" item or some kind of section item in the - application. In such cases, it is possible to specify an item as a - parameter for pop(). This is called an "unwind" operation, where the stack - unwinds till the specified item. If the item is not found, stack unwinds - until it is left with one item, which becomes the \l currentItem. To - explicitly unwind to the bottom of the stack, it is recommended to use - \l{pop()}{pop(null)}, although any non-existent item will do. - - In the following animation, we unwind the stack to the first item by - calling \c pop(null): - - \image qtquickcontrols2-stackview-unwind.gif - - The stack now contains a single item: \c [A]. - - \section2 Replacing Items - - In the following animation, we \l replace the topmost item with \c D: - - \image qtquickcontrols2-stackview-replace.gif - - The stack now contains the following items: \c [A, B, D]. - - \section1 Deep Linking - - \e{Deep linking} means launching an application into a particular state. For - example, a newspaper application could be launched into showing a - particular article, bypassing the topmost item. In terms of StackView, deep linking means the ability to modify - the state of the stack, so much so that it is possible to push a set of - items to the top of the stack, or to completely reset the stack to a given - state. - - The API for deep linking in StackView is the same as for basic navigation. - Pushing an array instead of a single item adds all the items in that array - to the stack. The transition animation, however, is applied only for the - last item in the array. The normal semantics of push() apply for deep - linking, that is, it adds whatever is pushed onto the stack. - - \note Only the last item of the array is loaded. The rest of the items are - loaded only when needed, either on subsequent calls to pop or on request to - get an item using get(). - - This gives us the following result, given the stack [A, B, C]: - - \list - \li \l{push()}{push([D, E, F])} => [A, B, C, D, E, F] - "push" transition - animation between C and F - \li \l{replace()}{replace([D, E, F])} => [A, B, D, E, F] - "replace" - transition animation between C and F - \li \l{clear()} followed by \l{push()}{push([D, E, F])} => [D, E, F] - no - transition animation for pushing items as the stack was empty. - \endlist - - \section1 Finding Items - - An Item for which the application does not have a reference can be found - by calling find(). The method needs a callback function, which is invoked - for each item in the stack (starting at the top) until a match is found. - If the callback returns \c true, find() stops and returns the matching - item, otherwise \c null is returned. - - The code below searches the stack for an item named "order_id" and unwinds - to that item. - - \badcode - stackView.pop(stackView.find(function(item) { - return item.name == "order_id"; - })); - \endcode - - You can also get to an item in the stack using \l {get()}{get(index)}. - - \badcode - previousItem = stackView.get(myItem.StackView.index - 1)); - \endcode - - \section1 Transitions - - For each push or pop operation, different transition animations are applied - to entering and exiting items. These animations define how the entering item - should animate in, and the exiting item should animate out. The animations - can be customized by assigning different \l{Transition}s for the - \l pushEnter, \l pushExit, \l popEnter, \l popExit, \l replaceEnter, and - \l replaceExit properties of StackView. - - \note The transition animations affect each others' transitional behavior. - Customizing the animation for one and leaving the other may give unexpected - results. - - The following snippet defines a simple fade transition for push and pop - operations: - - \qml - StackView { - id: stackview - anchors.fill: parent - - pushEnter: Transition { - PropertyAnimation { - property: "opacity" - from: 0 - to:1 - duration: 200 - } - } - pushExit: Transition { - PropertyAnimation { - property: "opacity" - from: 1 - to:0 - duration: 200 - } - } - popEnter: Transition { - PropertyAnimation { - property: "opacity" - from: 0 - to:1 - duration: 200 - } - } - popExit: Transition { - PropertyAnimation { - property: "opacity" - from: 1 - to:0 - duration: 200 - } - } - } - \endqml - - \note Using anchors on the items added to a StackView is not supported. - Typically push, pop, and replace transitions animate the position, - which is not possible when anchors are applied. Notice that this - only applies to the root of the item. Using anchors for its children - works as expected. - - \section1 Item Ownership - - StackView only takes ownership of items that it creates itself. This means - that any item pushed onto a StackView will never be destroyed by the - StackView; only items that StackView creates from \l {Component}{Components} - or \l [QML] {url}{URLs} are destroyed by the StackView. To illustrate this, - the messages in the example below will only be printed when the StackView - is destroyed, not when the items are popped off the stack: - - \qml - Component { - id: itemComponent - - Item { - Component.onDestruction: print("Destroying second item") - } - } - - StackView { - initialItem: Item { - Component.onDestruction: print("Destroying initial item") - } - - Component.onCompleted: push(itemComponent.createObject(window)) - } - \endqml - - However, both of the items created from the URL and Component in the - following example will be destroyed by the StackView when they are popped - off of it: - - \qml - Component { - id: itemComponent - - Item { - Component.onDestruction: print("Destroying second item") - } - } - - StackView { - initialItem: "Item1.qml" - - Component.onCompleted: push(itemComponent) - } - \endqml - - \section1 Size - - StackView does not inherit an implicit size from items that are pushed onto - it. This means that using it as the \l {Popup::}{contentItem} of a - \l Dialog, for example, will not work as expected: - - \code - Dialog { - StackView { - initialItem: Rectangle { - width: 200 - height: 200 - color: "salmon" - } - } - } - \endcode - - There are several ways to ensure that StackView has a size in this - situation: - - \list - \li Set \l[QtQuick]{Item::}{implicitWidth} and - \l[QtQuick]{Item::}{implicitHeight} on the StackView itself. - \li Set \l[QtQuick]{Item::}{implicitWidth} and - \l[QtQuick]{Item::}{implicitHeight} on the \l Rectangle. - \li Set \l {Popup::}{contentWidth} and \l {Popup::}{contentHeight} on - the Dialog. - \li Give the Dialog a size. - \endlist - - \sa {Customizing StackView}, {Navigation Controls}, {Container Controls}, - {Focus Management in Qt Quick Controls} -*/ - -QQuickStackView::QQuickStackView(QQuickItem *parent) - : QQuickControl(*(new QQuickStackViewPrivate), parent) -{ - setFlag(ItemIsFocusScope); -} - -QQuickStackView::~QQuickStackView() -{ - Q_D(QQuickStackView); - if (d->transitioner) { - d->transitioner->setChangeListener(nullptr); - delete d->transitioner; - } - qDeleteAll(d->removing); - qDeleteAll(d->removed); - qDeleteAll(d->elements); -} - -QQuickStackViewAttached *QQuickStackView::qmlAttachedProperties(QObject *object) -{ - return new QQuickStackViewAttached(object); -} - -/*! - \qmlproperty bool QtQuick.Controls::StackView::busy - \readonly - This property holds whether a transition is running. -*/ -bool QQuickStackView::isBusy() const -{ - Q_D(const QQuickStackView); - return d->busy; -} - -/*! - \qmlproperty int QtQuick.Controls::StackView::depth - \readonly - This property holds the number of items currently pushed onto the stack. -*/ -int QQuickStackView::depth() const -{ - Q_D(const QQuickStackView); - return d->elements.count(); -} - -/*! - \qmlproperty Item QtQuick.Controls::StackView::currentItem - \readonly - This property holds the current top-most item in the stack. -*/ -QQuickItem *QQuickStackView::currentItem() const -{ - Q_D(const QQuickStackView); - return d->currentItem; -} - -/*! - \qmlmethod Item QtQuick.Controls::StackView::get(index, behavior) - - Returns the item at position \a index in the stack, or \c null if the index - is out of bounds. - - Supported \a behavior values: - \value StackView.DontLoad The item is not forced to load (and \c null is returned if not yet loaded). - \value StackView.ForceLoad The item is forced to load. -*/ -QQuickItem *QQuickStackView::get(int index, LoadBehavior behavior) -{ - Q_D(QQuickStackView); - QQuickStackElement *element = d->elements.value(index); - if (element) { - if (behavior == ForceLoad) - element->load(this); - return element->item; - } - return nullptr; -} - -/*! - \qmlmethod Item QtQuick.Controls::StackView::find(callback, behavior) - - Search for a specific item inside the stack. The \a callback function is called - for each item in the stack (with the item and index as arguments) until the callback - function returns \c true. The return value is the item found. For example: - - \code - stackView.find(function(item, index) { - return item.isTheOne - }) - \endcode - - Supported \a behavior values: - \value StackView.DontLoad Unloaded items are skipped (the callback function is not called for them). - \value StackView.ForceLoad Unloaded items are forced to load. -*/ -QQuickItem *QQuickStackView::find(const QJSValue &callback, LoadBehavior behavior) -{ - Q_D(QQuickStackView); - QJSValue func(callback); - QQmlEngine *engine = qmlEngine(this); - if (!engine || !func.isCallable()) // TODO: warning? - return nullptr; - - for (int i = d->elements.count() - 1; i >= 0; --i) { - QQuickStackElement *element = d->elements.at(i); - if (behavior == ForceLoad) - element->load(this); - if (element->item) { - QJSValue rv = func.call(QJSValueList() << engine->newQObject(element->item) << i); - if (rv.toBool()) - return element->item; - } - } - - return nullptr; -} - -/*! - \qmlmethod Item QtQuick.Controls::StackView::push(item, properties, operation) - - Pushes an \a item onto the stack using an optional \a operation, and - optionally applies a set of \a properties on the item. The item can be - an \l Item, \l Component, or a \l [QML] url. Returns the item that became - current. - - StackView creates an instance automatically if the pushed item is a \l Component, - or a \l [QML] url, and the instance will be destroyed when it is popped - off the stack. See \l {Item Ownership} for more information. - - The optional \a properties argument specifies a map of initial - property values for the pushed item. For dynamically created items, these values - are applied before the creation is finalized. This is more efficient than setting - property values after creation, particularly where large sets of property values - are defined, and also allows property bindings to be set up (using \l{Qt::binding} - {Qt.binding()}) before the item is created. - - Pushing a single item: - \code - stackView.push(rect) - - // or with properties: - stackView.push(rect, {"color": "red"}) - \endcode - - Multiple items can be pushed at the same time either by passing them as - additional arguments, or as an array. The last item becomes the current - item. Each item can be followed by a set of properties to apply. - - Passing a variable amount of arguments: - \code - stackView.push(rect1, rect2, rect3) - - // or with properties: - stackView.push(rect1, {"color": "red"}, rect2, {"color": "green"}, rect3, {"color": "blue"}) - \endcode - - Pushing an array of items: - \code - stackView.push([rect1, rect2, rect3]) - - // or with properties: - stackView.push([rect1, {"color": "red"}, rect2, {"color": "green"}, rect3, {"color": "blue"}]) - \endcode - - An \a operation can be optionally specified as the last argument. Supported - operations: - - \value StackView.Immediate An immediate operation without transitions. - \value StackView.PushTransition An operation with push transitions (since QtQuick.Controls 2.1). - \value StackView.ReplaceTransition An operation with replace transitions (since QtQuick.Controls 2.1). - \value StackView.PopTransition An operation with pop transitions (since QtQuick.Controls 2.1). - - If no operation is provided, \c PushTransition will be used. - - \note Items that already exist in the stack are not pushed. - - \sa initialItem, {Pushing Items} -*/ -void QQuickStackView::push(QQmlV4Function *args) -{ - Q_D(QQuickStackView); - const QString operationName = QStringLiteral("push"); - if (d->modifyingElements) { - d->warnOfInterruption(operationName); - return; - } - - QScopedValueRollback<bool> modifyingElements(d->modifyingElements, true); - QScopedValueRollback<QString> operationNameRollback(d->operation, operationName); - if (args->length() <= 0) { - d->warn(QStringLiteral("missing arguments")); - args->setReturnValue(QV4::Encode::null()); - return; - } - - QV4::ExecutionEngine *v4 = args->v4engine(); - QV4::Scope scope(v4); - - Operation operation = d->elements.isEmpty() ? Immediate : PushTransition; - QV4::ScopedValue lastArg(scope, (*args)[args->length() - 1]); - if (lastArg->isInt32()) - operation = static_cast<Operation>(lastArg->toInt32()); - - QStringList errors; - QList<QQuickStackElement *> elements = d->parseElements(0, args, &errors); - // Remove any items that are already in the stack, as they can't be in two places at once. - for (int i = 0; i < elements.size(); ) { - QQuickStackElement *element = elements.at(i); - if (element->item && d->findElement(element->item)) - elements.removeAt(i); - else - ++i; - } - - if (!errors.isEmpty() || elements.isEmpty()) { - if (!errors.isEmpty()) { - for (const QString &error : qAsConst(errors)) - d->warn(error); - } else { - d->warn(QStringLiteral("nothing to push")); - } - args->setReturnValue(QV4::Encode::null()); - return; - } - - QQuickStackElement *exit = nullptr; - if (!d->elements.isEmpty()) - exit = d->elements.top(); - - int oldDepth = d->elements.count(); - if (d->pushElements(elements)) { - d->depthChange(d->elements.count(), oldDepth); - QQuickStackElement *enter = d->elements.top(); - d->startTransition(QQuickStackTransition::pushEnter(operation, enter, this), - QQuickStackTransition::pushExit(operation, exit, this), - operation == Immediate); - d->setCurrentItem(enter); - } - - if (d->currentItem) { - QV4::ScopedValue rv(scope, QV4::QObjectWrapper::wrap(v4, d->currentItem)); - args->setReturnValue(rv->asReturnedValue()); - } else { - args->setReturnValue(QV4::Encode::null()); - } -} - -/*! - \qmlmethod Item QtQuick.Controls::StackView::pop(item, operation) - - Pops one or more items off the stack. Returns the last item removed from the stack. - - If the \a item argument is specified, all items down to (but not - including) \a item will be popped. If \a item is \c null, all - items down to (but not including) the first item is popped. - If not specified, only the current item is popped. - - \note A pop() operation on a stack with depth 1 or 0 does nothing. In such - cases, the stack can be emptied using the \l clear() method. - - \include qquickstackview.qdocinc pop-ownership - - An \a operation can be optionally specified as the last argument. Supported - operations: - - \value StackView.Immediate An immediate operation without transitions. - \value StackView.PushTransition An operation with push transitions (since QtQuick.Controls 2.1). - \value StackView.ReplaceTransition An operation with replace transitions (since QtQuick.Controls 2.1). - \value StackView.PopTransition An operation with pop transitions (since QtQuick.Controls 2.1). - - If no operation is provided, \c PopTransition will be used. - - Examples: - \code - stackView.pop() - stackView.pop(someItem, StackView.Immediate) - stackView.pop(StackView.Immediate) - stackView.pop(null) - \endcode - - \sa clear(), {Popping Items}, {Unwinding Items via Pop} -*/ -void QQuickStackView::pop(QQmlV4Function *args) -{ - Q_D(QQuickStackView); - const QString operationName = QStringLiteral("pop"); - if (d->modifyingElements) { - d->warnOfInterruption(operationName); - args->setReturnValue(QV4::Encode::null()); - return; - } - - QScopedValueRollback<bool> modifyingElements(d->modifyingElements, true); - QScopedValueRollback<QString> operationNameRollback(d->operation, operationName); - int argc = args->length(); - if (d->elements.count() <= 1 || argc > 2) { - if (argc > 2) - d->warn(QStringLiteral("too many arguments")); - args->setReturnValue(QV4::Encode::null()); - return; - } - - int oldDepth = d->elements.count(); - QQuickStackElement *exit = d->elements.pop(); - QQuickStackElement *enter = d->elements.top(); - - QV4::ExecutionEngine *v4 = args->v4engine(); - QV4::Scope scope(v4); - - if (argc > 0) { - QV4::ScopedValue value(scope, (*args)[0]); - if (value->isNull()) { - enter = d->elements.value(0); - } else if (const QV4::QObjectWrapper *o = value->as<QV4::QObjectWrapper>()) { - QQuickItem *item = qobject_cast<QQuickItem *>(o->object()); - enter = d->findElement(item); - if (!enter) { - if (item != d->currentItem) - d->warn(QStringLiteral("unknown argument: ") + value->toQString()); // TODO: safe? - args->setReturnValue(QV4::Encode::null()); - d->elements.push(exit); // restore - return; - } - } - } - - Operation operation = PopTransition; - if (argc > 0) { - QV4::ScopedValue lastArg(scope, (*args)[argc - 1]); - if (lastArg->isInt32()) - operation = static_cast<Operation>(lastArg->toInt32()); - } - - QQuickItem *previousItem = nullptr; - - if (d->popElements(enter)) { - if (exit) { - exit->removal = true; - d->removing.insert(exit); - previousItem = exit->item; - } - d->depthChange(d->elements.count(), oldDepth); - d->startTransition(QQuickStackTransition::popExit(operation, exit, this), - QQuickStackTransition::popEnter(operation, enter, this), - operation == Immediate); - d->setCurrentItem(enter); - } - - if (previousItem) { - QV4::ScopedValue rv(scope, QV4::QObjectWrapper::wrap(v4, previousItem)); - args->setReturnValue(rv->asReturnedValue()); - } else { - args->setReturnValue(QV4::Encode::null()); - } -} - -/*! - \qmlmethod Item QtQuick.Controls::StackView::replace(target, item, properties, operation) - - Replaces one or more items on the stack with the specified \a item and - optional \a operation, and optionally applies a set of \a properties on the - item. The item can be an \l Item, \l Component, or a \l [QML] url. - Returns the item that became current. - - \include qquickstackview.qdocinc pop-ownership - - If the \a target argument is specified, all items down to the \target - item will be replaced. If \a target is \c null, all items in the stack - will be replaced. If not specified, only the top item will be replaced. - - StackView creates an instance automatically if the replacing item is a \l Component, - or a \l [QML] url. The optional \a properties argument specifies a map of initial - property values for the replacing item. For dynamically created items, these values - are applied before the creation is finalized. This is more efficient than setting - property values after creation, particularly where large sets of property values - are defined, and also allows property bindings to be set up (using \l{Qt::binding} - {Qt.binding()}) before the item is created. - - Replace the top item: - \code - stackView.replace(rect) - - // or with properties: - stackView.replace(rect, {"color": "red"}) - \endcode - - Multiple items can be replaced at the same time either by passing them as - additional arguments, or as an array. Each item can be followed by a set - of properties to apply. - - Passing a variable amount of arguments: - \code - stackView.replace(rect1, rect2, rect3) - - // or with properties: - stackView.replace(rect1, {"color": "red"}, rect2, {"color": "green"}, rect3, {"color": "blue"}) - \endcode - - Replacing an array of items: - \code - stackView.replace([rect1, rect2, rect3]) - - // or with properties: - stackView.replace([rect1, {"color": "red"}, rect2, {"color": "green"}, rect3, {"color": "blue"}]) - \endcode - - An \a operation can be optionally specified as the last argument. Supported - operations: - - \value StackView.Immediate An immediate operation without transitions. - \value StackView.PushTransition An operation with push transitions (since QtQuick.Controls 2.1). - \value StackView.ReplaceTransition An operation with replace transitions (since QtQuick.Controls 2.1). - \value StackView.PopTransition An operation with pop transitions (since QtQuick.Controls 2.1). - - If no operation is provided, \c ReplaceTransition will be used. - - The following example illustrates the use of push and pop transitions with replace(). - - \code - StackView { - id: stackView - - initialItem: Component { - id: page - - Page { - Row { - spacing: 20 - anchors.centerIn: parent - - Button { - text: "<" - onClicked: stackView.replace(page, StackView.PopTransition) - } - Button { - text: ">" - onClicked: stackView.replace(page, StackView.PushTransition) - } - } - } - } - } - \endcode - - \sa push(), {Replacing Items} -*/ -void QQuickStackView::replace(QQmlV4Function *args) -{ - Q_D(QQuickStackView); - const QString operationName = QStringLiteral("replace"); - if (d->modifyingElements) { - d->warnOfInterruption(operationName); - args->setReturnValue(QV4::Encode::null()); - return; - } - - QScopedValueRollback<bool> modifyingElements(d->modifyingElements, true); - QScopedValueRollback<QString> operationNameRollback(d->operation, operationName); - if (args->length() <= 0) { - d->warn(QStringLiteral("missing arguments")); - args->setReturnValue(QV4::Encode::null()); - return; - } - - QV4::ExecutionEngine *v4 = args->v4engine(); - QV4::Scope scope(v4); - - Operation operation = d->elements.isEmpty() ? Immediate : ReplaceTransition; - QV4::ScopedValue lastArg(scope, (*args)[args->length() - 1]); - if (lastArg->isInt32()) - operation = static_cast<Operation>(lastArg->toInt32()); - - QQuickStackElement *target = nullptr; - QV4::ScopedValue firstArg(scope, (*args)[0]); - if (firstArg->isNull()) - target = d->elements.value(0); - else if (!firstArg->isInt32()) - target = d->findElement(firstArg); - - QStringList errors; - QList<QQuickStackElement *> elements = d->parseElements(target ? 1 : 0, args, &errors); - if (!errors.isEmpty() || elements.isEmpty()) { - if (!errors.isEmpty()) { - for (const QString &error : qAsConst(errors)) - d->warn(error); - } else { - d->warn(QStringLiteral("nothing to push")); - } - args->setReturnValue(QV4::Encode::null()); - return; - } - - int oldDepth = d->elements.count(); - QQuickStackElement* exit = nullptr; - if (!d->elements.isEmpty()) - exit = d->elements.pop(); - - if (exit != target ? d->replaceElements(target, elements) : d->pushElements(elements)) { - d->depthChange(d->elements.count(), oldDepth); - if (exit) { - exit->removal = true; - d->removing.insert(exit); - } - QQuickStackElement *enter = d->elements.top(); - d->startTransition(QQuickStackTransition::replaceExit(operation, exit, this), - QQuickStackTransition::replaceEnter(operation, enter, this), - operation == Immediate); - d->setCurrentItem(enter); - } - - if (d->currentItem) { - QV4::ScopedValue rv(scope, QV4::QObjectWrapper::wrap(v4, d->currentItem)); - args->setReturnValue(rv->asReturnedValue()); - } else { - args->setReturnValue(QV4::Encode::null()); - } -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::StackView::empty - \readonly - - This property holds whether the stack is empty. - - \sa depth -*/ -bool QQuickStackView::isEmpty() const -{ - Q_D(const QQuickStackView); - return d->elements.isEmpty(); -} - -/*! - \qmlmethod void QtQuick.Controls::StackView::clear(transition) - - Removes all items from the stack. - - \include qquickstackview.qdocinc pop-ownership - - Since QtQuick.Controls 2.3, a \a transition can be optionally specified. Supported transitions: - - \value StackView.Immediate Clear the stack immediately without any transition (default). - \value StackView.PushTransition Clear the stack with a push transition. - \value StackView.ReplaceTransition Clear the stack with a replace transition. - \value StackView.PopTransition Clear the stack with a pop transition. -*/ -void QQuickStackView::clear(Operation operation) -{ - Q_D(QQuickStackView); - if (d->elements.isEmpty()) - return; - - const QString operationName = QStringLiteral("clear"); - if (d->modifyingElements) { - d->warnOfInterruption(operationName); - return; - } - - QScopedValueRollback<bool> modifyingElements(d->modifyingElements, true); - QScopedValueRollback<QString> operationNameRollback(d->operation, operationName); - if (operation != Immediate) { - QQuickStackElement *exit = d->elements.pop(); - exit->removal = true; - d->removing.insert(exit); - d->startTransition(QQuickStackTransition::popExit(operation, exit, this), - QQuickStackTransition::popEnter(operation, nullptr, this), false); - } - - int oldDepth = d->elements.count(); - d->setCurrentItem(nullptr); - qDeleteAll(d->elements); - d->elements.clear(); - d->depthChange(0, oldDepth); -} - -/*! - \qmlproperty var QtQuick.Controls::StackView::initialItem - - This property holds the initial item that should be shown when the StackView - is created. The initial item can be an \l Item, \l Component, or a \l [QML] url. - Specifying an initial item is equivalent to: - \code - Component.onCompleted: stackView.push(myInitialItem) - \endcode - - \sa push() -*/ -QJSValue QQuickStackView::initialItem() const -{ - Q_D(const QQuickStackView); - return d->initialItem; -} - -void QQuickStackView::setInitialItem(const QJSValue &item) -{ - Q_D(QQuickStackView); - d->initialItem = item; -} - -/*! - \qmlproperty Transition QtQuick.Controls::StackView::popEnter - - This property holds the transition that is applied to the item that - enters the stack when another item is popped off of it. - - \sa {Customizing StackView} -*/ -QQuickTransition *QQuickStackView::popEnter() const -{ - Q_D(const QQuickStackView); - if (d->transitioner) - return d->transitioner->removeDisplacedTransition; - return nullptr; -} - -void QQuickStackView::setPopEnter(QQuickTransition *enter) -{ - Q_D(QQuickStackView); - d->ensureTransitioner(); - if (d->transitioner->removeDisplacedTransition == enter) - return; - - d->transitioner->removeDisplacedTransition = enter; - emit popEnterChanged(); -} - -/*! - \qmlproperty Transition QtQuick.Controls::StackView::popExit - - This property holds the transition that is applied to the item that - exits the stack when the item is popped off of it. - - \sa {Customizing StackView} -*/ -QQuickTransition *QQuickStackView::popExit() const -{ - Q_D(const QQuickStackView); - if (d->transitioner) - return d->transitioner->removeTransition; - return nullptr; -} - -void QQuickStackView::setPopExit(QQuickTransition *exit) -{ - Q_D(QQuickStackView); - d->ensureTransitioner(); - if (d->transitioner->removeTransition == exit) - return; - - d->transitioner->removeTransition = exit; - emit popExitChanged(); -} - -/*! - \qmlproperty Transition QtQuick.Controls::StackView::pushEnter - - This property holds the transition that is applied to the item that - enters the stack when the item is pushed onto it. - - \sa {Customizing StackView} -*/ -QQuickTransition *QQuickStackView::pushEnter() const -{ - Q_D(const QQuickStackView); - if (d->transitioner) - return d->transitioner->addTransition; - return nullptr; -} - -void QQuickStackView::setPushEnter(QQuickTransition *enter) -{ - Q_D(QQuickStackView); - d->ensureTransitioner(); - if (d->transitioner->addTransition == enter) - return; - - d->transitioner->addTransition = enter; - emit pushEnterChanged(); -} - -/*! - \qmlproperty Transition QtQuick.Controls::StackView::pushExit - - This property holds the transition that is applied to the item that - exits the stack when another item is pushed onto it. - - \sa {Customizing StackView} -*/ -QQuickTransition *QQuickStackView::pushExit() const -{ - Q_D(const QQuickStackView); - if (d->transitioner) - return d->transitioner->addDisplacedTransition; - return nullptr; -} - -void QQuickStackView::setPushExit(QQuickTransition *exit) -{ - Q_D(QQuickStackView); - d->ensureTransitioner(); - if (d->transitioner->addDisplacedTransition == exit) - return; - - d->transitioner->addDisplacedTransition = exit; - emit pushExitChanged(); -} - -/*! - \qmlproperty Transition QtQuick.Controls::StackView::replaceEnter - - This property holds the transition that is applied to the item that - enters the stack when another item is replaced by it. - - \sa {Customizing StackView} -*/ -QQuickTransition *QQuickStackView::replaceEnter() const -{ - Q_D(const QQuickStackView); - if (d->transitioner) - return d->transitioner->moveTransition; - return nullptr; -} - -void QQuickStackView::setReplaceEnter(QQuickTransition *enter) -{ - Q_D(QQuickStackView); - d->ensureTransitioner(); - if (d->transitioner->moveTransition == enter) - return; - - d->transitioner->moveTransition = enter; - emit replaceEnterChanged(); -} - -/*! - \qmlproperty Transition QtQuick.Controls::StackView::replaceExit - - This property holds the transition that is applied to the item that - exits the stack when it is replaced by another item. - - \sa {Customizing StackView} -*/ -QQuickTransition *QQuickStackView::replaceExit() const -{ - Q_D(const QQuickStackView); - if (d->transitioner) - return d->transitioner->moveDisplacedTransition; - return nullptr; -} - -void QQuickStackView::setReplaceExit(QQuickTransition *exit) -{ - Q_D(QQuickStackView); - d->ensureTransitioner(); - if (d->transitioner->moveDisplacedTransition == exit) - return; - - d->transitioner->moveDisplacedTransition = exit; - emit replaceExitChanged(); -} - -void QQuickStackView::componentComplete() -{ - QQuickControl::componentComplete(); - - Q_D(QQuickStackView); - QScopedValueRollback<QString> operationNameRollback(d->operation, QStringLiteral("initialItem")); - QQuickStackElement *element = nullptr; - QString error; - int oldDepth = d->elements.count(); - if (QObject *o = d->initialItem.toQObject()) - element = QQuickStackElement::fromObject(o, this, &error); - else if (d->initialItem.isString()) - element = QQuickStackElement::fromString(d->initialItem.toString(), this, &error); - if (!error.isEmpty()) { - d->warn(error); - delete element; - } else if (d->pushElement(element)) { - d->depthChange(d->elements.count(), oldDepth); - d->setCurrentItem(element); - element->setStatus(QQuickStackView::Active); - } -} - -void QQuickStackView::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - QQuickControl::geometryChange(newGeometry, oldGeometry); - - Q_D(QQuickStackView); - for (QQuickStackElement *element : qAsConst(d->elements)) { - if (element->item) { - if (!element->widthValid) - element->item->setWidth(newGeometry.width()); - if (!element->heightValid) - element->item->setHeight(newGeometry.height()); - } - } -} - -bool QQuickStackView::childMouseEventFilter(QQuickItem *item, QEvent *event) -{ - // in order to block accidental user interaction while busy/transitioning, - // StackView filters out childrens' mouse events. therefore we block all - // press events. however, since push() may be called from signal handlers - // such as onPressed or onDoubleClicked, we must let the current mouse - // grabber item receive the respective mouse release event to avoid - // breaking its state (QTBUG-50305). - if (event->type() == QEvent::MouseButtonPress) - return true; - if (event->type() == QEvent::UngrabMouse) - return false; - QQuickWindow *window = item->window(); - return window && !window->mouseGrabberItem(); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickStackView::touchEvent(QTouchEvent *event) -{ - event->ignore(); // QTBUG-65084 -} -#endif - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickStackView::accessibleRole() const -{ - return QAccessible::LayeredPane; -} -#endif - -void QQuickStackViewAttachedPrivate::itemParentChanged(QQuickItem *item, QQuickItem *parent) -{ - Q_Q(QQuickStackViewAttached); - int oldIndex = element ? element->index : -1; - QQuickStackView *oldView = element ? element->view : nullptr; - QQuickStackView::Status oldStatus = element ? element->status : QQuickStackView::Inactive; - - QQuickStackView *newView = qobject_cast<QQuickStackView *>(parent); - element = newView ? QQuickStackViewPrivate::get(newView)->findElement(item) : nullptr; - - int newIndex = element ? element->index : -1; - QQuickStackView::Status newStatus = element ? element->status : QQuickStackView::Inactive; - - if (oldIndex != newIndex) - emit q->indexChanged(); - if (oldView != newView) - emit q->viewChanged(); - if (oldStatus != newStatus) - emit q->statusChanged(); -} - -QQuickStackViewAttached::QQuickStackViewAttached(QObject *parent) - : QObject(*(new QQuickStackViewAttachedPrivate), parent) -{ - Q_D(QQuickStackViewAttached); - QQuickItem *item = qobject_cast<QQuickItem *>(parent); - if (item) { - connect(item, &QQuickItem::visibleChanged, this, &QQuickStackViewAttached::visibleChanged); - QQuickItemPrivate::get(item)->addItemChangeListener(d, QQuickItemPrivate::Parent); - d->itemParentChanged(item, item->parentItem()); - } else if (parent) { - qmlWarning(parent) << "StackView must be attached to an Item"; - } -} - -QQuickStackViewAttached::~QQuickStackViewAttached() -{ - Q_D(QQuickStackViewAttached); - QQuickItem *parentItem = qobject_cast<QQuickItem *>(parent()); - if (parentItem) - QQuickItemPrivate::get(parentItem)->removeItemChangeListener(d, QQuickItemPrivate::Parent); -} - -/*! - \qmlattachedproperty int QtQuick.Controls::StackView::index - \readonly - - This attached property holds the stack index of the item it's - attached to, or \c -1 if the item is not in a stack. -*/ -int QQuickStackViewAttached::index() const -{ - Q_D(const QQuickStackViewAttached); - return d->element ? d->element->index : -1; -} - -/*! - \qmlattachedproperty StackView QtQuick.Controls::StackView::view - \readonly - - This attached property holds the stack view of the item it's - attached to, or \c null if the item is not in a stack. -*/ -QQuickStackView *QQuickStackViewAttached::view() const -{ - Q_D(const QQuickStackViewAttached); - return d->element ? d->element->view : nullptr; -} - -/*! - \qmlattachedproperty enumeration QtQuick.Controls::StackView::status - \readonly - - This attached property holds the stack status of the item it's - attached to, or \c StackView.Inactive if the item is not in a stack. - - Available values: - \value StackView.Inactive The item is inactive (or not in a stack). - \value StackView.Deactivating The item is being deactivated (popped off). - \value StackView.Activating The item is being activated (becoming the current item). - \value StackView.Active The item is active, that is, the current item. -*/ -QQuickStackView::Status QQuickStackViewAttached::status() const -{ - Q_D(const QQuickStackViewAttached); - return d->element ? d->element->status : QQuickStackView::Inactive; -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlattachedproperty bool QtQuick.Controls::StackView::visible - - This attached property holds the visibility of the item it's attached to. - The value follows the value of \l Item::visible. - - By default, StackView shows incoming items when the enter transition begins, - and hides outgoing items when the exit transition ends. Setting this property - explicitly allows the default behavior to be overridden, making it possible - to keep items that are below the top-most item visible. - - \note The default transitions of most styles slide outgoing items outside the - view, and may also animate their opacity. In order to keep a full stack - of items visible, consider customizing the \l transitions so that the - items underneath can be seen. - - \image qtquickcontrols2-stackview-visible.png - - \snippet qtquickcontrols2-stackview-visible.qml 1 -*/ -bool QQuickStackViewAttached::isVisible() const -{ - const QQuickItem *parentItem = qobject_cast<QQuickItem *>(parent()); - return parentItem && parentItem->isVisible(); -} - -void QQuickStackViewAttached::setVisible(bool visible) -{ - Q_D(QQuickStackViewAttached); - d->explicitVisible = true; - QQuickItem *parentItem = qobject_cast<QQuickItem *>(parent()); - if (parentItem) - parentItem->setVisible(visible); -} - -void QQuickStackViewAttached::resetVisible() -{ - Q_D(QQuickStackViewAttached); - d->explicitVisible = false; - if (!d->element || !d->element->view) - return; - - QQuickItem *parentItem = qobject_cast<QQuickItem *>(parent()); - if (parentItem) - parentItem->setVisible(parentItem == d->element->view->currentItem()); -} - -/*! - \qmlattachedsignal QtQuick.Controls::StackView::activated() - \since QtQuick.Controls 2.1 (Qt 5.8) - - This attached signal is emitted when the item it's attached to is activated in the stack. - - \sa status -*/ - -/*! - \qmlattachedsignal QtQuick.Controls::StackView::deactivated() - \since QtQuick.Controls 2.1 (Qt 5.8) - - This attached signal is emitted when the item it's attached to is deactivated in the stack. - - \sa status -*/ - -/*! - \qmlattachedsignal QtQuick.Controls::StackView::activating() - \since QtQuick.Controls 2.1 (Qt 5.8) - - This attached signal is emitted when the item it's attached to is in the process of being - activated in the stack. - - \sa status -*/ - -/*! - \qmlattachedsignal QtQuick.Controls::StackView::deactivating() - \since QtQuick.Controls 2.1 (Qt 5.8) - - This attached signal is emitted when the item it's attached to is in the process of being - dectivated in the stack. - - \sa status -*/ - -/*! - \qmlattachedsignal QtQuick.Controls::StackView::removed() - \since QtQuick.Controls 2.1 (Qt 5.8) - - This attached signal is emitted when the item it's attached to has been - removed from the stack. It can be used to safely destroy an Item that was - pushed onto the stack, for example: - - \code - Item { - StackView.onRemoved: destroy() // Will be destroyed sometime after this call. - } - \endcode - - \sa status -*/ - -QT_END_NAMESPACE - -#include "moc_qquickstackview_p.cpp" diff --git a/src/quicktemplates2/qquickstackview_p.cpp b/src/quicktemplates2/qquickstackview_p.cpp deleted file mode 100644 index c2b5d514..00000000 --- a/src/quicktemplates2/qquickstackview_p.cpp +++ /dev/null @@ -1,350 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickstackview_p_p.h" -#include "qquickstackelement_p_p.h" -#include "qquickstacktransition_p_p.h" - -#include <QtQml/qqmlinfo.h> -#include <QtQml/qqmllist.h> -#include <QtQml/private/qv4qmlcontext_p.h> -#include <QtQml/private/qv4qobjectwrapper_p.h> -#include <QtQml/private/qv4variantobject_p.h> -#include <QtQml/private/qv4urlobject_p.h> -#include <QtQuick/private/qquickanimation_p.h> -#include <QtQuick/private/qquicktransition_p.h> - -QT_BEGIN_NAMESPACE - -void QQuickStackViewPrivate::warn(const QString &error) -{ - Q_Q(QQuickStackView); - if (operation.isEmpty()) - qmlWarning(q) << error; - else - qmlWarning(q) << operation << ": " << error; -} - -void QQuickStackViewPrivate::warnOfInterruption(const QString &attemptedOperation) -{ - Q_Q(QQuickStackView); - qmlWarning(q) << "cannot " << attemptedOperation << " while already in the process of completing a " << operation; -} - -void QQuickStackViewPrivate::setCurrentItem(QQuickStackElement *element) -{ - Q_Q(QQuickStackView); - QQuickItem *item = element ? element->item : nullptr; - if (currentItem == item) - return; - - currentItem = item; - if (element) - element->setVisible(true); - if (item) - item->setFocus(true); - emit q->currentItemChanged(); -} - -static bool initProperties(QQuickStackElement *element, const QV4::Value &props, QQmlV4Function *args) -{ - if (props.isObject()) { - const QV4::QObjectWrapper *wrapper = props.as<QV4::QObjectWrapper>(); - if (!wrapper) { - QV4::ExecutionEngine *v4 = args->v4engine(); - element->properties.set(v4, props); - element->qmlCallingContext.set(v4, v4->qmlContext()); - return true; - } - } - return false; -} - -QList<QQuickStackElement *> QQuickStackViewPrivate::parseElements(int from, QQmlV4Function *args, QStringList *errors) -{ - QV4::ExecutionEngine *v4 = args->v4engine(); - auto context = v4->callingQmlContext(); - QV4::Scope scope(v4); - - QList<QQuickStackElement *> elements; - - int argc = args->length(); - for (int i = from; i < argc; ++i) { - QV4::ScopedValue arg(scope, (*args)[i]); - if (QV4::ArrayObject *array = arg->as<QV4::ArrayObject>()) { - const uint len = uint(array->getLength()); - for (uint j = 0; j < len; ++j) { - QString error; - QV4::ScopedValue value(scope, array->get(j)); - QQuickStackElement *element = createElement(value, context, &error); - if (element) { - if (j < len - 1) { - QV4::ScopedValue props(scope, array->get(j + 1)); - if (initProperties(element, props, args)) - ++j; - } - elements += element; - } else if (!error.isEmpty()) { - *errors += error; - } - } - } else { - QString error; - QQuickStackElement *element = createElement(arg, context, &error); - if (element) { - if (i < argc - 1) { - QV4::ScopedValue props(scope, (*args)[i + 1]); - if (initProperties(element, props, args)) - ++i; - } - elements += element; - } else if (!error.isEmpty()) { - *errors += error; - } - } - } - return elements; -} - -QQuickStackElement *QQuickStackViewPrivate::findElement(QQuickItem *item) const -{ - if (item) { - for (QQuickStackElement *e : qAsConst(elements)) { - if (e->item == item) - return e; - } - } - return nullptr; -} - -QQuickStackElement *QQuickStackViewPrivate::findElement(const QV4::Value &value) const -{ - if (const QV4::QObjectWrapper *o = value.as<QV4::QObjectWrapper>()) - return findElement(qobject_cast<QQuickItem *>(o->object())); - return nullptr; -} - -static QUrl resolvedUrl(const QUrl &url, const QQmlRefPointer<QQmlContextData> &context) -{ - if (url.isRelative()) - return context->resolvedUrl(url).toString(); - return url; -} - -static QString resolvedUrl(const QString &str, const QQmlRefPointer<QQmlContextData> &context) -{ - QUrl url(http://code.qt.io/str); - if (url.isRelative()) - return context->resolvedUrl(url).toString(); - return str; -} - -QQuickStackElement *QQuickStackViewPrivate::createElement(const QV4::Value &value, const QQmlRefPointer<QQmlContextData> &context, QString *error) -{ - Q_Q(QQuickStackView); - if (const QV4::String *s = value.as<QV4::String>()) - return QQuickStackElement::fromString(resolvedUrl(s->toQString(), context), q, error); - if (const QV4::QObjectWrapper *o = value.as<QV4::QObjectWrapper>()) - return QQuickStackElement::fromObject(o->object(), q, error); - if (const QV4::UrlObject *u = value.as<QV4::UrlObject>()) - return QQuickStackElement::fromString(resolvedUrl(u->href(), context), q, error); - - if (const QV4::Object *v = value.as<QV4::Object>()) { - const QVariant data = v->engine()->toVariant(value, QMetaType::fromType<QUrl>()); - if (data.typeId() == QMetaType::QUrl) { - return QQuickStackElement::fromString(resolvedUrl(data.toUrl(), context).toString(), q, - error); - } - } - - return nullptr; -} - -bool QQuickStackViewPrivate::pushElements(const QList<QQuickStackElement *> &elems) -{ - Q_Q(QQuickStackView); - if (!elems.isEmpty()) { - for (QQuickStackElement *e : elems) { - e->setIndex(elements.count()); - elements += e; - } - return elements.top()->load(q); - } - return false; -} - -bool QQuickStackViewPrivate::pushElement(QQuickStackElement *element) -{ - if (element) - return pushElements(QList<QQuickStackElement *>() << element); - return false; -} - -bool QQuickStackViewPrivate::popElements(QQuickStackElement *element) -{ - Q_Q(QQuickStackView); - while (elements.count() > 1 && elements.top() != element) { - delete elements.pop(); - if (!element) - break; - } - return elements.top()->load(q); -} - -bool QQuickStackViewPrivate::replaceElements(QQuickStackElement *target, const QList<QQuickStackElement *> &elems) -{ - if (target) { - while (!elements.isEmpty()) { - QQuickStackElement* top = elements.pop(); - delete top; - if (top == target) - break; - } - } - return pushElements(elems); -} - -void QQuickStackViewPrivate::ensureTransitioner() -{ - if (!transitioner) { - transitioner = new QQuickItemViewTransitioner; - transitioner->setChangeListener(this); - } -} - -void QQuickStackViewPrivate::startTransition(const QQuickStackTransition &first, const QQuickStackTransition &second, bool immediate) -{ - if (first.element) - first.element->transitionNextReposition(transitioner, first.type, first.target); - if (second.element) - second.element->transitionNextReposition(transitioner, second.type, second.target); - - if (first.element) { - if (immediate || !first.element->item || !first.element->prepareTransition(transitioner, first.viewBounds)) - completeTransition(first.element, first.transition, first.status); - else - first.element->startTransition(transitioner, first.status); - } - if (second.element) { - if (immediate || !second.element->item || !second.element->prepareTransition(transitioner, second.viewBounds)) - completeTransition(second.element, second.transition, second.status); - else - second.element->startTransition(transitioner, second.status); - } - - if (transitioner) { - setBusy(!transitioner->runningJobs.isEmpty()); - transitioner->resetTargetLists(); - } -} - -void QQuickStackViewPrivate::completeTransition(QQuickStackElement *element, QQuickTransition *transition, QQuickStackView::Status status) -{ - element->setStatus(status); - if (transition) { - // TODO: add a proper way to complete a transition - QQmlListProperty<QQuickAbstractAnimation> animations = transition->animations(); - int count = animations.count(&animations); - for (int i = 0; i < count; ++i) { - QQuickAbstractAnimation *anim = animations.at(&animations, i); - anim->complete(); - } - } - viewItemTransitionFinished(element); -} - -void QQuickStackViewPrivate::viewItemTransitionFinished(QQuickItemViewTransitionableItem *transitionable) -{ - QQuickStackElement *element = static_cast<QQuickStackElement *>(transitionable); - if (element->status == QQuickStackView::Activating) { - element->setStatus(QQuickStackView::Active); - } else if (element->status == QQuickStackView::Deactivating) { - element->setStatus(QQuickStackView::Inactive); - QQuickStackElement *existingElement = element->item ? findElement(element->item) : nullptr; - // If a different element with the same item is found, - // do not call setVisible(false) since it needs to be visible. - if (!existingElement || element == existingElement) - element->setVisible(false); - if (element->removal || element->isPendingRemoval()) - removed += element; - } - - if (transitioner && transitioner->runningJobs.isEmpty()) { - // ~QQuickStackElement() emits QQuickStackViewAttached::removed(), which may be used - // to modify the stack. Set the status first and make a copy of the destroyable stack - // elements to exclude any modifications that may happen during qDeleteAll(). (QTBUG-62153) - setBusy(false); - QList<QQuickStackElement*> removedElements = removed; - removed.clear(); - - for (QQuickStackElement *removedElement : qAsConst(removedElements)) { - // If an element with the same item is found in the active stack list, - // forget about the item so that we don't hide it. - if (removedElement->item && findElement(removedElement->item)) { - QQuickItemPrivate::get(removedElement->item)->removeItemChangeListener(removedElement, QQuickItemPrivate::Destroyed); - removedElement->item = nullptr; - } - } - - qDeleteAll(removedElements); - } - - removing.remove(element); -} - -void QQuickStackViewPrivate::setBusy(bool b) -{ - Q_Q(QQuickStackView); - if (busy == b) - return; - - busy = b; - q->setFiltersChildMouseEvents(busy); - emit q->busyChanged(); -} - -void QQuickStackViewPrivate::depthChange(int newDepth, int oldDepth) -{ - Q_Q(QQuickStackView); - if (newDepth == oldDepth) - return; - - emit q->depthChanged(); - if (newDepth == 0 || oldDepth == 0) - emit q->emptyChanged(); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickstackview_p.h b/src/quicktemplates2/qquickstackview_p.h deleted file mode 100644 index f4cb5458..00000000 --- a/src/quicktemplates2/qquickstackview_p.h +++ /dev/null @@ -1,224 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTACKVIEW_P_H -#define QQUICKSTACKVIEW_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -QT_BEGIN_NAMESPACE - -class QQmlV4Function; -class QQuickTransition; -class QQuickStackElement; -class QQuickStackViewPrivate; -class QQuickStackViewAttached; -class QQuickStackViewAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickStackView : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(bool busy READ isBusy NOTIFY busyChanged FINAL) - Q_PROPERTY(int depth READ depth NOTIFY depthChanged FINAL) - Q_PROPERTY(QQuickItem *currentItem READ currentItem NOTIFY currentItemChanged FINAL) - Q_PROPERTY(QJSValue initialItem READ initialItem WRITE setInitialItem FINAL) - Q_PROPERTY(QQuickTransition *popEnter READ popEnter WRITE setPopEnter NOTIFY popEnterChanged FINAL) - Q_PROPERTY(QQuickTransition *popExit READ popExit WRITE setPopExit NOTIFY popExitChanged FINAL) - Q_PROPERTY(QQuickTransition *pushEnter READ pushEnter WRITE setPushEnter NOTIFY pushEnterChanged FINAL) - Q_PROPERTY(QQuickTransition *pushExit READ pushExit WRITE setPushExit NOTIFY pushExitChanged FINAL) - Q_PROPERTY(QQuickTransition *replaceEnter READ replaceEnter WRITE setReplaceEnter NOTIFY replaceEnterChanged FINAL) - Q_PROPERTY(QQuickTransition *replaceExit READ replaceExit WRITE setReplaceExit NOTIFY replaceExitChanged FINAL) - // 2.3 (Qt 5.10) - Q_PROPERTY(bool empty READ isEmpty NOTIFY emptyChanged FINAL REVISION(2, 3)) - QML_NAMED_ELEMENT(StackView) - QML_ATTACHED(QQuickStackViewAttached) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickStackView(QQuickItem *parent = nullptr); - ~QQuickStackView(); - - static QQuickStackViewAttached *qmlAttachedProperties(QObject *object); - - bool isBusy() const; - int depth() const; - QQuickItem *currentItem() const; - - enum Status { - Inactive = 0, - Deactivating = 1, - Activating = 2, - Active = 3 - }; - Q_ENUM(Status) - - QJSValue initialItem() const; - void setInitialItem(const QJSValue &item); - - QQuickTransition *popEnter() const; - void setPopEnter(QQuickTransition *enter); - - QQuickTransition *popExit() const; - void setPopExit(QQuickTransition *exit); - - QQuickTransition *pushEnter() const; - void setPushEnter(QQuickTransition *enter); - - QQuickTransition *pushExit() const; - void setPushExit(QQuickTransition *exit); - - QQuickTransition *replaceEnter() const; - void setReplaceEnter(QQuickTransition *enter); - - QQuickTransition *replaceExit() const; - void setReplaceExit(QQuickTransition *exit); - - enum LoadBehavior { - DontLoad, - ForceLoad - }; - Q_ENUM(LoadBehavior) - - Q_INVOKABLE QQuickItem *get(int index, LoadBehavior behavior = DontLoad); - Q_INVOKABLE QQuickItem *find(const QJSValue &callback, LoadBehavior behavior = DontLoad); - - enum Operation { - Transition = -1, // ### Deprecated in Qt 6; remove in Qt 7. - Immediate = 0, - PushTransition = 1, - ReplaceTransition = 2, - PopTransition = 3, - }; - Q_ENUM(Operation) - - Q_INVOKABLE void push(QQmlV4Function *args); - Q_INVOKABLE void pop(QQmlV4Function *args); - Q_INVOKABLE void replace(QQmlV4Function *args); - - // 2.3 (Qt 5.10) - bool isEmpty() const; - -public Q_SLOTS: - void clear(Operation operation = Immediate); - -Q_SIGNALS: - void busyChanged(); - void depthChanged(); - void currentItemChanged(); - void popEnterChanged(); - void popExitChanged(); - void pushEnterChanged(); - void pushExitChanged(); - void replaceEnterChanged(); - void replaceExitChanged(); - // 2.3 (Qt 5.10) - Q_REVISION(2, 3) void emptyChanged(); - -protected: - void componentComplete() override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - bool childMouseEventFilter(QQuickItem *, QEvent *) override; - -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; -#endif - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickStackView) - Q_DECLARE_PRIVATE(QQuickStackView) -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickStackViewAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(int index READ index NOTIFY indexChanged FINAL) - Q_PROPERTY(QQuickStackView *view READ view NOTIFY viewChanged FINAL) - Q_PROPERTY(QQuickStackView::Status status READ status NOTIFY statusChanged FINAL) - // 2.2 (Qt 5.9) - Q_PROPERTY(bool visible READ isVisible WRITE setVisible RESET resetVisible NOTIFY visibleChanged FINAL) // REVISION(2, 2) - -public: - explicit QQuickStackViewAttached(QObject *parent = nullptr); - ~QQuickStackViewAttached(); - - int index() const; - QQuickStackView *view() const; - QQuickStackView::Status status() const; - - // 2.2 (Qt 5.9) - bool isVisible() const; - void setVisible(bool visible); - void resetVisible(); - -Q_SIGNALS: - void indexChanged(); - void viewChanged(); - void statusChanged(); - // 2.1 (Qt 5.8) - /*Q_REVISION(2, 1)*/ void activated(); - /*Q_REVISION(2, 1)*/ void activating(); - /*Q_REVISION(2, 1)*/ void deactivated(); - /*Q_REVISION(2, 1)*/ void deactivating(); - /*Q_REVISION(2, 1)*/ void removed(); - // 2.2 (Qt 5.9) - /*Q_REVISION(2, 2)*/ void visibleChanged(); - -private: - Q_DISABLE_COPY(QQuickStackViewAttached) - Q_DECLARE_PRIVATE(QQuickStackViewAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickStackView) -QML_DECLARE_TYPEINFO(QQuickStackView, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKSTACKVIEW_P_H diff --git a/src/quicktemplates2/qquickstackview_p_p.h b/src/quicktemplates2/qquickstackview_p_p.h deleted file mode 100644 index 0c64019d..00000000 --- a/src/quicktemplates2/qquickstackview_p_p.h +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSTACKVIEW_P_P_H -#define QQUICKSTACKVIEW_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickstackview_p.h> -#include <QtQuickTemplates2/private/qquickcontrol_p_p.h> -#include <QtQuick/private/qquickitemviewtransition_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> -#include <QtQml/private/qv4value_p.h> -#include <QtQml/private/qqmlcontextdata_p.h> -#include <QtCore/qset.h> -#include <QtCore/qstack.h> - -QT_BEGIN_NAMESPACE - -class QQuickStackElement; -struct QQuickStackTransition; - -class QQuickStackViewPrivate : public QQuickControlPrivate, public QQuickItemViewTransitionChangeListener -{ - Q_DECLARE_PUBLIC(QQuickStackView) - -public: - static QQuickStackViewPrivate *get(QQuickStackView *view) - { - return view->d_func(); - } - - void warn(const QString &error); - void warnOfInterruption(const QString &attemptedOperation); - - void setCurrentItem(QQuickStackElement *element); - - QList<QQuickStackElement *> parseElements(int from, QQmlV4Function *args, QStringList *errors); - QQuickStackElement *findElement(QQuickItem *item) const; - QQuickStackElement *findElement(const QV4::Value &value) const; - QQuickStackElement *createElement(const QV4::Value &value, const QQmlRefPointer<QQmlContextData> &context, QString *error); - bool pushElements(const QList<QQuickStackElement *> &elements); - bool pushElement(QQuickStackElement *element); - bool popElements(QQuickStackElement *element); - bool replaceElements(QQuickStackElement *element, const QList<QQuickStackElement *> &elements); - - void ensureTransitioner(); - void startTransition(const QQuickStackTransition &first, const QQuickStackTransition &second, bool immediate); - void completeTransition(QQuickStackElement *element, QQuickTransition *transition, QQuickStackView::Status status); - - void viewItemTransitionFinished(QQuickItemViewTransitionableItem *item) override; - void setBusy(bool busy); - void depthChange(int newDepth, int oldDepth); - - bool busy = false; - bool modifyingElements = false; - QString operation; - QJSValue initialItem; - QQuickItem *currentItem = nullptr; - QSet<QQuickStackElement*> removing; - QList<QQuickStackElement*> removed; - QStack<QQuickStackElement *> elements; - QQuickItemViewTransitioner *transitioner = nullptr; -}; - -class QQuickStackViewAttachedPrivate : public QObjectPrivate, public QQuickItemChangeListener -{ - Q_DECLARE_PUBLIC(QQuickStackViewAttached) - -public: - static QQuickStackViewAttachedPrivate *get(QQuickStackViewAttached *attached) - { - return attached->d_func(); - } - - void itemParentChanged(QQuickItem *item, QQuickItem *parent) override; - - bool explicitVisible = false; - QQuickStackElement *element = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKSTACKVIEW_P_P_H diff --git a/src/quicktemplates2/qquickswipe_p.h b/src/quicktemplates2/qquickswipe_p.h deleted file mode 100644 index 768d5638..00000000 --- a/src/quicktemplates2/qquickswipe_p.h +++ /dev/null @@ -1,142 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSWIPE_P_H -#define QQUICKSWIPE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qobject.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> -#include <QtQuickTemplates2/private/qquickswipedelegate_p.h> - -QT_BEGIN_NAMESPACE - -class QQmlComponent; -class QQuickItem; -class QQuickTransition; -class QQuickSwipePrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSwipe : public QObject -{ - Q_OBJECT - Q_PROPERTY(qreal position READ position WRITE setPosition NOTIFY positionChanged FINAL) - Q_PROPERTY(bool complete READ isComplete NOTIFY completeChanged FINAL) - Q_PROPERTY(QQmlComponent *left READ left WRITE setLeft NOTIFY leftChanged FINAL) - Q_PROPERTY(QQmlComponent *behind READ behind WRITE setBehind NOTIFY behindChanged FINAL) - Q_PROPERTY(QQmlComponent *right READ right WRITE setRight NOTIFY rightChanged FINAL) - Q_PROPERTY(QQuickItem *leftItem READ leftItem NOTIFY leftItemChanged FINAL) - Q_PROPERTY(QQuickItem *behindItem READ behindItem NOTIFY behindItemChanged FINAL) - Q_PROPERTY(QQuickItem *rightItem READ rightItem NOTIFY rightItemChanged FINAL) - // 2.2 (Qt 5.9) - Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged FINAL) // REVISION(2, 2) - Q_PROPERTY(QQuickTransition *transition READ transition WRITE setTransition NOTIFY transitionChanged FINAL) // REVISION(2, 2) - QML_ANONYMOUS - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickSwipe(QQuickSwipeDelegate *control); - - qreal position() const; - void setPosition(qreal position); - - bool isComplete() const; - void setComplete(bool complete); - - QQmlComponent *left() const; - void setLeft(QQmlComponent *left); - - QQmlComponent *behind() const; - void setBehind(QQmlComponent *behind); - - QQmlComponent *right() const; - void setRight(QQmlComponent *right); - - QQuickItem *leftItem() const; - void setLeftItem(QQuickItem *item); - - QQuickItem *behindItem() const; - void setBehindItem(QQuickItem *item); - - QQuickItem *rightItem() const; - void setRightItem(QQuickItem *item); - - // 2.1 (Qt 5.8) - Q_REVISION(2, 1) Q_INVOKABLE void close(); - - // 2.2 (Qt 5.9) - bool isEnabled() const; - void setEnabled(bool enabled); - - QQuickTransition *transition() const; - void setTransition(QQuickTransition *transition); - - Q_REVISION(2, 2) Q_INVOKABLE void open(QQuickSwipeDelegate::Side side); - -Q_SIGNALS: - void positionChanged(); - void completeChanged(); - void leftChanged(); - void behindChanged(); - void rightChanged(); - void leftItemChanged(); - void behindItemChanged(); - void rightItemChanged(); - // 2.1 (Qt 5.8) - /*Q_REVISION(2, 1)*/ void completed(); - // 2.2 (Qt 5.9) - /*Q_REVISION(2, 2)*/ void opened(); - /*Q_REVISION(2, 2)*/ void closed(); - /*Q_REVISION(2, 2)*/ void enabledChanged(); - /*Q_REVISION(2, 2)*/ void transitionChanged(); - -private: - Q_DISABLE_COPY(QQuickSwipe) - Q_DECLARE_PRIVATE(QQuickSwipe) -}; - -QT_END_NAMESPACE - -#endif // QQUICKSWIPE_P_H diff --git a/src/quicktemplates2/qquickswipedelegate.cpp b/src/quicktemplates2/qquickswipedelegate.cpp deleted file mode 100644 index 817704ba..00000000 --- a/src/quicktemplates2/qquickswipedelegate.cpp +++ /dev/null @@ -1,1527 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickswipedelegate_p.h" -#include "qquickswipedelegate_p_p.h" -#include "qquickcontrol_p_p.h" -#include "qquickitemdelegate_p_p.h" -#include "qquickvelocitycalculator_p_p.h" - -#include <QtGui/qstylehints.h> -#include <QtGui/private/qguiapplication_p.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtQml/qqmlinfo.h> -#include <QtQuick/private/qquickanimation_p.h> -#include <QtQuick/private/qquicktransition_p.h> -#include <QtQuick/private/qquicktransitionmanager_p_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype SwipeDelegate - \inherits ItemDelegate -//! \instantiates QQuickSwipeDelegate - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-delegates - \brief Swipable item delegate. - - SwipeDelegate presents a view item that can be swiped left or right to - expose more options or information. It is used as a delegate in views such - as \l ListView. - - In the following example, SwipeDelegate is used in a \l ListView to allow - items to be removed from it by swiping to the left: - - \snippet qtquickcontrols2-swipedelegate.qml 1 - - SwipeDelegate inherits its API from \l ItemDelegate, which is inherited - from AbstractButton. For instance, you can set \l {AbstractButton::text}{text}, - and react to \l {AbstractButton::clicked}{clicks} using the AbstractButton - API. - - Information regarding the progress of a swipe, as well as the components - that should be shown upon swiping, are both available through the - \l {SwipeDelegate::}{swipe} grouped property object. For example, - \c swipe.position holds the position of the - swipe within the range \c -1.0 to \c 1.0. The \c swipe.left - property determines which item will be displayed when the control is swiped - to the right, and vice versa for \c swipe.right. The positioning of these - components is left to applications to decide. For example, without specifying - any position for \c swipe.left or \c swipe.right, the following will - occur: - - \image qtquickcontrols2-swipedelegate.gif - - If \c swipe.left and \c swipe.right are anchored to the left and - right of the \l {Control::}{background} item (respectively), they'll behave like this: - - \image qtquickcontrols2-swipedelegate-leading-trailing.gif - - When using \c swipe.left and \c swipe.right, the control cannot be - swiped past the left and right edges. To achieve this type of "wrapping" - behavior, set \c swipe.behind instead. This will result in the same - item being shown regardless of which direction the control is swiped. For - example, in the image below, we set \c swipe.behind and then swipe the - control repeatedly in both directions: - - \image qtquickcontrols2-swipedelegate-behind.gif - - \sa {Customizing SwipeDelegate}, {Delegate Controls}, {Qt Quick Controls 2 - Swipe to Remove}{Swipe to Remove Example} -*/ - -namespace { - typedef QQuickSwipeDelegateAttached Attached; - - Attached *attachedObject(QQuickItem *item) { - return qobject_cast<Attached*>(qmlAttachedPropertiesObject<QQuickSwipeDelegate>(item, false)); - } - - enum PositionAnimation { - DontAnimatePosition, - AnimatePosition - }; -} - -class QQuickSwipeTransitionManager : public QQuickTransitionManager -{ -public: - QQuickSwipeTransitionManager(QQuickSwipe *swipe); - - void transition(QQuickTransition *transition, qreal position); - -protected: - void finished() override; - -private: - QQuickSwipe *m_swipe = nullptr; -}; - -class QQuickSwipePrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickSwipe) - -public: - QQuickSwipePrivate(QQuickSwipeDelegate *control) : control(control) { } - - static QQuickSwipePrivate *get(QQuickSwipe *swipe); - - QQuickItem *createDelegateItem(QQmlComponent *component); - QQuickItem *showRelevantItemForPosition(qreal position); - QQuickItem *createRelevantItemForDistance(qreal distance); - void reposition(PositionAnimation animationPolicy); - void createLeftItem(); - void createBehindItem(); - void createRightItem(); - void createAndShowLeftItem(); - void createAndShowBehindItem(); - void createAndShowRightItem(); - - void warnAboutMixingDelegates(); - void warnAboutSettingDelegatesWhileVisible(); - - bool hasDelegates() const; - - bool isTransitioning() const; - void beginTransition(qreal position); - void finishTransition(); - - QQuickSwipeDelegate *control = nullptr; - // Same range as position, but is set before press events so that we can - // keep track of which direction the user must swipe when using left and right delegates. - qreal positionBeforePress = 0; - qreal position = 0; - // A "less strict" version of complete that is true if complete was true - // before the last press event. - bool wasComplete = false; - bool complete = false; - bool enabled = true; - bool waitForTransition = false; - QQuickVelocityCalculator velocityCalculator; - QQmlComponent *left = nullptr; - QQmlComponent *behind = nullptr; - QQmlComponent *right = nullptr; - QQuickItem *leftItem = nullptr; - QQuickItem *behindItem = nullptr; - QQuickItem *rightItem = nullptr; - QQuickTransition *transition = nullptr; - QScopedPointer<QQuickSwipeTransitionManager> transitionManager; -}; - -QQuickSwipeTransitionManager::QQuickSwipeTransitionManager(QQuickSwipe *swipe) - : m_swipe(swipe) -{ -} - -void QQuickSwipeTransitionManager::transition(QQuickTransition *transition, qreal position) -{ - qmlExecuteDeferred(transition); - - QQmlProperty defaultTarget(m_swipe, QLatin1String("position")); - QQmlListProperty<QQuickAbstractAnimation> animations = transition->animations(); - const int count = animations.count(&animations); - for (int i = 0; i < count; ++i) { - QQuickAbstractAnimation *anim = animations.at(&animations, i); - anim->setDefaultTarget(defaultTarget); - } - - QList<QQuickStateAction> actions; - actions << QQuickStateAction(m_swipe, QLatin1String("position"), position); - QQuickTransitionManager::transition(actions, transition, m_swipe); -} - -void QQuickSwipeTransitionManager::finished() -{ - QQuickSwipePrivate::get(m_swipe)->finishTransition(); -} - -QQuickSwipePrivate *QQuickSwipePrivate::get(QQuickSwipe *swipe) -{ - return swipe->d_func(); -} - -QQuickItem *QQuickSwipePrivate::createDelegateItem(QQmlComponent *component) -{ - // If we don't use the correct context, it won't be possible to refer to - // the control's id from within the delegates. - QQmlContext *creationContext = component->creationContext(); - // The component might not have been created in QML, in which case - // the creation context will be null and we have to create it ourselves. - if (!creationContext) - creationContext = qmlContext(control); - QQmlContext *context = new QQmlContext(creationContext, control); - context->setContextObject(control); - QQuickItem *item = qobject_cast<QQuickItem*>(component->beginCreate(context)); - if (item) { - item->setParentItem(control); - component->completeCreate(); - } - return item; -} - -QQuickItem *QQuickSwipePrivate::showRelevantItemForPosition(qreal position) -{ - if (qFuzzyIsNull(position)) - return nullptr; - - if (behind) { - createAndShowBehindItem(); - return behindItem; - } - - if (right && position < 0.0) { - createAndShowRightItem(); - return rightItem; - } - - if (left && position > 0.0) { - createAndShowLeftItem(); - return leftItem; - } - - return nullptr; -} - -QQuickItem *QQuickSwipePrivate::createRelevantItemForDistance(qreal distance) -{ - if (qFuzzyIsNull(distance)) - return nullptr; - - if (behind) { - createBehindItem(); - return behindItem; - } - - // a) If the position before the press was 0.0, we know that *any* movement - // whose distance is negative will result in the right item being shown and - // vice versa. - // b) Once the control has been exposed (that is, swiped to the left or right, - // and hence the position is either -1.0 or 1.0), we must use the width of the - // relevant item to determine if the distance is larger than that item, - // in order to know whether or not to display it. - // c) If the control has been exposed, and the swipe is larger than the width - // of the relevant item from which the swipe started from, we must show the - // item on the other side (if any). - - if (right) { - if ((distance < 0.0 && positionBeforePress == 0.0) /* a) */ - || (rightItem && positionBeforePress == -1.0 && distance < rightItem->width()) /* b) */ - || (leftItem && positionBeforePress == 1.0 && qAbs(distance) > leftItem->width())) /* c) */ { - createRightItem(); - return rightItem; - } - } - - if (left) { - if ((distance > 0.0 && positionBeforePress == 0.0) /* a) */ - || (leftItem && positionBeforePress == 1.0 && qAbs(distance) < leftItem->width()) /* b) */ - || (rightItem && positionBeforePress == -1.0 && qAbs(distance) > rightItem->width())) /* c) */ { - createLeftItem(); - return leftItem; - } - } - - return nullptr; -} - -void QQuickSwipePrivate::reposition(PositionAnimation animationPolicy) -{ - QQuickItem *relevantItem = showRelevantItemForPosition(position); - const qreal relevantWidth = relevantItem ? relevantItem->width() : 0.0; - const qreal contentItemX = position * relevantWidth + control->leftPadding(); - - // "Behavior on x" relies on the property system to know when it should update, - // so we can prevent it from animating by setting the x position directly. - if (animationPolicy == AnimatePosition) { - if (QQuickItem *contentItem = control->contentItem()) - contentItem->setProperty("x", contentItemX); - if (QQuickItem *background = control->background()) - background->setProperty("x", position * relevantWidth); - } else { - if (QQuickItem *contentItem = control->contentItem()) - contentItem->setX(contentItemX); - if (QQuickItem *background = control->background()) - background->setX(position * relevantWidth); - } -} - -void QQuickSwipePrivate::createLeftItem() -{ - if (!leftItem) { - Q_Q(QQuickSwipe); - q->setLeftItem(createDelegateItem(left)); - if (!leftItem) - qmlWarning(control) << "Failed to create left item:" << left->errors(); - } -} - -void QQuickSwipePrivate::createBehindItem() -{ - if (!behindItem) { - Q_Q(QQuickSwipe); - q->setBehindItem(createDelegateItem(behind)); - if (!behindItem) - qmlWarning(control) << "Failed to create behind item:" << behind->errors(); - } -} - -void QQuickSwipePrivate::createRightItem() -{ - if (!rightItem) { - Q_Q(QQuickSwipe); - q->setRightItem(createDelegateItem(right)); - if (!rightItem) - qmlWarning(control) << "Failed to create right item:" << right->errors(); - } -} - -void QQuickSwipePrivate::createAndShowLeftItem() -{ - createLeftItem(); - - if (leftItem) - leftItem->setVisible(true); - - if (rightItem) - rightItem->setVisible(false); -} - -void QQuickSwipePrivate::createAndShowBehindItem() -{ - createBehindItem(); - - if (behindItem) - behindItem->setVisible(true); -} - -void QQuickSwipePrivate::createAndShowRightItem() -{ - createRightItem(); - - // This item may have already existed but was hidden. - if (rightItem) - rightItem->setVisible(true); - - // The left item isn't visible when the right item is visible, so save rendering effort by hiding it. - if (leftItem) - leftItem->setVisible(false); -} - -void QQuickSwipePrivate::warnAboutMixingDelegates() -{ - qmlWarning(control) << "cannot set both behind and left/right properties"; -} - -void QQuickSwipePrivate::warnAboutSettingDelegatesWhileVisible() -{ - qmlWarning(control) << "left/right/behind properties may only be set when swipe.position is 0"; -} - -bool QQuickSwipePrivate::hasDelegates() const -{ - return left || right || behind; -} - -bool QQuickSwipePrivate::isTransitioning() const -{ - return transitionManager && transitionManager->isRunning(); -} - -void QQuickSwipePrivate::beginTransition(qreal newPosition) -{ - if (waitForTransition) - return; - Q_Q(QQuickSwipe); - if (!transition) { - q->setPosition(newPosition); - finishTransition(); - return; - } - - if (!transitionManager) - transitionManager.reset(new QQuickSwipeTransitionManager(q)); - - transitionManager->transition(transition, newPosition); -} - -void QQuickSwipePrivate::finishTransition() -{ - Q_Q(QQuickSwipe); - waitForTransition = false; - q->setComplete(qFuzzyCompare(qAbs(position), qreal(1.0))); - if (complete) { - emit q->opened(); - } else { - if (qFuzzyIsNull(position)) - wasComplete = false; - emit q->closed(); - } -} - -QQuickSwipe::QQuickSwipe(QQuickSwipeDelegate *control) - : QObject(*(new QQuickSwipePrivate(control))) -{ -} - -QQmlComponent *QQuickSwipe::left() const -{ - Q_D(const QQuickSwipe); - return d->left; -} - -void QQuickSwipe::setLeft(QQmlComponent *left) -{ - Q_D(QQuickSwipe); - if (left == d->left) - return; - - if (d->behind) { - d->warnAboutMixingDelegates(); - return; - } - - if (!qFuzzyIsNull(d->position)) { - d->warnAboutSettingDelegatesWhileVisible(); - return; - } - - d->left = left; - - if (!d->left) { - delete d->leftItem; - d->leftItem = nullptr; - } - - d->control->setFiltersChildMouseEvents(d->hasDelegates()); - - emit leftChanged(); -} - -QQmlComponent *QQuickSwipe::behind() const -{ - Q_D(const QQuickSwipe); - return d->behind; -} - -void QQuickSwipe::setBehind(QQmlComponent *behind) -{ - Q_D(QQuickSwipe); - if (behind == d->behind) - return; - - if (d->left || d->right) { - d->warnAboutMixingDelegates(); - return; - } - - if (!qFuzzyIsNull(d->position)) { - d->warnAboutSettingDelegatesWhileVisible(); - return; - } - - d->behind = behind; - - if (!d->behind) { - delete d->behindItem; - d->behindItem = nullptr; - } - - d->control->setFiltersChildMouseEvents(d->hasDelegates()); - - emit behindChanged(); -} - -QQmlComponent *QQuickSwipe::right() const -{ - Q_D(const QQuickSwipe); - return d->right; -} - -void QQuickSwipe::setRight(QQmlComponent *right) -{ - Q_D(QQuickSwipe); - if (right == d->right) - return; - - if (d->behind) { - d->warnAboutMixingDelegates(); - return; - } - - if (!qFuzzyIsNull(d->position)) { - d->warnAboutSettingDelegatesWhileVisible(); - return; - } - - d->right = right; - - if (!d->right) { - delete d->rightItem; - d->rightItem = nullptr; - } - - d->control->setFiltersChildMouseEvents(d->hasDelegates()); - - emit rightChanged(); -} - -QQuickItem *QQuickSwipe::leftItem() const -{ - Q_D(const QQuickSwipe); - return d->leftItem; -} - -void QQuickSwipe::setLeftItem(QQuickItem *item) -{ - Q_D(QQuickSwipe); - if (item == d->leftItem) - return; - - delete d->leftItem; - d->leftItem = item; - - if (d->leftItem) { - d->leftItem->setParentItem(d->control); - - if (qFuzzyIsNull(d->leftItem->z())) - d->leftItem->setZ(-2); - } - - emit leftItemChanged(); -} - -QQuickItem *QQuickSwipe::behindItem() const -{ - Q_D(const QQuickSwipe); - return d->behindItem; -} - -void QQuickSwipe::setBehindItem(QQuickItem *item) -{ - Q_D(QQuickSwipe); - if (item == d->behindItem) - return; - - delete d->behindItem; - d->behindItem = item; - - if (d->behindItem) { - d->behindItem->setParentItem(d->control); - - if (qFuzzyIsNull(d->behindItem->z())) - d->behindItem->setZ(-2); - } - - emit behindItemChanged(); -} - -QQuickItem *QQuickSwipe::rightItem() const -{ - Q_D(const QQuickSwipe); - return d->rightItem; -} - -void QQuickSwipe::setRightItem(QQuickItem *item) -{ - Q_D(QQuickSwipe); - if (item == d->rightItem) - return; - - delete d->rightItem; - d->rightItem = item; - - if (d->rightItem) { - d->rightItem->setParentItem(d->control); - - if (qFuzzyIsNull(d->rightItem->z())) - d->rightItem->setZ(-2); - } - - emit rightItemChanged(); -} - -qreal QQuickSwipe::position() const -{ - Q_D(const QQuickSwipe); - return d->position; -} - -void QQuickSwipe::setPosition(qreal position) -{ - Q_D(QQuickSwipe); - const qreal adjustedPosition = qBound<qreal>(-1.0, position, 1.0); - if (adjustedPosition == d->position) - return; - - d->position = adjustedPosition; - d->reposition(AnimatePosition); - emit positionChanged(); -} - -bool QQuickSwipe::isComplete() const -{ - Q_D(const QQuickSwipe); - return d->complete; -} - -void QQuickSwipe::setComplete(bool complete) -{ - Q_D(QQuickSwipe); - if (complete == d->complete) - return; - - d->complete = complete; - emit completeChanged(); - if (d->complete) - emit completed(); -} - -bool QQuickSwipe::isEnabled() const -{ - Q_D(const QQuickSwipe); - return d->enabled; -} - -void QQuickSwipe::setEnabled(bool enabled) -{ - Q_D(QQuickSwipe); - if (enabled == d->enabled) - return; - - d->enabled = enabled; - emit enabledChanged(); -} - -QQuickTransition *QQuickSwipe::transition() const -{ - Q_D(const QQuickSwipe); - return d->transition; -} - -void QQuickSwipe::setTransition(QQuickTransition *transition) -{ - Q_D(QQuickSwipe); - if (transition == d->transition) - return; - - d->transition = transition; - emit transitionChanged(); -} - -void QQuickSwipe::open(QQuickSwipeDelegate::Side side) -{ - Q_D(QQuickSwipe); - if (qFuzzyCompare(qAbs(d->position), qreal(1.0))) - return; - - if ((side != QQuickSwipeDelegate::Left && side != QQuickSwipeDelegate::Right) - || (!d->left && !d->behind && side == QQuickSwipeDelegate::Left) - || (!d->right && !d->behind && side == QQuickSwipeDelegate::Right)) - return; - - d->beginTransition(side); - d->wasComplete = true; - d->velocityCalculator.reset(); - d->positionBeforePress = d->position; -} - -void QQuickSwipe::close() -{ - Q_D(QQuickSwipe); - if (qFuzzyIsNull(d->position)) - return; - - if (d->control->isPressed()) { - // We don't support closing when we're pressed; release() or clicked() should be used instead. - return; - } - - d->beginTransition(0.0); - d->waitForTransition = true; - d->wasComplete = false; - d->positionBeforePress = 0.0; - d->velocityCalculator.reset(); -} - -QQuickSwipeDelegatePrivate::QQuickSwipeDelegatePrivate(QQuickSwipeDelegate *control) - : swipe(control) -{ -} - -void QQuickSwipeDelegatePrivate::resizeBackground() -{ - if (!background) - return; - - resizingBackground = true; - - QQuickItemPrivate *p = QQuickItemPrivate::get(background); - const bool extraAllocated = extra.isAllocated(); - // Don't check for or set the x here since it will just be overwritten by reposition(). - if (((!p->widthValid() || !extraAllocated || !extra->hasBackgroundWidth)) - || (extraAllocated && (extra->hasLeftInset || extra->hasRightInset))) { - background->setWidth(width - getLeftInset() - getRightInset()); - } - if (((!p->heightValid() || !extraAllocated || !extra->hasBackgroundHeight) && qFuzzyIsNull(background->y())) - || (extraAllocated && (extra->hasTopInset || extra->hasBottomInset))) { - background->setY(getTopInset()); - background->setHeight(height - getTopInset() - getBottomInset()); - } - - resizingBackground = false; -} - -bool QQuickSwipeDelegatePrivate::handleMousePressEvent(QQuickItem *item, QMouseEvent *event) -{ - Q_Q(QQuickSwipeDelegate); - const auto posInItem = item->mapToItem(q, event->position().toPoint()); - QQuickSwipePrivate *swipePrivate = QQuickSwipePrivate::get(&swipe); - // If the position is 0, we want to handle events ourselves - we don't want child items to steal them. - // This code will only get called when a child item has been created; - // events will go through the regular channels (mousePressEvent()) until then. - if (qFuzzyIsNull(swipePrivate->position)) { - q->mousePressEvent(event); - // The press point could be incorrect if the press happened over a child item, - // so we correct it after calling the base class' mousePressEvent(), rather - // than having to duplicate its code just so we can set the pressPoint. - setPressPoint(posInItem); - return true; - } - - // If the delegate is swiped open, send the event to the exposed item, - // in case it's an interactive child (like a Button). - if (swipePrivate->complete) - forwardMouseEvent(event, item, posInItem); - - // The position is non-zero, this press could be either for a delegate or the control itself - // (the control can be clicked to e.g. close the swipe). Either way, we must begin measuring - // mouse movement in case it turns into a swipe, in which case we grab the mouse. - swipePrivate->positionBeforePress = swipePrivate->position; - swipePrivate->velocityCalculator.startMeasuring(event->position().toPoint(), event->timestamp()); - setPressPoint(item->mapToItem(q, event->position().toPoint())); - - // When a delegate or any of its children uses the attached properties and signals, - // it declares that it wants mouse events. - const bool delivered = attachedObjectsSetPressed(item, event->scenePosition(), true); - if (delivered) - event->accept(); - return delivered; -} - -bool QQuickSwipeDelegatePrivate::handleMouseMoveEvent(QQuickItem *item, QMouseEvent *event) -{ - Q_Q(QQuickSwipeDelegate); - - if (holdTimer > 0) { - if (QLineF(pressPoint, event->position()).length() > QGuiApplication::styleHints()->startDragDistance()) - stopPressAndHold(); - } - - // The delegate can still be pressed when swipe.enabled is false, - // but the mouse moving shouldn't have any effect on swipe.position. - QQuickSwipePrivate *swipePrivate = QQuickSwipePrivate::get(&swipe); - if (!swipePrivate->enabled) - return false; - - // Protect against division by zero. - if (width == 0) - return false; - - // Don't bother reacting to events if we don't have any delegates. - if (!swipePrivate->left && !swipePrivate->right && !swipePrivate->behind) - return false; - - // Don't handle move events for the control if it wasn't pressed. - if (item == q && !pressed) - return false; - - const QPointF mappedEventPos = item->mapToItem(q, event->position().toPoint()); - const qreal distance = (mappedEventPos - pressPoint).x(); - if (!q->keepMouseGrab()) { - // We used to use the custom threshold that QQuickDrawerPrivate::grabMouse used, - // but since it's larger than what Flickable uses, it results in Flickable - // stealing events from us (QTBUG-50045), so now we use the default. - const bool overThreshold = QQuickWindowPrivate::dragOverThreshold(distance, Qt::XAxis, event); - if (window && overThreshold) { - QQuickItem *grabber = q->window()->mouseGrabberItem(); - if (!grabber || !grabber->keepMouseGrab()) { - q->grabMouse(); - q->setKeepMouseGrab(true); - q->setPressed(true); - swipe.setComplete(false); - - attachedObjectsSetPressed(item, event->scenePosition(), false, true); - } - } - } - - if (q->keepMouseGrab()) { - // Ensure we don't try to calculate a position when the user tried to drag - // to the left when the left item is already exposed, and vice versa. - // The code below assumes that the drag is valid, so if we don't have this check, - // the wrong items are visible and the swiping wraps. - if (swipePrivate->behind - || ((swipePrivate->left || swipePrivate->right) - && (qFuzzyIsNull(swipePrivate->positionBeforePress) - || (swipePrivate->positionBeforePress == -1.0 && distance >= 0.0) - || (swipePrivate->positionBeforePress == 1.0 && distance <= 0.0)))) { - - // We must instantiate the items here so that we can calculate the - // position against the width of the relevant item. - QQuickItem *relevantItem = swipePrivate->createRelevantItemForDistance(distance); - // If there isn't any relevant item, the user may have swiped back to the 0 position, - // or they swiped back to a position that is equal to positionBeforePress. - const qreal normalizedDistance = relevantItem ? distance / relevantItem->width() : 0.0; - qreal position = 0; - - // If the control was exposed before the drag begun, the distance should be inverted. - // For example, if the control had been swiped to the right, the position would be 1.0. - // If the control was then swiped to the left by a distance of -20 pixels, the normalized - // distance might be -0.2, for example, which cannot be used as the position; the swipe - // started from the right, so we account for that by adding the position. - if (qFuzzyIsNull(normalizedDistance)) { - // There are two cases when the normalizedDistance can be 0, - // and we must distinguish between them: - // - // a) The swipe returns to the position that it was at before the press event. - // In this case, the distance will be 0. - // There would have been many position changes in the meantime, so we can't just - // ignore the move event; we have to set position to what it was before the press. - // - // b) If the position was at, 1.0, for example, and the control was then swiped - // to the left by the exact width of the left item, there won't be any relevant item - // (because the swipe's position would be at 0.0). In turn, the normalizedDistance - // would be 0 (because of the lack of a relevant item), but the distance will be non-zero. - position = qFuzzyIsNull(distance) ? swipePrivate->positionBeforePress : 0; - } else if (!swipePrivate->wasComplete) { - position = normalizedDistance; - } else { - position = distance > 0 ? normalizedDistance - 1.0 : normalizedDistance + 1.0; - } - - if (swipePrivate->isTransitioning()) - swipePrivate->transitionManager->cancel(); - swipe.setPosition(position); - } - } else { - // The swipe wasn't initiated. - if (event->position().toPoint().y() < 0 || event->position().toPoint().y() > height) { - // The mouse went outside the vertical bounds of the control, so - // we should no longer consider it pressed. - q->setPressed(false); - } - } - - event->accept(); - - return q->keepMouseGrab(); -} - -static const qreal exposeVelocityThreshold = 300.0; - -bool QQuickSwipeDelegatePrivate::handleMouseReleaseEvent(QQuickItem *item, QMouseEvent *event) -{ - Q_Q(QQuickSwipeDelegate); - QQuickSwipePrivate *swipePrivate = QQuickSwipePrivate::get(&swipe); - swipePrivate->velocityCalculator.stopMeasuring(event->position().toPoint(), event->timestamp()); - - const bool hadGrabbedMouse = q->keepMouseGrab(); - q->setKeepMouseGrab(false); - - // QQuickSwipe::close() doesn't allow closing while pressed, but now we're releasing. - // So set the pressed state false if this release _could_ result in closing, so that check can be bypassed. - if (!qIsNull(swipePrivate->position)) - q->setPressed(false); - - // Animations for the background and contentItem delegates are typically - // only enabled when !control.down, so that the animations aren't running - // when the user is swiping. To ensure that the animations are enabled - // *before* the positions of these delegates change (via the swipe.setPosition() calls below), - // we must cancel the press. QQuickAbstractButton::mouseUngrabEvent() does this - // for us, but by then it's too late. - if (hadGrabbedMouse) { - // TODO: this is copied from QQuickAbstractButton::mouseUngrabEvent(). - // Eventually it should be moved into a private helper so that we don't have to duplicate it. - q->setPressed(false); - stopPressRepeat(); - stopPressAndHold(); - emit q->canceled(); - } - - // Inform the given item that the mouse is released, in case it's an interactive child. - if (item != q && (swipePrivate->complete || swipePrivate->wasComplete)) - forwardMouseEvent(event, item, item->mapFromScene(event->scenePosition())); - - // The control can be exposed by either swiping past the halfway mark, or swiping fast enough. - const qreal swipeVelocity = swipePrivate->velocityCalculator.velocity().x(); - if (swipePrivate->position > 0.5 || - (swipePrivate->position > 0.0 && swipeVelocity > exposeVelocityThreshold)) { - swipePrivate->beginTransition(1.0); - swipePrivate->wasComplete = true; - } else if (swipePrivate->position < -0.5 || - (swipePrivate->position < 0.0 && swipeVelocity < -exposeVelocityThreshold)) { - swipePrivate->beginTransition(-1.0); - swipePrivate->wasComplete = true; - } else if (!swipePrivate->isTransitioning()) { - // The position is either <= 0.5 or >= -0.5, so the position should go to 0. - // However, if the position was already 0 or close to it, we were just clicked, - // and we don't need to start a transition. - if (!qFuzzyIsNull(swipePrivate->position)) - swipePrivate->beginTransition(0.0); - swipePrivate->wasComplete = false; - } - - // Inform any QQuickSwipeDelegateAttached objects that the mouse is released. - attachedObjectsSetPressed(item, event->scenePosition(), false); - - // Only consume child events if we had grabbed the mouse. - return hadGrabbedMouse; -} - -/*! \internal - Send a localized copy of \a event with \a localPos to the \a destination item. -*/ -void QQuickSwipeDelegatePrivate::forwardMouseEvent(QMouseEvent *event, QQuickItem *destination, QPointF localPos) -{ - Q_Q(QQuickSwipeDelegate); - QMutableSinglePointEvent localizedEvent(*event); - localizedEvent.mutablePoint().setPosition(localPos); - QGuiApplication::sendEvent(destination, &localizedEvent); - q->setPressed(!localizedEvent.isAccepted()); -} - -/*! \internal - For each QQuickSwipeDelegateAttached object on children of \a item: - if \a scenePos is in the attachee (the item to which it's attached), then - set its \a pressed state. Unless \a cancel is \c true, when the state - transitions from pressed to released, also emit \l QQuickSwipeDelegateAttached::clicked(). - Returns \c true if at least one relevant attached object was found. -*/ -bool QQuickSwipeDelegatePrivate::attachedObjectsSetPressed(QQuickItem *item, QPointF scenePos, bool pressed, bool cancel) -{ - bool found = false; - QVarLengthArray<QQuickItem *, 16> itemAndChildren; - itemAndChildren.append(item); - for (int i = 0; i < itemAndChildren.count(); ++i) { - auto item = itemAndChildren.at(i); - auto posInItem = item->mapFromScene(scenePos); - if (item->contains(posInItem)) { - if (Attached *attached = attachedObject(item)) { - const bool wasPressed = attached->isPressed(); - attached->setPressed(pressed); - if (wasPressed && !pressed && !cancel) - emit attached->clicked(); - found = true; - } - } - for (auto child : item->childItems()) - itemAndChildren.append(child); - } - return found; -} - -static void warnIfHorizontallyAnchored(QQuickItem *item, const QString &itemName) -{ - if (!item) - return; - - QQuickAnchors *anchors = QQuickItemPrivate::get(item)->_anchors; - if (anchors && (anchors->fill() || anchors->centerIn() || anchors->left().item || anchors->right().item) - && !item->property("_q_QQuickSwipeDelegate_warned").toBool()) { - qmlWarning(item) << QString::fromLatin1("SwipeDelegate: cannot use horizontal anchors with %1; unable to layout the item.").arg(itemName); - item->setProperty("_q_QQuickSwipeDelegate_warned", true); - } -} - -void QQuickSwipeDelegatePrivate::resizeContent() -{ - warnIfHorizontallyAnchored(background, QStringLiteral("background")); - warnIfHorizontallyAnchored(contentItem, QStringLiteral("contentItem")); - - // If the background and contentItem are repositioned due to a swipe, - // we don't want to call QQuickControlPrivate's implementation of this function, - // as it repositions the contentItem to be visible. - // However, we still want to position the contentItem vertically - // and resize it (in case the control was resized while open). - QQuickSwipePrivate *swipePrivate = QQuickSwipePrivate::get(&swipe); - if (!swipePrivate->complete) { - QQuickItemDelegatePrivate::resizeContent(); - } else if (contentItem) { - Q_Q(QQuickSwipeDelegate); - contentItem->setY(q->topPadding()); - contentItem->setWidth(q->availableWidth()); - contentItem->setHeight(q->availableHeight()); - } -} - -QPalette QQuickSwipeDelegatePrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::ListView); -} - -QQuickSwipeDelegate::QQuickSwipeDelegate(QQuickItem *parent) - : QQuickItemDelegate(*(new QQuickSwipeDelegatePrivate(this)), parent) -{ - // QQuickSwipeDelegate still depends on synthesized mouse events - setAcceptTouchEvents(false); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlmethod void QtQuick.Controls::SwipeDelegate::swipe.open(enumeration side) - - This method sets the \c position of the swipe so that it opens - from the specified \a side. - - Available values: - \value SwipeDelegate.Left The \c position is set to \c 1, which makes the swipe open - from the left. Either \c swipe.left or \c swipe.behind must - have been specified; otherwise the call is ignored. - \value SwipeDelegate.Right The \c position is set to \c -1, which makes the swipe open - from the right. Either \c swipe.right or \c swipe.behind must - have been specified; otherwise the call is ignored. - - Any animations defined for the \l {Item::}{x} position of \l {Control::}{contentItem} - and \l {Control::}{background} will be triggered. - - \sa swipe, swipe.close() -*/ - -/*! - \since QtQuick.Controls 2.1 (Qt 5.8) - \qmlmethod void QtQuick.Controls::SwipeDelegate::swipe.close() - - This method sets the \c position of the swipe to \c 0. Any animations - defined for the \l {Item::}{x} position of \l {Control::}{contentItem} - and \l {Control::}{background} will be triggered. - - \sa swipe, swipe.open() -*/ - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlsignal void QtQuick.Controls::SwipeDelegate::swipe.opened() - - This signal is emitted when the delegate has been swiped open - and the transition has finished. - - It is useful for performing some action upon completion of a swipe. - For example, it can be used to remove the delegate from the list - that it is in. - - \sa swipe, swipe.closed() -*/ - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlsignal void QtQuick.Controls::SwipeDelegate::swipe.closed() - - This signal is emitted when the delegate has been swiped to closed - and the transition has finished. - - It is useful for performing some action upon cancellation of a swipe. - For example, it can be used to cancel the removal of the delegate from - the list that it is in. - - \sa swipe, swipe.opened() -*/ - -/*! - \since QtQuick.Controls 2.1 (Qt 5.8) - \qmlsignal void QtQuick.Controls::SwipeDelegate::swipe.completed() - - This signal is emitted when \c swipe.complete becomes \c true. - - It is useful for performing some action upon completion of a swipe. - For example, it can be used to remove the delegate from the list - that it is in. - - \sa swipe -*/ - -/*! - \qmlproperty real QtQuick.Controls::SwipeDelegate::swipe.position - \qmlproperty bool QtQuick.Controls::SwipeDelegate::swipe.complete - \qmlproperty bool QtQuick.Controls::SwipeDelegate::swipe.enabled - \qmlproperty Component QtQuick.Controls::SwipeDelegate::swipe.left - \qmlproperty Component QtQuick.Controls::SwipeDelegate::swipe.behind - \qmlproperty Component QtQuick.Controls::SwipeDelegate::swipe.right - \qmlproperty Item QtQuick.Controls::SwipeDelegate::swipe.leftItem - \qmlproperty Item QtQuick.Controls::SwipeDelegate::swipe.behindItem - \qmlproperty Item QtQuick.Controls::SwipeDelegate::swipe.rightItem - \qmlproperty Transition QtQuick.Controls::SwipeDelegate::swipe.transition - - \table - \header - \li Name - \li Description - \row - \li position - \li This read-only property holds the position of the swipe relative to either - side of the control. When this value reaches either - \c -1.0 (left side) or \c 1.0 (right side) and the mouse button is - released, \c complete will be \c true. - \row - \li complete - \li This read-only property holds whether the control is fully exposed after - having been swiped to the left or right. - - When complete is \c true, any interactive items declared in \c left, - \c right, or \c behind will receive mouse events. - \row - \li enabled - \li This property determines whether or not the control can be swiped. - - This property was added in QtQuick.Controls 2.2. - \row - \li left - \li This property holds the left delegate. - - The left delegate sits behind both \l {Control::}{contentItem} and - \l {Control::}{background}. When the SwipeDelegate is swiped to the right, - this item will be gradually revealed. - - \include qquickswipedelegate-interaction.qdocinc - \row - \li behind - \li This property holds the delegate that is shown when the - SwipeDelegate is swiped to both the left and right. - - As with the \c left and \c right delegates, it sits behind both - \l {Control::}{contentItem} and \l {Control::}{background}. However, a - SwipeDelegate whose \c behind has been set can be continuously swiped - from either side, and will always show the same item. - - \include qquickswipedelegate-interaction.qdocinc - \row - \li right - \li This property holds the right delegate. - - The right delegate sits behind both \l {Control::}{contentItem} and - \l {Control::}{background}. When the SwipeDelegate is swiped to the left, - this item will be gradually revealed. - - \include qquickswipedelegate-interaction.qdocinc - \row - \li leftItem - \li This read-only property holds the item instantiated from the \c left component. - - If \c left has not been set, or the position hasn't changed since - creation of the SwipeDelegate, this property will be \c null. - \row - \li behindItem - \li This read-only property holds the item instantiated from the \c behind component. - - If \c behind has not been set, or the position hasn't changed since - creation of the SwipeDelegate, this property will be \c null. - \row - \li rightItem - \li This read-only property holds the item instantiated from the \c right component. - - If \c right has not been set, or the position hasn't changed since - creation of the SwipeDelegate, this property will be \c null. - \row - \li transition - \li This property holds the transition that is applied when a swipe is released, - or \l swipe.open() or \l swipe.close() is called. - - \snippet qtquickcontrols2-swipedelegate-transition.qml 1 - - This property was added in Qt Quick Controls 2.2. - \endtable - - \sa {Control::}{contentItem}, {Control::}{background}, swipe.open(), swipe.close() -*/ -QQuickSwipe *QQuickSwipeDelegate::swipe() const -{ - Q_D(const QQuickSwipeDelegate); - return const_cast<QQuickSwipe*>(&d->swipe); -} - -QQuickSwipeDelegateAttached *QQuickSwipeDelegate::qmlAttachedProperties(QObject *object) -{ - return new QQuickSwipeDelegateAttached(object); -} - -static bool isChildOrGrandchildOf(QQuickItem *child, QQuickItem *item) -{ - return item && (child == item || item->isAncestorOf(child)); -} - -bool QQuickSwipeDelegate::childMouseEventFilter(QQuickItem *child, QEvent *event) -{ - Q_D(QQuickSwipeDelegate); - // The contentItem is, by default, usually a non-interactive item like Text, and - // the same applies to the background. This means that simply stacking the left/right/behind - // items before these items won't allow us to get mouse events when the control is not currently exposed - // but has been previously. Therefore, we instead call setFiltersChildMouseEvents(true) in the constructor - // and filter out child events only when the child is the left/right/behind item. - const QQuickSwipePrivate *swipePrivate = QQuickSwipePrivate::get(&d->swipe); - if (!isChildOrGrandchildOf(child, swipePrivate->leftItem) && !isChildOrGrandchildOf(child, swipePrivate->behindItem) - && !isChildOrGrandchildOf(child, swipePrivate->rightItem)) { - return false; - } - - switch (event->type()) { - case QEvent::MouseButtonPress: { - return d->handleMousePressEvent(child, static_cast<QMouseEvent *>(event)); - } case QEvent::MouseMove: { - return d->handleMouseMoveEvent(child, static_cast<QMouseEvent *>(event)); - } case QEvent::MouseButtonRelease: { - // Make sure that the control gets release events if it has created child - // items that are stealing events from it. - QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event); - QQuickItemDelegate::mouseReleaseEvent(mouseEvent); - return d->handleMouseReleaseEvent(child, mouseEvent); - } case QEvent::UngrabMouse: { - // If the mouse was pressed over e.g. rightItem and then dragged down, - // the ListView would eventually grab the mouse, at which point we must - // clear the pressed flag so that it doesn't stay pressed after the release. - Attached *attached = attachedObject(child); - if (attached) - attached->setPressed(false); - return false; - } default: - return false; - } -} - -// We only override this to set positionBeforePress; -// otherwise, it's the same as the base class implementation. -void QQuickSwipeDelegate::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickSwipeDelegate); - QQuickItemDelegate::mousePressEvent(event); - - QQuickSwipePrivate *swipePrivate = QQuickSwipePrivate::get(&d->swipe); - if (!swipePrivate->enabled) - return; - - swipePrivate->positionBeforePress = swipePrivate->position; - swipePrivate->velocityCalculator.startMeasuring(event->position().toPoint(), event->timestamp()); - - if (swipePrivate->complete) { - auto item = d->swipe.rightItem(); - if (item && item->contains(item->mapFromScene(event->scenePosition()))) { - d->pressedItem = item; - d->handleMousePressEvent(item, event); - } else { - item = d->swipe.leftItem(); - if (item && item->contains(item->mapFromScene(event->scenePosition()))) { - d->pressedItem = item; - d->handleMousePressEvent(item, event); - } - } - } -} - -void QQuickSwipeDelegate::mouseMoveEvent(QMouseEvent *event) -{ - Q_D(QQuickSwipeDelegate); - if (filtersChildMouseEvents()) - d->handleMouseMoveEvent(this, event); - else - QQuickItemDelegate::mouseMoveEvent(event); - if (d->pressedItem) - d->handleMouseMoveEvent(d->pressedItem, event); -} - -void QQuickSwipeDelegate::mouseReleaseEvent(QMouseEvent *event) -{ - Q_D(QQuickSwipeDelegate); - if (!filtersChildMouseEvents() || !d->handleMouseReleaseEvent(this, event)) - QQuickItemDelegate::mouseReleaseEvent(event); - - if (d->pressedItem) { - if (d->pressedItem->acceptedMouseButtons()) - d->handleMouseReleaseEvent(d->pressedItem, event); - d->pressedItem = nullptr; - } -} - -void QQuickSwipeDelegate::mouseUngrabEvent() -{ - Q_D(QQuickSwipeDelegate); - setPressed(false); - - auto item = d->swipe.rightItem(); - if (item) { - if (auto control = qmlobject_cast<QQuickControl *>(item)) - QQuickControlPrivate::get(control)->handleUngrab(); - Attached *attached = attachedObject(item); - if (attached) - attached->setPressed(false); - } else { - item = d->swipe.leftItem(); - if (item) { - if (auto control = qmlobject_cast<QQuickControl *>(item)) - QQuickControlPrivate::get(control)->handleUngrab(); - Attached *attached = attachedObject(item); - if (attached) - attached->setPressed(false); - } - } - - d->pressedItem = nullptr; -} - -void QQuickSwipeDelegate::touchEvent(QTouchEvent *event) -{ - // Don't allow QQuickControl accept the touch event, because QQuickSwipeDelegate - // is still based on synthesized mouse events - event->ignore(); -} - -void QQuickSwipeDelegate::componentComplete() -{ - Q_D(QQuickSwipeDelegate); - QQuickItemDelegate::componentComplete(); - QQuickSwipePrivate::get(&d->swipe)->reposition(DontAnimatePosition); -} - -void QQuickSwipeDelegate::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickSwipeDelegate); - QQuickControl::geometryChange(newGeometry, oldGeometry); - - if (isComponentComplete() && !qFuzzyCompare(newGeometry.width(), oldGeometry.width())) { - QQuickSwipePrivate *swipePrivate = QQuickSwipePrivate::get(&d->swipe); - swipePrivate->reposition(DontAnimatePosition); - } -} - -QFont QQuickSwipeDelegate::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::ListView); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickSwipeDelegate::accessibleRole() const -{ - return QAccessible::ListItem; -} -#endif - -class QQuickSwipeDelegateAttachedPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickSwipeDelegateAttached) - -public: - // True when left/right/behind is non-interactive and is pressed. - bool pressed = false; -}; - -/*! - \since QtQuick.Controls 2.1 (Qt 5.8) - \qmlattachedsignal QtQuick.Controls::SwipeDelegate::clicked() - - This signal can be attached to a non-interactive item declared in - \c swipe.left, \c swipe.right, or \c swipe.behind, in order to react to - clicks. Items can only be clicked when \c swipe.complete is \c true. - - For interactive controls (such as \l Button) declared in these - items, use their respective \c clicked() signal instead. - - To respond to clicks on the SwipeDelegate itself, use its - \l {AbstractButton::}{clicked()} signal. - - \note See the documentation for \l pressed for information on - how to use the event-related properties correctly. - - \sa pressed -*/ - -QQuickSwipeDelegateAttached::QQuickSwipeDelegateAttached(QObject *object) - : QObject(*(new QQuickSwipeDelegateAttachedPrivate), object) -{ - QQuickItem *item = qobject_cast<QQuickItem *>(object); - if (item) { - // This allows us to be notified when an otherwise non-interactive item - // is pressed and clicked. The alternative is much more more complex: - // iterating through children that contain the event pos and finding - // the first one with an attached object. - item->setAcceptedMouseButtons(Qt::AllButtons); - } else { - qWarning() << "Attached properties of SwipeDelegate must be accessed through an Item"; - } -} - -/*! - \since QtQuick.Controls 2.1 (Qt 5.8) - \qmlattachedproperty bool QtQuick.Controls::SwipeDelegate::pressed - \readonly - - This property can be attached to a non-interactive item declared in - \c swipe.left, \c swipe.right, or \c swipe.behind, in order to detect if it - is pressed. Items can only be pressed when \c swipe.complete is \c true. - - For example: - - \code - swipe.right: Label { - anchors.right: parent.right - height: parent.height - text: "Action" - color: "white" - padding: 12 - background: Rectangle { - color: SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato" - } - } - \endcode - - It is possible to have multiple items which individually receive mouse and - touch events. For example, to have two actions in the \c swipe.right item, - use the following code: - - \code - swipe.right: Row { - anchors.right: parent.right - height: parent.height - - Label { - id: moveLabel - text: qsTr("Move") - color: "white" - verticalAlignment: Label.AlignVCenter - padding: 12 - height: parent.height - - SwipeDelegate.onClicked: console.log("Moving...") - - background: Rectangle { - color: moveLabel.SwipeDelegate.pressed ? Qt.darker("#ffbf47", 1.1) : "#ffbf47" - } - } - Label { - id: deleteLabel - text: qsTr("Delete") - color: "white" - verticalAlignment: Label.AlignVCenter - padding: 12 - height: parent.height - - SwipeDelegate.onClicked: console.log("Deleting...") - - background: Rectangle { - color: deleteLabel.SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato" - } - } - } - \endcode - - Note how the \c color assignment in each \l {Control::}{background} item - qualifies the attached property with the \c id of the label. This - is important; using the attached properties on an item causes that item - to accept events. Suppose we had left out the \c id in the previous example: - - \code - color: SwipeDelegate.pressed ? Qt.darker("tomato", 1.1) : "tomato" - \endcode - - The \l Rectangle background item is a child of the label, so it naturally - receives events before it. In practice, this means that the background - color will change, but the \c onClicked handler in the label will never - get called. - - For interactive controls (such as \l Button) declared in these - items, use their respective \c pressed property instead. - - For presses on the SwipeDelegate itself, use its - \l {AbstractButton::}{pressed} property. - - \sa clicked() -*/ -bool QQuickSwipeDelegateAttached::isPressed() const -{ - Q_D(const QQuickSwipeDelegateAttached); - return d->pressed; -} - -void QQuickSwipeDelegateAttached::setPressed(bool pressed) -{ - Q_D(QQuickSwipeDelegateAttached); - if (pressed == d->pressed) - return; - - d->pressed = pressed; - emit pressedChanged(); -} - -QT_END_NAMESPACE - -#include "moc_qquickswipe_p.cpp" -#include "moc_qquickswipedelegate_p.cpp" diff --git a/src/quicktemplates2/qquickswipedelegate_p.h b/src/quicktemplates2/qquickswipedelegate_p.h deleted file mode 100644 index cbf5f4b4..00000000 --- a/src/quicktemplates2/qquickswipedelegate_p.h +++ /dev/null @@ -1,126 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSWIPEDELEGATE_P_H -#define QQUICKSWIPEDELEGATE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickitemdelegate_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickSwipe; -class QQuickSwipeDelegatePrivate; -class QQuickSwipeDelegateAttached; -class QQuickSwipeDelegateAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSwipeDelegate : public QQuickItemDelegate -{ - Q_OBJECT - Q_PROPERTY(QQuickSwipe *swipe READ swipe CONSTANT FINAL) - QML_NAMED_ELEMENT(SwipeDelegate) - QML_ATTACHED(QQuickSwipeDelegateAttached) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickSwipeDelegate(QQuickItem *parent = nullptr); - - QQuickSwipe *swipe() const; - - enum Side { Left = 1, Right = -1 }; - Q_ENUM(Side) - - static QQuickSwipeDelegateAttached *qmlAttachedProperties(QObject *object); - -protected: - bool childMouseEventFilter(QQuickItem *child, QEvent *event) override; - void mousePressEvent(QMouseEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override; - void mouseUngrabEvent() override; - void touchEvent(QTouchEvent *event) override; - - void componentComplete() override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickSwipeDelegate) - Q_DECLARE_PRIVATE(QQuickSwipeDelegate) -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSwipeDelegateAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(bool pressed READ isPressed NOTIFY pressedChanged FINAL) - -public: - explicit QQuickSwipeDelegateAttached(QObject *object = nullptr); - - bool isPressed() const; - void setPressed(bool pressed); - -Q_SIGNALS: - void pressedChanged(); - void clicked(); - -private: - Q_DISABLE_COPY(QQuickSwipeDelegateAttached) - Q_DECLARE_PRIVATE(QQuickSwipeDelegateAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickSwipeDelegate) -QML_DECLARE_TYPEINFO(QQuickSwipeDelegate, QML_HAS_ATTACHED_PROPERTIES) -Q_DECLARE_METATYPE(QQuickSwipeDelegate::Side) - -#endif // QQUICKSWIPEDELEGATE_P_H diff --git a/src/quicktemplates2/qquickswipedelegate_p_p.h b/src/quicktemplates2/qquickswipedelegate_p_p.h deleted file mode 100644 index 46e47eb6..00000000 --- a/src/quicktemplates2/qquickswipedelegate_p_p.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSWIPEDELEGATE_P_P_H -#define QQUICKSWIPEDELEGATE_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickitemdelegate_p_p.h> -#include <QtQuickTemplates2/private/qquickswipe_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickSwipeDelegate; - -class QQuickSwipeDelegatePrivate : public QQuickItemDelegatePrivate -{ - Q_DECLARE_PUBLIC(QQuickSwipeDelegate) - -public: - QQuickSwipeDelegatePrivate(QQuickSwipeDelegate *control); - - bool handleMousePressEvent(QQuickItem *item, QMouseEvent *event); - bool handleMouseMoveEvent(QQuickItem *item, QMouseEvent *event); - bool handleMouseReleaseEvent(QQuickItem *item, QMouseEvent *event); - void forwardMouseEvent(QMouseEvent *event, QQuickItem *destination, QPointF localPos); - bool attachedObjectsSetPressed(QQuickItem *item, QPointF scenePos, bool pressed, bool cancel = false); - - void resizeContent() override; - void resizeBackground() override; - - QPalette defaultPalette() const override; - - QQuickSwipe swipe; - QQuickItem *pressedItem = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKSWIPEDELEGATE_P_P_H diff --git a/src/quicktemplates2/qquickswipeview.cpp b/src/quicktemplates2/qquickswipeview.cpp deleted file mode 100644 index b9cc68d2..00000000 --- a/src/quicktemplates2/qquickswipeview.cpp +++ /dev/null @@ -1,478 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickswipeview_p.h" - -#include <QtQml/qqmlinfo.h> -#include <QtQuickTemplates2/private/qquickcontainer_p_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype SwipeView - \inherits Container -//! \instantiates QQuickSwipeView - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-navigation - \ingroup qtquickcontrols2-containers - \ingroup qtquickcontrols2-focusscopes - \brief Enables the user to navigate pages by swiping sideways. - - SwipeView provides a swipe-based navigation model. - - \image qtquickcontrols2-swipeview.gif - - SwipeView is populated with a set of pages. One page is visible at a time. - The user can navigate between the pages by swiping sideways. Notice that - SwipeView itself is entirely non-visual. It is recommended to combine it - with PageIndicator, to give the user a visual clue that there are multiple - pages. - - \snippet qtquickcontrols2-swipeview-indicator.qml 1 - - As shown above, SwipeView is typically populated with a static set of - pages that are defined inline as children of the view. It is also possible - to \l {Container::addItem()}{add}, \l {Container::insertItem()}{insert}, - \l {Container::moveItem()}{move}, and \l {Container::removeItem()}{remove} - pages dynamically at run time. - - It is generally not advisable to add excessive amounts of pages to a - SwipeView. However, when the amount of pages grows larger, or individual - pages are relatively complex, it may be desirable to free up resources by - unloading pages that are outside the immediate reach of the user. - The following example presents how to use \l Loader to keep a maximum of - three pages simultaneously instantiated. - - \code - SwipeView { - Repeater { - model: 6 - Loader { - active: SwipeView.isCurrentItem || SwipeView.isNextItem || SwipeView.isPreviousItem - sourceComponent: Text { - text: index - Component.onCompleted: console.log("created:", index) - Component.onDestruction: console.log("destroyed:", index) - } - } - } - } - \endcode - - \note SwipeView takes over the geometry management of items added to the - view. Using anchors on the items is not supported, and any \c width - or \c height assignment will be overridden by the view. Notice that - this only applies to the root of the item. Specifying width and height, - or using anchors for its children works as expected. - - \sa TabBar, PageIndicator, {Customizing SwipeView}, {Navigation Controls}, {Container Controls}, - {Focus Management in Qt Quick Controls} -*/ - -class QQuickSwipeViewPrivate : public QQuickContainerPrivate -{ - Q_DECLARE_PUBLIC(QQuickSwipeView) - -public: - void resizeItem(QQuickItem *item); - void resizeItems(); - - static QQuickSwipeViewPrivate *get(QQuickSwipeView *view); - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - qreal getContentWidth() const override; - qreal getContentHeight() const override; - - bool interactive = true; - Qt::Orientation orientation = Qt::Horizontal; -}; - -class QQuickSwipeViewAttachedPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickSwipeViewAttached) - -public: - static QQuickSwipeViewAttachedPrivate *get(QQuickSwipeViewAttached *attached) - { - return attached->d_func(); - } - - void update(QQuickSwipeView *newView, int newIndex); - void updateCurrentIndex(); - void setCurrentIndex(int i); - - QQuickSwipeView *swipeView = nullptr; - int index = -1; - int currentIndex = -1; -}; - -void QQuickSwipeViewPrivate::resizeItems() -{ - Q_Q(QQuickSwipeView); - const int count = q->count(); - for (int i = 0; i < count; ++i) { - QQuickItem *item = itemAt(i); - if (item) { - QQuickAnchors *anchors = QQuickItemPrivate::get(item)->_anchors; - // TODO: expose QQuickAnchorLine so we can test for other conflicting anchors - if (anchors && (anchors->fill() || anchors->centerIn()) && !item->property("_q_QQuickSwipeView_warned").toBool()) { - qmlWarning(item) << "SwipeView has detected conflicting anchors. Unable to layout the item."; - item->setProperty("_q_QQuickSwipeView_warned", true); - } - - if (orientation == Qt::Horizontal) - item->setY(0); - else - item->setX(0); - item->setSize(QSizeF(contentItem->width(), contentItem->height())); - } - } -} - -QQuickSwipeViewPrivate *QQuickSwipeViewPrivate::get(QQuickSwipeView *view) -{ - return view->d_func(); -} - -void QQuickSwipeViewPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - Q_Q(QQuickSwipeView); - QQuickContainerPrivate::itemImplicitWidthChanged(item); - if (item == q->currentItem()) - updateImplicitContentWidth(); -} - -void QQuickSwipeViewPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - Q_Q(QQuickSwipeView); - QQuickContainerPrivate::itemImplicitHeightChanged(item); - if (item == q->currentItem()) - updateImplicitContentHeight(); -} - -qreal QQuickSwipeViewPrivate::getContentWidth() const -{ - Q_Q(const QQuickSwipeView); - QQuickItem *currentItem = q->currentItem(); - return currentItem ? currentItem->implicitWidth() : 0; -} - -qreal QQuickSwipeViewPrivate::getContentHeight() const -{ - Q_Q(const QQuickSwipeView); - QQuickItem *currentItem = q->currentItem(); - return currentItem ? currentItem->implicitHeight() : 0; -} - -QQuickSwipeView::QQuickSwipeView(QQuickItem *parent) - : QQuickContainer(*(new QQuickSwipeViewPrivate), parent) -{ - Q_D(QQuickSwipeView); - d->changeTypes |= QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight; - setFlag(ItemIsFocusScope); - setActiveFocusOnTab(true); - QObjectPrivate::connect(this, &QQuickContainer::currentItemChanged, d, &QQuickControlPrivate::updateImplicitContentSize); -} - -/*! - \since QtQuick.Controls 2.1 (Qt 5.8) - \qmlproperty bool QtQuick.Controls::SwipeView::interactive - - This property describes whether the user can interact with the SwipeView. - The user cannot swipe a view that is not interactive. - - The default value is \c true. -*/ -bool QQuickSwipeView::isInteractive() const -{ - Q_D(const QQuickSwipeView); - return d->interactive; -} - -void QQuickSwipeView::setInteractive(bool interactive) -{ - Q_D(QQuickSwipeView); - if (d->interactive == interactive) - return; - - d->interactive = interactive; - emit interactiveChanged(); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty enumeration QtQuick.Controls::SwipeView::orientation - - This property holds the orientation. - - Possible values: - \value Qt.Horizontal Horizontal (default) - \value Qt.Vertical Vertical - - \sa horizontal, vertical -*/ -Qt::Orientation QQuickSwipeView::orientation() const -{ - Q_D(const QQuickSwipeView); - return d->orientation; -} - -void QQuickSwipeView::setOrientation(Qt::Orientation orientation) -{ - Q_D(QQuickSwipeView); - if (d->orientation == orientation) - return; - - d->orientation = orientation; - if (isComponentComplete()) - d->resizeItems(); - emit orientationChanged(); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::SwipeView::horizontal - \readonly - - This property holds whether the swipe view is horizontal. - - \sa orientation -*/ -bool QQuickSwipeView::isHorizontal() const -{ - Q_D(const QQuickSwipeView); - return d->orientation == Qt::Horizontal; -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty bool QtQuick.Controls::SwipeView::vertical - \readonly - - This property holds whether the swipe view is vertical. - - \sa orientation -*/ -bool QQuickSwipeView::isVertical() const -{ - Q_D(const QQuickSwipeView); - return d->orientation == Qt::Vertical; -} - -QQuickSwipeViewAttached *QQuickSwipeView::qmlAttachedProperties(QObject *object) -{ - return new QQuickSwipeViewAttached(object); -} - -void QQuickSwipeView::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickSwipeView); - QQuickContainer::geometryChange(newGeometry, oldGeometry); - d->resizeItems(); -} - -void QQuickSwipeView::itemAdded(int index, QQuickItem *item) -{ - Q_D(QQuickSwipeView); - QQuickItemPrivate::get(item)->setCulled(true); // QTBUG-51078, QTBUG-51669 - if (isComponentComplete()) - item->setSize(QSizeF(d->contentItem->width(), d->contentItem->height())); - QQuickSwipeViewAttached *attached = qobject_cast<QQuickSwipeViewAttached *>(qmlAttachedPropertiesObject<QQuickSwipeView>(item)); - if (attached) - QQuickSwipeViewAttachedPrivate::get(attached)->update(this, index); -} - -void QQuickSwipeView::itemMoved(int index, QQuickItem *item) -{ - QQuickSwipeViewAttached *attached = qobject_cast<QQuickSwipeViewAttached *>(qmlAttachedPropertiesObject<QQuickSwipeView>(item)); - if (attached) - QQuickSwipeViewAttachedPrivate::get(attached)->update(this, index); -} - -void QQuickSwipeView::itemRemoved(int, QQuickItem *item) -{ - QQuickSwipeViewAttached *attached = qobject_cast<QQuickSwipeViewAttached *>(qmlAttachedPropertiesObject<QQuickSwipeView>(item)); - if (attached) - QQuickSwipeViewAttachedPrivate::get(attached)->update(nullptr, -1); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickSwipeView::accessibleRole() const -{ - return QAccessible::PageTabList; -} -#endif - -/*! - \qmlattachedproperty int QtQuick.Controls::SwipeView::index - \readonly - - This attached property holds the index of each child item in the SwipeView. - - It is attached to each child item of the SwipeView. -*/ - -/*! - \qmlattachedproperty bool QtQuick.Controls::SwipeView::isCurrentItem - \readonly - - This attached property is \c true if this child is the current item. - - It is attached to each child item of the SwipeView. -*/ - -/*! - \qmlattachedproperty bool QtQuick.Controls::SwipeView::isNextItem - \since QtQuick.Controls 2.1 (Qt 5.8) - \readonly - - This attached property is \c true if this child is the next item. - - It is attached to each child item of the SwipeView. -*/ - -/*! - \qmlattachedproperty bool QtQuick.Controls::SwipeView::isPreviousItem - \since QtQuick.Controls 2.1 (Qt 5.8) - \readonly - - This attached property is \c true if this child is the previous item. - - It is attached to each child item of the SwipeView. -*/ - -/*! - \qmlattachedproperty SwipeView QtQuick.Controls::SwipeView::view - \readonly - - This attached property holds the view that manages this child item. - - It is attached to each child item of the SwipeView. -*/ - -void QQuickSwipeViewAttachedPrivate::updateCurrentIndex() -{ - setCurrentIndex(swipeView ? swipeView->currentIndex() : -1); -} - -void QQuickSwipeViewAttachedPrivate::setCurrentIndex(int i) -{ - if (i == currentIndex) - return; - - Q_Q(QQuickSwipeViewAttached); - const bool wasCurrent = q->isCurrentItem(); - const bool wasNext = q->isNextItem(); - const bool wasPrevious = q->isPreviousItem(); - - currentIndex = i; - if (wasCurrent != q->isCurrentItem()) - emit q->isCurrentItemChanged(); - if (wasNext != q->isNextItem()) - emit q->isNextItemChanged(); - if (wasPrevious != q->isPreviousItem()) - emit q->isPreviousItemChanged(); -} - -void QQuickSwipeViewAttachedPrivate::update(QQuickSwipeView *newView, int newIndex) -{ - Q_Q(QQuickSwipeViewAttached); - int oldIndex = index; - QQuickSwipeView *oldView = swipeView; - - index = newIndex; - swipeView = newView; - - if (oldView != newView) { - if (oldView) { - disconnect(oldView, &QQuickSwipeView::currentIndexChanged, - this, &QQuickSwipeViewAttachedPrivate::updateCurrentIndex); - } - if (newView) { - connect(newView, &QQuickSwipeView::currentIndexChanged, - this, &QQuickSwipeViewAttachedPrivate::updateCurrentIndex); - } - emit q->viewChanged(); - } - if (oldIndex != newIndex) - emit q->indexChanged(); - - updateCurrentIndex(); -} - -QQuickSwipeViewAttached::QQuickSwipeViewAttached(QObject *parent) - : QObject(*(new QQuickSwipeViewAttachedPrivate), parent) -{ - if (!qobject_cast<QQuickItem *>(parent)) - qmlWarning(parent) << "SwipeView: attached properties must be accessed from within a child item"; -} - -int QQuickSwipeViewAttached::index() const -{ - Q_D(const QQuickSwipeViewAttached); - return d->index; -} - -bool QQuickSwipeViewAttached::isCurrentItem() const -{ - Q_D(const QQuickSwipeViewAttached); - return d->index != -1 && d->currentIndex != -1 && d->index == d->currentIndex; -} - -QQuickSwipeView *QQuickSwipeViewAttached::view() const -{ - Q_D(const QQuickSwipeViewAttached); - return d->swipeView; -} - -bool QQuickSwipeViewAttached::isNextItem() const -{ - Q_D(const QQuickSwipeViewAttached); - return d->index != -1 && d->currentIndex != -1 && d->index == d->currentIndex + 1; -} - -bool QQuickSwipeViewAttached::isPreviousItem() const -{ - Q_D(const QQuickSwipeViewAttached); - return d->index != -1 && d->currentIndex != -1 && d->index == d->currentIndex - 1; -} - -QT_END_NAMESPACE - -#include "moc_qquickswipeview_p.cpp" diff --git a/src/quicktemplates2/qquickswipeview_p.h b/src/quicktemplates2/qquickswipeview_p.h deleted file mode 100644 index 8a09a37e..00000000 --- a/src/quicktemplates2/qquickswipeview_p.h +++ /dev/null @@ -1,151 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSWIPEVIEW_P_H -#define QQUICKSWIPEVIEW_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontainer_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickSwipeViewAttached; -class QQuickSwipeViewPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSwipeView : public QQuickContainer -{ - Q_OBJECT - // 2.1 (Qt 5.8) - Q_PROPERTY(bool interactive READ isInteractive WRITE setInteractive NOTIFY interactiveChanged FINAL REVISION(2, 1)) - // 2.2 (Qt 5.9) - Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged FINAL REVISION(2, 2)) - // 2.3 (Qt 5.10) - Q_PROPERTY(bool horizontal READ isHorizontal NOTIFY orientationChanged FINAL REVISION(2, 3)) - Q_PROPERTY(bool vertical READ isVertical NOTIFY orientationChanged FINAL REVISION(2, 3)) - QML_NAMED_ELEMENT(SwipeView) - QML_ATTACHED(QQuickSwipeViewAttached) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickSwipeView(QQuickItem *parent = nullptr); - - static QQuickSwipeViewAttached *qmlAttachedProperties(QObject *object); - - // 2.1 (Qt 5.8) - bool isInteractive() const; - void setInteractive(bool interactive); - - // 2.2 (Qt 5.9) - Qt::Orientation orientation() const; - void setOrientation(Qt::Orientation orientation); - - // 2.3 (Qt 5.10) - bool isHorizontal() const; - bool isVertical() const; - -Q_SIGNALS: - // 2.1 (Qt 5.8) - Q_REVISION(2, 1) void interactiveChanged(); - // 2.2 (Qt 5.9) - Q_REVISION(2, 2) void orientationChanged(); - -protected: - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - void itemAdded(int index, QQuickItem *item) override; - void itemMoved(int index, QQuickItem *item) override; - void itemRemoved(int index, QQuickItem *item) override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickSwipeView) - Q_DECLARE_PRIVATE(QQuickSwipeView) -}; - -class QQuickSwipeViewAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSwipeViewAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(int index READ index NOTIFY indexChanged FINAL) - Q_PROPERTY(bool isCurrentItem READ isCurrentItem NOTIFY isCurrentItemChanged FINAL) - Q_PROPERTY(QQuickSwipeView *view READ view NOTIFY viewChanged FINAL) - // 2.1 (Qt 5.8) - Q_PROPERTY(bool isNextItem READ isNextItem NOTIFY isNextItemChanged FINAL REVISION(2, 1)) - Q_PROPERTY(bool isPreviousItem READ isPreviousItem NOTIFY isPreviousItemChanged FINAL REVISION(2, 1)) - -public: - explicit QQuickSwipeViewAttached(QObject *parent = nullptr); - - int index() const; - bool isCurrentItem() const; - QQuickSwipeView *view() const; - - // 2.1 (Qt 5.8) - bool isNextItem() const; - bool isPreviousItem() const; - -Q_SIGNALS: - void indexChanged(); - void isCurrentItemChanged(); - void viewChanged(); - // 2.1 (Qt 5.8) - /*Q_REVISION(2, 1)*/ void isNextItemChanged(); - /*Q_REVISION(2, 1)*/ void isPreviousItemChanged(); - -private: - Q_DISABLE_COPY(QQuickSwipeViewAttached) - Q_DECLARE_PRIVATE(QQuickSwipeViewAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickSwipeView) -QML_DECLARE_TYPEINFO(QQuickSwipeView, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKSWIPEVIEW_P_H diff --git a/src/quicktemplates2/qquickswitch.cpp b/src/quicktemplates2/qquickswitch.cpp deleted file mode 100644 index e9fef6c8..00000000 --- a/src/quicktemplates2/qquickswitch.cpp +++ /dev/null @@ -1,239 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickswitch_p.h" -#include "qquickabstractbutton_p_p.h" - -#include <QtGui/qstylehints.h> -#include <QtGui/qguiapplication.h> -#include <QtQuick/private/qquickwindow_p.h> -#include <QtQuick/private/qquickevents_p_p.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype Switch - \inherits AbstractButton -//! \instantiates QQuickSwitch - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-buttons - \brief Switch button that can be toggled on or off. - - \image qtquickcontrols2-switch.gif - - Switch is an option button that can be dragged or toggled on (checked) or - off (unchecked). Switches are typically used to select between two states. - For larger sets of options, such as those in a list, consider using - \l SwitchDelegate instead. - - Switch inherits its API from \l AbstractButton. For instance, the state - of the switch can be set with the \l {AbstractButton::}{checked} property. - - \code - ColumnLayout { - Switch { - text: qsTr("Wi-Fi") - } - Switch { - text: qsTr("Bluetooth") - } - } - \endcode - - \sa {Customizing Switch}, {Button Controls} -*/ - -class QQuickSwitchPrivate : public QQuickAbstractButtonPrivate -{ - Q_DECLARE_PUBLIC(QQuickSwitch) - -public: - qreal positionAt(const QPointF &point) const; - - bool canDrag(const QPointF &movePoint) const; - void handleMove(const QPointF &point, ulong timestamp) override; - void handleRelease(const QPointF &point, ulong timestamp) override; - - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::Switch); } - - qreal position = 0; -}; - -qreal QQuickSwitchPrivate::positionAt(const QPointF &point) const -{ - Q_Q(const QQuickSwitch); - qreal pos = 0.0; - if (indicator) - pos = indicator->mapFromItem(q, point).x() / indicator->width(); - if (q->isMirrored()) - return 1.0 - pos; - return pos; -} - -bool QQuickSwitchPrivate::canDrag(const QPointF &movePoint) const -{ - // don't start dragging the handle unless the initial press was at the indicator, - // or the drag has reached the indicator area. this prevents unnatural jumps when - // dragging far outside the indicator. - const qreal pressPos = positionAt(pressPoint); - const qreal movePos = positionAt(movePoint); - return (pressPos >= 0.0 && pressPos <= 1.0) || (movePos >= 0.0 && movePos <= 1.0); -} - -void QQuickSwitchPrivate::handleMove(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickSwitch); - QQuickAbstractButtonPrivate::handleMove(point, timestamp); - if (q->keepMouseGrab() || q->keepTouchGrab()) - q->setPosition(positionAt(point)); -} - -void QQuickSwitchPrivate::handleRelease(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickSwitch); - QQuickAbstractButtonPrivate::handleRelease(point, timestamp); - q->setKeepMouseGrab(false); - q->setKeepTouchGrab(false); -} - -QQuickSwitch::QQuickSwitch(QQuickItem *parent) - : QQuickAbstractButton(*(new QQuickSwitchPrivate), parent) -{ - Q_D(QQuickSwitch); - d->keepPressed = true; - setCheckable(true); -} - -/*! - \qmlproperty real QtQuick.Controls::Switch::position - \readonly - - \input includes/qquickswitch.qdocinc position -*/ -qreal QQuickSwitch::position() const -{ - Q_D(const QQuickSwitch); - return d->position; -} - -void QQuickSwitch::setPosition(qreal position) -{ - Q_D(QQuickSwitch); - position = qBound<qreal>(0.0, position, 1.0); - if (qFuzzyCompare(d->position, position)) - return; - - d->position = position; - emit positionChanged(); - emit visualPositionChanged(); -} - -/*! - \qmlproperty real QtQuick.Controls::Switch::visualPosition - \readonly - - \input includes/qquickswitch.qdocinc visualPosition -*/ -qreal QQuickSwitch::visualPosition() const -{ - Q_D(const QQuickSwitch); - if (isMirrored()) - return 1.0 - d->position; - return d->position; -} - -void QQuickSwitch::mouseMoveEvent(QMouseEvent *event) -{ - Q_D(QQuickSwitch); - if (!keepMouseGrab()) { - const QPointF movePoint = event->position(); - if (d->canDrag(movePoint)) - setKeepMouseGrab(QQuickWindowPrivate::dragOverThreshold(movePoint.x() - d->pressPoint.x(), Qt::XAxis, event)); - } - QQuickAbstractButton::mouseMoveEvent(event); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickSwitch::touchEvent(QTouchEvent *event) -{ - Q_D(QQuickSwitch); - if (!keepTouchGrab() && event->type() == QEvent::TouchUpdate) { - for (const QTouchEvent::TouchPoint &point : event->points()) { - if (point.id() != d->touchId || point.state() != QEventPoint::Updated) - continue; - if (d->canDrag(point.position())) - setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.position().x() - d->pressPoint.x(), Qt::XAxis, &point)); - } - } - QQuickAbstractButton::touchEvent(event); -} -#endif - -void QQuickSwitch::mirrorChange() -{ - QQuickAbstractButton::mirrorChange(); - emit visualPositionChanged(); -} - -void QQuickSwitch::nextCheckState() -{ - Q_D(QQuickSwitch); - if (keepMouseGrab() || keepTouchGrab()) { - d->toggle(d->position > 0.5); - // the checked state might not change => force a position update to - // avoid that the handle is left somewhere in the middle (QTBUG-57944) - setPosition(d->checked ? 1.0 : 0.0); - } else { - QQuickAbstractButton::nextCheckState(); - } -} - -void QQuickSwitch::buttonChange(ButtonChange change) -{ - Q_D(QQuickSwitch); - if (change == ButtonCheckedChange) - setPosition(d->checked ? 1.0 : 0.0); - else - QQuickAbstractButton::buttonChange(change); -} - -QFont QQuickSwitch::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::Switch); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickswitch_p.h b/src/quicktemplates2/qquickswitch_p.h deleted file mode 100644 index b3df0299..00000000 --- a/src/quicktemplates2/qquickswitch_p.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSWITCH_P_H -#define QQUICKSWITCH_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickSwitchPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSwitch : public QQuickAbstractButton -{ - Q_OBJECT - Q_PROPERTY(qreal position READ position WRITE setPosition NOTIFY positionChanged FINAL) - Q_PROPERTY(qreal visualPosition READ visualPosition NOTIFY visualPositionChanged FINAL) - QML_NAMED_ELEMENT(Switch) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickSwitch(QQuickItem *parent = nullptr); - - qreal position() const; - void setPosition(qreal position); - - qreal visualPosition() const; - -Q_SIGNALS: - void positionChanged(); - void visualPositionChanged(); - -protected: - void mouseMoveEvent(QMouseEvent *event) override; -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; -#endif - - void mirrorChange() override; - - void nextCheckState() override; - void buttonChange(ButtonChange change) override; - - QFont defaultFont() const override; - -private: - Q_DISABLE_COPY(QQuickSwitch) - Q_DECLARE_PRIVATE(QQuickSwitch) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickSwitch) - -#endif // QQUICKSWITCH_P_H diff --git a/src/quicktemplates2/qquickswitchdelegate.cpp b/src/quicktemplates2/qquickswitchdelegate.cpp deleted file mode 100644 index e0f1636c..00000000 --- a/src/quicktemplates2/qquickswitchdelegate.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickswitchdelegate_p.h" - -#include "qquickitemdelegate_p_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype SwitchDelegate - \inherits ItemDelegate -//! \instantiates QQuickSwitchDelegate - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-delegates - \brief Item delegate with a switch indicator that can be toggled on or off. - - \image qtquickcontrols2-switchdelegate.gif - - SwitchDelegate presents an item delegate that can be toggled on (checked) or - off (unchecked). Switch delegates are typically used to select one or more - options from a set of options. For smaller sets of options, or for options - that need to be uniquely identifiable, consider using \l Switch instead. - - SwitchDelegate inherits its API from \l ItemDelegate, which is inherited - from \l AbstractButton. For instance, you can set \l {AbstractButton::text}{text}, - and react to \l {AbstractButton::clicked}{clicks} using the \l AbstractButton - API. The state of the switch delegate can be set with the - \l {AbstractButton::}{checked} property. - - \code - ListView { - model: ["Option 1", "Option 2", "Option 3"] - delegate: SwitchDelegate { - text: modelData - } - } - \endcode - - \sa {Customizing SwitchDelegate}, {Delegate Controls} -*/ - -class QQuickSwitchDelegatePrivate : public QQuickItemDelegatePrivate -{ - Q_DECLARE_PUBLIC(QQuickSwitchDelegate) - -public: - qreal positionAt(const QPointF &point) const; - - bool canDrag(const QPointF &movePoint) const; - void handleMove(const QPointF &point, ulong timestamp) override; - void handleRelease(const QPointF &point, ulong timestamp) override; - - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ListView); } - - qreal position = 0; -}; - -qreal QQuickSwitchDelegatePrivate::positionAt(const QPointF &point) const -{ - Q_Q(const QQuickSwitchDelegate); - qreal pos = 0.0; - if (indicator) - pos = indicator->mapFromItem(q, point).x() / indicator->width(); - if (q->isMirrored()) - return 1.0 - pos; - return pos; -} - -bool QQuickSwitchDelegatePrivate::canDrag(const QPointF &movePoint) const -{ - // don't start dragging the handle unless the initial press was at the indicator, - // or the drag has reached the indicator area. this prevents unnatural jumps when - // dragging far outside the indicator. - const qreal pressPos = positionAt(pressPoint); - const qreal movePos = positionAt(movePoint); - return (pressPos >= 0.0 && pressPos <= 1.0) || (movePos >= 0.0 && movePos <= 1.0); -} - -void QQuickSwitchDelegatePrivate::handleMove(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickSwitchDelegate); - QQuickItemDelegatePrivate::handleMove(point, timestamp); - if (q->keepMouseGrab() || q->keepTouchGrab()) - q->setPosition(positionAt(point)); -} - -void QQuickSwitchDelegatePrivate::handleRelease(const QPointF &point, ulong timestamp) -{ - Q_Q(QQuickSwitchDelegate); - QQuickItemDelegatePrivate::handleRelease(point, timestamp); - q->setKeepMouseGrab(false); - q->setKeepTouchGrab(false); -} - -QQuickSwitchDelegate::QQuickSwitchDelegate(QQuickItem *parent) - : QQuickItemDelegate(*(new QQuickSwitchDelegatePrivate), parent) -{ - Q_D(QQuickSwitchDelegate); - d->keepPressed = true; - setCheckable(true); -} - -/*! - \qmlproperty real QtQuick.Controls::SwitchDelegate::position - \readonly - - \input includes/qquickswitch.qdocinc position -*/ -qreal QQuickSwitchDelegate::position() const -{ - Q_D(const QQuickSwitchDelegate); - return d->position; -} - -void QQuickSwitchDelegate::setPosition(qreal position) -{ - Q_D(QQuickSwitchDelegate); - position = qBound<qreal>(0.0, position, 1.0); - if (qFuzzyCompare(d->position, position)) - return; - - d->position = position; - emit positionChanged(); - emit visualPositionChanged(); -} - -/*! - \qmlproperty real QtQuick.Controls::SwitchDelegate::visualPosition - \readonly - - \input includes/qquickswitch.qdocinc visualPosition -*/ -qreal QQuickSwitchDelegate::visualPosition() const -{ - Q_D(const QQuickSwitchDelegate); - if (isMirrored()) - return 1.0 - d->position; - return d->position; -} - -void QQuickSwitchDelegate::mouseMoveEvent(QMouseEvent *event) -{ - Q_D(QQuickSwitchDelegate); - if (!keepMouseGrab()) { - const QPointF movePoint = event->position(); - if (d->canDrag(movePoint)) - setKeepMouseGrab(QQuickWindowPrivate::dragOverThreshold(movePoint.x() - d->pressPoint.x(), Qt::XAxis, event)); - } - QQuickItemDelegate::mouseMoveEvent(event); -} - -#if QT_CONFIG(quicktemplates2_multitouch) -void QQuickSwitchDelegate::touchEvent(QTouchEvent *event) -{ - Q_D(QQuickSwitchDelegate); - if (!keepTouchGrab() && event->type() == QEvent::TouchUpdate) { - for (const QTouchEvent::TouchPoint &point : event->points()) { - if (point.id() != d->touchId || point.state() != QEventPoint::Updated) - continue; - if (d->canDrag(point.position())) - setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.position().x() - d->pressPoint.x(), Qt::XAxis, &point)); - } - } - QQuickItemDelegate::touchEvent(event); -} -#endif - -QFont QQuickSwitchDelegate::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::ListView); -} - -void QQuickSwitchDelegate::mirrorChange() -{ - QQuickItemDelegate::mirrorChange(); - emit visualPositionChanged(); -} - -void QQuickSwitchDelegate::nextCheckState() -{ - Q_D(QQuickSwitchDelegate); - if (keepMouseGrab() || keepTouchGrab()) { - d->toggle(d->position > 0.5); - // the checked state might not change => force a position update to - // avoid that the handle is left somewhere in the middle (QTBUG-57944) - setPosition(d->checked ? 1.0 : 0.0); - } else { - QQuickItemDelegate::nextCheckState(); - } -} - -void QQuickSwitchDelegate::buttonChange(ButtonChange change) -{ - Q_D(QQuickSwitchDelegate); - if (change == ButtonCheckedChange) - setPosition(d->checked ? 1.0 : 0.0); - else - QQuickAbstractButton::buttonChange(change); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickswitchdelegate_p.h b/src/quicktemplates2/qquickswitchdelegate_p.h deleted file mode 100644 index a2eb6f62..00000000 --- a/src/quicktemplates2/qquickswitchdelegate_p.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKSWITCHDELEGATE_P_H -#define QQUICKSWITCHDELEGATE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickitemdelegate_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickSwitchDelegatePrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSwitchDelegate : public QQuickItemDelegate -{ - Q_OBJECT - Q_PROPERTY(qreal position READ position WRITE setPosition NOTIFY positionChanged FINAL) - Q_PROPERTY(qreal visualPosition READ visualPosition NOTIFY visualPositionChanged FINAL) - QML_NAMED_ELEMENT(SwitchDelegate) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickSwitchDelegate(QQuickItem *parent = nullptr); - - qreal position() const; - void setPosition(qreal position); - - qreal visualPosition() const; - -Q_SIGNALS: - void positionChanged(); - void visualPositionChanged(); - -protected: - void mouseMoveEvent(QMouseEvent *event) override; -#if QT_CONFIG(quicktemplates2_multitouch) - void touchEvent(QTouchEvent *event) override; -#endif - - QFont defaultFont() const override; - - void mirrorChange() override; - - void nextCheckState() override; - void buttonChange(ButtonChange change) override; - -private: - Q_DISABLE_COPY(QQuickSwitchDelegate) - Q_DECLARE_PRIVATE(QQuickSwitchDelegate) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickSwitchDelegate) - -#endif // QQUICKSWITCHDELEGATE_P_H diff --git a/src/quicktemplates2/qquicktabbar.cpp b/src/quicktemplates2/qquicktabbar.cpp deleted file mode 100644 index f8810581..00000000 --- a/src/quicktemplates2/qquicktabbar.cpp +++ /dev/null @@ -1,481 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktabbar_p.h" -#include "qquicktabbutton_p.h" -#include "qquickcontainer_p_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype TabBar - \inherits Container -//! \instantiates QQuickTabBar - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-navigation - \ingroup qtquickcontrols2-containers - \ingroup qtquickcontrols2-focusscopes - \brief Allows the user to switch between different views or subtasks. - - TabBar provides a tab-based navigation model. - - \image qtquickcontrols2-tabbar-wireframe.png - - TabBar is populated with TabButton controls, and can be used together with - any layout or container control that provides \c currentIndex -property, - such as \l StackLayout or \l SwipeView - - \snippet qtquickcontrols2-tabbar.qml 1 - - As shown above, TabBar is typically populated with a static set of tab buttons - that are defined inline as children of the tab bar. It is also possible to - \l {Container::addItem()}{add}, \l {Container::insertItem()}{insert}, - \l {Container::moveItem()}{move}, and \l {Container::removeItem()}{remove} - items dynamically at run time. The items can be accessed using - \l {Container::}{itemAt()} or \l {Container::}{contentChildren}. - - \section2 Resizing Tabs - - By default, TabBar resizes its buttons to fit the width of the control. - The available space is distributed equally to each button. The default - resizing behavior can be overridden by setting an explicit width for the - buttons. - - The following example illustrates how to keep each tab button at their - implicit size instead of being resized to fit the tabbar: - - \borderedimage qtquickcontrols2-tabbar-explicit.png - - \snippet qtquickcontrols2-tabbar-explicit.qml 1 - - \section2 Flickable Tabs - - If the total width of the buttons exceeds the available width of the tab bar, - it automatically becomes flickable. - - \image qtquickcontrols2-tabbar-flickable.png - - \snippet qtquickcontrols2-tabbar-flickable.qml 1 - - \sa TabButton, {Customizing TabBar}, {Navigation Controls}, {Container Controls}, - {Focus Management in Qt Quick Controls} -*/ - -class QQuickTabBarPrivate : public QQuickContainerPrivate -{ - Q_DECLARE_PUBLIC(QQuickTabBar) - -public: - void updateCurrentItem(); - void updateCurrentIndex(); - void updateLayout(); - - qreal getContentWidth() const override; - qreal getContentHeight() const override; - - void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override; - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::TabBar); } - - bool updatingLayout = false; - QQuickTabBar::Position position = QQuickTabBar::Header; -}; - -class QQuickTabBarAttachedPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickTabBarAttached) - -public: - static QQuickTabBarAttachedPrivate *get(QQuickTabBarAttached *attached) - { - return attached->d_func(); - } - - void update(QQuickTabBar *tabBar, int index); - - int index = -1; - QQuickTabBar *tabBar = nullptr; -}; - -void QQuickTabBarPrivate::updateCurrentItem() -{ - QQuickTabButton *button = qobject_cast<QQuickTabButton *>(contentModel->get(currentIndex)); - if (button) - button->setChecked(true); -} - -void QQuickTabBarPrivate::updateCurrentIndex() -{ - Q_Q(QQuickTabBar); - QQuickTabButton *button = qobject_cast<QQuickTabButton *>(q->sender()); - if (button && button->isChecked()) - q->setCurrentIndex(contentModel->indexOf(button, nullptr)); -} - -void QQuickTabBarPrivate::updateLayout() -{ - Q_Q(QQuickTabBar); - const int count = contentModel->count(); - if (count <= 0 || !contentItem) - return; - - qreal reservedWidth = 0; - int resizableCount = 0; - - QList<QQuickItem *> allItems; - allItems.reserve(count); - - for (int i = 0; i < count; ++i) { - QQuickItem *item = q->itemAt(i); - if (item) { - QQuickItemPrivate *p = QQuickItemPrivate::get(item); - if (!p->widthValid()) - ++resizableCount; - else - reservedWidth += item->width(); - allItems += item; - } - } - - const qreal totalSpacing = qMax(0, count - 1) * spacing; - const qreal itemWidth = (contentItem->width() - reservedWidth - totalSpacing) / qMax(1, resizableCount); - - updatingLayout = true; - for (QQuickItem *item : qAsConst(allItems)) { - QQuickItemPrivate *p = QQuickItemPrivate::get(item); - if (!p->widthValid()) { - item->setWidth(itemWidth); - p->widthValidFlag = false; - } - if (!p->heightValid()) { - item->setHeight(contentHeight); - p->heightValidFlag = false; - } else { - item->setY((contentHeight - item->height()) / 2); - } - } - updatingLayout = false; -} - -qreal QQuickTabBarPrivate::getContentWidth() const -{ - Q_Q(const QQuickTabBar); - const int count = contentModel->count(); - qreal totalWidth = qMax(0, count - 1) * spacing; - for (int i = 0; i < count; ++i) { - QQuickItem *item = q->itemAt(i); - if (item) { - QQuickItemPrivate *p = QQuickItemPrivate::get(item); - if (!p->widthValid()) - totalWidth += item->implicitWidth(); - else - totalWidth += item->width(); - } - } - return totalWidth; -} - -qreal QQuickTabBarPrivate::getContentHeight() const -{ - Q_Q(const QQuickTabBar); - const int count = contentModel->count(); - qreal maxHeight = 0; - for (int i = 0; i < count; ++i) { - QQuickItem *item = q->itemAt(i); - if (item) - maxHeight = qMax(maxHeight, item->implicitHeight()); - } - return maxHeight; -} - -void QQuickTabBarPrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) -{ - QQuickContainerPrivate::itemGeometryChanged(item, change, diff); - if (!updatingLayout) { - if (change.sizeChange()) - updateImplicitContentSize(); - updateLayout(); - } -} - -void QQuickTabBarPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - QQuickContainerPrivate::itemImplicitWidthChanged(item); - if (item != contentItem) - updateImplicitContentWidth(); -} - -void QQuickTabBarPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - QQuickContainerPrivate::itemImplicitHeightChanged(item); - if (item != contentItem) - updateImplicitContentHeight(); -} - -QQuickTabBar::QQuickTabBar(QQuickItem *parent) - : QQuickContainer(*(new QQuickTabBarPrivate), parent) -{ - Q_D(QQuickTabBar); - d->changeTypes |= QQuickItemPrivate::Geometry | QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight; - setFlag(ItemIsFocusScope); - QObjectPrivate::connect(this, &QQuickTabBar::currentIndexChanged, d, &QQuickTabBarPrivate::updateCurrentItem); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::TabBar::position - - This property holds the position of the tab bar. - - \note If the tab bar is assigned as a header or footer of \l ApplicationWindow - or \l Page, the appropriate position is set automatically. - - Possible values: - \value TabBar.Header The tab bar is at the top, as a window or page header. - \value TabBar.Footer The tab bar is at the bottom, as a window or page footer. - - The default value is style-specific. - - \sa ApplicationWindow::header, ApplicationWindow::footer, Page::header, Page::footer -*/ -QQuickTabBar::Position QQuickTabBar::position() const -{ - Q_D(const QQuickTabBar); - return d->position; -} - -void QQuickTabBar::setPosition(Position position) -{ - Q_D(QQuickTabBar); - if (d->position == position) - return; - - d->position = position; - emit positionChanged(); -} - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty real QtQuick.Controls::TabBar::contentWidth - - This property holds the content width. It is used for calculating the total - implicit width of the tab bar. - - \note This property is available in TabBar since QtQuick.Controls 2.2 (Qt 5.9), - but it was promoted to the Container base type in QtQuick.Controls 2.5 (Qt 5.12). - - \sa Container::contentWidth -*/ - -/*! - \since QtQuick.Controls 2.2 (Qt 5.9) - \qmlproperty real QtQuick.Controls::TabBar::contentHeight - - This property holds the content height. It is used for calculating the total - implicit height of the tab bar. - - \note This property is available in TabBar since QtQuick.Controls 2.2 (Qt 5.9), - but it was promoted to the Container base type in QtQuick.Controls 2.5 (Qt 5.12). - - \sa Container::contentHeight -*/ - -QQuickTabBarAttached *QQuickTabBar::qmlAttachedProperties(QObject *object) -{ - return new QQuickTabBarAttached(object); -} - -void QQuickTabBar::updatePolish() -{ - Q_D(QQuickTabBar); - QQuickContainer::updatePolish(); - d->updateLayout(); -} - -void QQuickTabBar::componentComplete() -{ - Q_D(QQuickTabBar); - QQuickContainer::componentComplete(); - d->updateCurrentItem(); - d->updateLayout(); -} - -void QQuickTabBar::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickTabBar); - QQuickContainer::geometryChange(newGeometry, oldGeometry); - d->updateLayout(); -} - -bool QQuickTabBar::isContent(QQuickItem *item) const -{ - return qobject_cast<QQuickTabButton *>(item); -} - -void QQuickTabBar::itemAdded(int index, QQuickItem *item) -{ - Q_D(QQuickTabBar); - Q_UNUSED(index); - QQuickItemPrivate::get(item)->setCulled(true); // QTBUG-55129 - if (QQuickTabButton *button = qobject_cast<QQuickTabButton *>(item)) - QObjectPrivate::connect(button, &QQuickTabButton::checkedChanged, d, &QQuickTabBarPrivate::updateCurrentIndex); - QQuickTabBarAttached *attached = qobject_cast<QQuickTabBarAttached *>(qmlAttachedPropertiesObject<QQuickTabBar>(item)); - if (attached) - QQuickTabBarAttachedPrivate::get(attached)->update(this, index); - d->updateImplicitContentSize(); - if (isComponentComplete()) - polish(); -} - -void QQuickTabBar::itemMoved(int index, QQuickItem *item) -{ - QQuickTabBarAttached *attached = qobject_cast<QQuickTabBarAttached *>(qmlAttachedPropertiesObject<QQuickTabBar>(item)); - if (attached) - QQuickTabBarAttachedPrivate::get(attached)->update(this, index); -} - -void QQuickTabBar::itemRemoved(int index, QQuickItem *item) -{ - Q_D(QQuickTabBar); - Q_UNUSED(index); - if (QQuickTabButton *button = qobject_cast<QQuickTabButton *>(item)) - QObjectPrivate::disconnect(button, &QQuickTabButton::checkedChanged, d, &QQuickTabBarPrivate::updateCurrentIndex); - QQuickTabBarAttached *attached = qobject_cast<QQuickTabBarAttached *>(qmlAttachedPropertiesObject<QQuickTabBar>(item)); - if (attached) - QQuickTabBarAttachedPrivate::get(attached)->update(nullptr, -1); - d->updateImplicitContentSize(); - if (isComponentComplete()) - polish(); -} - -QFont QQuickTabBar::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::TabBar); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickTabBar::accessibleRole() const -{ - return QAccessible::PageTabList; -} -#endif - -/*! - \qmlattachedproperty int QtQuick.Controls::TabBar::index - \since QtQuick.Controls 2.3 (Qt 5.10) - \readonly - - This attached property holds the index of each tab button in the TabBar. - - It is attached to each tab button of the TabBar. -*/ - -/*! - \qmlattachedproperty TabBar QtQuick.Controls::TabBar::tabBar - \since QtQuick.Controls 2.3 (Qt 5.10) - \readonly - - This attached property holds the tab bar that manages this tab button. - - It is attached to each tab button of the TabBar. -*/ - -/*! - \qmlattachedproperty enumeration QtQuick.Controls::TabBar::position - \since QtQuick.Controls 2.3 (Qt 5.10) - \readonly - - This attached property holds the position of the tab bar. - - It is attached to each tab button of the TabBar. - - Possible values: - \value TabBar.Header The tab bar is at the top, as a window or page header. - \value TabBar.Footer The tab bar is at the bottom, as a window or page footer. -*/ - -void QQuickTabBarAttachedPrivate::update(QQuickTabBar *newTabBar, int newIndex) -{ - Q_Q(QQuickTabBarAttached); - const int oldIndex = index; - const QQuickTabBar *oldTabBar = tabBar; - const QQuickTabBar::Position oldPos = q->position(); - - index = newIndex; - tabBar = newTabBar; - - if (oldTabBar != newTabBar) { - if (oldTabBar) - QObject::disconnect(oldTabBar, &QQuickTabBar::positionChanged, q, &QQuickTabBarAttached::positionChanged); - if (newTabBar) - QObject::connect(newTabBar, &QQuickTabBar::positionChanged, q, &QQuickTabBarAttached::positionChanged); - emit q->tabBarChanged(); - } - - if (oldIndex != newIndex) - emit q->indexChanged(); - if (oldPos != q->position()) - emit q->positionChanged(); -} - -QQuickTabBarAttached::QQuickTabBarAttached(QObject *parent) - : QObject(*(new QQuickTabBarAttachedPrivate), parent) -{ -} - -int QQuickTabBarAttached::index() const -{ - Q_D(const QQuickTabBarAttached); - return d->index; -} - -QQuickTabBar *QQuickTabBarAttached::tabBar() const -{ - Q_D(const QQuickTabBarAttached); - return d->tabBar; -} - -QQuickTabBar::Position QQuickTabBarAttached::position() const -{ - Q_D(const QQuickTabBarAttached); - if (!d->tabBar) - return QQuickTabBar::Header; - return d->tabBar->position(); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktabbar_p.h b/src/quicktemplates2/qquicktabbar_p.h deleted file mode 100644 index 755fdd8f..00000000 --- a/src/quicktemplates2/qquicktabbar_p.h +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTABBAR_P_H -#define QQUICKTABBAR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontainer_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickTabBarPrivate; -class QQuickTabBarAttached; -class QQuickTabBarAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTabBar : public QQuickContainer -{ - Q_OBJECT - Q_PROPERTY(Position position READ position WRITE setPosition NOTIFY positionChanged FINAL) - QML_NAMED_ELEMENT(TabBar) - QML_ATTACHED(QQuickTabBarAttached) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickTabBar(QQuickItem *parent = nullptr); - - enum Position { - Header, - Footer - }; - Q_ENUM(Position) - - Position position() const; - void setPosition(Position position); - - static QQuickTabBarAttached *qmlAttachedProperties(QObject *object); - -Q_SIGNALS: - void positionChanged(); - -protected: - void updatePolish() override; - void componentComplete() override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - bool isContent(QQuickItem *item) const override; - void itemAdded(int index, QQuickItem *item) override; - void itemMoved(int index, QQuickItem *item) override; - void itemRemoved(int index, QQuickItem *item) override; - - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickTabBar) - Q_DECLARE_PRIVATE(QQuickTabBar) -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTabBarAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(int index READ index NOTIFY indexChanged FINAL) - Q_PROPERTY(QQuickTabBar *tabBar READ tabBar NOTIFY tabBarChanged FINAL) - Q_PROPERTY(QQuickTabBar::Position position READ position NOTIFY positionChanged FINAL) - -public: - explicit QQuickTabBarAttached(QObject *parent = nullptr); - - int index() const; - QQuickTabBar *tabBar() const; - QQuickTabBar::Position position() const; - -Q_SIGNALS: - void indexChanged(); - void tabBarChanged(); - void positionChanged(); - -private: - Q_DISABLE_COPY(QQuickTabBarAttached) - Q_DECLARE_PRIVATE(QQuickTabBarAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickTabBar) -QML_DECLARE_TYPEINFO(QQuickTabBar, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKTABBAR_P_H diff --git a/src/quicktemplates2/qquicktabbutton.cpp b/src/quicktemplates2/qquicktabbutton.cpp deleted file mode 100644 index 540f1280..00000000 --- a/src/quicktemplates2/qquicktabbutton.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktabbutton_p.h" -#include "qquickcontrol_p_p.h" -#include "qquickabstractbutton_p_p.h" - -#include <QtGui/qpa/qplatformtheme.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype TabButton - \inherits AbstractButton -//! \instantiates QQuickTabButton - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-navigation - \brief Button with a look suitable for a TabBar. - - \image qtquickcontrols2-tabbutton.png - - TabButton is used in conjunction with a \l TabBar. - - \snippet qtquickcontrols2-tabbutton.qml 1 - - TabButton inherits its API from AbstractButton. For instance, you can set - \l {AbstractButton::text}{text}, and react to \l {AbstractButton::clicked}{clicks} - using the AbstractButton API. - - \sa TabBar, {Customizing TabButton}, {Button Controls}, {Navigation Controls} -*/ - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTabButtonPrivate : public QQuickAbstractButtonPrivate -{ - Q_DECLARE_PUBLIC(QQuickTabButton) - -public: - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::TabBar); } -}; - -QQuickTabButton::QQuickTabButton(QQuickItem *parent) - : QQuickAbstractButton(*(new QQuickTabButtonPrivate), parent) -{ - setCheckable(true); - setAutoExclusive(true); -} - -QFont QQuickTabButton::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::TabBar); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickTabButton::accessibleRole() const -{ - return QAccessible::PageTab; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktabbutton_p.h b/src/quicktemplates2/qquicktabbutton_p.h deleted file mode 100644 index 302180c4..00000000 --- a/src/quicktemplates2/qquicktabbutton_p.h +++ /dev/null @@ -1,81 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTABBUTTON_P_H -#define QQUICKTABBUTTON_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickabstractbutton_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickTabButtonPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTabButton : public QQuickAbstractButton -{ - Q_OBJECT - QML_NAMED_ELEMENT(TabButton) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickTabButton(QQuickItem *parent = nullptr); - -protected: - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DECLARE_PRIVATE(QQuickTabButton) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickTabButton) - -#endif // QQUICKTABBUTTON_P_H diff --git a/src/quicktemplates2/qquicktextarea.cpp b/src/quicktemplates2/qquicktextarea.cpp deleted file mode 100644 index f1ea24d8..00000000 --- a/src/quicktemplates2/qquicktextarea.cpp +++ /dev/null @@ -1,1176 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktextarea_p.h" -#include "qquicktextarea_p_p.h" -#include "qquickcontrol_p.h" -#include "qquickcontrol_p_p.h" -#include "qquickscrollview_p.h" -#include "qquickdeferredexecute_p_p.h" - -#include <QtQml/qqmlinfo.h> -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquickclipnode_p.h> -#include <QtQuick/private/qquickflickable_p.h> - -#if QT_CONFIG(accessibility) -#include <QtQuick/private/qquickaccessibleattached_p.h> -#endif - -QT_BEGIN_NAMESPACE - -/*! - \qmltype TextArea - \inherits TextEdit -//! \instantiates QQuickTextArea - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-input - \brief Multi-line text input area. - - TextArea is a multi-line text editor. TextArea extends TextEdit with - a \l {placeholderText}{placeholder text} functionality, and adds decoration. - - \image qtquickcontrols2-textarea.png - - \code - TextArea { - placeholderText: qsTr("Enter description") - } - \endcode - - TextArea is not scrollable by itself. Especially on screen-size constrained - platforms, it is often preferable to make entire application pages scrollable. - On such a scrollable page, a non-scrollable TextArea might behave better than - nested scrollable controls. Notice, however, that in such a scenario, the background - decoration of the TextArea scrolls together with the rest of the scrollable - content. - - \section2 Scrollable TextArea - - If you want to make a TextArea scrollable, for example, when it covers - an entire application page, it can be placed inside a \l ScrollView. - - \image qtquickcontrols2-textarea-scrollable.png - - \snippet qtquickcontrols2-textarea-scrollable.qml 1 - - A TextArea that is placed inside a \l ScrollView does the following: - - \list - \li Sets the content size automatically - \li Ensures that the background decoration stays in place - \li Clips the content - \endlist - - \section2 Tab Focus - - By default, pressing the tab key while TextArea has - \l {Item::activeFocus}{active focus} results in a tab character being input - into the control itself. To make tab pass active focus onto another item, - use the attached \l KeyNavigation properties: - - \code - TextField { - id: textField - } - - TextArea { - KeyNavigation.priority: KeyNavigation.BeforeItem - KeyNavigation.tab: textField - } - \endcode - - \sa TextField, {Customizing TextArea}, {Input Controls} -*/ - -/*! - \qmlsignal QtQuick.Controls::TextArea::pressAndHold(MouseEvent event) - - This signal is emitted when there is a long press (the delay depends on the platform plugin). - The \a event parameter provides information about the press, including the x and y - coordinates of the press, and which button is pressed. - - \sa pressed, released -*/ - -/*! - \qmlsignal QtQuick.Controls::TextArea::pressed(MouseEvent event) - \since QtQuick.Controls 2.1 (Qt 5.8) - - This signal is emitted when the text area is pressed by the user. - The \a event parameter provides information about the press, - including the x and y coordinates of the press, and which button is pressed. - - \sa released, pressAndHold -*/ - -/*! - \qmlsignal QtQuick.Controls::TextArea::released(MouseEvent event) - \since QtQuick.Controls 2.1 (Qt 5.8) - - This signal is emitted when the text area is released by the user. - The \a event parameter provides information about the release, - including the x and y coordinates of the press, and which button - is pressed. - - \sa pressed, pressAndHold -*/ - -QQuickTextAreaPrivate::QQuickTextAreaPrivate() -{ -#if QT_CONFIG(accessibility) - QAccessible::installActivationObserver(this); -#endif -} - -QQuickTextAreaPrivate::~QQuickTextAreaPrivate() -{ -#if QT_CONFIG(accessibility) - QAccessible::removeActivationObserver(this); -#endif -} - -void QQuickTextAreaPrivate::setTopInset(qreal value, bool reset) -{ - Q_Q(QQuickTextArea); - const QMarginsF oldInset = getInset(); - extra.value().topInset = value; - extra.value().hasTopInset = !reset; - if (!qFuzzyCompare(oldInset.top(), value)) { - emit q->topInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickTextAreaPrivate::setLeftInset(qreal value, bool reset) -{ - Q_Q(QQuickTextArea); - const QMarginsF oldInset = getInset(); - extra.value().leftInset = value; - extra.value().hasLeftInset = !reset; - if (!qFuzzyCompare(oldInset.left(), value)) { - emit q->leftInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickTextAreaPrivate::setRightInset(qreal value, bool reset) -{ - Q_Q(QQuickTextArea); - const QMarginsF oldInset = getInset(); - extra.value().rightInset = value; - extra.value().hasRightInset = !reset; - if (!qFuzzyCompare(oldInset.right(), value)) { - emit q->rightInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickTextAreaPrivate::setBottomInset(qreal value, bool reset) -{ - Q_Q(QQuickTextArea); - const QMarginsF oldInset = getInset(); - extra.value().bottomInset = value; - extra.value().hasBottomInset = !reset; - if (!qFuzzyCompare(oldInset.bottom(), value)) { - emit q->bottomInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickTextAreaPrivate::resizeBackground() -{ - if (!background) - return; - - resizingBackground = true; - - // When using the attached property TextArea.flickable, we reparent the background out - // of TextArea and into the Flickable since we don't want the background to move while - // flicking. This means that the size of the background should also follow the size of - // the Flickable rather than the size of the TextArea. - const auto flickable = qobject_cast<QQuickFlickable *>(background->parentItem()); - - QQuickItemPrivate *p = QQuickItemPrivate::get(background); - if (((!p->widthValid() || !extra.isAllocated() || !extra->hasBackgroundWidth) && qFuzzyIsNull(background->x())) - || (extra.isAllocated() && (extra->hasLeftInset || extra->hasRightInset))) { - const qreal bgWidth = flickable ? flickable->width() : width; - background->setX(getLeftInset()); - background->setWidth(bgWidth - getLeftInset() - getRightInset()); - } - - if (((!p->heightValid() || !extra.isAllocated() || !extra->hasBackgroundHeight) && qFuzzyIsNull(background->y())) - || (extra.isAllocated() && (extra->hasTopInset || extra->hasBottomInset))) { - const qreal bgHeight = flickable ? flickable->height() : height; - background->setY(getTopInset()); - background->setHeight(bgHeight - getTopInset() - getBottomInset()); - } - - resizingBackground = false; -} - -/*! - \internal - - Determine which font is implicitly imposed on this control by its ancestors - and QGuiApplication::font, resolve this against its own font (attributes from - the implicit font are copied over). Then propagate this font to this - control's children. -*/ -void QQuickTextAreaPrivate::resolveFont() -{ - Q_Q(QQuickTextArea); - inheritFont(QQuickControlPrivate::parentFont(q)); -} - -void QQuickTextAreaPrivate::inheritFont(const QFont &font) -{ - QFont parentFont = extra.isAllocated() ? extra->requestedFont.resolve(font) : font; - parentFont.setResolveMask(extra.isAllocated() ? extra->requestedFont.resolveMask() | font.resolveMask() : font.resolveMask()); - - const QFont defaultFont = QQuickTheme::font(QQuickTheme::TextArea); - QFont resolvedFont = parentFont.resolve(defaultFont); - - setFont_helper(resolvedFont); -} - -/*! - \internal - - Assign \a font to this control, and propagate it to all children. -*/ -void QQuickTextAreaPrivate::updateFont(const QFont &font) -{ - Q_Q(QQuickTextArea); - QFont oldFont = sourceFont; - q->QQuickTextEdit::setFont(font); - - QQuickControlPrivate::updateFontRecur(q, font); - - if (oldFont != font) - emit q->fontChanged(); -} - -#if QT_CONFIG(quicktemplates2_hover) -void QQuickTextAreaPrivate::updateHoverEnabled(bool enabled, bool xplicit) -{ - Q_Q(QQuickTextArea); - if (!xplicit && explicitHoverEnabled) - return; - - bool wasEnabled = q->isHoverEnabled(); - explicitHoverEnabled = xplicit; - if (wasEnabled != enabled) { - q->setAcceptHoverEvents(enabled); - QQuickControlPrivate::updateHoverEnabledRecur(q, enabled); - emit q->hoverEnabledChanged(); - } -} -#endif - -void QQuickTextAreaPrivate::attachFlickable(QQuickFlickable *item) -{ - Q_Q(QQuickTextArea); - flickable = item; - q->setParentItem(flickable->contentItem()); - - if (background) - background->setParentItem(flickable); - - QObjectPrivate::connect(q, &QQuickTextArea::contentSizeChanged, this, &QQuickTextAreaPrivate::resizeFlickableContent); - QObjectPrivate::connect(q, &QQuickTextEdit::cursorRectangleChanged, this, &QQuickTextAreaPrivate::ensureCursorVisible); - - QObject::connect(flickable, &QQuickFlickable::contentXChanged, q, &QQuickItem::update); - QObject::connect(flickable, &QQuickFlickable::contentYChanged, q, &QQuickItem::update); - - QQuickItemPrivate::get(flickable)->updateOrAddGeometryChangeListener(this, QQuickGeometryChange::Size); - QQuickItemPrivate::get(flickable)->addItemChangeListener(this, QQuickItemPrivate::Destroyed); - QObjectPrivate::connect(flickable, &QQuickFlickable::contentWidthChanged, this, &QQuickTextAreaPrivate::resizeFlickableControl); - QObjectPrivate::connect(flickable, &QQuickFlickable::contentHeightChanged, this, &QQuickTextAreaPrivate::resizeFlickableControl); - - resizeFlickableControl(); -} - -void QQuickTextAreaPrivate::detachFlickable() -{ - Q_Q(QQuickTextArea); - q->setParentItem(nullptr); - if (background && background->parentItem() == flickable) - background->setParentItem(q); - - QObjectPrivate::disconnect(q, &QQuickTextArea::contentSizeChanged, this, &QQuickTextAreaPrivate::resizeFlickableContent); - QObjectPrivate::disconnect(q, &QQuickTextEdit::cursorRectangleChanged, this, &QQuickTextAreaPrivate::ensureCursorVisible); - - QObject::disconnect(flickable, &QQuickFlickable::contentXChanged, q, &QQuickItem::update); - QObject::disconnect(flickable, &QQuickFlickable::contentYChanged, q, &QQuickItem::update); - - QQuickItemPrivate::get(flickable)->updateOrRemoveGeometryChangeListener(this, QQuickGeometryChange::Nothing); - QQuickItemPrivate::get(flickable)->removeItemChangeListener(this, QQuickItemPrivate::Destroyed); - QObjectPrivate::disconnect(flickable, &QQuickFlickable::contentWidthChanged, this, &QQuickTextAreaPrivate::resizeFlickableControl); - QObjectPrivate::disconnect(flickable, &QQuickFlickable::contentHeightChanged, this, &QQuickTextAreaPrivate::resizeFlickableControl); - - flickable = nullptr; - - resizeBackground(); -} - -void QQuickTextAreaPrivate::ensureCursorVisible() -{ - Q_Q(QQuickTextArea); - if (!flickable) - return; - - const qreal cx = flickable->contentX(); - const qreal cy = flickable->contentY(); - const qreal w = flickable->width(); - const qreal h = flickable->height(); - - const qreal tp = q->topPadding(); - const qreal lp = q->leftPadding(); - const QRectF cr = q->cursorRectangle(); - - if (cr.left() <= cx + lp) { - flickable->setContentX(cr.left() - lp); - } else { - // calculate the rectangle of the next character and ensure that - // it's visible if it's on the same line with the cursor - const qreal rp = q->rightPadding(); - const QRectF nr = q->cursorPosition() < q->length() ? q->positionToRectangle(q->cursorPosition() + 1) : QRectF(); - if (qFuzzyCompare(nr.y(), cr.y()) && nr.right() >= cx + lp + w - rp) - flickable->setContentX(nr.right() - w + rp); - else if (cr.right() >= cx + lp + w - rp) - flickable->setContentX(cr.right() - w + rp); - } - - if (cr.top() <= cy + tp) { - flickable->setContentY(cr.top() - tp); - } else { - const qreal bp = q->bottomPadding(); - if (cr.bottom() >= cy + tp + h - bp) - flickable->setContentY(cr.bottom() - h + bp); - } -} - -void QQuickTextAreaPrivate::resizeFlickableControl() -{ - Q_Q(QQuickTextArea); - if (!flickable) - return; - - const qreal w = wrapMode == QQuickTextArea::NoWrap ? qMax(flickable->width(), flickable->contentWidth()) : flickable->width(); - const qreal h = qMax(flickable->height(), flickable->contentHeight()); - q->setSize(QSizeF(w, h)); - - resizeBackground(); -} - -void QQuickTextAreaPrivate::resizeFlickableContent() -{ - Q_Q(QQuickTextArea); - if (!flickable) - return; - - flickable->setContentWidth(q->contentWidth() + q->leftPadding() + q->rightPadding()); - flickable->setContentHeight(q->contentHeight() + q->topPadding() + q->bottomPadding()); -} - -void QQuickTextAreaPrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) -{ - Q_UNUSED(diff); - if (!resizingBackground && item == background) { - QQuickItemPrivate *p = QQuickItemPrivate::get(item); - // Only set hasBackgroundWidth/Height if it was a width/height change, - // otherwise we're prevented from setting a width/height in the future. - if (change.widthChange()) - extra.value().hasBackgroundWidth = p->widthValid(); - if (change.heightChange()) - extra.value().hasBackgroundHeight = p->heightValid(); - } - - if (flickable) - resizeFlickableControl(); - else - resizeBackground(); -} - -qreal QQuickTextAreaPrivate::getImplicitWidth() const -{ - return QQuickItemPrivate::getImplicitWidth(); -} - -qreal QQuickTextAreaPrivate::getImplicitHeight() const -{ - return QQuickItemPrivate::getImplicitHeight(); -} - -void QQuickTextAreaPrivate::implicitWidthChanged() -{ - Q_Q(QQuickTextArea); - QQuickItemPrivate::implicitWidthChanged(); - emit q->implicitWidthChanged3(); -} - -void QQuickTextAreaPrivate::implicitHeightChanged() -{ - Q_Q(QQuickTextArea); - QQuickItemPrivate::implicitHeightChanged(); - emit q->implicitHeightChanged3(); -} - -void QQuickTextAreaPrivate::readOnlyChanged(bool isReadOnly) -{ - Q_UNUSED(isReadOnly); -#if QT_CONFIG(accessibility) - if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(q_func())) - accessibleAttached->set_readOnly(isReadOnly); -#endif -#if QT_CONFIG(cursor) - q_func()->setCursor(isReadOnly ? Qt::ArrowCursor : Qt::IBeamCursor); -#endif -} - -#if QT_CONFIG(accessibility) -void QQuickTextAreaPrivate::accessibilityActiveChanged(bool active) -{ - if (!active) - return; - - Q_Q(QQuickTextArea); - QQuickAccessibleAttached *accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(q, true)); - Q_ASSERT(accessibleAttached); - accessibleAttached->setRole(accessibleRole()); - accessibleAttached->set_readOnly(q->isReadOnly()); - accessibleAttached->setDescription(placeholder); -} - -QAccessible::Role QQuickTextAreaPrivate::accessibleRole() const -{ - return QAccessible::EditableText; -} -#endif - -static inline QString backgroundName() { return QStringLiteral("background"); } - -void QQuickTextAreaPrivate::cancelBackground() -{ - Q_Q(QQuickTextArea); - quickCancelDeferred(q, backgroundName()); -} - -void QQuickTextAreaPrivate::executeBackground(bool complete) -{ - Q_Q(QQuickTextArea); - if (background.wasExecuted()) - return; - - if (!background || complete) - quickBeginDeferred(q, backgroundName(), background); - if (complete) - quickCompleteDeferred(q, backgroundName(), background); -} - -void QQuickTextAreaPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - Q_Q(QQuickTextArea); - if (item == background) - emit q->implicitBackgroundWidthChanged(); -} - -void QQuickTextAreaPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - Q_Q(QQuickTextArea); - if (item == background) - emit q->implicitBackgroundHeightChanged(); -} - -void QQuickTextAreaPrivate::itemDestroyed(QQuickItem *item) -{ - Q_Q(QQuickTextArea); - if (item == background) { - background = nullptr; - emit q->implicitBackgroundWidthChanged(); - emit q->implicitBackgroundHeightChanged(); - } else if (item == flickable) { - detachFlickable(); - } -} - -QPalette QQuickTextAreaPrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::TextArea); -} - -QQuickTextArea::QQuickTextArea(QQuickItem *parent) - : QQuickTextEdit(*(new QQuickTextAreaPrivate), parent) -{ - Q_D(QQuickTextArea); - setActiveFocusOnTab(true); - setAcceptedMouseButtons(Qt::AllButtons); - d->setImplicitResizeEnabled(false); - d->pressHandler.control = this; -#if QT_CONFIG(cursor) - setCursor(Qt::IBeamCursor); -#endif - QObjectPrivate::connect(this, &QQuickTextEdit::readOnlyChanged, - d, &QQuickTextAreaPrivate::readOnlyChanged); -} - -QQuickTextArea::~QQuickTextArea() -{ - Q_D(QQuickTextArea); - if (d->flickable) - d->detachFlickable(); - QQuickControlPrivate::removeImplicitSizeListener(d->background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); -} - -QQuickTextAreaAttached *QQuickTextArea::qmlAttachedProperties(QObject *object) -{ - return new QQuickTextAreaAttached(object); -} - -QFont QQuickTextArea::font() const -{ - return QQuickTextEdit::font(); -} - -void QQuickTextArea::setFont(const QFont &font) -{ - Q_D(QQuickTextArea); - if (d->extra.value().requestedFont.resolveMask() == font.resolveMask() && d->extra.value().requestedFont == font) - return; - - d->extra.value().requestedFont = font; - d->resolveFont(); -} - -/*! - \qmlproperty Item QtQuick.Controls::TextArea::background - - This property holds the background item. - - \input qquickcontrol-background.qdocinc notes - - \sa {Customizing TextArea} -*/ -QQuickItem *QQuickTextArea::background() const -{ - QQuickTextAreaPrivate *d = const_cast<QQuickTextAreaPrivate *>(d_func()); - if (!d->background) - d->executeBackground(); - return d->background; -} - -void QQuickTextArea::setBackground(QQuickItem *background) -{ - Q_D(QQuickTextArea); - if (d->background == background) - return; - - if (!d->background.isExecuting()) - d->cancelBackground(); - - const qreal oldImplicitBackgroundWidth = implicitBackgroundWidth(); - const qreal oldImplicitBackgroundHeight = implicitBackgroundHeight(); - - if (d->extra.isAllocated()) { - d->extra.value().hasBackgroundWidth = false; - d->extra.value().hasBackgroundHeight = false; - } - - QQuickControlPrivate::removeImplicitSizeListener(d->background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); - QQuickControlPrivate::hideOldItem(d->background); - d->background = background; - - if (background) { - QQuickItemPrivate *p = QQuickItemPrivate::get(background); - if (p->widthValid() || p->heightValid()) { - d->extra.value().hasBackgroundWidth = p->widthValid(); - d->extra.value().hasBackgroundHeight = p->heightValid(); - } - if (d->flickable) - background->setParentItem(d->flickable); - else - background->setParentItem(this); - if (qFuzzyIsNull(background->z())) - background->setZ(-1); - if (isComponentComplete()) - d->resizeBackground(); - QQuickControlPrivate::addImplicitSizeListener(background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); - } - - if (!qFuzzyCompare(oldImplicitBackgroundWidth, implicitBackgroundWidth())) - emit implicitBackgroundWidthChanged(); - if (!qFuzzyCompare(oldImplicitBackgroundHeight, implicitBackgroundHeight())) - emit implicitBackgroundHeightChanged(); - if (!d->background.isExecuting()) - emit backgroundChanged(); -} - -/*! - \qmlproperty string QtQuick.Controls::TextArea::placeholderText - - This property holds the short hint that is displayed in the text area before - the user enters a value. -*/ -QString QQuickTextArea::placeholderText() const -{ - Q_D(const QQuickTextArea); - return d->placeholder; -} - -void QQuickTextArea::setPlaceholderText(const QString &text) -{ - Q_D(QQuickTextArea); - if (d->placeholder == text) - return; - - d->placeholder = text; -#if QT_CONFIG(accessibility) - if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this)) - accessibleAttached->setDescription(text); -#endif - emit placeholderTextChanged(); -} - -/*! - \qmlproperty color QtQuick.Controls::TextArea::placeholderTextColor - \since QtQuick.Controls 2.5 (Qt 5.12) - - This property holds the color of placeholderText. - - \sa placeholderText -*/ -QColor QQuickTextArea::placeholderTextColor() const -{ - Q_D(const QQuickTextArea); - return d->placeholderColor; -} - -void QQuickTextArea::setPlaceholderTextColor(const QColor &color) -{ - Q_D(QQuickTextArea); - if (d->placeholderColor == color) - return; - - d->placeholderColor = color; - emit placeholderTextColorChanged(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::TextArea::focusReason - - \include qquickcontrol-focusreason.qdocinc -*/ -Qt::FocusReason QQuickTextArea::focusReason() const -{ - Q_D(const QQuickTextArea); - return d->focusReason; -} - -void QQuickTextArea::setFocusReason(Qt::FocusReason reason) -{ - Q_D(QQuickTextArea); - if (d->focusReason == reason) - return; - - d->focusReason = reason; - emit focusReasonChanged(); -} - -bool QQuickTextArea::contains(const QPointF &point) const -{ - Q_D(const QQuickTextArea); - if (d->flickable && !d->flickable->contains(d->flickable->mapFromItem(this, point))) - return false; - return QQuickTextEdit::contains(point); -} - -/*! - \since QtQuick.Controls 2.1 (Qt 5.8) - \qmlproperty bool QtQuick.Controls::TextArea::hovered - \readonly - - This property holds whether the text area is hovered. - - \sa hoverEnabled -*/ -bool QQuickTextArea::isHovered() const -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(const QQuickTextArea); - return d->hovered; -#else - return false; -#endif -} - -void QQuickTextArea::setHovered(bool hovered) -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(QQuickTextArea); - if (hovered == d->hovered) - return; - - d->hovered = hovered; - emit hoveredChanged(); -#else - Q_UNUSED(hovered); -#endif -} - -/*! - \since QtQuick.Controls 2.1 (Qt 5.8) - \qmlproperty bool QtQuick.Controls::TextArea::hoverEnabled - - This property determines whether the text area accepts hover events. The default value is \c true. - - \sa hovered -*/ -bool QQuickTextArea::isHoverEnabled() const -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(const QQuickTextArea); - return d->hoverEnabled; -#else - return false; -#endif -} - -void QQuickTextArea::setHoverEnabled(bool enabled) -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(QQuickTextArea); - if (d->explicitHoverEnabled && enabled == d->hoverEnabled) - return; - - d->updateHoverEnabled(enabled, true); // explicit=true -#else - Q_UNUSED(enabled); -#endif -} - -void QQuickTextArea::resetHoverEnabled() -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(QQuickTextArea); - if (!d->explicitHoverEnabled) - return; - - d->explicitHoverEnabled = false; - d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem), false); // explicit=false -#endif -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::TextArea::implicitBackgroundWidth - \readonly - - This property holds the implicit background width. - - The value is equal to \c {background ? background.implicitWidth : 0}. - - \sa implicitBackgroundHeight -*/ -qreal QQuickTextArea::implicitBackgroundWidth() const -{ - Q_D(const QQuickTextArea); - if (!d->background) - return 0; - return d->background->implicitWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::TextArea::implicitBackgroundHeight - \readonly - - This property holds the implicit background height. - - The value is equal to \c {background ? background.implicitHeight : 0}. - - \sa implicitBackgroundWidth -*/ -qreal QQuickTextArea::implicitBackgroundHeight() const -{ - Q_D(const QQuickTextArea); - if (!d->background) - return 0; - return d->background->implicitHeight(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::TextArea::topInset - - This property holds the top inset for the background. - - \sa {Control Layout}, bottomInset -*/ -qreal QQuickTextArea::topInset() const -{ - Q_D(const QQuickTextArea); - return d->getTopInset(); -} - -void QQuickTextArea::setTopInset(qreal inset) -{ - Q_D(QQuickTextArea); - d->setTopInset(inset); -} - -void QQuickTextArea::resetTopInset() -{ - Q_D(QQuickTextArea); - d->setTopInset(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::TextArea::leftInset - - This property holds the left inset for the background. - - \sa {Control Layout}, rightInset -*/ -qreal QQuickTextArea::leftInset() const -{ - Q_D(const QQuickTextArea); - return d->getLeftInset(); -} - -void QQuickTextArea::setLeftInset(qreal inset) -{ - Q_D(QQuickTextArea); - d->setLeftInset(inset); -} - -void QQuickTextArea::resetLeftInset() -{ - Q_D(QQuickTextArea); - d->setLeftInset(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::TextArea::rightInset - - This property holds the right inset for the background. - - \sa {Control Layout}, leftInset -*/ -qreal QQuickTextArea::rightInset() const -{ - Q_D(const QQuickTextArea); - return d->getRightInset(); -} - -void QQuickTextArea::setRightInset(qreal inset) -{ - Q_D(QQuickTextArea); - d->setRightInset(inset); -} - -void QQuickTextArea::resetRightInset() -{ - Q_D(QQuickTextArea); - d->setRightInset(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::TextArea::bottomInset - - This property holds the bottom inset for the background. - - \sa {Control Layout}, topInset -*/ -qreal QQuickTextArea::bottomInset() const -{ - Q_D(const QQuickTextArea); - return d->getBottomInset(); -} - -void QQuickTextArea::setBottomInset(qreal inset) -{ - Q_D(QQuickTextArea); - d->setBottomInset(inset); -} - -void QQuickTextArea::resetBottomInset() -{ - Q_D(QQuickTextArea); - d->setBottomInset(0, true); -} - -void QQuickTextArea::classBegin() -{ - Q_D(QQuickTextArea); - QQuickTextEdit::classBegin(); - d->resolveFont(); -} - -void QQuickTextArea::componentComplete() -{ - Q_D(QQuickTextArea); - d->executeBackground(true); - QQuickTextEdit::componentComplete(); - d->resizeBackground(); -#if QT_CONFIG(quicktemplates2_hover) - if (!d->explicitHoverEnabled) - setAcceptHoverEvents(QQuickControlPrivate::calcHoverEnabled(d->parentItem)); -#endif -#if QT_CONFIG(accessibility) - if (QAccessible::isActive()) - d->accessibilityActiveChanged(true); -#endif -} - -void QQuickTextArea::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) -{ - Q_D(QQuickTextArea); - QQuickTextEdit::itemChange(change, value); - switch (change) { - case ItemEnabledHasChanged: - break; - case ItemSceneChange: - case ItemParentHasChanged: - if ((change == ItemParentHasChanged && value.item) || (change == ItemSceneChange && value.window)) { - d->resolveFont(); -#if QT_CONFIG(quicktemplates2_hover) - if (!d->explicitHoverEnabled) - d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem), false); // explicit=false -#endif - if (change == ItemParentHasChanged) { - QQuickFlickable *flickable = qobject_cast<QQuickFlickable *>(value.item->parentItem()); - if (flickable) { - QQuickScrollView *scrollView = qobject_cast<QQuickScrollView *>(flickable->parentItem()); - if (scrollView) - d->attachFlickable(flickable); - } - } - } - break; - default: - break; - } -} - -void QQuickTextArea::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickTextArea); - QQuickTextEdit::geometryChange(newGeometry, oldGeometry); - d->resizeBackground(); -} - -void QQuickTextArea::insetChange(const QMarginsF &newInset, const QMarginsF &oldInset) -{ - Q_D(QQuickTextArea); - Q_UNUSED(newInset); - Q_UNUSED(oldInset); - d->resizeBackground(); -} - -QSGNode *QQuickTextArea::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data) -{ - Q_D(QQuickTextArea); - QQuickDefaultClipNode *clipNode = static_cast<QQuickDefaultClipNode *>(oldNode); - if (!clipNode) - clipNode = new QQuickDefaultClipNode(QRectF()); - - QQuickItem *clipper = this; - if (d->flickable) - clipper = d->flickable; - - const QRectF cr = clipper->clipRect().adjusted(leftPadding(), topPadding(), -rightPadding(), -bottomPadding()); - clipNode->setRect(!d->flickable ? cr : cr.translated(d->flickable->contentX(), d->flickable->contentY())); - clipNode->update(); - - QSGNode *textNode = QQuickTextEdit::updatePaintNode(clipNode->firstChild(), data); - if (!textNode->parent()) - clipNode->appendChildNode(textNode); - - if (d->cursorItem) { - QQuickDefaultClipNode *cursorNode = QQuickItemPrivate::get(d->cursorItem)->clipNode(); - if (cursorNode) - cursorNode->setClipRect(d->cursorItem->mapRectFromItem(clipper, cr)); - } - - return clipNode; -} - -void QQuickTextArea::focusInEvent(QFocusEvent *event) -{ - QQuickTextEdit::focusInEvent(event); - setFocusReason(event->reason()); -} - -void QQuickTextArea::focusOutEvent(QFocusEvent *event) -{ - QQuickTextEdit::focusOutEvent(event); - setFocusReason(event->reason()); -} - -#if QT_CONFIG(quicktemplates2_hover) -void QQuickTextArea::hoverEnterEvent(QHoverEvent *event) -{ - Q_D(QQuickTextArea); - QQuickTextEdit::hoverEnterEvent(event); - setHovered(d->hoverEnabled); - event->setAccepted(d->hoverEnabled); -} - -void QQuickTextArea::hoverLeaveEvent(QHoverEvent *event) -{ - Q_D(QQuickTextArea); - QQuickTextEdit::hoverLeaveEvent(event); - setHovered(false); - event->setAccepted(d->hoverEnabled); -} -#endif - -void QQuickTextArea::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickTextArea); - d->pressHandler.mousePressEvent(event); - if (d->pressHandler.isActive()) { - if (d->pressHandler.delayedMousePressEvent) { - QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent); - d->pressHandler.clearDelayedMouseEvent(); - } - // Calling the base class implementation will result in QQuickTextControl's - // press handler being called, which ignores events that aren't Qt::LeftButton. - const bool wasAccepted = event->isAccepted(); - QQuickTextEdit::mousePressEvent(event); - if (wasAccepted) - event->accept(); - } -} - -void QQuickTextArea::mouseMoveEvent(QMouseEvent *event) -{ - Q_D(QQuickTextArea); - d->pressHandler.mouseMoveEvent(event); - if (d->pressHandler.isActive()) { - if (d->pressHandler.delayedMousePressEvent) { - QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent); - d->pressHandler.clearDelayedMouseEvent(); - } - QQuickTextEdit::mouseMoveEvent(event); - } -} - -void QQuickTextArea::mouseReleaseEvent(QMouseEvent *event) -{ - Q_D(QQuickTextArea); - d->pressHandler.mouseReleaseEvent(event); - if (d->pressHandler.isActive()) { - if (d->pressHandler.delayedMousePressEvent) { - QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent); - d->pressHandler.clearDelayedMouseEvent(); - } - QQuickTextEdit::mouseReleaseEvent(event); - } -} - -void QQuickTextArea::mouseDoubleClickEvent(QMouseEvent *event) -{ - Q_D(QQuickTextArea); - if (d->pressHandler.delayedMousePressEvent) { - QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent); - d->pressHandler.clearDelayedMouseEvent(); - } - QQuickTextEdit::mouseDoubleClickEvent(event); -} - -void QQuickTextArea::timerEvent(QTimerEvent *event) -{ - Q_D(QQuickTextArea); - if (event->timerId() == d->pressHandler.timer.timerId()) - d->pressHandler.timerEvent(event); - else - QQuickTextEdit::timerEvent(event); -} - -class QQuickTextAreaAttachedPrivate : public QObjectPrivate -{ -public: - QQuickTextArea *control = nullptr; -}; - -QQuickTextAreaAttached::QQuickTextAreaAttached(QObject *parent) - : QObject(*(new QQuickTextAreaAttachedPrivate), parent) -{ -} - -/*! - \qmlattachedproperty TextArea QtQuick.Controls::TextArea::flickable - - This property attaches a text area to a \l Flickable. - - \sa ScrollBar, ScrollIndicator, {Scrollable TextArea} -*/ -QQuickTextArea *QQuickTextAreaAttached::flickable() const -{ - Q_D(const QQuickTextAreaAttached); - return d->control; -} - -void QQuickTextAreaAttached::setFlickable(QQuickTextArea *control) -{ - Q_D(QQuickTextAreaAttached); - QQuickFlickable *flickable = qobject_cast<QQuickFlickable *>(parent()); - if (!flickable) { - qmlWarning(parent()) << "TextArea must be attached to a Flickable"; - return; - } - - if (d->control == control) - return; - - if (d->control) - QQuickTextAreaPrivate::get(d->control)->detachFlickable(); - - d->control = control; - - if (control) - QQuickTextAreaPrivate::get(control)->attachFlickable(flickable); - - emit flickableChanged(); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktextarea_p.h b/src/quicktemplates2/qquicktextarea_p.h deleted file mode 100644 index e9812f19..00000000 --- a/src/quicktemplates2/qquicktextarea_p.h +++ /dev/null @@ -1,222 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTEXTAREA_P_H -#define QQUICKTEXTAREA_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpalette.h> -#include <QtQuick/private/qquicktextedit_p.h> -#include <QtQuick/private/qquickevents_p_p.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickText; -class QQuickTextAreaPrivate; -class QQuickTextAreaAttached; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTextArea : public QQuickTextEdit -{ - Q_OBJECT - Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged) // override - Q_PROPERTY(qreal implicitWidth READ implicitWidth WRITE setImplicitWidth NOTIFY implicitWidthChanged3 FINAL) - Q_PROPERTY(qreal implicitHeight READ implicitHeight WRITE setImplicitHeight NOTIFY implicitHeightChanged3 FINAL) - Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL) - Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText NOTIFY placeholderTextChanged FINAL) - Q_PROPERTY(Qt::FocusReason focusReason READ focusReason WRITE setFocusReason NOTIFY focusReasonChanged FINAL) - // 2.1 (Qt 5.8) - Q_PROPERTY(bool hovered READ isHovered NOTIFY hoveredChanged FINAL REVISION(2, 1)) - Q_PROPERTY(bool hoverEnabled READ isHoverEnabled WRITE setHoverEnabled RESET resetHoverEnabled NOTIFY hoverEnabledChanged FINAL REVISION(2, 1)) - // 2.5 (Qt 5.12) - Q_PROPERTY(QColor placeholderTextColor READ placeholderTextColor WRITE setPlaceholderTextColor NOTIFY placeholderTextColorChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitBackgroundWidth READ implicitBackgroundWidth NOTIFY implicitBackgroundWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitBackgroundHeight READ implicitBackgroundHeight NOTIFY implicitBackgroundHeightChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal topInset READ topInset WRITE setTopInset RESET resetTopInset NOTIFY topInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal leftInset READ leftInset WRITE setLeftInset RESET resetLeftInset NOTIFY leftInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal rightInset READ rightInset WRITE setRightInset RESET resetRightInset NOTIFY rightInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal bottomInset READ bottomInset WRITE setBottomInset RESET resetBottomInset NOTIFY bottomInsetChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DeferredPropertyNames", "background") - QML_NAMED_ELEMENT(TextArea) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickTextArea(QQuickItem *parent = nullptr); - ~QQuickTextArea(); - - static QQuickTextAreaAttached *qmlAttachedProperties(QObject *object); - - QFont font() const; - void setFont(const QFont &font); - - QQuickItem *background() const; - void setBackground(QQuickItem *background); - - QString placeholderText() const; - void setPlaceholderText(const QString &text); - - Qt::FocusReason focusReason() const; - void setFocusReason(Qt::FocusReason reason); - - bool contains(const QPointF &point) const override; - - // 2.1 (Qt 5.8) - bool isHovered() const; - void setHovered(bool hovered); - - bool isHoverEnabled() const; - void setHoverEnabled(bool enabled); - void resetHoverEnabled(); - - // 2.5 (Qt 5.12) - QColor placeholderTextColor() const; - void setPlaceholderTextColor(const QColor &color); - - qreal implicitBackgroundWidth() const; - qreal implicitBackgroundHeight() const; - - qreal topInset() const; - void setTopInset(qreal inset); - void resetTopInset(); - - qreal leftInset() const; - void setLeftInset(qreal inset); - void resetLeftInset(); - - qreal rightInset() const; - void setRightInset(qreal inset); - void resetRightInset(); - - qreal bottomInset() const; - void setBottomInset(qreal inset); - void resetBottomInset(); - -Q_SIGNALS: - void fontChanged(); - void implicitWidthChanged3(); - void implicitHeightChanged3(); - void backgroundChanged(); - void placeholderTextChanged(); - void focusReasonChanged(); - void pressAndHold(QQuickMouseEvent *event); - // 2.1 (Qt 5.8) - Q_REVISION(2, 1) void pressed(QQuickMouseEvent *event); - Q_REVISION(2, 1) void released(QQuickMouseEvent *event); - Q_REVISION(2, 1) void hoveredChanged(); - Q_REVISION(2, 1) void hoverEnabledChanged(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void placeholderTextColorChanged(); - Q_REVISION(2, 5) void implicitBackgroundWidthChanged(); - Q_REVISION(2, 5) void implicitBackgroundHeightChanged(); - Q_REVISION(2, 5) void topInsetChanged(); - Q_REVISION(2, 5) void leftInsetChanged(); - Q_REVISION(2, 5) void rightInsetChanged(); - Q_REVISION(2, 5) void bottomInsetChanged(); - -protected: - friend struct QQuickPressHandler; - - void classBegin() override; - void componentComplete() override; - - void itemChange(ItemChange change, const ItemChangeData &value) override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - virtual void insetChange(const QMarginsF &newInset, const QMarginsF &oldInset); - - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data) override; - - void focusInEvent(QFocusEvent *event) override; - void focusOutEvent(QFocusEvent *event) override; -#if QT_CONFIG(quicktemplates2_hover) - void hoverEnterEvent(QHoverEvent *event) override; - void hoverLeaveEvent(QHoverEvent *event) override; -#endif - void mousePressEvent(QMouseEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override; - void mouseDoubleClickEvent(QMouseEvent *event) override; - void timerEvent(QTimerEvent *event) override; - -private: - Q_DISABLE_COPY(QQuickTextArea) - Q_DECLARE_PRIVATE(QQuickTextArea) -}; - -class QQuickTextAreaAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTextAreaAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickTextArea *flickable READ flickable WRITE setFlickable NOTIFY flickableChanged FINAL) - -public: - explicit QQuickTextAreaAttached(QObject *parent); - - QQuickTextArea *flickable() const; - void setFlickable(QQuickTextArea *control); - -Q_SIGNALS: - void flickableChanged(); - -private: - Q_DISABLE_COPY(QQuickTextAreaAttached) - Q_DECLARE_PRIVATE(QQuickTextAreaAttached) -}; - -struct QQuickTextEditForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickTextEdit) - QML_ADDED_IN_VERSION(2, 3) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickTextArea) -QML_DECLARE_TYPEINFO(QQuickTextArea, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKTEXTAREA_P_H diff --git a/src/quicktemplates2/qquicktextarea_p_p.h b/src/quicktemplates2/qquicktextarea_p_p.h deleted file mode 100644 index 2ed2b44f..00000000 --- a/src/quicktemplates2/qquicktextarea_p_p.h +++ /dev/null @@ -1,173 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTEXTAREA_P_P_H -#define QQUICKTEXTAREA_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQml/private/qlazilyallocated_p.h> -#include <QtQuick/private/qquicktextedit_p_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> -#include <QtQuickTemplates2/private/qquickpresshandler_p_p.h> -#include <QtQuickTemplates2/private/qquickdeferredpointer_p_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -#include <QtQuickTemplates2/private/qquicktextarea_p.h> - -#if QT_CONFIG(accessibility) -#include <QtGui/qaccessible.h> -#endif - -QT_BEGIN_NAMESPACE - -class QQuickFlickable; - -class QQuickTextAreaPrivate : public QQuickTextEditPrivate, public QQuickItemChangeListener -#if QT_CONFIG(accessibility) - , public QAccessible::ActivationObserver -#endif -{ - Q_DECLARE_PUBLIC(QQuickTextArea) - -public: - QQuickTextAreaPrivate(); - ~QQuickTextAreaPrivate(); - - static QQuickTextAreaPrivate *get(QQuickTextArea *item) - { - return static_cast<QQuickTextAreaPrivate *>(QObjectPrivate::get(item)); - } - - inline QMarginsF getInset() const { return QMarginsF(getLeftInset(), getTopInset(), getRightInset(), getBottomInset()); } - inline qreal getTopInset() const { return extra.isAllocated() ? extra->topInset : 0; } - inline qreal getLeftInset() const { return extra.isAllocated() ? extra->leftInset : 0; } - inline qreal getRightInset() const { return extra.isAllocated() ? extra->rightInset : 0; } - inline qreal getBottomInset() const { return extra.isAllocated() ? extra->bottomInset : 0; } - - void setTopInset(qreal value, bool reset = false); - void setLeftInset(qreal value, bool reset = false); - void setRightInset(qreal value, bool reset = false); - void setBottomInset(qreal value, bool reset = false); - - void resizeBackground(); - - void resolveFont(); - void inheritFont(const QFont &font); - void updateFont(const QFont &font); - inline void setFont_helper(const QFont &font) { - if (sourceFont.resolveMask() == font.resolveMask() && sourceFont == font) - return; - updateFont(font); - } - -#if QT_CONFIG(quicktemplates2_hover) - void updateHoverEnabled(bool h, bool e); -#endif - - void attachFlickable(QQuickFlickable *flickable); - void detachFlickable(); - void ensureCursorVisible(); - void resizeFlickableControl(); - void resizeFlickableContent(); - - void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override; - - qreal getImplicitWidth() const override; - qreal getImplicitHeight() const override; - - void implicitWidthChanged() override; - void implicitHeightChanged() override; - - void readOnlyChanged(bool isReadOnly); - -#if QT_CONFIG(accessibility) - void accessibilityActiveChanged(bool active) override; - QAccessible::Role accessibleRole() const override; -#endif - - void cancelBackground(); - void executeBackground(bool complete = false); - - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - void itemDestroyed(QQuickItem *item) override; - - QPalette defaultPalette() const override; - -#if QT_CONFIG(quicktemplates2_hover) - bool hovered = false; - bool explicitHoverEnabled = false; -#endif - - struct ExtraData { - bool hasTopInset = false; - bool hasLeftInset = false; - bool hasRightInset = false; - bool hasBottomInset = false; - bool hasBackgroundWidth = false; - bool hasBackgroundHeight = false; - qreal topInset = 0; - qreal leftInset = 0; - qreal rightInset = 0; - qreal bottomInset = 0; - QFont requestedFont; - QPalette requestedPalette; - }; - QLazilyAllocated<ExtraData> extra; - - bool resizingBackground = false; - QPalette resolvedPalette; - QQuickDeferredPointer<QQuickItem> background; - QString placeholder; - QColor placeholderColor; - Qt::FocusReason focusReason = Qt::OtherFocusReason; - QQuickPressHandler pressHandler; - QQuickFlickable *flickable = nullptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKTEXTAREA_P_P_H diff --git a/src/quicktemplates2/qquicktextfield.cpp b/src/quicktemplates2/qquicktextfield.cpp deleted file mode 100644 index 32e447d7..00000000 --- a/src/quicktemplates2/qquicktextfield.cpp +++ /dev/null @@ -1,952 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktextfield_p.h" -#include "qquicktextfield_p_p.h" -#include "qquickcontrol_p.h" -#include "qquickcontrol_p_p.h" -#include "qquickdeferredexecute_p_p.h" - -#include <QtQuick/private/qquickitem_p.h> -#include <QtQuick/private/qquicktextinput_p.h> -#include <QtQuick/private/qquickclipnode_p.h> - -#if QT_CONFIG(accessibility) -#include <QtQuick/private/qquickaccessibleattached_p.h> -#endif - -QT_BEGIN_NAMESPACE - -/*! - \qmltype TextField - \inherits TextInput -//! \instantiates QQuickTextField - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-input - \brief Single-line text input field. - - TextField is a single line text editor. TextField extends TextInput with - a \l {placeholderText}{placeholder text} functionality, and adds decoration. - - \table - \row \li \image qtquickcontrols2-textfield-normal.png - \li A text field in its normal state. - \row \li \image qtquickcontrols2-textfield-focused.png - \li A text field that has active focus. - \row \li \image qtquickcontrols2-textfield-disabled.png - \li A text field that is disabled. - \endtable - - \code - TextField { - placeholderText: qsTr("Enter name") - } - \endcode - - \sa TextArea, {Customizing TextField}, {Input Controls} -*/ - -/*! - \qmlsignal QtQuick.Controls::TextField::pressAndHold(MouseEvent event) - - This signal is emitted when there is a long press (the delay depends on the platform plugin). - The \a event parameter provides information about the press, including the x and y - coordinates of the press, and which button is pressed. - - \sa pressed, released -*/ - -/*! - \qmlsignal QtQuick.Controls::TextField::pressed(MouseEvent event) - \since QtQuick.Controls 2.1 (Qt 5.8) - - This signal is emitted when the text field is pressed by the user. - The \a event parameter provides information about the press, - including the x and y coordinates of the press, and which button - is pressed. - - \sa released, pressAndHold -*/ - -/*! - \qmlsignal QtQuick.Controls::TextField::released(MouseEvent event) - \since QtQuick.Controls 2.1 (Qt 5.8) - - This signal is emitted when the text field is released by the user. - The \a event parameter provides information about the release, - including the x and y coordinates of the press, and which button - is pressed. - - \sa pressed, pressAndHold -*/ - -QQuickTextFieldPrivate::QQuickTextFieldPrivate() -{ -#if QT_CONFIG(accessibility) - QAccessible::installActivationObserver(this); -#endif -} - -QQuickTextFieldPrivate::~QQuickTextFieldPrivate() -{ -#if QT_CONFIG(accessibility) - QAccessible::removeActivationObserver(this); -#endif -} - -void QQuickTextFieldPrivate::setTopInset(qreal value, bool reset) -{ - Q_Q(QQuickTextField); - const QMarginsF oldInset = getInset(); - extra.value().topInset = value; - extra.value().hasTopInset = !reset; - if (!qFuzzyCompare(oldInset.top(), value)) { - emit q->topInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickTextFieldPrivate::setLeftInset(qreal value, bool reset) -{ - Q_Q(QQuickTextField); - const QMarginsF oldInset = getInset(); - extra.value().leftInset = value; - extra.value().hasLeftInset = !reset; - if (!qFuzzyCompare(oldInset.left(), value)) { - emit q->leftInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickTextFieldPrivate::setRightInset(qreal value, bool reset) -{ - Q_Q(QQuickTextField); - const QMarginsF oldInset = getInset(); - extra.value().rightInset = value; - extra.value().hasRightInset = !reset; - if (!qFuzzyCompare(oldInset.right(), value)) { - emit q->rightInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickTextFieldPrivate::setBottomInset(qreal value, bool reset) -{ - Q_Q(QQuickTextField); - const QMarginsF oldInset = getInset(); - extra.value().bottomInset = value; - extra.value().hasBottomInset = !reset; - if (!qFuzzyCompare(oldInset.bottom(), value)) { - emit q->bottomInsetChanged(); - q->insetChange(getInset(), oldInset); - } -} - -void QQuickTextFieldPrivate::resizeBackground() -{ - if (!background) - return; - - resizingBackground = true; - - QQuickItemPrivate *p = QQuickItemPrivate::get(background); - if (((!p->widthValid() || !extra.isAllocated() || !extra->hasBackgroundWidth) && qFuzzyIsNull(background->x())) - || (extra.isAllocated() && (extra->hasLeftInset || extra->hasRightInset))) { - const bool wasWidthValid = p->widthValid(); - background->setX(getLeftInset()); - background->setWidth(width - getLeftInset() - getRightInset()); - // If the user hadn't previously set the width, that shouldn't change when we set it for them. - if (!wasWidthValid) - p->widthValidFlag = false; - } - if (((!p->heightValid() || !extra.isAllocated() || !extra->hasBackgroundHeight) && qFuzzyIsNull(background->y())) - || (extra.isAllocated() && (extra->hasTopInset || extra->hasBottomInset))) { - const bool wasHeightValid = p->heightValid(); - background->setY(getTopInset()); - background->setHeight(height - getTopInset() - getBottomInset()); - if (!wasHeightValid) - p->heightValidFlag = false; - } - - resizingBackground = false; -} - -/*! - \internal - - Determine which font is implicitly imposed on this control by its ancestors - and QGuiApplication::font, resolve this against its own font (attributes from - the implicit font are copied over). Then propagate this font to this - control's children. -*/ -void QQuickTextFieldPrivate::resolveFont() -{ - Q_Q(QQuickTextField); - inheritFont(QQuickControlPrivate::parentFont(q)); -} - -void QQuickTextFieldPrivate::inheritFont(const QFont &font) -{ - QFont parentFont = extra.isAllocated() ? extra->requestedFont.resolve(font) : font; - parentFont.setResolveMask(extra.isAllocated() ? extra->requestedFont.resolveMask() | font.resolveMask() : font.resolveMask()); - - const QFont defaultFont = QQuickTheme::font(QQuickTheme::TextField); - QFont resolvedFont = parentFont.resolve(defaultFont); - - setFont_helper(resolvedFont); -} - -/*! - \internal - - Assign \a font to this control, and propagate it to all children. -*/ -void QQuickTextFieldPrivate::updateFont(const QFont &font) -{ - Q_Q(QQuickTextField); - QFont oldFont = sourceFont; - q->QQuickTextInput::setFont(font); - - QQuickControlPrivate::updateFontRecur(q, font); - - if (oldFont != font) - emit q->fontChanged(); -} - -#if QT_CONFIG(quicktemplates2_hover) -void QQuickTextFieldPrivate::updateHoverEnabled(bool enabled, bool xplicit) -{ - Q_Q(QQuickTextField); - if (!xplicit && explicitHoverEnabled) - return; - - bool wasEnabled = q->isHoverEnabled(); - explicitHoverEnabled = xplicit; - if (wasEnabled != enabled) { - q->setAcceptHoverEvents(enabled); - QQuickControlPrivate::updateHoverEnabledRecur(q, enabled); - emit q->hoverEnabledChanged(); - } -} -#endif - -qreal QQuickTextFieldPrivate::getImplicitWidth() const -{ - return QQuickItemPrivate::getImplicitWidth(); -} - -qreal QQuickTextFieldPrivate::getImplicitHeight() const -{ - return QQuickItemPrivate::getImplicitHeight(); -} - -void QQuickTextFieldPrivate::implicitWidthChanged() -{ - Q_Q(QQuickTextField); - QQuickItemPrivate::implicitWidthChanged(); - emit q->implicitWidthChanged3(); -} - -void QQuickTextFieldPrivate::implicitHeightChanged() -{ - Q_Q(QQuickTextField); - QQuickItemPrivate::implicitHeightChanged(); - emit q->implicitHeightChanged3(); -} - -void QQuickTextFieldPrivate::readOnlyChanged(bool isReadOnly) -{ - Q_UNUSED(isReadOnly); -#if QT_CONFIG(accessibility) - if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(q_func())) - accessibleAttached->set_readOnly(isReadOnly); -#endif -#if QT_CONFIG(cursor) - q_func()->setCursor(isReadOnly ? Qt::ArrowCursor : Qt::IBeamCursor); -#endif -} - -void QQuickTextFieldPrivate::echoModeChanged(QQuickTextField::EchoMode echoMode) -{ -#if QT_CONFIG(accessibility) - if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(q_func())) - accessibleAttached->set_passwordEdit((echoMode == QQuickTextField::Password || echoMode == QQuickTextField::PasswordEchoOnEdit) ? true : false); -#else - Q_UNUSED(echoMode); -#endif -} - -#if QT_CONFIG(accessibility) -void QQuickTextFieldPrivate::accessibilityActiveChanged(bool active) -{ - if (!active) - return; - - Q_Q(QQuickTextField); - QQuickAccessibleAttached *accessibleAttached = qobject_cast<QQuickAccessibleAttached *>(qmlAttachedPropertiesObject<QQuickAccessibleAttached>(q, true)); - Q_ASSERT(accessibleAttached); - accessibleAttached->setRole(accessibleRole()); - accessibleAttached->set_readOnly(m_readOnly); - accessibleAttached->set_passwordEdit((m_echoMode == QQuickTextField::Password || m_echoMode == QQuickTextField::PasswordEchoOnEdit) ? true : false); - accessibleAttached->setDescription(placeholder); -} - -QAccessible::Role QQuickTextFieldPrivate::accessibleRole() const -{ - return QAccessible::EditableText; -} -#endif - -static inline QString backgroundName() { return QStringLiteral("background"); } - -void QQuickTextFieldPrivate::cancelBackground() -{ - Q_Q(QQuickTextField); - quickCancelDeferred(q, backgroundName()); -} - -void QQuickTextFieldPrivate::executeBackground(bool complete) -{ - Q_Q(QQuickTextField); - if (background.wasExecuted()) - return; - - if (!background || complete) - quickBeginDeferred(q, backgroundName(), background); - if (complete) - quickCompleteDeferred(q, backgroundName(), background); -} - -void QQuickTextFieldPrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) -{ - Q_UNUSED(diff); - if (resizingBackground || item != background || !change.sizeChange()) - return; - - QQuickItemPrivate *p = QQuickItemPrivate::get(item); - // QTBUG-71875: only allocate the extra data if we have to. - // resizeBackground() relies on the value of extra.isAllocated() - // as part of its checks to see whether it should resize the background or not. - if (p->widthValid() || extra.isAllocated()) - extra.value().hasBackgroundWidth = p->widthValid(); - if (p->heightValid() || extra.isAllocated()) - extra.value().hasBackgroundHeight = p->heightValid(); - resizeBackground(); -} - -void QQuickTextFieldPrivate::itemImplicitWidthChanged(QQuickItem *item) -{ - Q_Q(QQuickTextField); - if (item == background) - emit q->implicitBackgroundWidthChanged(); -} - -void QQuickTextFieldPrivate::itemImplicitHeightChanged(QQuickItem *item) -{ - Q_Q(QQuickTextField); - if (item == background) - emit q->implicitBackgroundHeightChanged(); -} - -void QQuickTextFieldPrivate::itemDestroyed(QQuickItem *item) -{ - Q_Q(QQuickTextField); - if (item == background) { - background = nullptr; - emit q->implicitBackgroundWidthChanged(); - emit q->implicitBackgroundHeightChanged(); - } -} - -QPalette QQuickTextFieldPrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::TextField); -} - -QQuickTextField::QQuickTextField(QQuickItem *parent) - : QQuickTextInput(*(new QQuickTextFieldPrivate), parent) -{ - Q_D(QQuickTextField); - d->pressHandler.control = this; - d->setImplicitResizeEnabled(false); - setAcceptedMouseButtons(Qt::AllButtons); - setActiveFocusOnTab(true); -#if QT_CONFIG(cursor) - setCursor(Qt::IBeamCursor); -#endif - QObjectPrivate::connect(this, &QQuickTextInput::readOnlyChanged, d, &QQuickTextFieldPrivate::readOnlyChanged); - QObjectPrivate::connect(this, &QQuickTextInput::echoModeChanged, d, &QQuickTextFieldPrivate::echoModeChanged); -} - -QQuickTextField::~QQuickTextField() -{ - Q_D(QQuickTextField); - QQuickControlPrivate::removeImplicitSizeListener(d->background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); -} - -QFont QQuickTextField::font() const -{ - return QQuickTextInput::font(); -} - -void QQuickTextField::setFont(const QFont &font) -{ - Q_D(QQuickTextField); - if (d->extra.value().requestedFont.resolveMask() == font.resolveMask() && d->extra.value().requestedFont == font) - return; - - d->extra.value().requestedFont = font; - d->resolveFont(); -} - -/*! - \qmlproperty Item QtQuick.Controls::TextField::background - - This property holds the background item. - - \input qquickcontrol-background.qdocinc notes - - \sa {Customizing TextField} -*/ -QQuickItem *QQuickTextField::background() const -{ - QQuickTextFieldPrivate *d = const_cast<QQuickTextFieldPrivate *>(d_func()); - if (!d->background) - d->executeBackground(); - return d->background; -} - -void QQuickTextField::setBackground(QQuickItem *background) -{ - Q_D(QQuickTextField); - if (d->background == background) - return; - - if (!d->background.isExecuting()) - d->cancelBackground(); - - const qreal oldImplicitBackgroundWidth = implicitBackgroundWidth(); - const qreal oldImplicitBackgroundHeight = implicitBackgroundHeight(); - - if (d->extra.isAllocated()) { - d->extra.value().hasBackgroundWidth = false; - d->extra.value().hasBackgroundHeight = false; - } - - QQuickControlPrivate::removeImplicitSizeListener(d->background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); - QQuickControlPrivate::hideOldItem(d->background); - d->background = background; - - if (background) { - background->setParentItem(this); - if (qFuzzyIsNull(background->z())) - background->setZ(-1); - QQuickItemPrivate *p = QQuickItemPrivate::get(background); - if (p->widthValid() || p->heightValid()) { - d->extra.value().hasBackgroundWidth = p->widthValid(); - d->extra.value().hasBackgroundHeight = p->heightValid(); - } - if (isComponentComplete()) - d->resizeBackground(); - QQuickControlPrivate::addImplicitSizeListener(background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry); - } - - if (!qFuzzyCompare(oldImplicitBackgroundWidth, implicitBackgroundWidth())) - emit implicitBackgroundWidthChanged(); - if (!qFuzzyCompare(oldImplicitBackgroundHeight, implicitBackgroundHeight())) - emit implicitBackgroundHeightChanged(); - if (!d->background.isExecuting()) - emit backgroundChanged(); -} - -/*! - \qmlproperty string QtQuick.Controls::TextField::placeholderText - - This property holds the hint that is displayed in the TextField before the user - enters text. -*/ -QString QQuickTextField::placeholderText() const -{ - Q_D(const QQuickTextField); - return d->placeholder; -} - -void QQuickTextField::setPlaceholderText(const QString &text) -{ - Q_D(QQuickTextField); - if (d->placeholder == text) - return; - - d->placeholder = text; -#if QT_CONFIG(accessibility) - if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(this)) - accessibleAttached->setDescription(text); -#endif - emit placeholderTextChanged(); -} - -/*! - \qmlproperty color QtQuick.Controls::TextField::placeholderTextColor - \since QtQuick.Controls 2.5 (Qt 5.12) - - This property holds the color of placeholderText. - - \sa placeholderText -*/ -QColor QQuickTextField::placeholderTextColor() const -{ - Q_D(const QQuickTextField); - return d->placeholderColor; -} - -void QQuickTextField::setPlaceholderTextColor(const QColor &color) -{ - Q_D(QQuickTextField); - if (d->placeholderColor == color) - return; - - d->placeholderColor = color; - emit placeholderTextColorChanged(); -} - -/*! - \qmlproperty enumeration QtQuick.Controls::TextField::focusReason - - \include qquickcontrol-focusreason.qdocinc -*/ -Qt::FocusReason QQuickTextField::focusReason() const -{ - Q_D(const QQuickTextField); - return d->focusReason; -} - -void QQuickTextField::setFocusReason(Qt::FocusReason reason) -{ - Q_D(QQuickTextField); - if (d->focusReason == reason) - return; - - d->focusReason = reason; - emit focusReasonChanged(); -} - -/*! - \since QtQuick.Controls 2.1 (Qt 5.8) - \qmlproperty bool QtQuick.Controls::TextField::hovered - \readonly - - This property holds whether the text field is hovered. - - \sa hoverEnabled -*/ -bool QQuickTextField::isHovered() const -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(const QQuickTextField); - return d->hovered; -#else - return false; -#endif -} - -void QQuickTextField::setHovered(bool hovered) -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(QQuickTextField); - if (hovered == d->hovered) - return; - - d->hovered = hovered; - emit hoveredChanged(); -#else - Q_UNUSED(hovered); -#endif -} - -/*! - \since QtQuick.Controls 2.1 (Qt 5.8) - \qmlproperty bool QtQuick.Controls::TextField::hoverEnabled - - This property determines whether the text field accepts hover events. The default value is \c false. - - \sa hovered -*/ -bool QQuickTextField::isHoverEnabled() const -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(const QQuickTextField); - return d->hoverEnabled; -#else - return false; -#endif -} - -void QQuickTextField::setHoverEnabled(bool enabled) -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(QQuickTextField); - if (d->explicitHoverEnabled && enabled == d->hoverEnabled) - return; - - d->updateHoverEnabled(enabled, true); // explicit=true -#else - Q_UNUSED(enabled); -#endif -} - -void QQuickTextField::resetHoverEnabled() -{ -#if QT_CONFIG(quicktemplates2_hover) - Q_D(QQuickTextField); - if (!d->explicitHoverEnabled) - return; - - d->explicitHoverEnabled = false; - d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem), false); // explicit=false -#endif -} - -void QQuickTextField::classBegin() -{ - Q_D(QQuickTextField); - QQuickTextInput::classBegin(); - d->resolveFont(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::TextField::implicitBackgroundWidth - \readonly - - This property holds the implicit background width. - - The value is equal to \c {background ? background.implicitWidth : 0}. - - \sa implicitBackgroundHeight -*/ -qreal QQuickTextField::implicitBackgroundWidth() const -{ - Q_D(const QQuickTextField); - if (!d->background) - return 0; - return d->background->implicitWidth(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::TextField::implicitBackgroundHeight - \readonly - - This property holds the implicit background height. - - The value is equal to \c {background ? background.implicitHeight : 0}. - - \sa implicitBackgroundWidth -*/ -qreal QQuickTextField::implicitBackgroundHeight() const -{ - Q_D(const QQuickTextField); - if (!d->background) - return 0; - return d->background->implicitHeight(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::TextField::topInset - - This property holds the top inset for the background. - - \sa {Control Layout}, bottomInset -*/ -qreal QQuickTextField::topInset() const -{ - Q_D(const QQuickTextField); - return d->getTopInset(); -} - -void QQuickTextField::setTopInset(qreal inset) -{ - Q_D(QQuickTextField); - d->setTopInset(inset); -} - -void QQuickTextField::resetTopInset() -{ - Q_D(QQuickTextField); - d->setTopInset(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::TextField::leftInset - - This property holds the left inset for the background. - - \sa {Control Layout}, rightInset -*/ -qreal QQuickTextField::leftInset() const -{ - Q_D(const QQuickTextField); - return d->getLeftInset(); -} - -void QQuickTextField::setLeftInset(qreal inset) -{ - Q_D(QQuickTextField); - d->setLeftInset(inset); -} - -void QQuickTextField::resetLeftInset() -{ - Q_D(QQuickTextField); - d->setLeftInset(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::TextField::rightInset - - This property holds the right inset for the background. - - \sa {Control Layout}, leftInset -*/ -qreal QQuickTextField::rightInset() const -{ - Q_D(const QQuickTextField); - return d->getRightInset(); -} - -void QQuickTextField::setRightInset(qreal inset) -{ - Q_D(QQuickTextField); - d->setRightInset(inset); -} - -void QQuickTextField::resetRightInset() -{ - Q_D(QQuickTextField); - d->setRightInset(0, true); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlproperty real QtQuick.Controls::TextField::bottomInset - - This property holds the bottom inset for the background. - - \sa {Control Layout}, topInset -*/ -qreal QQuickTextField::bottomInset() const -{ - Q_D(const QQuickTextField); - return d->getBottomInset(); -} - -void QQuickTextField::setBottomInset(qreal inset) -{ - Q_D(QQuickTextField); - d->setBottomInset(inset); -} - -void QQuickTextField::resetBottomInset() -{ - Q_D(QQuickTextField); - d->setBottomInset(0, true); -} - -void QQuickTextField::componentComplete() -{ - Q_D(QQuickTextField); - d->executeBackground(true); - QQuickTextInput::componentComplete(); - d->resizeBackground(); -#if QT_CONFIG(quicktemplates2_hover) - if (!d->explicitHoverEnabled) - setAcceptHoverEvents(QQuickControlPrivate::calcHoverEnabled(d->parentItem)); -#endif -#if QT_CONFIG(accessibility) - if (QAccessible::isActive()) - d->accessibilityActiveChanged(true); -#endif -} - -void QQuickTextField::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) -{ - Q_D(QQuickTextField); - QQuickTextInput::itemChange(change, value); - switch (change) { - case ItemEnabledHasChanged: - break; - case ItemSceneChange: - case ItemParentHasChanged: - if ((change == ItemParentHasChanged && value.item) || (change == ItemSceneChange && value.window)) { - d->resolveFont(); -#if QT_CONFIG(quicktemplates2_hover) - if (!d->explicitHoverEnabled) - d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem), false); // explicit=false -#endif - } - break; - default: - break; - } -} - -void QQuickTextField::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickTextField); - QQuickTextInput::geometryChange(newGeometry, oldGeometry); - d->resizeBackground(); -} - -void QQuickTextField::insetChange(const QMarginsF &newInset, const QMarginsF &oldInset) -{ - Q_D(QQuickTextField); - Q_UNUSED(newInset); - Q_UNUSED(oldInset); - d->resizeBackground(); -} -QSGNode *QQuickTextField::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data) -{ - QQuickDefaultClipNode *clipNode = static_cast<QQuickDefaultClipNode *>(oldNode); - if (!clipNode) - clipNode = new QQuickDefaultClipNode(QRectF()); - - clipNode->setRect(clipRect().adjusted(leftPadding(), topPadding(), -rightPadding(), -bottomPadding())); - clipNode->update(); - - QSGNode *textNode = QQuickTextInput::updatePaintNode(clipNode->firstChild(), data); - if (!textNode->parent()) - clipNode->appendChildNode(textNode); - - return clipNode; -} - -void QQuickTextField::focusInEvent(QFocusEvent *event) -{ - QQuickTextInput::focusInEvent(event); - setFocusReason(event->reason()); -} - -void QQuickTextField::focusOutEvent(QFocusEvent *event) -{ - QQuickTextInput::focusOutEvent(event); - setFocusReason(event->reason()); -} - -#if QT_CONFIG(quicktemplates2_hover) -void QQuickTextField::hoverEnterEvent(QHoverEvent *event) -{ - Q_D(QQuickTextField); - QQuickTextInput::hoverEnterEvent(event); - setHovered(d->hoverEnabled); - event->setAccepted(d->hoverEnabled); -} - -void QQuickTextField::hoverLeaveEvent(QHoverEvent *event) -{ - Q_D(QQuickTextField); - QQuickTextInput::hoverLeaveEvent(event); - setHovered(false); - event->setAccepted(d->hoverEnabled); -} -#endif - -void QQuickTextField::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickTextField); - d->pressHandler.mousePressEvent(event); - if (d->pressHandler.isActive()) { - if (d->pressHandler.delayedMousePressEvent) { - QQuickTextInput::mousePressEvent(d->pressHandler.delayedMousePressEvent); - d->pressHandler.clearDelayedMouseEvent(); - } - if (event->buttons() != Qt::RightButton) - QQuickTextInput::mousePressEvent(event); - } -} - -void QQuickTextField::mouseMoveEvent(QMouseEvent *event) -{ - Q_D(QQuickTextField); - d->pressHandler.mouseMoveEvent(event); - if (d->pressHandler.isActive()) { - if (d->pressHandler.delayedMousePressEvent) { - QQuickTextInput::mousePressEvent(d->pressHandler.delayedMousePressEvent); - d->pressHandler.clearDelayedMouseEvent(); - } - if (event->buttons() != Qt::RightButton) - QQuickTextInput::mouseMoveEvent(event); - } -} - -void QQuickTextField::mouseReleaseEvent(QMouseEvent *event) -{ - Q_D(QQuickTextField); - d->pressHandler.mouseReleaseEvent(event); - if (d->pressHandler.isActive()) { - if (d->pressHandler.delayedMousePressEvent) { - QQuickTextInput::mousePressEvent(d->pressHandler.delayedMousePressEvent); - d->pressHandler.clearDelayedMouseEvent(); - } - if (event->buttons() != Qt::RightButton) - QQuickTextInput::mouseReleaseEvent(event); - } -} - -void QQuickTextField::mouseDoubleClickEvent(QMouseEvent *event) -{ - Q_D(QQuickTextField); - if (d->pressHandler.delayedMousePressEvent) { - QQuickTextInput::mousePressEvent(d->pressHandler.delayedMousePressEvent); - d->pressHandler.clearDelayedMouseEvent(); - } - if (event->buttons() != Qt::RightButton) - QQuickTextInput::mouseDoubleClickEvent(event); -} - -void QQuickTextField::timerEvent(QTimerEvent *event) -{ - Q_D(QQuickTextField); - if (event->timerId() == d->pressHandler.timer.timerId()) - d->pressHandler.timerEvent(event); - else - QQuickTextInput::timerEvent(event); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktextfield_p.h b/src/quicktemplates2/qquicktextfield_p.h deleted file mode 100644 index a1d433c0..00000000 --- a/src/quicktemplates2/qquicktextfield_p.h +++ /dev/null @@ -1,194 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTEXTFIELD_P_H -#define QQUICKTEXTFIELD_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qpalette.h> -#include <QtQuick/private/qquicktextinput_p.h> -#include <QtQuick/private/qquickevents_p_p.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickTextFieldPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTextField : public QQuickTextInput -{ - Q_OBJECT - Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged) // override - Q_PROPERTY(qreal implicitWidth READ implicitWidth WRITE setImplicitWidth NOTIFY implicitWidthChanged3 FINAL) - Q_PROPERTY(qreal implicitHeight READ implicitHeight WRITE setImplicitHeight NOTIFY implicitHeightChanged3 FINAL) - Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL) - Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText NOTIFY placeholderTextChanged FINAL) - Q_PROPERTY(Qt::FocusReason focusReason READ focusReason WRITE setFocusReason NOTIFY focusReasonChanged FINAL) - // 2.1 (Qt 5.8) - Q_PROPERTY(bool hovered READ isHovered NOTIFY hoveredChanged FINAL REVISION(2, 1)) - Q_PROPERTY(bool hoverEnabled READ isHoverEnabled WRITE setHoverEnabled RESET resetHoverEnabled NOTIFY hoverEnabledChanged FINAL REVISION(2, 1)) - // 2.5 (Qt 5.12) - Q_PROPERTY(QColor placeholderTextColor READ placeholderTextColor WRITE setPlaceholderTextColor NOTIFY placeholderTextColorChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitBackgroundWidth READ implicitBackgroundWidth NOTIFY implicitBackgroundWidthChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal implicitBackgroundHeight READ implicitBackgroundHeight NOTIFY implicitBackgroundHeightChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal topInset READ topInset WRITE setTopInset RESET resetTopInset NOTIFY topInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal leftInset READ leftInset WRITE setLeftInset RESET resetLeftInset NOTIFY leftInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal rightInset READ rightInset WRITE setRightInset RESET resetRightInset NOTIFY rightInsetChanged FINAL REVISION(2, 5)) - Q_PROPERTY(qreal bottomInset READ bottomInset WRITE setBottomInset RESET resetBottomInset NOTIFY bottomInsetChanged FINAL REVISION(2, 5)) - Q_CLASSINFO("DeferredPropertyNames", "background") - QML_NAMED_ELEMENT(TextField) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickTextField(QQuickItem *parent = nullptr); - ~QQuickTextField(); - - QFont font() const; - void setFont(const QFont &font); - - QQuickItem *background() const; - void setBackground(QQuickItem *background); - - QString placeholderText() const; - void setPlaceholderText(const QString &text); - - Qt::FocusReason focusReason() const; - void setFocusReason(Qt::FocusReason reason); - - // 2.1 (Qt 5.8) - bool isHovered() const; - void setHovered(bool hovered); - - bool isHoverEnabled() const; - void setHoverEnabled(bool enabled); - void resetHoverEnabled(); - - // 2.5 (Qt 5.12) - QColor placeholderTextColor() const; - void setPlaceholderTextColor(const QColor &color); - - qreal implicitBackgroundWidth() const; - qreal implicitBackgroundHeight() const; - - qreal topInset() const; - void setTopInset(qreal inset); - void resetTopInset(); - - qreal leftInset() const; - void setLeftInset(qreal inset); - void resetLeftInset(); - - qreal rightInset() const; - void setRightInset(qreal inset); - void resetRightInset(); - - qreal bottomInset() const; - void setBottomInset(qreal inset); - void resetBottomInset(); - -Q_SIGNALS: - void fontChanged(); - void implicitWidthChanged3(); - void implicitHeightChanged3(); - void backgroundChanged(); - void placeholderTextChanged(); - void focusReasonChanged(); - void pressAndHold(QQuickMouseEvent *event); - // 2.1 (Qt 5.8) - Q_REVISION(2, 1) void pressed(QQuickMouseEvent *event); - Q_REVISION(2, 1) void released(QQuickMouseEvent *event); - Q_REVISION(2, 1) void hoveredChanged(); - Q_REVISION(2, 1) void hoverEnabledChanged(); - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) void placeholderTextColorChanged(); - Q_REVISION(2, 5) void implicitBackgroundWidthChanged(); - Q_REVISION(2, 5) void implicitBackgroundHeightChanged(); - Q_REVISION(2, 5) void topInsetChanged(); - Q_REVISION(2, 5) void leftInsetChanged(); - Q_REVISION(2, 5) void rightInsetChanged(); - Q_REVISION(2, 5) void bottomInsetChanged(); - -protected: - friend struct QQuickPressHandler; - - void classBegin() override; - void componentComplete() override; - - void itemChange(ItemChange change, const ItemChangeData &value) override; - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - virtual void insetChange(const QMarginsF &newInset, const QMarginsF &oldInset); - - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data) override; - - void focusInEvent(QFocusEvent *event) override; - void focusOutEvent(QFocusEvent *event) override; -#if QT_CONFIG(quicktemplates2_hover) - void hoverEnterEvent(QHoverEvent *event) override; - void hoverLeaveEvent(QHoverEvent *event) override; -#endif - void mousePressEvent(QMouseEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override; - void mouseDoubleClickEvent(QMouseEvent *event) override; - void timerEvent(QTimerEvent *event) override; - -private: - Q_DISABLE_COPY(QQuickTextField) - Q_DECLARE_PRIVATE(QQuickTextField) -}; - -struct QQuickTextFieldForeign -{ - Q_GADGET - QML_ANONYMOUS - QML_FOREIGN(QQuickTextInput) - QML_ADDED_IN_VERSION(2, 2) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickTextField) - -#endif // QQUICKTEXTFIELD_P_H diff --git a/src/quicktemplates2/qquicktextfield_p_p.h b/src/quicktemplates2/qquicktextfield_p_p.h deleted file mode 100644 index d8128972..00000000 --- a/src/quicktemplates2/qquicktextfield_p_p.h +++ /dev/null @@ -1,160 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTEXTFIELD_P_P_H -#define QQUICKTEXTFIELD_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQml/private/qlazilyallocated_p.h> -#include <QtQuick/private/qquicktextinput_p_p.h> -#include <QtQuick/private/qquickitemchangelistener_p.h> -#include <QtQuickTemplates2/private/qquickpresshandler_p_p.h> -#include <QtQuickTemplates2/private/qquickdeferredpointer_p_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -#include <QtQuickTemplates2/private/qquicktextfield_p.h> - -#if QT_CONFIG(accessibility) -#include <QtGui/qaccessible.h> -#endif - -QT_BEGIN_NAMESPACE - -class QQuickTextFieldPrivate : public QQuickTextInputPrivate, public QQuickItemChangeListener -#if QT_CONFIG(accessibility) - , public QAccessible::ActivationObserver -#endif -{ - Q_DECLARE_PUBLIC(QQuickTextField) - -public: - QQuickTextFieldPrivate(); - ~QQuickTextFieldPrivate(); - - static QQuickTextFieldPrivate *get(QQuickTextField *item) { - return static_cast<QQuickTextFieldPrivate *>(QObjectPrivate::get(item)); } - - inline QMarginsF getInset() const { return QMarginsF(getLeftInset(), getTopInset(), getRightInset(), getBottomInset()); } - inline qreal getTopInset() const { return extra.isAllocated() ? extra->topInset : 0; } - inline qreal getLeftInset() const { return extra.isAllocated() ? extra->leftInset : 0; } - inline qreal getRightInset() const { return extra.isAllocated() ? extra->rightInset : 0; } - inline qreal getBottomInset() const { return extra.isAllocated() ? extra->bottomInset : 0; } - - void setTopInset(qreal value, bool reset = false); - void setLeftInset(qreal value, bool reset = false); - void setRightInset(qreal value, bool reset = false); - void setBottomInset(qreal value, bool reset = false); - - void resizeBackground(); - - void resolveFont(); - void inheritFont(const QFont &font); - void updateFont(const QFont &font); - inline void setFont_helper(const QFont &font) { - if (sourceFont.resolveMask() == font.resolveMask() && sourceFont == font) - return; - updateFont(font); - } - -#if QT_CONFIG(quicktemplates2_hover) - void updateHoverEnabled(bool h, bool e); -#endif - - qreal getImplicitWidth() const override; - qreal getImplicitHeight() const override; - - void implicitWidthChanged() override; - void implicitHeightChanged() override; - - void readOnlyChanged(bool isReadOnly); - void echoModeChanged(QQuickTextField::EchoMode echoMode); - -#if QT_CONFIG(accessibility) - void accessibilityActiveChanged(bool active) override; - QAccessible::Role accessibleRole() const override; -#endif - - void cancelBackground(); - void executeBackground(bool complete = false); - - void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override; - void itemImplicitWidthChanged(QQuickItem *item) override; - void itemImplicitHeightChanged(QQuickItem *item) override; - void itemDestroyed(QQuickItem *item) override; - - QPalette defaultPalette() const override; - -#if QT_CONFIG(quicktemplates2_hover) - bool hovered = false; - bool explicitHoverEnabled = false; -#endif - - struct ExtraData { - bool hasTopInset = false; - bool hasLeftInset = false; - bool hasRightInset = false; - bool hasBottomInset = false; - bool hasBackgroundWidth = false; - bool hasBackgroundHeight = false; - qreal topInset = 0; - qreal leftInset = 0; - qreal rightInset = 0; - qreal bottomInset = 0; - QFont requestedFont; - }; - QLazilyAllocated<ExtraData> extra; - - bool resizingBackground = false; - QQuickDeferredPointer<QQuickItem> background; - QString placeholder; - QColor placeholderColor; - Qt::FocusReason focusReason = Qt::OtherFocusReason; - QQuickPressHandler pressHandler; -}; - -QT_END_NAMESPACE - -#endif // QQUICKTEXTFIELD_P_P_H diff --git a/src/quicktemplates2/qquicktheme.cpp b/src/quicktemplates2/qquicktheme.cpp deleted file mode 100644 index b94b4198..00000000 --- a/src/quicktemplates2/qquicktheme.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktheme_p.h" -#include "qquicktheme_p_p.h" - -#include <QtGui/qpa/qplatformtheme.h> -#include <QtGui/private/qguiapplication_p.h> - -QT_BEGIN_NAMESPACE - -std::unique_ptr<QQuickTheme> QQuickThemePrivate::instance; - -static void cleanup_instance() -{ - QQuickThemePrivate::instance.reset(); -} - -static void install_instance_cleanuper() -{ - qAddPostRoutine(cleanup_instance); -} - -Q_COREAPP_STARTUP_FUNCTION(install_instance_cleanuper) - -static QPlatformTheme::Font platformFont(QQuickTheme::Scope scope) -{ - switch (scope) { - case QQuickTheme::Button: return QPlatformTheme::PushButtonFont; - case QQuickTheme::CheckBox: return QPlatformTheme::CheckBoxFont; - case QQuickTheme::ComboBox: return QPlatformTheme::ComboMenuItemFont; - case QQuickTheme::GroupBox: return QPlatformTheme::GroupBoxTitleFont; - case QQuickTheme::ItemView: return QPlatformTheme::ItemViewFont; - case QQuickTheme::Label: return QPlatformTheme::LabelFont; - case QQuickTheme::ListView: return QPlatformTheme::ListViewFont; - case QQuickTheme::Menu: return QPlatformTheme::MenuFont; - case QQuickTheme::MenuBar: return QPlatformTheme::MenuBarFont; - case QQuickTheme::RadioButton: return QPlatformTheme::RadioButtonFont; - case QQuickTheme::SpinBox: return QPlatformTheme::EditorFont; - case QQuickTheme::Switch: return QPlatformTheme::CheckBoxFont; - case QQuickTheme::TabBar: return QPlatformTheme::TabButtonFont; - case QQuickTheme::TextArea: return QPlatformTheme::EditorFont; - case QQuickTheme::TextField: return QPlatformTheme::EditorFont; - case QQuickTheme::ToolBar: return QPlatformTheme::ToolButtonFont; - case QQuickTheme::ToolTip: return QPlatformTheme::TipLabelFont; - case QQuickTheme::Tumbler: return QPlatformTheme::ItemViewFont; - default: return QPlatformTheme::SystemFont; - } -} - -static QPlatformTheme::Palette platformPalette(QQuickTheme::Scope scope) -{ - switch (scope) { - case QQuickTheme::Button: return QPlatformTheme::ButtonPalette; - case QQuickTheme::CheckBox: return QPlatformTheme::CheckBoxPalette; - case QQuickTheme::ComboBox: return QPlatformTheme::ComboBoxPalette; - case QQuickTheme::GroupBox: return QPlatformTheme::GroupBoxPalette; - case QQuickTheme::ItemView: return QPlatformTheme::ItemViewPalette; - case QQuickTheme::Label: return QPlatformTheme::LabelPalette; - case QQuickTheme::ListView: return QPlatformTheme::ItemViewPalette; - case QQuickTheme::Menu: return QPlatformTheme::MenuPalette; - case QQuickTheme::MenuBar: return QPlatformTheme::MenuBarPalette; - case QQuickTheme::RadioButton: return QPlatformTheme::RadioButtonPalette; - case QQuickTheme::SpinBox: return QPlatformTheme::TextLineEditPalette; - case QQuickTheme::Switch: return QPlatformTheme::CheckBoxPalette; - case QQuickTheme::TabBar: return QPlatformTheme::TabBarPalette; - case QQuickTheme::TextArea: return QPlatformTheme::TextEditPalette; - case QQuickTheme::TextField: return QPlatformTheme::TextLineEditPalette; - case QQuickTheme::ToolBar: return QPlatformTheme::ToolButtonPalette; - case QQuickTheme::ToolTip: return QPlatformTheme::ToolTipPalette; - case QQuickTheme::Tumbler: return QPlatformTheme::ItemViewPalette; - default: return QPlatformTheme::SystemPalette; - } -} - -QQuickTheme::QQuickTheme() - : d_ptr(new QQuickThemePrivate) -{ -} - -QQuickTheme::~QQuickTheme() -{ -} - -QQuickTheme *QQuickTheme::instance() -{ - return QQuickThemePrivate::instance.get(); -} - -QFont QQuickTheme::font(Scope scope) -{ - const QFont *font = nullptr; - if (QQuickTheme *theme = instance()) - font = QQuickThemePrivate::get(theme)->fonts[scope].data(); - else if (QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) - font = theme->font(platformFont(scope)); - - if (font) { - QFont f = *font; - if (scope == System) - f.setResolveMask(0); - return f; - } - - if (scope != System) - return QQuickTheme::font(System); - - return QFont(); -} - -QPalette QQuickTheme::palette(Scope scope) -{ - const QPalette *palette = nullptr; - if (QQuickTheme *theme = instance()) - palette = QQuickThemePrivate::get(theme)->palettes[scope].data(); - else if (QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) - palette = theme->palette(platformPalette(scope)); - - if (palette) { - QPalette f = *palette; - if (scope == System) - f.setResolveMask(0); - return f; - } - - if (scope != System) - return QQuickTheme::palette(System); - - return QPalette(); -} - -void QQuickTheme::setFont(Scope scope, const QFont &font) -{ - Q_D(QQuickTheme); - d->fonts[scope] = QSharedPointer<QFont>::create(d->defaultFont ? d->defaultFont->resolve(font) : font); -} - -void QQuickTheme::setPalette(Scope scope, const QPalette &palette) -{ - Q_D(QQuickTheme); - d->palettes[scope] = QSharedPointer<QPalette>::create(d->defaultPalette ? d->defaultPalette->resolve(palette) : palette); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktheme_p.h b/src/quicktemplates2/qquicktheme_p.h deleted file mode 100644 index d51cc5b6..00000000 --- a/src/quicktemplates2/qquicktheme_p.h +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTHEME_P_H -#define QQUICKTHEME_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> -#include <QtCore/qscopedpointer.h> -#include <QtGui/qfont.h> -#include <QtGui/qpalette.h> - -QT_BEGIN_NAMESPACE - -class QQuickThemePrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTheme -{ -public: - QQuickTheme(); - ~QQuickTheme(); - - static QQuickTheme *instance(); - - enum Scope { - System, - Button, - CheckBox, - ComboBox, - GroupBox, - ItemView, - Label, - ListView, - Menu, - MenuBar, - RadioButton, - SpinBox, - Switch, - TabBar, - TextArea, - TextField, - ToolBar, - ToolTip, - Tumbler - }; - - static QFont font(Scope scope); - static QPalette palette(Scope scope); - - void setFont(Scope scope, const QFont &font); - void setPalette(Scope scope, const QPalette &palette); - -private: - Q_DISABLE_COPY(QQuickTheme) - Q_DECLARE_PRIVATE(QQuickTheme) - QScopedPointer<QQuickThemePrivate> d_ptr; -}; - -QT_END_NAMESPACE - -#endif // QQUICKTHEME_P_H diff --git a/src/quicktemplates2/qquicktheme_p_p.h b/src/quicktemplates2/qquicktheme_p_p.h deleted file mode 100644 index b2c40eeb..00000000 --- a/src/quicktemplates2/qquicktheme_p_p.h +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTHEME_P_P_H -#define QQUICKTHEME_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquicktheme_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickThemePrivate -{ -public: - static QQuickThemePrivate *get(QQuickTheme *theme) - { - return theme->d_func(); - } - - static std::unique_ptr<QQuickTheme> instance; - - static const int NScopes = QQuickTheme::Tumbler + 1; - - QScopedPointer<const QFont> defaultFont; - QScopedPointer<const QPalette> defaultPalette; - QSharedPointer<QFont> fonts[NScopes]; - QSharedPointer<QPalette> palettes[NScopes]; -}; - -QT_END_NAMESPACE - -#endif // QQUICKTHEME_P_P_H diff --git a/src/quicktemplates2/qquicktoolbar.cpp b/src/quicktemplates2/qquicktoolbar.cpp deleted file mode 100644 index f77bf3e8..00000000 --- a/src/quicktemplates2/qquicktoolbar.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktoolbar_p.h" -#include "qquickpane_p_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ToolBar - \inherits Pane -//! \instantiates QQuickToolBar - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-containers - \brief Container for context-sensitive controls. - - ToolBar is a container of application-wide and context sensitive - actions and controls, such as navigation buttons and search fields. - ToolBar is commonly used as a \l {ApplicationWindow::header}{header} - or a \l {ApplicationWindow::footer}{footer} of an \l ApplicationWindow. - - ToolBar does not provide a layout of its own, but requires you to - position its contents, for instance by creating a \l RowLayout. If only - a single item is used within the ToolBar, it will resize to fit the - implicit size of its contained item. This makes it particularly suitable - for use together with layouts. - - \image qtquickcontrols2-toolbar.png - - \code - ApplicationWindow { - visible:true - - header: ToolBar { - RowLayout { - anchors.fill: parent - ToolButton { - text: qsTr("‹") - onClicked: stack.pop() - } - Label { - text: "Title" - elide: Label.ElideRight - horizontalAlignment: Qt.AlignHCenter - verticalAlignment: Qt.AlignVCenter - Layout.fillWidth: true - } - ToolButton { - text: qsTr("⋮") - onClicked: menu.open() - } - } - } - - StackView { - id: stack - anchors.fill: parent - } - } - \endcode - - \sa ApplicationWindow, ToolButton, {Customizing ToolBar}, {Container Controls} -*/ - -class QQuickToolBarPrivate : public QQuickPanePrivate -{ -public: - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ToolBar); } - - QQuickToolBar::Position position = QQuickToolBar::Header; -}; - -QQuickToolBar::QQuickToolBar(QQuickItem *parent) - : QQuickPane(*(new QQuickToolBarPrivate), parent) -{ -} - -/*! - \qmlproperty enumeration QtQuick.Controls::ToolBar::position - - This property holds the position of the toolbar. - - \note If the toolbar is assigned as a header or footer of \l ApplicationWindow - or \l Page, the appropriate position is set automatically. - - Possible values: - \value ToolBar.Header The toolbar is at the top, as a window or page header. - \value ToolBar.Footer The toolbar is at the bottom, as a window or page footer. - - The default value is style-specific. - - \sa ApplicationWindow::header, ApplicationWindow::footer, Page::header, Page::footer -*/ -QQuickToolBar::Position QQuickToolBar::position() const -{ - Q_D(const QQuickToolBar); - return d->position; -} - -void QQuickToolBar::setPosition(Position position) -{ - Q_D(QQuickToolBar); - if (d->position == position) - return; - - d->position = position; - emit positionChanged(); -} - -QFont QQuickToolBar::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::ToolBar); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickToolBar::accessibleRole() const -{ - return QAccessible::ToolBar; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktoolbar_p.h b/src/quicktemplates2/qquicktoolbar_p.h deleted file mode 100644 index cefdeaa1..00000000 --- a/src/quicktemplates2/qquicktoolbar_p.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTOOLBAR_P_H -#define QQUICKTOOLBAR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickpane_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickToolBarPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickToolBar : public QQuickPane -{ - Q_OBJECT - Q_PROPERTY(Position position READ position WRITE setPosition NOTIFY positionChanged FINAL) - QML_NAMED_ELEMENT(ToolBar) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickToolBar(QQuickItem *parent = nullptr); - - enum Position { - Header, - Footer - }; - Q_ENUM(Position) - - Position position() const; - void setPosition(Position position); - -Q_SIGNALS: - void positionChanged(); - -protected: - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickToolBar) - Q_DECLARE_PRIVATE(QQuickToolBar) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickToolBar) - -#endif // QQUICKTOOLBAR_P_H diff --git a/src/quicktemplates2/qquicktoolbutton.cpp b/src/quicktemplates2/qquicktoolbutton.cpp deleted file mode 100644 index 80987887..00000000 --- a/src/quicktemplates2/qquicktoolbutton.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktoolbutton_p.h" -#include "qquickcontrol_p_p.h" -#include "qquickbutton_p_p.h" - -#include <QtGui/qpa/qplatformtheme.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ToolButton - \inherits Button -//! \instantiates QQuickToolButton - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-buttons - \brief Button with a look suitable for a ToolBar. - - ToolButton is functionally similar to \l Button, but provides a look that - is more suitable within a \l ToolBar. - - \image qtquickcontrols2-toolbar.png - - \snippet qtquickcontrols2-toolbar.qml 1 - - ToolButton inherits its API from AbstractButton. For instance, you can set - \l {AbstractButton::text}{text}, display an \l {Icons in Qt Quick Controls}{icon}, - and react to \l {AbstractButton::clicked}{clicks} using the AbstractButton API. - - \sa ToolBar, {Customizing ToolButton}, {Button Controls} -*/ - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickToolPrivate : public QQuickButtonPrivate -{ - Q_DECLARE_PUBLIC(QQuickToolButton) - -public: - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ToolBar); } -}; - -QQuickToolButton::QQuickToolButton(QQuickItem *parent) - : QQuickButton(*(new QQuickToolPrivate), parent) -{ -} - -QFont QQuickToolButton::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::ToolBar); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktoolbutton_p.h b/src/quicktemplates2/qquicktoolbutton_p.h deleted file mode 100644 index 2db052f6..00000000 --- a/src/quicktemplates2/qquicktoolbutton_p.h +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTOOLBUTTON_P_H -#define QQUICKTOOLBUTTON_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickbutton_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickToolButtonPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickToolButton : public QQuickButton -{ - Q_OBJECT - QML_NAMED_ELEMENT(ToolButton) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickToolButton(QQuickItem *parent = nullptr); - -protected: - QFont defaultFont() const override; - -private: - Q_DECLARE_PRIVATE(QQuickToolButton) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickToolButton) - -#endif // QQUICKTOOLBUTTON_P_H diff --git a/src/quicktemplates2/qquicktoolseparator.cpp b/src/quicktemplates2/qquicktoolseparator.cpp deleted file mode 100644 index ae2f7f19..00000000 --- a/src/quicktemplates2/qquicktoolseparator.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktoolseparator_p.h" - -#include "qquickcontrol_p_p.h" - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ToolSeparator - \inherits Control -//! \instantiates QQuickToolSeparator - \inqmlmodule QtQuick.Controls - \since 5.8 - \ingroup qtquickcontrols2-separators - \brief Separates a group of items in a toolbar from adjacent items. - - ToolSeparator is used to visually distinguish between groups of items in a - toolbar by separating them with a line. It can be used in horizontal or - vertical toolbars by setting the \l orientation property to \c Qt.Vertical - or \c Qt.Horizontal, respectively. - - \image qtquickcontrols2-toolseparator.png - - \snippet qtquickcontrols2-toolseparator.qml 1 - - \sa {Customizing ToolSeparator}, {Separator Controls} -*/ - -class QQuickToolSeparatorPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickToolSeparator) - -public: - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ToolBar); } - - Qt::Orientation orientation = Qt::Vertical; -}; - -QQuickToolSeparator::QQuickToolSeparator(QQuickItem *parent) - : QQuickControl(*(new QQuickToolSeparatorPrivate), parent) -{ -} - -/*! - \qmlproperty enumeration QtQuick.Controls::ToolSeparator::orientation - - This property holds the orientation of the tool separator. - - Possible values: - \value Qt.Horizontal A horizontal separator is used in a vertical toolbar. - \value Qt.Vertical A vertical separator is used in a horizontal toolbar. (default) -*/ -Qt::Orientation QQuickToolSeparator::orientation() const -{ - Q_D(const QQuickToolSeparator); - return d->orientation; -} - -void QQuickToolSeparator::setOrientation(Qt::Orientation orientation) -{ - Q_D(QQuickToolSeparator); - if (d->orientation == orientation) - return; - - d->orientation = orientation; - emit orientationChanged(); -} - -/*! - \readonly - \qmlproperty bool QtQuick.Controls::ToolSeparator::horizontal - - This property holds whether \l orientation is equal to \c Qt.Horizontal. - - It is useful for \l {Customizing ToolSeparator}{customizing ToolSeparator}. - - \sa orientation, vertical -*/ -bool QQuickToolSeparator::isHorizontal() const -{ - Q_D(const QQuickToolSeparator); - return d->orientation == Qt::Horizontal; -} - -/*! - \readonly - \qmlproperty bool QtQuick.Controls::ToolSeparator::vertical - - This property holds whether \l orientation is equal to \c Qt.Vertical. - - It is useful for \l {Customizing ToolSeparator}{customizing ToolSeparator}. - - \sa orientation, horizontal -*/ -bool QQuickToolSeparator::isVertical() const -{ - Q_D(const QQuickToolSeparator); - return d->orientation == Qt::Vertical; -} - -QFont QQuickToolSeparator::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::ToolBar); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickToolSeparator::accessibleRole() const -{ - return QAccessible::Separator; -} -#endif - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktoolseparator_p.h b/src/quicktemplates2/qquicktoolseparator_p.h deleted file mode 100644 index e4692154..00000000 --- a/src/quicktemplates2/qquicktoolseparator_p.h +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTOOLSEPARATOR_P_H -#define QQUICKTOOLSEPARATOR_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickToolSeparatorPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickToolSeparator : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged FINAL) - Q_PROPERTY(bool horizontal READ isHorizontal NOTIFY orientationChanged FINAL) - Q_PROPERTY(bool vertical READ isVertical NOTIFY orientationChanged FINAL) - QML_NAMED_ELEMENT(ToolSeparator) - QML_ADDED_IN_VERSION(2, 1) - -public: - explicit QQuickToolSeparator(QQuickItem *parent = nullptr); - - Qt::Orientation orientation() const; - void setOrientation(Qt::Orientation orientation); - - bool isHorizontal() const; - bool isVertical() const; - -Q_SIGNALS: - void orientationChanged(); - -protected: - QFont defaultFont() const override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; -#endif - -private: - Q_DISABLE_COPY(QQuickToolSeparator) - Q_DECLARE_PRIVATE(QQuickToolSeparator) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickToolSeparator) - -#endif // QQUICKTOOLSEPARATOR_P_H diff --git a/src/quicktemplates2/qquicktooltip.cpp b/src/quicktemplates2/qquicktooltip.cpp deleted file mode 100644 index a6ad371a..00000000 --- a/src/quicktemplates2/qquicktooltip.cpp +++ /dev/null @@ -1,585 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktooltip_p.h" -#include "qquickpopup_p_p.h" -#include "qquickpopupitem_p_p.h" -#include "qquickcontrol_p_p.h" -#include "qquicktooltippopupitem_p_p.h" - -#include <QtCore/qbasictimer.h> -#include <QtQml/qqmlinfo.h> -#include <QtQml/qqmlengine.h> -#include <QtQml/qqmlcontext.h> -#include <QtQml/qqmlcomponent.h> -#include <QtQuick/qquickwindow.h> - -QT_BEGIN_NAMESPACE - -/*! - \qmltype ToolTip - \inherits Popup -//! \instantiates QQuickToolTip - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-popups - \brief Provides tool tips for any control. - - A tool tip is a short piece of text that informs the user of a control's - function. It is typically placed above or below the parent control. The - tip text can be any \l{Rich Text Processing}{rich text} formatted string. - - \image qtquickcontrols2-tooltip.png - - \section2 Attached Tool Tips - - The most straight-forward way to setup tool tips for controls is to - specify \l text and \l {visible}{visibility} via attached properties. - The following example illustrates this approach: - - \snippet qtquickcontrols2-tooltip.qml 1 - - Under normal circumstances, there is only one tool tip visible at a time. - In order to save resources, all items that use the ToolTip attached property - share the same visual tool tip label instance. Even though the visuals are - shared, \c text, \c timeout and \c delay are stored individually for each item - that uses the respective attached property. However, multiple items cannot - make the shared tool tip visible at the same time. The shared tool tip is only - shown for the last item that made it visible. The position of the shared tool - tip is determined by the framework. - - \section2 Delay and Timeout - - Tool tips are typically transient in a sense that they are shown as a - result of a certain external event or user interaction, and they usually - hide after a certain timeout. It is possible to control the delay when - a tool tip is shown, and the timeout when it is hidden. This makes it - possible to implement varying strategies for showing and hiding tool tips. - - For example, on touch screens, it is a common pattern to show a tool tip - as a result of pressing and holding down a button. The following example - demonstrates how to delay showing a tool tip until the press-and-hold - interval is reached. In this example, the tool tip hides as soon as the - button is released. - - \snippet qtquickcontrols2-tooltip-pressandhold.qml 1 - - With pointer devices, however, it might be desired to show a tool tip as - a result of hovering a button for a while. The following example presents - how to show a tool tip after hovering a button for a second, and hide it - after a timeout of five seconds. - - \snippet qtquickcontrols2-tooltip-hover.qml 1 - - \section2 Custom Tool Tips - - Should one need more fine-grained control over the tool tip position, or - multiple simultaneous tool tip instances are needed, it is also possible - to create local tool tip instances. This way, it is possible to - \l {Customizing ToolTip}{customize} the tool tip, and the whole \l Popup - API is available. The following example presents a tool tip that presents - the value of a slider when the handle is dragged. - - \image qtquickcontrols2-tooltip-slider.png - - \snippet qtquickcontrols2-tooltip-slider.qml 1 - - \sa {Customizing ToolTip}, {Popup Controls} -*/ - -class QQuickToolTipPrivate : public QQuickPopupPrivate -{ - Q_DECLARE_PUBLIC(QQuickToolTip) - -public: - void init() override; - - void startDelay(); - void stopDelay(); - - void startTimeout(); - void stopTimeout(); - - void opened() override; - - QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ToolTip); } - - int delay = 0; - int timeout = -1; - QString text; - QBasicTimer delayTimer; - QBasicTimer timeoutTimer; -}; - -void QQuickToolTipPrivate::init() -{ - Q_Q(QQuickToolTip); - popupItem = new QQuickToolTipPopupItem(q); - popupItem->setVisible(false); - q->setParentItem(qobject_cast<QQuickItem *>(parent)); - connectToPopupItem(); - - allowVerticalFlip = true; - allowHorizontalFlip = true; - popupItem->setHoverEnabled(false); // QTBUG-63644 -} - -void QQuickToolTipPrivate::startDelay() -{ - Q_Q(QQuickToolTip); - if (delay > 0) - delayTimer.start(delay, q); -} - -void QQuickToolTipPrivate::stopDelay() -{ - delayTimer.stop(); -} - -void QQuickToolTipPrivate::startTimeout() -{ - Q_Q(QQuickToolTip); - if (timeout > 0) - timeoutTimer.start(timeout, q); -} - -void QQuickToolTipPrivate::stopTimeout() -{ - timeoutTimer.stop(); -} - -void QQuickToolTipPrivate::opened() -{ - QQuickPopupPrivate::opened(); - startTimeout(); -} - -QQuickToolTip::QQuickToolTip(QQuickItem *parent) - : QQuickPopup(*(new QQuickToolTipPrivate), parent) -{ - Q_D(QQuickToolTip); - d->init(); -} - -/*! - \qmlproperty string QtQuick.Controls::ToolTip::text - - This property holds the text shown on the tool tip. -*/ -QString QQuickToolTip::text() const -{ - Q_D(const QQuickToolTip); - return d->text; -} - -void QQuickToolTip::setText(const QString &text) -{ - Q_D(QQuickToolTip); - if (d->text == text) - return; - - d->text = text; - maybeSetAccessibleName(text); - emit textChanged(); -} - -/*! - \qmlproperty int QtQuick.Controls::ToolTip::delay - - This property holds the delay (milliseconds) after which the tool tip is - shown. A tooltip with a negative delay is shown immediately. The default - value is \c 0. - - \sa {Delay and Timeout} -*/ -int QQuickToolTip::delay() const -{ - Q_D(const QQuickToolTip); - return d->delay; -} - -void QQuickToolTip::setDelay(int delay) -{ - Q_D(QQuickToolTip); - if (d->delay == delay) - return; - - d->delay = delay; - emit delayChanged(); -} - -/*! - \qmlproperty int QtQuick.Controls::ToolTip::timeout - - This property holds the timeout (milliseconds) after which the tool tip is - hidden. A tooltip with a negative timeout does not hide automatically. The - default value is \c -1. - - \sa {Delay and Timeout} -*/ -int QQuickToolTip::timeout() const -{ - Q_D(const QQuickToolTip); - return d->timeout; -} - -void QQuickToolTip::setTimeout(int timeout) -{ - Q_D(QQuickToolTip); - if (d->timeout == timeout) - return; - - d->timeout = timeout; - - if (timeout <= 0) - d->stopTimeout(); - else if (isOpened()) - d->startTimeout(); - - emit timeoutChanged(); -} - -void QQuickToolTip::setVisible(bool visible) -{ - Q_D(QQuickToolTip); - if (visible) { - if (!d->visible) { - // We are being made visible, and we weren't before. - if (d->delay > 0) { - d->startDelay(); - return; - } - } - } else { - d->stopDelay(); - } - QQuickPopup::setVisible(visible); -} - -QQuickToolTipAttached *QQuickToolTip::qmlAttachedProperties(QObject *object) -{ - QQuickItem *item = qobject_cast<QQuickItem *>(object); - if (!item) - qmlWarning(object) << "ToolTip must be attached to an Item"; - - return new QQuickToolTipAttached(object); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlmethod void QtQuick.Controls::ToolTip::show(string text, int timeout) - - This method shows the \a text as a tooltip, which times out in - \a timeout (milliseconds). -*/ -void QQuickToolTip::show(const QString &text, int ms) -{ - if (ms >= 0) - setTimeout(ms); - setText(text); - open(); -} - -/*! - \since QtQuick.Controls 2.5 (Qt 5.12) - \qmlmethod void QtQuick.Controls::ToolTip::hide() - - This method hides the tooltip. -*/ -void QQuickToolTip::hide() -{ - close(); -} - -QFont QQuickToolTip::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::ToolTip); -} - -void QQuickToolTip::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) -{ - Q_D(QQuickToolTip); - QQuickPopup::itemChange(change, data); - if (change == QQuickItem::ItemVisibleHasChanged) { - if (!data.boolValue) - d->stopTimeout(); - - QQuickToolTipAttached *attached = qobject_cast<QQuickToolTipAttached *>(qmlAttachedPropertiesObject<QQuickToolTip>(d->parentItem, false)); - if (attached) - emit attached->visibleChanged(); - } -} - -void QQuickToolTip::timerEvent(QTimerEvent *event) -{ - Q_D(QQuickToolTip); - if (event->timerId() == d->timeoutTimer.timerId()) { - d->stopTimeout(); - QQuickPopup::setVisible(false); - return; - } - if (event->timerId() == d->delayTimer.timerId()) { - d->stopDelay(); - QQuickPopup::setVisible(true); - return; - } - QQuickPopup::timerEvent(event); -} - -#if QT_CONFIG(accessibility) -QAccessible::Role QQuickToolTip::accessibleRole() const -{ - return QAccessible::ToolTip; -} - -void QQuickToolTip::accessibilityActiveChanged(bool active) -{ - Q_D(QQuickToolTip); - QQuickPopup::accessibilityActiveChanged(active); - - if (active) - maybeSetAccessibleName(d->text); -} -#endif - -class QQuickToolTipAttachedPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickToolTipAttached) - -public: - QQuickToolTip *instance(bool create) const; - - int delay = 0; - int timeout = -1; - QString text; -}; - -QQuickToolTip *QQuickToolTipAttachedPrivate::instance(bool create) const -{ - QQmlEngine *engine = qmlEngine(parent); - if (!engine) - return nullptr; - - static const char *name = "_q_QQuickToolTip"; - - QQuickToolTip *tip = engine->property(name).value<QQuickToolTip *>(); - if (!tip && create) { - // TODO: a cleaner way to create the instance? QQml(Meta)Type? - QQmlComponent component(engine); - component.setData("import QtQuick.Controls; ToolTip { }", QUrl()); - - QObject *object = component.create(); - if (object) - object->setParent(engine); - - tip = qobject_cast<QQuickToolTip *>(object); - if (!tip) - delete object; - else - engine->setProperty(name, QVariant::fromValue(object)); - } - return tip; -} - -QQuickToolTipAttached::QQuickToolTipAttached(QObject *parent) - : QObject(*(new QQuickToolTipAttachedPrivate), parent) -{ -} - -/*! - \qmlattachedproperty string QtQuick.Controls::ToolTip::text - - This attached property holds the text of the shared tool tip. - The property can be attached to any item. - - \sa {Attached Tool Tips} -*/ -QString QQuickToolTipAttached::text() const -{ - Q_D(const QQuickToolTipAttached); - return d->text; -} - -void QQuickToolTipAttached::setText(const QString &text) -{ - Q_D(QQuickToolTipAttached); - if (d->text == text) - return; - - d->text = text; - emit textChanged(); - - if (isVisible()) - d->instance(true)->setText(text); -} - -/*! - \qmlattachedproperty int QtQuick.Controls::ToolTip::delay - - This attached property holds the delay (milliseconds) of the shared tool tip. - The property can be attached to any item. - - \sa {Attached Tool Tips}, {Delay and Timeout} -*/ -int QQuickToolTipAttached::delay() const -{ - Q_D(const QQuickToolTipAttached); - return d->delay; -} - -void QQuickToolTipAttached::setDelay(int delay) -{ - Q_D(QQuickToolTipAttached); - if (d->delay == delay) - return; - - d->delay = delay; - emit delayChanged(); - - if (isVisible()) - d->instance(true)->setDelay(delay); -} - -/*! - \qmlattachedproperty int QtQuick.Controls::ToolTip::timeout - - This attached property holds the timeout (milliseconds) of the shared tool tip. - The property can be attached to any item. - - \sa {Attached Tool Tips}, {Delay and Timeout} -*/ -int QQuickToolTipAttached::timeout() const -{ - Q_D(const QQuickToolTipAttached); - return d->timeout; -} - -void QQuickToolTipAttached::setTimeout(int timeout) -{ - Q_D(QQuickToolTipAttached); - if (d->timeout == timeout) - return; - - d->timeout = timeout; - emit timeoutChanged(); - - if (isVisible()) - d->instance(true)->setTimeout(timeout); -} - -/*! - \qmlattachedproperty bool QtQuick.Controls::ToolTip::visible - - This attached property holds whether the shared tool tip is visible. - The property can be attached to any item. - - \sa {Attached Tool Tips} -*/ -bool QQuickToolTipAttached::isVisible() const -{ - Q_D(const QQuickToolTipAttached); - QQuickToolTip *tip = d->instance(false); - if (!tip) - return false; - - return tip->isVisible() && tip->parentItem() == parent(); -} - -void QQuickToolTipAttached::setVisible(bool visible) -{ - Q_D(QQuickToolTipAttached); - if (visible) - show(d->text); - else - hide(); -} - -/*! - \qmlattachedproperty ToolTip QtQuick.Controls::ToolTip::toolTip - - This attached property holds the shared tool tip instance. The property - can be attached to any item. - - \sa {Attached Tool Tips} -*/ -QQuickToolTip *QQuickToolTipAttached::toolTip() const -{ - Q_D(const QQuickToolTipAttached); - return d->instance(true); -} - -/*! - \qmlattachedmethod void QtQuick.Controls::ToolTip::show(string text, int timeout = -1) - - This attached method shows the shared tooltip with \a text and \a timeout (milliseconds). - The method can be attached to any item. - - \sa {Attached Tool Tips} -*/ -void QQuickToolTipAttached::show(const QString &text, int ms) -{ - Q_D(QQuickToolTipAttached); - QQuickToolTip *tip = d->instance(true); - if (!tip) - return; - - tip->resetWidth(); - tip->resetHeight(); - tip->setParentItem(qobject_cast<QQuickItem *>(parent())); - tip->setDelay(d->delay); - tip->setTimeout(ms >= 0 ? ms : d->timeout); - tip->show(text); -} - -/*! - \qmlattachedmethod void QtQuick.Controls::ToolTip::hide() - - This attached method hides the shared tooltip. The method can be attached to any item. - - \sa {Attached Tool Tips} -*/ -void QQuickToolTipAttached::hide() -{ - Q_D(QQuickToolTipAttached); - QQuickToolTip *tip = d->instance(false); - if (!tip) - return; - // check the parent item to prevent unexpectedly closing tooltip by new created invisible tooltip - if (parent() == tip->parentItem()) - tip->close(); -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktooltip_p.h b/src/quicktemplates2/qquicktooltip_p.h deleted file mode 100644 index 5be22fd8..00000000 --- a/src/quicktemplates2/qquicktooltip_p.h +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTOOLTIP_P_H -#define QQUICKTOOLTIP_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickpopup_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickToolTipPrivate; -class QQuickToolTipAttached; -class QQuickToolTipAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickToolTip : public QQuickPopup -{ - Q_OBJECT - Q_PROPERTY(int delay READ delay WRITE setDelay NOTIFY delayChanged FINAL) - Q_PROPERTY(int timeout READ timeout WRITE setTimeout NOTIFY timeoutChanged FINAL) - Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged FINAL) - QML_NAMED_ELEMENT(ToolTip) - QML_ATTACHED(QQuickToolTipAttached) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickToolTip(QQuickItem *parent = nullptr); - - QString text() const; - void setText(const QString &text); - - int delay() const; - void setDelay(int delay); - - int timeout() const; - void setTimeout(int timeout); - - void setVisible(bool visible) override; - - static QQuickToolTipAttached *qmlAttachedProperties(QObject *object); - -Q_SIGNALS: - void textChanged(); - void delayChanged(); - void timeoutChanged(); - -public Q_SLOTS: - Q_REVISION(2, 5) void show(const QString &text, int ms = -1); - Q_REVISION(2, 5) void hide(); - -protected: - QFont defaultFont() const override; - - void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) override; - void timerEvent(QTimerEvent *event) override; - -#if QT_CONFIG(accessibility) - QAccessible::Role accessibleRole() const override; - void accessibilityActiveChanged(bool active) override; -#endif - -private: - Q_DISABLE_COPY(QQuickToolTip) - Q_DECLARE_PRIVATE(QQuickToolTip) -}; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickToolTipAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged FINAL) - Q_PROPERTY(int delay READ delay WRITE setDelay NOTIFY delayChanged FINAL) - Q_PROPERTY(int timeout READ timeout WRITE setTimeout NOTIFY timeoutChanged FINAL) - Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL) - Q_PROPERTY(QQuickToolTip *toolTip READ toolTip CONSTANT FINAL) - -public: - explicit QQuickToolTipAttached(QObject *parent = nullptr); - - QString text() const; - void setText(const QString &text); - - int delay() const; - void setDelay(int delay); - - int timeout() const; - void setTimeout(int timeout); - - bool isVisible() const; - void setVisible(bool visible); - - QQuickToolTip *toolTip() const; - -Q_SIGNALS: - void textChanged(); - void delayChanged(); - void timeoutChanged(); - void visibleChanged(); - -public Q_SLOTS: - void show(const QString &text, int ms = -1); - void hide(); - -private: - Q_DISABLE_COPY(QQuickToolTipAttached) - Q_DECLARE_PRIVATE(QQuickToolTipAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickToolTip) -QML_DECLARE_TYPEINFO(QQuickToolTip, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKTOOLTIP_P_H diff --git a/src/quicktemplates2/qquicktooltippopupitem.cpp b/src/quicktemplates2/qquicktooltippopupitem.cpp deleted file mode 100644 index c3a48f6f..00000000 --- a/src/quicktemplates2/qquicktooltippopupitem.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktooltippopupitem_p_p.h" - -#include <QtQuickTemplates2/private/qquickpopup_p.h> - -QT_BEGIN_NAMESPACE - -QQuickToolTipPopupItemPrivate::QQuickToolTipPopupItemPrivate(QQuickPopup *popup) - : QQuickPopupItemPrivate(popup) -{ -} - -qreal QQuickToolTipPopupItemPrivate::getContentWidth() const -{ - auto textItem = qobject_cast<QQuickText*>(contentItem); - if (textItem) - return textItem->contentWidth(); - - return contentItem ? contentItem->implicitWidth() : 0; -} - -void QQuickToolTipPopupItemPrivate::updateContentWidth() -{ - Q_Q(QQuickToolTipPopupItem); - // Don't need to calculate the implicit contentWidth if an explicit one was set. - if (hasContentWidth) - return; - - auto textItem = qobject_cast<QQuickText*>(contentItem); - if (!textItem) { - // It's not a Text item, so use the base contentWidth logic (i.e. use implicitWidth). - QQuickPopupItemPrivate::updateContentWidth(); - return; - } - - const qreal oldContentWidth = contentWidth; - const qreal newContentWidth = textItem->contentWidth(); - if (qFuzzyCompare(oldContentWidth, newContentWidth)) - return; - - contentWidth = newContentWidth; - q->contentSizeChange(QSizeF(contentWidth, contentHeight), QSizeF(oldContentWidth, contentHeight)); - emit q->contentWidthChanged(); -} - -QQuickToolTipPopupItem::QQuickToolTipPopupItem(QQuickPopup *popup) - : QQuickPopupItem(*(new QQuickToolTipPopupItemPrivate(popup))) -{ -} - -void QQuickToolTipPopupItem::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_D(QQuickToolTipPopupItem); - QQuickPopupItem::contentItemChange(newItem, oldItem); - - // Text's implicitWidth does not account for newlines and hence is too large, - // so we need to listen to contentWidth's change signals. - auto oldTextItem = qobject_cast<QQuickText*>(oldItem); - if (oldTextItem) { - QObjectPrivate::disconnect(oldTextItem, &QQuickText::contentWidthChanged, - d, &QQuickToolTipPopupItemPrivate::updateContentWidth); - } - - auto newTextItem = qobject_cast<QQuickText*>(newItem); - if (newTextItem) { - QObjectPrivate::connect(newTextItem, &QQuickText::contentWidthChanged, - d, &QQuickToolTipPopupItemPrivate::updateContentWidth); - } -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktooltippopupitem_p_p.h b/src/quicktemplates2/qquicktooltippopupitem_p_p.h deleted file mode 100644 index d81c309d..00000000 --- a/src/quicktemplates2/qquicktooltippopupitem_p_p.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTOOLTIPPOPUPITEM_P_P_H -#define QQUICKTOOLTIPPOPUPITEM_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickpopupitem_p.h> -#include <QtQuickTemplates2/private/qquickpopupitem_p_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickPopup; -class QQuickToolTipPopupItemPrivate; - -class QQuickToolTipPopupItem : public QQuickPopupItem -{ - Q_OBJECT - -public: - explicit QQuickToolTipPopupItem(QQuickPopup *popup); - -protected: - void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; - -private: - Q_DISABLE_COPY(QQuickToolTipPopupItem) - Q_DECLARE_PRIVATE(QQuickToolTipPopupItem) -}; - -class QQuickToolTipPopupItemPrivate : public QQuickPopupItemPrivate -{ - Q_DECLARE_PUBLIC(QQuickToolTipPopupItem) - -public: - QQuickToolTipPopupItemPrivate(QQuickPopup *popup); - - qreal getContentWidth() const override; - void updateContentWidth() override; -}; - -QT_END_NAMESPACE - -#endif // QQUICKTOOLTIPPOPUPITEM_P_P_H diff --git a/src/quicktemplates2/qquicktumbler.cpp b/src/quicktemplates2/qquicktumbler.cpp deleted file mode 100644 index 4f7d3487..00000000 --- a/src/quicktemplates2/qquicktumbler.cpp +++ /dev/null @@ -1,1046 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktumbler_p.h" - -#include <QtCore/qloggingcategory.h> -#include <QtGui/qpa/qplatformtheme.h> -#include <QtQml/qqmlinfo.h> -#include <QtQuick/private/qquickflickable_p.h> -#include <QtQuickTemplates2/private/qquickcontrol_p_p.h> -#include <QtQuickTemplates2/private/qquicktumbler_p_p.h> - -QT_BEGIN_NAMESPACE - -Q_LOGGING_CATEGORY(lcTumbler, "qt.quick.controls.tumbler") - -/*! - \qmltype Tumbler - \inherits Control -//! \instantiates QQuickTumbler - \inqmlmodule QtQuick.Controls - \since 5.7 - \ingroup qtquickcontrols2-input - \brief Spinnable wheel of items that can be selected. - - \image qtquickcontrols2-tumbler-wrap.gif - - \code - Tumbler { - model: 5 - // ... - } - \endcode - - Tumbler allows the user to select an option from a spinnable \e "wheel" of - items. It is useful for when there are too many options to use, for - example, a RadioButton, and too few options to require the use of an - editable SpinBox. It is convenient in that it requires no keyboard usage - and wraps around at each end when there are a large number of items. - - The API is similar to that of views like \l ListView and \l PathView; a - \l model and \l delegate can be set, and the \l count and \l currentItem - properties provide read-only access to information about the view. To - position the view at a certain index, use \l positionViewAtIndex(). - - Unlike views like \l PathView and \l ListView, however, there is always a - current item (when the model isn't empty). This means that when \l count is - equal to \c 0, \l currentIndex will be \c -1. In all other cases, it will - be greater than or equal to \c 0. - - By default, Tumbler \l {wrap}{wraps} when it reaches the top and bottom, as - long as there are more items in the model than there are visible items; - that is, when \l count is greater than \l visibleItemCount: - - \snippet qtquickcontrols2-tumbler-timePicker.qml tumbler - - \sa {Customizing Tumbler}, {Input Controls} -*/ - -namespace { - static inline qreal delegateHeight(const QQuickTumbler *tumbler) - { - return tumbler->availableHeight() / tumbler->visibleItemCount(); - } -} - -/* - Finds the contentItem of the view that is a child of the control's \a contentItem. - The type is stored in \a type. -*/ -QQuickItem *QQuickTumblerPrivate::determineViewType(QQuickItem *contentItem) -{ - if (!contentItem) { - resetViewData(); - return nullptr; - } - - if (contentItem->inherits("QQuickPathView")) { - view = contentItem; - viewContentItem = contentItem; - viewContentItemType = PathViewContentItem; - viewOffset = 0; - - return contentItem; - } else if (contentItem->inherits("QQuickListView")) { - view = contentItem; - viewContentItem = qobject_cast<QQuickFlickable*>(contentItem)->contentItem(); - viewContentItemType = ListViewContentItem; - viewContentY = 0; - - return contentItem; - } else { - const auto childItems = contentItem->childItems(); - for (QQuickItem *childItem : childItems) { - QQuickItem *item = determineViewType(childItem); - if (item) - return item; - } - } - - resetViewData(); - viewContentItemType = UnsupportedContentItemType; - return nullptr; -} - -void QQuickTumblerPrivate::resetViewData() -{ - view = nullptr; - viewContentItem = nullptr; - if (viewContentItemType == PathViewContentItem) - viewOffset = 0; - else if (viewContentItemType == ListViewContentItem) - viewContentY = 0; - viewContentItemType = NoContentItem; -} - -QList<QQuickItem *> QQuickTumblerPrivate::viewContentItemChildItems() const -{ - if (!viewContentItem) - return QList<QQuickItem *>(); - - return viewContentItem->childItems(); -} - -QQuickTumblerPrivate *QQuickTumblerPrivate::get(QQuickTumbler *tumbler) -{ - return tumbler->d_func(); -} - -void QQuickTumblerPrivate::_q_updateItemHeights() -{ - if (ignoreSignals) - return; - - // Can't use our own private padding members here, as the padding property might be set, - // which doesn't affect them, only their getters. - Q_Q(const QQuickTumbler); - const qreal itemHeight = delegateHeight(q); - const auto items = viewContentItemChildItems(); - for (QQuickItem *childItem : items) - childItem->setHeight(itemHeight); -} - -void QQuickTumblerPrivate::_q_updateItemWidths() -{ - if (ignoreSignals) - return; - - Q_Q(const QQuickTumbler); - const qreal availableWidth = q->availableWidth(); - const auto items = viewContentItemChildItems(); - for (QQuickItem *childItem : items) - childItem->setWidth(availableWidth); -} - -void QQuickTumblerPrivate::_q_onViewCurrentIndexChanged() -{ - Q_Q(QQuickTumbler); - if (!view || ignoreCurrentIndexChanges || currentIndexSetDuringModelChange) { - // If the user set currentIndex in the onModelChanged handler, - // we have to respect that currentIndex by ignoring changes in the view - // until the model has finished being set. - qCDebug(lcTumbler).nospace() << "view currentIndex changed to " - << (view ? view->property("currentIndex").toString() : QStringLiteral("unknown index (no view)")) - << ", but we're ignoring it because one or more of the following conditions are true:" - << "\n- !view: " << !view - << "\n- ignoreCurrentIndexChanges: " << ignoreCurrentIndexChanges - << "\n- currentIndexSetDuringModelChange: " << currentIndexSetDuringModelChange; - return; - } - - const int oldCurrentIndex = currentIndex; - currentIndex = view->property("currentIndex").toInt(); - - qCDebug(lcTumbler).nospace() << "view currentIndex changed to " - << (view ? view->property("currentIndex").toString() : QStringLiteral("unknown index (no view)")) - << ", our old currentIndex was " << oldCurrentIndex; - - if (oldCurrentIndex != currentIndex) - emit q->currentIndexChanged(); -} - -void QQuickTumblerPrivate::_q_onViewCountChanged() -{ - Q_Q(QQuickTumbler); - qCDebug(lcTumbler) << "view count changed - ignoring signals?" << ignoreSignals; - if (ignoreSignals) - return; - - setCount(view->property("count").toInt()); - - if (count > 0) { - if (pendingCurrentIndex != -1) { - // If there was an attempt to set currentIndex at creation, try to finish that attempt now. - // componentComplete() is too early, because the count might only be known sometime after completion. - setCurrentIndex(pendingCurrentIndex); - // If we could successfully set the currentIndex, consider it done. - // Otherwise, we'll try again later in updatePolish(). - if (currentIndex == pendingCurrentIndex) - setPendingCurrentIndex(-1); - else - q->polish(); - } else if (currentIndex == -1) { - // If new items were added and our currentIndex was -1, we must - // enforce our rule of a non-negative currentIndex when count > 0. - setCurrentIndex(0); - } - } else { - setCurrentIndex(-1); - } -} - -void QQuickTumblerPrivate::_q_onViewOffsetChanged() -{ - viewOffset = view->property("offset").toReal(); - calculateDisplacements(); -} - -void QQuickTumblerPrivate::_q_onViewContentYChanged() -{ - viewContentY = view->property("contentY").toReal(); - calculateDisplacements(); -} - -void QQuickTumblerPrivate::calculateDisplacements() -{ - const auto items = viewContentItemChildItems(); - for (QQuickItem *childItem : items) { - QQuickTumblerAttached *attached = qobject_cast<QQuickTumblerAttached *>(qmlAttachedPropertiesObject<QQuickTumbler>(childItem, false)); - if (attached) - QQuickTumblerAttachedPrivate::get(attached)->calculateDisplacement(); - } -} - -void QQuickTumblerPrivate::itemChildAdded(QQuickItem *, QQuickItem *) -{ - _q_updateItemWidths(); - _q_updateItemHeights(); -} - -void QQuickTumblerPrivate::itemChildRemoved(QQuickItem *, QQuickItem *) -{ - _q_updateItemWidths(); - _q_updateItemHeights(); -} - -void QQuickTumblerPrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) -{ - QQuickControlPrivate::itemGeometryChanged(item, change, diff); - if (change.sizeChange()) - calculateDisplacements(); -} - -QPalette QQuickTumblerPrivate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::Tumbler); -} - -QQuickTumbler::QQuickTumbler(QQuickItem *parent) - : QQuickControl(*(new QQuickTumblerPrivate), parent) -{ - setActiveFocusOnTab(true); - - connect(this, SIGNAL(leftPaddingChanged()), this, SLOT(_q_updateItemWidths())); - connect(this, SIGNAL(rightPaddingChanged()), this, SLOT(_q_updateItemWidths())); - connect(this, SIGNAL(topPaddingChanged()), this, SLOT(_q_updateItemHeights())); - connect(this, SIGNAL(bottomPaddingChanged()), this, SLOT(_q_updateItemHeights())); -} - -QQuickTumbler::~QQuickTumbler() -{ - Q_D(QQuickTumbler); - // Ensure that the item change listener is removed. - d->disconnectFromView(); -} - -/*! - \qmlproperty variant QtQuick.Controls::Tumbler::model - - This property holds the model that provides data for this tumbler. -*/ -QVariant QQuickTumbler::model() const -{ - Q_D(const QQuickTumbler); - return d->model; -} - -void QQuickTumbler::setModel(const QVariant &model) -{ - Q_D(QQuickTumbler); - if (model == d->model) - return; - - d->beginSetModel(); - - d->model = model; - emit modelChanged(); - - d->endSetModel(); - - d->currentIndexSetDuringModelChange = false; - - // Don't try to correct the currentIndex if count() isn't known yet. - // We can check in setupViewData() instead. - if (isComponentComplete() && d->view && count() == 0) - d->setCurrentIndex(-1); -} - -/*! - \qmlproperty int QtQuick.Controls::Tumbler::count - \readonly - - This property holds the number of items in the model. -*/ -int QQuickTumbler::count() const -{ - Q_D(const QQuickTumbler); - return d->count; -} - -/*! - \qmlproperty int QtQuick.Controls::Tumbler::currentIndex - - This property holds the index of the current item. - - The value of this property is \c -1 when \l count is equal to \c 0. In all - other cases, it will be greater than or equal to \c 0. - - \sa currentItem, positionViewAtIndex() -*/ -int QQuickTumbler::currentIndex() const -{ - Q_D(const QQuickTumbler); - return d->currentIndex; -} - -void QQuickTumbler::setCurrentIndex(int currentIndex) -{ - Q_D(QQuickTumbler); - if (d->modelBeingSet) - d->currentIndexSetDuringModelChange = true; - d->setCurrentIndex(currentIndex, QQuickTumblerPrivate::UserChange); -} - -/*! - \qmlproperty Item QtQuick.Controls::Tumbler::currentItem - \readonly - - This property holds the item at the current index. - - \sa currentIndex, positionViewAtIndex() -*/ -QQuickItem *QQuickTumbler::currentItem() const -{ - Q_D(const QQuickTumbler); - return d->view ? d->view->property("currentItem").value<QQuickItem*>() : nullptr; -} - -/*! - \qmlproperty Component QtQuick.Controls::Tumbler::delegate - - This property holds the delegate used to display each item. -*/ -QQmlComponent *QQuickTumbler::delegate() const -{ - Q_D(const QQuickTumbler); - return d->delegate; -} - -void QQuickTumbler::setDelegate(QQmlComponent *delegate) -{ - Q_D(QQuickTumbler); - if (delegate == d->delegate) - return; - - d->delegate = delegate; - emit delegateChanged(); -} - -/*! - \qmlproperty int QtQuick.Controls::Tumbler::visibleItemCount - - This property holds the number of items visible in the tumbler. It must be - an odd number, as the current item is always vertically centered. -*/ -int QQuickTumbler::visibleItemCount() const -{ - Q_D(const QQuickTumbler); - return d->visibleItemCount; -} - -void QQuickTumbler::setVisibleItemCount(int visibleItemCount) -{ - Q_D(QQuickTumbler); - if (visibleItemCount == d->visibleItemCount) - return; - - d->visibleItemCount = visibleItemCount; - d->_q_updateItemHeights(); - emit visibleItemCountChanged(); -} - -QQuickTumblerAttached *QQuickTumbler::qmlAttachedProperties(QObject *object) -{ - return new QQuickTumblerAttached(object); -} - -/*! - \qmlproperty bool QtQuick.Controls::Tumbler::wrap - \since QtQuick.Controls 2.1 (Qt 5.8) - - This property determines whether or not the tumbler wraps around when it - reaches the top or bottom. - - The default value is \c false when \l count is less than - \l visibleItemCount, as it is simpler to interact with a non-wrapping Tumbler - when there are only a few items. To override this behavior, explicitly set - the value of this property. To return to the default behavior, set this - property to \c undefined. -*/ -bool QQuickTumbler::wrap() const -{ - Q_D(const QQuickTumbler); - return d->wrap; -} - -void QQuickTumbler::setWrap(bool wrap) -{ - Q_D(QQuickTumbler); - d->setWrap(wrap, true); -} - -void QQuickTumbler::resetWrap() -{ - Q_D(QQuickTumbler); - d->explicitWrap = false; - d->setWrapBasedOnCount(); -} - -/*! - \qmlproperty bool QtQuick.Controls::Tumbler::moving - \since QtQuick.Controls 2.2 (Qt 5.9) - - This property describes whether the tumbler is currently moving, due to - the user either dragging or flicking it. -*/ -bool QQuickTumbler::isMoving() const -{ - Q_D(const QQuickTumbler); - return d->view && d->view->property("moving").toBool(); -} - -/*! - \qmlmethod void QtQuick.Controls::Tumbler::positionViewAtIndex(int index, PositionMode mode) - \since QtQuick.Controls 2.5 (Qt 5.12) - - Positions the view so that the \a index is at the position specified by \a mode. - - For example: - - \code - positionViewAtIndex(10, Tumbler.Center) - \endcode - - If \l wrap is true (the default), the modes available to \l {PathView}'s - \l {PathView::}{positionViewAtIndex()} function - are available, otherwise the modes available to \l {ListView}'s - \l {ListView::}{positionViewAtIndex()} function - are available. - - \note There is a known limitation that using \c Tumbler.Beginning when \l - wrap is \c true will result in the wrong item being positioned at the top - of view. As a workaround, pass \c {index - 1}. - - \sa currentIndex -*/ -void QQuickTumbler::positionViewAtIndex(int index, QQuickTumbler::PositionMode mode) -{ - Q_D(QQuickTumbler); - if (!d->view) { - d->warnAboutIncorrectContentItem(); - return; - } - - QMetaObject::invokeMethod(d->view, "positionViewAtIndex", Q_ARG(int, index), Q_ARG(int, mode)); -} - -void QQuickTumbler::geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) -{ - Q_D(QQuickTumbler); - - QQuickControl::geometryChange(newGeometry, oldGeometry); - - d->_q_updateItemHeights(); - - if (newGeometry.width() != oldGeometry.width()) - d->_q_updateItemWidths(); -} - -void QQuickTumbler::componentComplete() -{ - Q_D(QQuickTumbler); - qCDebug(lcTumbler) << "componentComplete()"; - QQuickControl::componentComplete(); - - if (!d->view) { - // Force the view to be created. - qCDebug(lcTumbler) << "emitting wrapChanged() to force view to be created"; - emit wrapChanged(); - // Determine the type of view for attached properties, etc. - d->setupViewData(d->contentItem); - } - - // If there was no contentItem or it was of an unsupported type, - // we don't have anything else to do. - if (!d->view) - return; - - // Update item heights after we've populated the model, - // otherwise ignoreSignals will cause these functions to return early. - d->_q_updateItemHeights(); - d->_q_updateItemWidths(); - d->_q_onViewCountChanged(); - - qCDebug(lcTumbler) << "componentComplete() is done"; -} - -void QQuickTumbler::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) -{ - Q_D(QQuickTumbler); - - QQuickControl::contentItemChange(newItem, oldItem); - - if (oldItem) - d->disconnectFromView(); - - if (newItem) { - // We wait until wrap is set to that we know which type of view to create. - // If we try to set up the view too early, we'll issue warnings about it not existing. - if (isComponentComplete()) { - // Make sure we use the new content item and not the current one, as that won't - // be changed until after contentItemChange() has finished. - d->setupViewData(newItem); - - d->_q_updateItemHeights(); - d->_q_updateItemWidths(); - } - } -} - -void QQuickTumblerPrivate::disconnectFromView() -{ - Q_Q(QQuickTumbler); - if (!view) { - // If a custom content item is declared, it can happen that - // the original contentItem exists without the view etc. having been - // determined yet, and then this is called when the custom content item - // is eventually set. - return; - } - - QObject::disconnect(view, SIGNAL(currentIndexChanged()), q, SLOT(_q_onViewCurrentIndexChanged())); - QObject::disconnect(view, SIGNAL(currentItemChanged()), q, SIGNAL(currentItemChanged())); - QObject::disconnect(view, SIGNAL(countChanged()), q, SLOT(_q_onViewCountChanged())); - QObject::disconnect(view, SIGNAL(movingChanged()), q, SIGNAL(movingChanged())); - - if (viewContentItemType == PathViewContentItem) - QObject::disconnect(view, SIGNAL(offsetChanged()), q, SLOT(_q_onViewOffsetChanged())); - else - QObject::disconnect(view, SIGNAL(contentYChanged()), q, SLOT(_q_onViewContentYChanged())); - - QQuickItemPrivate *oldViewContentItemPrivate = QQuickItemPrivate::get(viewContentItem); - oldViewContentItemPrivate->removeItemChangeListener(this, QQuickItemPrivate::Children | QQuickItemPrivate::Geometry); - - resetViewData(); -} - -void QQuickTumblerPrivate::setupViewData(QQuickItem *newControlContentItem) -{ - // Don't do anything if we've already set up. - if (view) - return; - - determineViewType(newControlContentItem); - - if (viewContentItemType == QQuickTumblerPrivate::NoContentItem) - return; - - if (viewContentItemType == QQuickTumblerPrivate::UnsupportedContentItemType) { - warnAboutIncorrectContentItem(); - return; - } - - Q_Q(QQuickTumbler); - QObject::connect(view, SIGNAL(currentIndexChanged()), q, SLOT(_q_onViewCurrentIndexChanged())); - QObject::connect(view, SIGNAL(currentItemChanged()), q, SIGNAL(currentItemChanged())); - QObject::connect(view, SIGNAL(countChanged()), q, SLOT(_q_onViewCountChanged())); - QObject::connect(view, SIGNAL(movingChanged()), q, SIGNAL(movingChanged())); - - if (viewContentItemType == PathViewContentItem) { - QObject::connect(view, SIGNAL(offsetChanged()), q, SLOT(_q_onViewOffsetChanged())); - _q_onViewOffsetChanged(); - } else { - QObject::connect(view, SIGNAL(contentYChanged()), q, SLOT(_q_onViewContentYChanged())); - _q_onViewContentYChanged(); - } - - QQuickItemPrivate *viewContentItemPrivate = QQuickItemPrivate::get(viewContentItem); - viewContentItemPrivate->addItemChangeListener(this, QQuickItemPrivate::Children | QQuickItemPrivate::Geometry); - - // Sync the view's currentIndex with ours. - syncCurrentIndex(); - - calculateDisplacements(); -} - -void QQuickTumblerPrivate::warnAboutIncorrectContentItem() -{ - Q_Q(QQuickTumbler); - qmlWarning(q) << "Tumbler: contentItem must contain either a PathView or a ListView"; -} - -void QQuickTumblerPrivate::syncCurrentIndex() -{ - const int actualViewIndex = view->property("currentIndex").toInt(); - Q_Q(QQuickTumbler); - - const bool isPendingCurrentIndex = pendingCurrentIndex != -1; - const int indexToSet = isPendingCurrentIndex ? pendingCurrentIndex : currentIndex; - - // Nothing to do. - if (actualViewIndex == indexToSet) { - setPendingCurrentIndex(-1); - return; - } - - // actualViewIndex might be 0 or -1 for PathView and ListView respectively, - // but we always use -1 for that. - if (q->count() == 0 && actualViewIndex <= 0) - return; - - ignoreCurrentIndexChanges = true; - view->setProperty("currentIndex", QVariant(indexToSet)); - ignoreCurrentIndexChanges = false; - - if (view->property("currentIndex").toInt() == indexToSet) - setPendingCurrentIndex(-1); - else if (isPendingCurrentIndex) - q->polish(); -} - -void QQuickTumblerPrivate::setPendingCurrentIndex(int index) -{ - qCDebug(lcTumbler) << "setting pendingCurrentIndex to" << index; - pendingCurrentIndex = index; -} - -QString QQuickTumblerPrivate::propertyChangeReasonToString( - QQuickTumblerPrivate::PropertyChangeReason changeReason) -{ - return changeReason == UserChange ? QStringLiteral("UserChange") : QStringLiteral("InternalChange"); -} - -void QQuickTumblerPrivate::setCurrentIndex(int newCurrentIndex, - QQuickTumblerPrivate::PropertyChangeReason changeReason) -{ - Q_Q(QQuickTumbler); - qCDebug(lcTumbler).nospace() << "setting currentIndex to " << newCurrentIndex - << ", old currentIndex was " << currentIndex - << ", changeReason is " << propertyChangeReasonToString(changeReason); - if (newCurrentIndex == currentIndex || newCurrentIndex < -1) - return; - - if (!q->isComponentComplete()) { - // Views can't set currentIndex until they're ready. - qCDebug(lcTumbler) << "we're not complete; setting pendingCurrentIndex instead"; - setPendingCurrentIndex(newCurrentIndex); - return; - } - - if (modelBeingSet && changeReason == UserChange) { - // If modelBeingSet is true and the user set the currentIndex, - // the model is in the process of being set and the user has set - // the currentIndex in onModelChanged. We have to queue the currentIndex - // change until we're ready. - qCDebug(lcTumbler) << "a model is being set; setting pendingCurrentIndex instead"; - setPendingCurrentIndex(newCurrentIndex); - return; - } - - // -1 doesn't make sense for a non-empty Tumbler, because unlike - // e.g. ListView, there's always one item selected. - // Wait until the component has finished before enforcing this rule, though, - // because the count might not be known yet. - if ((count > 0 && newCurrentIndex == -1) || (newCurrentIndex >= count)) { - return; - } - - // The view might not have been created yet, as is the case - // if you create a Tumbler component and pass e.g. { currentIndex: 2 } - // to createObject(). - if (view) { - // Only actually set our currentIndex if the view was able to set theirs. - bool couldSet = false; - if (count == 0 && newCurrentIndex == -1) { - // PathView insists on using 0 as the currentIndex when there are no items. - couldSet = true; - } else { - ignoreCurrentIndexChanges = true; - ignoreSignals = true; - view->setProperty("currentIndex", newCurrentIndex); - ignoreSignals = false; - ignoreCurrentIndexChanges = false; - - couldSet = view->property("currentIndex").toInt() == newCurrentIndex; - } - - if (couldSet) { - // The view's currentIndex might not have actually changed, but ours has, - // and that's what user code sees. - currentIndex = newCurrentIndex; - emit q->currentIndexChanged(); - } - - qCDebug(lcTumbler) << "view's currentIndex is now" << view->property("currentIndex").toInt() - << "and ours is" << currentIndex; - } -} - -void QQuickTumblerPrivate::setCount(int newCount) -{ - qCDebug(lcTumbler).nospace() << "setting count to " << newCount - << ", old count was " << count; - if (newCount == count) - return; - - count = newCount; - - Q_Q(QQuickTumbler); - setWrapBasedOnCount(); - - emit q->countChanged(); -} - -void QQuickTumblerPrivate::setWrapBasedOnCount() -{ - if (count == 0 || explicitWrap || modelBeingSet) - return; - - setWrap(count >= visibleItemCount, false); -} - -void QQuickTumblerPrivate::setWrap(bool shouldWrap, bool isExplicit) -{ - qCDebug(lcTumbler) << "setting wrap to" << shouldWrap << "- exlicit?" << isExplicit; - if (isExplicit) - explicitWrap = true; - - Q_Q(QQuickTumbler); - if (q->isComponentComplete() && shouldWrap == wrap) - return; - - // Since we use the currentIndex of the contentItem directly, we must - // ensure that we keep track of the currentIndex so it doesn't get lost - // between view changes. - const int oldCurrentIndex = currentIndex; - - disconnectFromView(); - - wrap = shouldWrap; - - // New views will set their currentIndex upon creation, which we'd otherwise - // take as the correct one, so we must ignore them. - ignoreCurrentIndexChanges = true; - - // This will cause the view to be created if our contentItem is a TumblerView. - emit q->wrapChanged(); - - ignoreCurrentIndexChanges = false; - - // If isComponentComplete() is true, we require a contentItem. If it's not - // true, it might not have been created yet, so we wait until - // componentComplete() is called. - // - // When the contentItem (usually QQuickTumblerView) has been created, we - // can start determining its type, etc. If the delegates use attached - // properties, this will have already been called, in which case it will - // return early. If the delegate doesn't use attached properties, we need - // to call it here. - if (q->isComponentComplete() || contentItem) - setupViewData(contentItem); - - setCurrentIndex(oldCurrentIndex); -} - -void QQuickTumblerPrivate::beginSetModel() -{ - modelBeingSet = true; -} - -void QQuickTumblerPrivate::endSetModel() -{ - modelBeingSet = false; - setWrapBasedOnCount(); -} - -void QQuickTumbler::keyPressEvent(QKeyEvent *event) -{ - QQuickControl::keyPressEvent(event); - - Q_D(QQuickTumbler); - if (event->isAutoRepeat() || !d->view) - return; - - if (event->key() == Qt::Key_Up) { - QMetaObject::invokeMethod(d->view, "decrementCurrentIndex"); - } else if (event->key() == Qt::Key_Down) { - QMetaObject::invokeMethod(d->view, "incrementCurrentIndex"); - } -} - -void QQuickTumbler::updatePolish() -{ - Q_D(QQuickTumbler); - if (d->pendingCurrentIndex != -1) { - // Update our count, as ignoreSignals might have been true - // when _q_onViewCountChanged() was last called. - d->setCount(d->view->property("count").toInt()); - - // If the count is still 0, it's not going to happen. - if (d->count == 0) { - d->setPendingCurrentIndex(-1); - return; - } - - // If there is a pending currentIndex at this stage, it means that - // the view wouldn't set our currentIndex in _q_onViewCountChanged - // because it wasn't ready. Try one last time here. - d->setCurrentIndex(d->pendingCurrentIndex); - - if (d->currentIndex != d->pendingCurrentIndex && d->currentIndex == -1) { - // If we *still* couldn't set it, it's probably invalid. - // See if we can at least enforce our rule of "non-negative currentIndex when count > 0" instead. - d->setCurrentIndex(0); - } - - d->setPendingCurrentIndex(-1); - } -} - -QFont QQuickTumbler::defaultFont() const -{ - return QQuickTheme::font(QQuickTheme::Tumbler); -} - -void QQuickTumblerAttachedPrivate::init(QQuickItem *delegateItem) -{ - if (!delegateItem->parentItem()) { - qWarning() << "Tumbler: attached properties must be accessed through a delegate item that has a parent"; - return; - } - - QVariant indexContextProperty = qmlContext(delegateItem)->contextProperty(QStringLiteral("index")); - if (!indexContextProperty.isValid()) { - qWarning() << "Tumbler: attempting to access attached property on item without an \"index\" property"; - return; - } - - index = indexContextProperty.toInt(); - - QQuickItem *parentItem = delegateItem; - while ((parentItem = parentItem->parentItem())) { - if ((tumbler = qobject_cast<QQuickTumbler*>(parentItem))) - break; - } -} - -void QQuickTumblerAttachedPrivate::calculateDisplacement() -{ - const qreal previousDisplacement = displacement; - displacement = 0; - - if (!tumbler) { - // Can happen if the attached properties are accessed on the wrong type of item or the tumbler was destroyed. - // We don't want to emit the change signal though, as this could cause warnings about Tumbler.tumbler being null. - return; - } - - // Can happen if there is no ListView or PathView within the contentItem. - QQuickTumblerPrivate *tumblerPrivate = QQuickTumblerPrivate::get(tumbler); - if (!tumblerPrivate->viewContentItem) { - emitIfDisplacementChanged(previousDisplacement, displacement); - return; - } - - // The attached property gets created before our count is updated, so just cheat here - // to avoid having to listen to count changes. - const int count = tumblerPrivate->view->property("count").toInt(); - // This can happen in tests, so it may happen in normal usage too. - if (count == 0) { - emitIfDisplacementChanged(previousDisplacement, displacement); - return; - } - - if (tumblerPrivate->viewContentItemType == QQuickTumblerPrivate::PathViewContentItem) { - const qreal offset = tumblerPrivate->viewOffset; - - displacement = count > 1 ? count - index - offset : 0; - // Don't add 1 if count <= visibleItemCount - const int visibleItems = tumbler->visibleItemCount(); - const int halfVisibleItems = visibleItems / 2 + (visibleItems < count ? 1 : 0); - if (displacement > halfVisibleItems) - displacement -= count; - else if (displacement < -halfVisibleItems) - displacement += count; - } else { - const qreal contentY = tumblerPrivate->viewContentY; - const qreal delegateH = delegateHeight(tumbler); - const qreal preferredHighlightBegin = tumblerPrivate->view->property("preferredHighlightBegin").toReal(); - const qreal itemY = qobject_cast<QQuickItem*>(parent)->y(); - qreal currentItemY = 0; - auto currentItem = tumblerPrivate->view->property("currentItem").value<QQuickItem*>(); - if (currentItem) - currentItemY = currentItem->y(); - // Start from the y position of the current item. - const qreal topOfCurrentItemInViewport = currentItemY - contentY; - // Then, calculate the distance between it and the preferredHighlightBegin. - const qreal relativePositionToPreferredHighlightBegin = topOfCurrentItemInViewport - preferredHighlightBegin; - // Next, calculate the distance between us and the current item. - const qreal distanceFromCurrentItem = currentItemY - itemY; - const qreal displacementInPixels = distanceFromCurrentItem - relativePositionToPreferredHighlightBegin; - // Convert it from pixels to a floating point index. - displacement = displacementInPixels / delegateH; - } - - emitIfDisplacementChanged(previousDisplacement, displacement); -} - -void QQuickTumblerAttachedPrivate::emitIfDisplacementChanged(qreal oldDisplacement, qreal newDisplacement) -{ - Q_Q(QQuickTumblerAttached); - if (newDisplacement != oldDisplacement) - emit q->displacementChanged(); -} - -QQuickTumblerAttached::QQuickTumblerAttached(QObject *parent) - : QObject(*(new QQuickTumblerAttachedPrivate), parent) -{ - Q_D(QQuickTumblerAttached); - QQuickItem *delegateItem = qobject_cast<QQuickItem *>(parent); - if (delegateItem) - d->init(delegateItem); - else if (parent) - qmlWarning(parent) << "Tumbler: attached properties of Tumbler must be accessed through a delegate item"; - - if (d->tumbler) { - // When the Tumbler is completed, wrapChanged() is emitted to let QQuickTumblerView - // know that it can create the view. The view itself might instantiate delegates - // that use attached properties. At this point, setupViewData() hasn't been called yet - // (it's called on the next line in componentComplete()), so we call it here so that - // we have access to the view. - QQuickTumblerPrivate *tumblerPrivate = QQuickTumblerPrivate::get(d->tumbler); - tumblerPrivate->setupViewData(tumblerPrivate->contentItem); - - if (delegateItem && delegateItem->parentItem() == tumblerPrivate->viewContentItem) { - // This item belongs to the "new" view, meaning that the tumbler's contentItem - // was probably assigned declaratively. If they're not equal, calling - // calculateDisplacement() would use the old contentItem data, which is bad. - d->calculateDisplacement(); - } - } -} - -/*! - \qmlattachedproperty Tumbler QtQuick.Controls::Tumbler::tumbler - \readonly - - This attached property holds the tumbler. The property can be attached to - a tumbler delegate. The value is \c null if the item is not a tumbler delegate. -*/ -QQuickTumbler *QQuickTumblerAttached::tumbler() const -{ - Q_D(const QQuickTumblerAttached); - return d->tumbler; -} - -/*! - \qmlattachedproperty real QtQuick.Controls::Tumbler::displacement - \readonly - - This attached property holds a value from \c {-visibleItemCount / 2} to - \c {visibleItemCount / 2}, which represents how far away this item is from - being the current item, with \c 0 being completely current. - - For example, the item below will be 40% opaque when it is not the current item, - and transition to 100% opacity when it becomes the current item: - - \code - delegate: Text { - text: modelData - opacity: 0.4 + Math.max(0, 1 - Math.abs(Tumbler.displacement)) * 0.6 - } - \endcode -*/ -qreal QQuickTumblerAttached::displacement() const -{ - Q_D(const QQuickTumblerAttached); - return d->displacement; -} - -QT_END_NAMESPACE - -#include "moc_qquicktumbler_p.cpp" diff --git a/src/quicktemplates2/qquicktumbler_p.h b/src/quicktemplates2/qquicktumbler_p.h deleted file mode 100644 index f9d5a13b..00000000 --- a/src/quicktemplates2/qquicktumbler_p.h +++ /dev/null @@ -1,179 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTUMBLER_P_H -#define QQUICKTUMBLER_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qvariant.h> -#include <QtQml/qqmlcomponent.h> -#include <QtQuickTemplates2/private/qquickcontrol_p.h> - -QT_BEGIN_NAMESPACE - -class QQuickTumblerAttached; -class QQuickTumblerPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTumbler : public QQuickControl -{ - Q_OBJECT - Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged FINAL) - Q_PROPERTY(int count READ count NOTIFY countChanged FINAL) - Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged FINAL) - Q_PROPERTY(QQuickItem *currentItem READ currentItem NOTIFY currentItemChanged FINAL) - Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL) - Q_PROPERTY(int visibleItemCount READ visibleItemCount WRITE setVisibleItemCount NOTIFY visibleItemCountChanged FINAL) - // 2.1 (Qt 5.8) - Q_PROPERTY(bool wrap READ wrap WRITE setWrap RESET resetWrap NOTIFY wrapChanged FINAL REVISION(2, 1)) - // 2.2 (Qt 5.9) - Q_PROPERTY(bool moving READ isMoving NOTIFY movingChanged FINAL REVISION(2, 2)) - QML_NAMED_ELEMENT(Tumbler) - QML_ATTACHED(QQuickTumblerAttached) - QML_ADDED_IN_VERSION(2, 0) - -public: - explicit QQuickTumbler(QQuickItem *parent = nullptr); - ~QQuickTumbler(); - - QVariant model() const; - void setModel(const QVariant &model); - - int count() const; - - int currentIndex() const; - void setCurrentIndex(int currentIndex); - QQuickItem *currentItem() const; - - QQmlComponent *delegate() const; - void setDelegate(QQmlComponent *delegate); - - int visibleItemCount() const; - void setVisibleItemCount(int visibleItemCount); - - static QQuickTumblerAttached *qmlAttachedProperties(QObject *object); - - // 2.1 (Qt 5.8) - bool wrap() const; - void setWrap(bool wrap); - void resetWrap(); - - // 2.2 (Qt 5.9) - bool isMoving() const; - - enum PositionMode { - Beginning, - Center, - End, - Visible, // ListView-only - Contain, - SnapPosition - }; - Q_ENUM(PositionMode) - - // 2.5 (Qt 5.12) - Q_REVISION(2, 5) Q_INVOKABLE void positionViewAtIndex(int index, PositionMode mode); - -Q_SIGNALS: - void modelChanged(); - void countChanged(); - void currentIndexChanged(); - void currentItemChanged(); - void delegateChanged(); - void visibleItemCountChanged(); - // 2.1 (Qt 5.8) - Q_REVISION(2, 1) void wrapChanged(); - // 2.2 (Qt 5.9) - Q_REVISION(2, 2) void movingChanged(); - -protected: - void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override; - void componentComplete() override; - void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override; - void keyPressEvent(QKeyEvent *event) override; - void updatePolish() override; - - QFont defaultFont() const override; - -private: - Q_DISABLE_COPY(QQuickTumbler) - Q_DECLARE_PRIVATE(QQuickTumbler) - - Q_PRIVATE_SLOT(d_func(), void _q_updateItemWidths()) - Q_PRIVATE_SLOT(d_func(), void _q_updateItemHeights()) - Q_PRIVATE_SLOT(d_func(), void _q_onViewCurrentIndexChanged()) - Q_PRIVATE_SLOT(d_func(), void _q_onViewCountChanged()) - Q_PRIVATE_SLOT(d_func(), void _q_onViewOffsetChanged()) - Q_PRIVATE_SLOT(d_func(), void _q_onViewContentYChanged()) -}; - -class QQuickTumblerAttachedPrivate; - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTumblerAttached : public QObject -{ - Q_OBJECT - Q_PROPERTY(QQuickTumbler *tumbler READ tumbler CONSTANT FINAL) - Q_PROPERTY(qreal displacement READ displacement NOTIFY displacementChanged FINAL) - -public: - explicit QQuickTumblerAttached(QObject *parent = nullptr); - - QQuickTumbler *tumbler() const; - qreal displacement() const; - -Q_SIGNALS: - void displacementChanged(); - -private: - Q_DISABLE_COPY(QQuickTumblerAttached) - Q_DECLARE_PRIVATE(QQuickTumblerAttached) -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QQuickTumbler) -QML_DECLARE_TYPEINFO(QQuickTumbler, QML_HAS_ATTACHED_PROPERTIES) - -#endif // QQUICKTUMBLER_P_H diff --git a/src/quicktemplates2/qquicktumbler_p_p.h b/src/quicktemplates2/qquicktumbler_p_p.h deleted file mode 100644 index aa5d58c0..00000000 --- a/src/quicktemplates2/qquicktumbler_p_p.h +++ /dev/null @@ -1,155 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKTUMBLER_P_P_H -#define QQUICKTUMBLER_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qquickcontrol_p_p.h> -#include <QtQuickTemplates2/private/qquicktumbler_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTumblerPrivate : public QQuickControlPrivate -{ - Q_DECLARE_PUBLIC(QQuickTumbler) - -public: - enum ContentItemType { - NoContentItem, - UnsupportedContentItemType, - PathViewContentItem, - ListViewContentItem - }; - - QQuickItem *determineViewType(QQuickItem *contentItem); - void resetViewData(); - QList<QQuickItem *> viewContentItemChildItems() const; - - static QQuickTumblerPrivate *get(QQuickTumbler *tumbler); - - QPalette defaultPalette() const override; - - QVariant model; - QQmlComponent *delegate = nullptr; - int visibleItemCount = 5; - bool wrap = true; - bool explicitWrap = false; - bool modelBeingSet = false; - bool currentIndexSetDuringModelChange = false; - QQuickItem *view = nullptr; - QQuickItem *viewContentItem = nullptr; - ContentItemType viewContentItemType = UnsupportedContentItemType; - union { - qreal viewOffset; // PathView - qreal viewContentY; // ListView - }; - int currentIndex = -1; - int pendingCurrentIndex = -1; - bool ignoreCurrentIndexChanges = false; - int count = 0; - bool ignoreSignals = false; - - void _q_updateItemHeights(); - void _q_updateItemWidths(); - void _q_onViewCurrentIndexChanged(); - void _q_onViewCountChanged(); - void _q_onViewOffsetChanged(); - void _q_onViewContentYChanged(); - - void calculateDisplacements(); - - void disconnectFromView(); - void setupViewData(QQuickItem *newControlContentItem); - void warnAboutIncorrectContentItem(); - void syncCurrentIndex(); - void setPendingCurrentIndex(int index); - - enum PropertyChangeReason { - UserChange, - InternalChange - }; - - static QString propertyChangeReasonToString(PropertyChangeReason changeReason); - - void setCurrentIndex(int newCurrentIndex, PropertyChangeReason changeReason = InternalChange); - void setCount(int newCount); - void setWrapBasedOnCount(); - void setWrap(bool shouldWrap, bool isExplicit); - void beginSetModel(); - void endSetModel(); - - void itemChildAdded(QQuickItem *, QQuickItem *) override; - void itemChildRemoved(QQuickItem *, QQuickItem *) override; - void itemGeometryChanged(QQuickItem *, QQuickGeometryChange , const QRectF &) override; -}; - -class QQuickTumblerAttachedPrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QQuickTumblerAttached) - -public: - static QQuickTumblerAttachedPrivate *get(QQuickTumblerAttached *attached) - { - return attached->d_func(); - } - - void init(QQuickItem *delegateItem); - - void calculateDisplacement(); - void emitIfDisplacementChanged(qreal oldDisplacement, qreal newDisplacement); - - // The Tumbler that contains the delegate. Required to calculated the displacement. - QPointer<QQuickTumbler> tumbler; - // The index of the delegate. Used to calculate the displacement. - int index = -1; - // The displacement for our delegate. - qreal displacement = 0; -}; - -QT_END_NAMESPACE - -#endif // QQUICKTUMBLER_P_P_H diff --git a/src/quicktemplates2/qquickvelocitycalculator.cpp b/src/quicktemplates2/qquickvelocitycalculator.cpp deleted file mode 100644 index a0c5ec0d..00000000 --- a/src/quicktemplates2/qquickvelocitycalculator.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickvelocitycalculator_p_p.h" - -#include <QtCore/qdebug.h> - -QT_BEGIN_NAMESPACE - -/* - Usage: - - QQuickVelocityCalculator velocityCalculator; - - // ... - - velocityCalcular.startMeasuring(event->pos(), event->timestamp()); - velocityCalcular.stopMeasuring(event->pos(), event->timestamp()); - - // ... - - if (velocityCalculator.velocity().x() > someAmount) - doSomething(); - else if (velocityCalculator.velocity().x() < -someAmount) - doSomethingElse(); -*/ - -void QQuickVelocityCalculator::startMeasuring(const QPointF &point1, qint64 timestamp) -{ - m_point1 = point1; - - if (timestamp != 0) - m_point1Timestamp = timestamp; - else - m_timer.start(); -} - -void QQuickVelocityCalculator::stopMeasuring(const QPointF &point2, qint64 timestamp) -{ - if (timestamp == 0 && !m_timer.isValid()) { - qWarning() << "QQuickVelocityCalculator: a call to stopMeasuring() must be preceded by a call to startMeasuring()"; - return; - } - - m_point2 = point2; - m_point2Timestamp = timestamp != 0 ? timestamp : m_timer.elapsed(); - m_timer.invalidate(); -} - -void QQuickVelocityCalculator::reset() -{ - m_point1 = QPointF(); - m_point2 = QPointF(); - m_point1Timestamp = 0; - m_point2Timestamp = 0; - m_timer.invalidate(); -} - -QPointF QQuickVelocityCalculator::velocity() const -{ - if ((m_point2Timestamp == 0 || m_point1Timestamp == m_point2Timestamp) && !m_timer.isValid()) - return QPointF(); - - const qreal secondsElapsed = (m_point2Timestamp != 0 ? m_point2Timestamp - m_point1Timestamp : m_timer.elapsed()) / 1000.0; - const QPointF distance = m_point2 - m_point1; - return distance / secondsElapsed; -} - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickvelocitycalculator_p_p.h b/src/quicktemplates2/qquickvelocitycalculator_p_p.h deleted file mode 100644 index 2b13ff07..00000000 --- a/src/quicktemplates2/qquickvelocitycalculator_p_p.h +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKVELOCITYCALCULATOR_P_P_H -#define QQUICKVELOCITYCALCULATOR_P_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qpoint.h> -#include <QtCore/qelapsedtimer.h> - -QT_BEGIN_NAMESPACE - -class QQuickVelocityCalculator -{ -public: - void startMeasuring(const QPointF &point1, qint64 timestamp = 0); - void stopMeasuring(const QPointF &m_point2, qint64 timestamp = 0); - void reset(); - QPointF velocity() const; - -private: - QPointF m_point1; - QPointF m_point2; - qint64 m_point1Timestamp = 0; - qint64 m_point2Timestamp = 0; - // When a timestamp isn't available, we must use a timer. - // When stopMeasuring() has been called, we store the elapsed time in point2timestamp. - QElapsedTimer m_timer; -}; - -QT_END_NAMESPACE - -#endif // QQUICKVELOCITYCALCULATOR_P_P_H diff --git a/src/quicktemplates2/qt_cmdline.cmake b/src/quicktemplates2/qt_cmdline.cmake deleted file mode 100644 index e69de29b..00000000 --- a/src/quicktemplates2/qt_cmdline.cmake +++ /dev/null diff --git a/src/quicktemplates2/qtquicktemplates2global.cpp b/src/quicktemplates2/qtquicktemplates2global.cpp deleted file mode 100644 index 5d7816b4..00000000 --- a/src/quicktemplates2/qtquicktemplates2global.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtQuick module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "qquickpage_p.h" -#include "accessible/qaccessiblequickpage_p.h" - -QT_BEGIN_NAMESPACE - -#if QT_CONFIG(accessibility) -static QAccessibleInterface *qQuickAccessibleFactory(const QString &classname, QObject *object) -{ - if (classname == u"QQuickPage") { - return new QAccessibleQuickPage(qobject_cast<QQuickPage *>(object)); - } - return nullptr; -} -#endif - -void QQuickTemplates_initializeModule() -{ -#if QT_CONFIG(accessibility) - QAccessible::installFactory(&qQuickAccessibleFactory); -#endif -} - -Q_CONSTRUCTOR_FUNCTION(QQuickTemplates_initializeModule) - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qtquicktemplates2global_p.h b/src/quicktemplates2/qtquicktemplates2global_p.h deleted file mode 100644 index db848229..00000000 --- a/src/quicktemplates2/qtquicktemplates2global_p.h +++ /dev/null @@ -1,73 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QTQUICKTEMPLATES2GLOBAL_P_H -#define QTQUICKTEMPLATES2GLOBAL_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qglobal.h> -#include <QtQml/private/qqmlglobal_p.h> -#include <QtQuickTemplates2/private/qtquicktemplates2-config_p.h> - -QT_BEGIN_NAMESPACE - -#ifndef QT_STATIC -# if defined(QT_BUILD_QUICKTEMPLATES2_LIB) -# define Q_QUICKTEMPLATES2_PRIVATE_EXPORT Q_DECL_EXPORT -# else -# define Q_QUICKTEMPLATES2_PRIVATE_EXPORT Q_DECL_IMPORT -# endif -#else -# define Q_QUICKTEMPLATES2_PRIVATE_EXPORT -#endif - -Q_QUICKTEMPLATES2_PRIVATE_EXPORT void QQuickTemplates_initializeModule(); - -QT_END_NAMESPACE - -Q_QUICKTEMPLATES2_PRIVATE_EXPORT void qml_register_types_QtQuick_Templates(); - -#endif // QTQUICKTEMPLATES2GLOBAL_P_H diff --git a/src/quicktemplates2/qtquicktemplates2plugin.cpp b/src/quicktemplates2/qtquicktemplates2plugin.cpp deleted file mode 100644 index 644d7dce..00000000 --- a/src/quicktemplates2/qtquicktemplates2plugin.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtQml/qqmlextensionplugin.h> -#include <QtQml/private/qqmlglobal_p.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> - -#if QT_CONFIG(shortcut) -#include <QtQuickTemplates2/private/qquickshortcutcontext_p_p.h> - -// qtdeclarative/src/quick/util/qquickshortcut.cpp -typedef bool (*ShortcutContextMatcher)(QObject *, Qt::ShortcutContext); -extern ShortcutContextMatcher qt_quick_shortcut_context_matcher(); -extern void qt_quick_set_shortcut_context_matcher(ShortcutContextMatcher matcher); -#endif - -QT_BEGIN_NAMESPACE - -class QtQuickTemplates2Plugin : public QQmlExtensionPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) - -public: - QtQuickTemplates2Plugin(QObject *parent = nullptr); - ~QtQuickTemplates2Plugin(); - - void registerTypes(const char *uri) override; - void unregisterTypes() override; - -private: - bool registered; -#if QT_CONFIG(shortcut) - ShortcutContextMatcher originalContextMatcher; -#endif -}; - -QtQuickTemplates2Plugin::QtQuickTemplates2Plugin(QObject *parent) - : QQmlExtensionPlugin(parent), registered(false) -{ - volatile auto registration = &qml_register_types_QtQuick_Templates; - volatile auto initialization = &QQuickTemplates_initializeModule; - - Q_UNUSED(registration) - Q_UNUSED(initialization) -} - -QtQuickTemplates2Plugin::~QtQuickTemplates2Plugin() -{ - // Intentionally empty: we use register/unregisterTypes() to do - // initialization and cleanup, as plugins are not unloaded on macOS. -} - -void QtQuickTemplates2Plugin::registerTypes(const char * /*uri*/) -{ -#if QT_CONFIG(shortcut) - originalContextMatcher = qt_quick_shortcut_context_matcher(); - qt_quick_set_shortcut_context_matcher(QQuickShortcutContext::matcher); -#endif - - registered = true; -} - -void QtQuickTemplates2Plugin::unregisterTypes() -{ -#if QT_CONFIG(shortcut) - qt_quick_set_shortcut_context_matcher(originalContextMatcher); -#endif -} - -QT_END_NAMESPACE - -#include "qtquicktemplates2plugin.moc" diff --git a/src/quicktemplates2/quicktemplates2.pri b/src/quicktemplates2/quicktemplates2.pri deleted file mode 100644 index 0f19de5e..00000000 --- a/src/quicktemplates2/quicktemplates2.pri +++ /dev/null @@ -1,182 +0,0 @@ -INCLUDEPATH += $$PWD - -HEADERS += \ - $$PWD/qquickabstractbutton_p.h \ - $$PWD/qquickabstractbutton_p_p.h \ - $$PWD/qquickaction_p.h \ - $$PWD/qquickactiongroup_p.h \ - $$PWD/qquickapplicationwindow_p.h \ - $$PWD/qquickbusyindicator_p.h \ - $$PWD/qquickbutton_p.h \ - $$PWD/qquickbutton_p_p.h \ - $$PWD/qquickbuttongroup_p.h \ - $$PWD/qquickcheckbox_p.h \ - $$PWD/qquickcheckdelegate_p.h \ - $$PWD/qquickcombobox_p.h \ - $$PWD/qquickcontainer_p.h \ - $$PWD/qquickcontainer_p_p.h \ - $$PWD/qquickcontentitem_p.h \ - $$PWD/qquickcontrol_p.h \ - $$PWD/qquickcontrol_p_p.h \ - $$PWD/qquickdeferredexecute_p_p.h \ - $$PWD/qquickdeferredpointer_p_p.h \ - $$PWD/qquickdelaybutton_p.h \ - $$PWD/qquickdial_p.h \ - $$PWD/qquickdialog_p.h \ - $$PWD/qquickdialog_p_p.h \ - $$PWD/qquickdialogbuttonbox_p.h \ - $$PWD/qquickdialogbuttonbox_p_p.h \ - $$PWD/qquickdrawer_p.h \ - $$PWD/qquickdrawer_p_p.h \ - $$PWD/qquickframe_p.h \ - $$PWD/qquickframe_p_p.h \ - $$PWD/qquickgroupbox_p.h \ - $$PWD/qquickheaderview_p.h \ - $$PWD/qquickheaderview_p_p.h \ - $$PWD/qquickicon_p.h \ - $$PWD/qquickindicatorbutton_p.h \ - $$PWD/qquickitemdelegate_p.h \ - $$PWD/qquickitemdelegate_p_p.h \ - $$PWD/qquicklabel_p.h \ - $$PWD/qquicklabel_p_p.h \ - $$PWD/qquickmenu_p.h \ - $$PWD/qquickmenu_p_p.h \ - $$PWD/qquickmenubar_p.h \ - $$PWD/qquickmenubar_p_p.h \ - $$PWD/qquickmenubaritem_p.h \ - $$PWD/qquickmenubaritem_p_p.h \ - $$PWD/qquickmenuitem_p.h \ - $$PWD/qquickmenuitem_p_p.h \ - $$PWD/qquickmenuseparator_p.h \ - $$PWD/qquickoverlay_p.h \ - $$PWD/qquickoverlay_p_p.h \ - $$PWD/qquickpage_p.h \ - $$PWD/qquickpage_p_p.h \ - $$PWD/qquickpageindicator_p.h \ - $$PWD/qquickpane_p.h \ - $$PWD/qquickpane_p_p.h \ - $$PWD/qquickpopup_p.h \ - $$PWD/qquickpopup_p_p.h \ - $$PWD/qquickpopupanchors_p.h \ - $$PWD/qquickpopupanchors_p_p.h \ - $$PWD/qquickpopupitem_p_p.h \ - $$PWD/qquickpopuppositioner_p_p.h \ - $$PWD/qquickpresshandler_p_p.h \ - $$PWD/qquickprogressbar_p.h \ - $$PWD/qquickradiobutton_p.h \ - $$PWD/qquickradiodelegate_p.h \ - $$PWD/qquickrangeslider_p.h \ - $$PWD/qquickroundbutton_p.h \ - $$PWD/qquickscrollbar_p.h \ - $$PWD/qquickscrollbar_p_p.h \ - $$PWD/qquickscrollindicator_p.h \ - $$PWD/qquickscrollview_p.h \ - $$PWD/qquickselectionrectangle_p.h \ - $$PWD/qquickselectionrectangle_p_p.h \ - $$PWD/qquickshortcutcontext_p_p.h \ - $$PWD/qquickslider_p.h \ - $$PWD/qquickspinbox_p.h \ - $$PWD/qquicksplitview_p.h \ - $$PWD/qquickstackelement_p_p.h \ - $$PWD/qquickstacktransition_p_p.h \ - $$PWD/qquickstackview_p.h \ - $$PWD/qquickstackview_p_p.h \ - $$PWD/qquickswipe_p.h \ - $$PWD/qquickswipedelegate_p.h \ - $$PWD/qquickswipedelegate_p_p.h \ - $$PWD/qquickswipeview_p.h \ - $$PWD/qquickswitch_p.h \ - $$PWD/qquickswitchdelegate_p.h \ - $$PWD/qquicktabbar_p.h \ - $$PWD/qquicktabbutton_p.h \ - $$PWD/qquicktextarea_p.h \ - $$PWD/qquicktextarea_p_p.h \ - $$PWD/qquicktextfield_p.h \ - $$PWD/qquicktextfield_p_p.h \ - $$PWD/qquicktheme_p.h \ - $$PWD/qquicktheme_p_p.h \ - $$PWD/qquicktoolbar_p.h \ - $$PWD/qquicktoolbutton_p.h \ - $$PWD/qquicktoolseparator_p.h \ - $$PWD/qquicktooltip_p.h \ - $$PWD/qquickvelocitycalculator_p_p.h - -SOURCES += \ - $$PWD/qquickabstractbutton.cpp \ - $$PWD/qquickaction.cpp \ - $$PWD/qquickactiongroup.cpp \ - $$PWD/qquickapplicationwindow.cpp \ - $$PWD/qquickbusyindicator.cpp \ - $$PWD/qquickbutton.cpp \ - $$PWD/qquickbuttongroup.cpp \ - $$PWD/qquickcheckbox.cpp \ - $$PWD/qquickcheckdelegate.cpp \ - $$PWD/qquickcombobox.cpp \ - $$PWD/qquickcontainer.cpp \ - $$PWD/qquickcontentitem.cpp \ - $$PWD/qquickcontrol.cpp \ - $$PWD/qquickdeferredexecute.cpp \ - $$PWD/qquickdelaybutton.cpp \ - $$PWD/qquickdial.cpp \ - $$PWD/qquickdialog.cpp \ - $$PWD/qquickdialogbuttonbox.cpp \ - $$PWD/qquickdrawer.cpp \ - $$PWD/qquickframe.cpp \ - $$PWD/qquickgroupbox.cpp \ - $$PWD/qquickheaderview.cpp \ - $$PWD/qquickicon.cpp \ - $$PWD/qquickindicatorbutton_p.cpp \ - $$PWD/qquickitemdelegate.cpp \ - $$PWD/qquicklabel.cpp \ - $$PWD/qquickmenu.cpp \ - $$PWD/qquickmenubar.cpp \ - $$PWD/qquickmenubaritem.cpp \ - $$PWD/qquickmenuitem.cpp \ - $$PWD/qquickmenuseparator.cpp \ - $$PWD/qquickoverlay.cpp \ - $$PWD/qquickpage.cpp \ - $$PWD/qquickpageindicator.cpp \ - $$PWD/qquickpane.cpp \ - $$PWD/qquickpopup.cpp \ - $$PWD/qquickpopupanchors.cpp \ - $$PWD/qquickpopupitem.cpp \ - $$PWD/qquickpopuppositioner.cpp \ - $$PWD/qquickpresshandler.cpp \ - $$PWD/qquickprogressbar.cpp \ - $$PWD/qquickradiobutton.cpp \ - $$PWD/qquickradiodelegate.cpp \ - $$PWD/qquickrangeslider.cpp \ - $$PWD/qquickroundbutton.cpp \ - $$PWD/qquickscrollbar.cpp \ - $$PWD/qquickscrollindicator.cpp \ - $$PWD/qquickscrollview.cpp \ - $$PWD/qquickshortcutcontext.cpp \ - $$PWD/qquickslider.cpp \ - $$PWD/qquickspinbox.cpp \ - $$PWD/qquicksplitview.cpp \ - $$PWD/qquickstackelement.cpp \ - $$PWD/qquickstacktransition.cpp \ - $$PWD/qquickstackview.cpp \ - $$PWD/qquickstackview_p.cpp \ - $$PWD/qquickswipedelegate.cpp \ - $$PWD/qquickswipeview.cpp \ - $$PWD/qquickswitch.cpp \ - $$PWD/qquickswitchdelegate.cpp \ - $$PWD/qquicktabbar.cpp \ - $$PWD/qquicktabbutton.cpp \ - $$PWD/qquicktextarea.cpp \ - $$PWD/qquicktextfield.cpp \ - $$PWD/qquicktheme.cpp \ - $$PWD/qquicktoolbar.cpp \ - $$PWD/qquicktoolbutton.cpp \ - $$PWD/qquicktoolseparator.cpp \ - $$PWD/qquicktooltip.cpp \ - $$PWD/qquickvelocitycalculator.cpp - -qtConfig(quick-listview):qtConfig(quick-pathview) { - HEADERS += \ - $$PWD/qquicktumbler_p.h \ - $$PWD/qquicktumbler_p_p.h - SOURCES += \ - $$PWD/qquicktumbler.cpp -} |