diff options
Diffstat (limited to 'src/quicknativestyle/items')
13 files changed, 183 insertions, 5 deletions
diff --git a/src/quicknativestyle/items/qquickstyleitem.h b/src/quicknativestyle/items/qquickstyleitem.h index 1ad8932d23..3d04371b7e 100644 --- a/src/quicknativestyle/items/qquickstyleitem.h +++ b/src/quicknativestyle/items/qquickstyleitem.h @@ -14,6 +14,8 @@ #include "qquickstyle.h" #include "qquickstyleoption.h" +#include <QtCore/qpointer.h> + // Work-around for now, to avoid creator getting confused // about missing macros. Should eventually be defined // in qt declarative somewhere I assume. @@ -274,6 +276,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickStyleItem::DebugFlags) QT_END_NAMESPACE -QML_DECLARE_TYPE(QQuickStyleItem) - #endif // QQUICKSTYLEITEM_H diff --git a/src/quicknativestyle/items/qquickstyleitembutton.h b/src/quicknativestyle/items/qquickstyleitembutton.h index 668013ac6f..82dff23048 100644 --- a/src/quicknativestyle/items/qquickstyleitembutton.h +++ b/src/quicknativestyle/items/qquickstyleitembutton.h @@ -23,7 +23,7 @@ protected: StyleItemGeometry calculateGeometry() override; private: - void initStyleOption(QStyleOptionButton &styleOption) const; + virtual void initStyleOption(QStyleOptionButton &styleOption) const; }; QT_END_NAMESPACE diff --git a/src/quicknativestyle/items/qquickstyleitemcheckbox.h b/src/quicknativestyle/items/qquickstyleitemcheckbox.h index 92cda579ef..f50c621d12 100644 --- a/src/quicknativestyle/items/qquickstyleitemcheckbox.h +++ b/src/quicknativestyle/items/qquickstyleitemcheckbox.h @@ -23,7 +23,7 @@ protected: StyleItemGeometry calculateGeometry() override; private: - void initStyleOption(QStyleOptionButton &styleOption) const; + virtual void initStyleOption(QStyleOptionButton &styleOption) const; }; QT_END_NAMESPACE diff --git a/src/quicknativestyle/items/qquickstyleitemcheckdelegate.cpp b/src/quicknativestyle/items/qquickstyleitemcheckdelegate.cpp new file mode 100644 index 0000000000..22576c50d2 --- /dev/null +++ b/src/quicknativestyle/items/qquickstyleitemcheckdelegate.cpp @@ -0,0 +1,32 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#include "qquickstyleitemcheckdelegate.h" + +#include <QtQuickTemplates2/private/qquickcheckdelegate_p.h> + +QT_BEGIN_NAMESPACE + +void QQuickStyleItemCheckDelegate::connectToControl() const +{ + QQuickStyleItem::connectToControl(); + auto checkDelegate = control<QQuickCheckDelegate>(); + connect(checkDelegate, &QQuickCheckDelegate::downChanged, this, &QQuickStyleItem::markImageDirty); + connect(checkDelegate, &QQuickCheckDelegate::checkStateChanged, this, &QQuickStyleItem::markImageDirty); +} + +void QQuickStyleItemCheckDelegate::initStyleOption(QStyleOptionButton &styleOption) const +{ + initStyleOptionBase(styleOption); + auto checkDelegate = control<QQuickCheckDelegate>(); + + styleOption.state |= checkDelegate->isDown() ? QStyle::State_Sunken : QStyle::State_Raised; + if (checkDelegate->isTristate() && checkDelegate->checkState() == Qt::PartiallyChecked) + styleOption.state |= QStyle::State_NoChange; + else + styleOption.state |= checkDelegate->isChecked() ? QStyle::State_On : QStyle::State_Off; +} + +QT_END_NAMESPACE + +#include "moc_qquickstyleitemcheckdelegate.cpp" diff --git a/src/quicknativestyle/items/qquickstyleitemcheckdelegate.h b/src/quicknativestyle/items/qquickstyleitemcheckdelegate.h new file mode 100644 index 0000000000..27ff42de25 --- /dev/null +++ b/src/quicknativestyle/items/qquickstyleitemcheckdelegate.h @@ -0,0 +1,25 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#ifndef QQUICKSTYLEITEMCHECKDELEGATE_H +#define QQUICKSTYLEITEMCHECKDELEGATE_H + +#include "qquickstyleitemcheckbox.h" + +QT_BEGIN_NAMESPACE + +class QQuickStyleItemCheckDelegate : public QQuickStyleItemCheckBox +{ + Q_OBJECT + QML_NAMED_ELEMENT(CheckDelegate) + +protected: + void connectToControl() const override; + +private: + void initStyleOption(QStyleOptionButton &styleOption) const override; +}; + +QT_END_NAMESPACE + +#endif // QQUICKSTYLEITEMCHECKDELEGATE_H diff --git a/src/quicknativestyle/items/qquickstyleitemdelaybutton.cpp b/src/quicknativestyle/items/qquickstyleitemdelaybutton.cpp new file mode 100644 index 0000000000..19309d11b6 --- /dev/null +++ b/src/quicknativestyle/items/qquickstyleitemdelaybutton.cpp @@ -0,0 +1,28 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#include "qquickstyleitemdelaybutton.h" + +#include <QtQuickTemplates2/private/qquickdelaybutton_p.h> + +QT_BEGIN_NAMESPACE + +void QQuickStyleItemDelayButton::connectToControl() const +{ + QQuickStyleItem::connectToControl(); + auto button = control<QQuickDelayButton>(); + connect(button, &QQuickButton::downChanged, this, &QQuickStyleItem::markImageDirty); + connect(button, &QQuickButton::checkedChanged, this, &QQuickStyleItem::markImageDirty); +} + +void QQuickStyleItemDelayButton::initStyleOption(QStyleOptionButton &styleOption) const +{ + initStyleOptionBase(styleOption); + auto button = control<QQuickDelayButton>(); + + styleOption.state |= button->isDown() ? QStyle::State_Sunken : QStyle::State_Raised; +} + +QT_END_NAMESPACE + +#include "moc_qquickstyleitemdelaybutton.cpp" diff --git a/src/quicknativestyle/items/qquickstyleitemdelaybutton.h b/src/quicknativestyle/items/qquickstyleitemdelaybutton.h new file mode 100644 index 0000000000..e2a0bf2174 --- /dev/null +++ b/src/quicknativestyle/items/qquickstyleitemdelaybutton.h @@ -0,0 +1,25 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#ifndef QQUICKSTYLEITEMDELAYBUTTON_H +#define QQUICKSTYLEITEMDELAYBUTTON_H + +#include "qquickstyleitembutton.h" + +QT_BEGIN_NAMESPACE + +class QQuickStyleItemDelayButton : public QQuickStyleItemButton +{ + Q_OBJECT + QML_NAMED_ELEMENT(DelayButton) + +protected: + void connectToControl() const override; + +private: + void initStyleOption(QStyleOptionButton &styleOption) const override; +}; + +QT_END_NAMESPACE + +#endif // QQUICKSTYLEITEMDELAYBUTTON_H diff --git a/src/quicknativestyle/items/qquickstyleitemdial.cpp b/src/quicknativestyle/items/qquickstyleitemdial.cpp index e2407e9e81..fe36f866e4 100644 --- a/src/quicknativestyle/items/qquickstyleitemdial.cpp +++ b/src/quicknativestyle/items/qquickstyleitemdial.cpp @@ -19,6 +19,8 @@ void QQuickStyleItemDial::connectToControl() const connect(dial, &QQuickDial::positionChanged, this, &QQuickStyleItem::markImageDirty); connect(dial, &QQuickDial::valueChanged, this, &QQuickStyleItem::markImageDirty); connect(dial, &QQuickDial::stepSizeChanged, this, &QQuickStyleItem::markImageDirty); + connect(dial, &QQuickDial::startAngleChanged, this, &QQuickStyleItem::markImageDirty); + connect(dial, &QQuickDial::endAngleChanged, this, &QQuickStyleItem::markImageDirty); connect(dial, &QQuickDial::pressedChanged, this, &QQuickStyleItem::markImageDirty); } @@ -54,6 +56,8 @@ void QQuickStyleItemDial::initStyleOption(QStyleOptionSlider &styleOption) const styleOption.tickInterval = dial->stepSize(); styleOption.dialWrapping = dial->wrap(); styleOption.upsideDown = true; + styleOption.startAngle = dial->startAngle(); + styleOption.endAngle = dial->endAngle(); if (dial->isPressed()) styleOption.state |= QStyle::State_Sunken; diff --git a/src/quicknativestyle/items/qquickstyleitemradiobutton.h b/src/quicknativestyle/items/qquickstyleitemradiobutton.h index 4674098116..209d2cc65f 100644 --- a/src/quicknativestyle/items/qquickstyleitemradiobutton.h +++ b/src/quicknativestyle/items/qquickstyleitemradiobutton.h @@ -23,7 +23,7 @@ protected: StyleItemGeometry calculateGeometry() override; private: - void initStyleOption(QStyleOptionButton &styleOption) const; + virtual void initStyleOption(QStyleOptionButton &styleOption) const; }; QT_END_NAMESPACE diff --git a/src/quicknativestyle/items/qquickstyleitemradiodelegate.cpp b/src/quicknativestyle/items/qquickstyleitemradiodelegate.cpp new file mode 100644 index 0000000000..a4325cfe15 --- /dev/null +++ b/src/quicknativestyle/items/qquickstyleitemradiodelegate.cpp @@ -0,0 +1,29 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#include "qquickstyleitemradiodelegate.h" + +#include <QtQuickTemplates2/private/qquickradiodelegate_p.h> + +QT_BEGIN_NAMESPACE + +void QQuickStyleItemRadioDelegate::connectToControl() const +{ + QQuickStyleItem::connectToControl(); + auto radioDelegate = control<QQuickRadioDelegate>(); + connect(radioDelegate, &QQuickRadioDelegate::downChanged, this, &QQuickStyleItem::markImageDirty); + connect(radioDelegate, &QQuickRadioDelegate::checkedChanged, this, &QQuickStyleItem::markImageDirty); +} + +void QQuickStyleItemRadioDelegate::initStyleOption(QStyleOptionButton &styleOption) const +{ + initStyleOptionBase(styleOption); + auto radioDelegate = control<QQuickRadioDelegate>(); + + styleOption.state |= radioDelegate->isDown() ? QStyle::State_Sunken : QStyle::State_Raised; + styleOption.state |= radioDelegate->isChecked() ? QStyle::State_On : QStyle::State_Off; +} + +QT_END_NAMESPACE + +#include "moc_qquickstyleitemradiodelegate.cpp" diff --git a/src/quicknativestyle/items/qquickstyleitemradiodelegate.h b/src/quicknativestyle/items/qquickstyleitemradiodelegate.h new file mode 100644 index 0000000000..3661ce792e --- /dev/null +++ b/src/quicknativestyle/items/qquickstyleitemradiodelegate.h @@ -0,0 +1,25 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#ifndef QQUICKSTYLEITEMRADIODELEGATE_H +#define QQUICKSTYLEITEMRADIODELEGATE_H + +#include "qquickstyleitemradiobutton.h" + +QT_BEGIN_NAMESPACE + +class QQuickStyleItemRadioDelegate : public QQuickStyleItemRadioButton +{ + Q_OBJECT + QML_NAMED_ELEMENT(RadioDelegate) + +protected: + void connectToControl() const override; + +private: + void initStyleOption(QStyleOptionButton &styleOption) const override; +}; + +QT_END_NAMESPACE + +#endif // QQUICKSTYLEITEMRADIODELEGATE_H diff --git a/src/quicknativestyle/items/qquickstyleitemscrollbar.cpp b/src/quicknativestyle/items/qquickstyleitemscrollbar.cpp index c328ab6d1f..097341eb56 100644 --- a/src/quicknativestyle/items/qquickstyleitemscrollbar.cpp +++ b/src/quicknativestyle/items/qquickstyleitemscrollbar.cpp @@ -5,6 +5,14 @@ QT_BEGIN_NAMESPACE +QQuickStyleItemScrollBar::QQuickStyleItemScrollBar(QQuickItem *parent) + : QQuickStyleItem(parent) +{ +#ifdef QT_DEBUG + setObjectName("styleItemScrollBar"); +#endif +} + QFont QQuickStyleItemScrollBar::styleFont(QQuickItem *control) const { return style()->font(QStyle::CE_ProgressBarLabel, controlSize(control)); diff --git a/src/quicknativestyle/items/qquickstyleitemscrollbar.h b/src/quicknativestyle/items/qquickstyleitemscrollbar.h index 6ef232420f..57a9c19059 100644 --- a/src/quicknativestyle/items/qquickstyleitemscrollbar.h +++ b/src/quicknativestyle/items/qquickstyleitemscrollbar.h @@ -26,6 +26,8 @@ public: }; Q_ENUM(SubControl) + explicit QQuickStyleItemScrollBar(QQuickItem *parent = nullptr); + QFont styleFont(QQuickItem *control) const override; protected: |