diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/controls/qquickcontrol.cpp | 18 | ||||
-rw-r--r-- | src/controls/qquickcontrol_p.h | 5 | ||||
-rw-r--r-- | src/controls/qquickprogressbar.cpp | 2 | ||||
-rw-r--r-- | src/controls/qquickslider.cpp | 8 | ||||
-rw-r--r-- | src/imports/controls/CheckBox.qml | 8 | ||||
-rw-r--r-- | src/imports/controls/ProgressBar.qml | 2 | ||||
-rw-r--r-- | src/imports/controls/RadioButton.qml | 8 | ||||
-rw-r--r-- | src/imports/controls/Slider.qml | 2 | ||||
-rw-r--r-- | src/imports/controls/Switch.qml | 8 | ||||
-rw-r--r-- | src/imports/controls/ToggleButton.qml | 8 |
10 files changed, 31 insertions, 38 deletions
diff --git a/src/controls/qquickcontrol.cpp b/src/controls/qquickcontrol.cpp index 5b2c869b..b283032d 100644 --- a/src/controls/qquickcontrol.cpp +++ b/src/controls/qquickcontrol.cpp @@ -61,6 +61,7 @@ void QQuickControlPrivate::mirrorChange() Q_Q(QQuickControl); q->mirrorChange(); emit q->effectiveLayoutDirectionChanged(); + emit q->mirroredChanged(); } void QQuickControlPrivate::setTopPadding(qreal value, bool reset) @@ -274,6 +275,17 @@ void QQuickControl::setLayoutDirection(Qt::LayoutDirection direction) } /*! + \qmlproperty bool QtQuickControls2::Control::mirrored + \readonly + + TODO +*/ +bool QQuickControl::isMirrored() const +{ + return effectiveLayoutDirection() == Qt::RightToLeft; +} + +/*! \qmlproperty Item QtQuickControls2::Control::background This property holds the background item. @@ -316,12 +328,6 @@ void QQuickControl::geometryChanged(const QRectF &newGeometry, const QRectF &old } } -bool QQuickControl::isMirrored() const -{ - Q_D(const QQuickControl); - return d->isMirrored(); -} - void QQuickControl::mirrorChange() { } diff --git a/src/controls/qquickcontrol_p.h b/src/controls/qquickcontrol_p.h index 2f000a4f..f97cdbe4 100644 --- a/src/controls/qquickcontrol_p.h +++ b/src/controls/qquickcontrol_p.h @@ -65,6 +65,7 @@ class Q_QUICKCONTROLS_EXPORT QQuickControl : public QQuickItem Q_PROPERTY(qreal bottomPadding READ bottomPadding WRITE setBottomPadding RESET resetBottomPadding NOTIFY bottomPaddingChanged FINAL) Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection NOTIFY layoutDirectionChanged FINAL) Q_PROPERTY(Qt::LayoutDirection effectiveLayoutDirection READ effectiveLayoutDirection NOTIFY effectiveLayoutDirectionChanged FINAL) + Q_PROPERTY(bool mirrored READ isMirrored NOTIFY mirroredChanged FINAL) Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL) public: @@ -94,6 +95,8 @@ public: Qt::LayoutDirection effectiveLayoutDirection() const; void setLayoutDirection(Qt::LayoutDirection direction); + bool isMirrored() const; + QQuickItem *background() const; void setBackground(QQuickItem *background); @@ -105,6 +108,7 @@ Q_SIGNALS: void bottomPaddingChanged(); void layoutDirectionChanged(); void effectiveLayoutDirectionChanged(); + void mirroredChanged(); void backgroundChanged(); protected: @@ -112,7 +116,6 @@ protected: void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE; - bool isMirrored() const; virtual void mirrorChange(); virtual void paddingChange(); diff --git a/src/controls/qquickprogressbar.cpp b/src/controls/qquickprogressbar.cpp index 0824cd13..41fe8920 100644 --- a/src/controls/qquickprogressbar.cpp +++ b/src/controls/qquickprogressbar.cpp @@ -95,7 +95,7 @@ void QQuickProgressBar::setValue(qreal value) qreal QQuickProgressBar::visualPosition() const { Q_D(const QQuickProgressBar); - if (effectiveLayoutDirection() == Qt::RightToLeft) + if (isMirrored()) return 1.0 - d->value; return d->value; } diff --git a/src/controls/qquickslider.cpp b/src/controls/qquickslider.cpp index 1d318d51..1959140e 100644 --- a/src/controls/qquickslider.cpp +++ b/src/controls/qquickslider.cpp @@ -91,7 +91,7 @@ qreal QQuickSliderPrivate::positionAt(const QPoint &point) const const qreal extent = q->width() - hw; if (!qFuzzyIsNull(extent)) { const qreal pos = (point.x() - offset) / extent; - if (q->effectiveLayoutDirection() == Qt::RightToLeft) + if (isMirrored()) return 1.0 - pos; return pos; } @@ -153,7 +153,7 @@ qreal QQuickSlider::position() const qreal QQuickSlider::visualPosition() const { Q_D(const QQuickSlider); - if (d->orientation == Qt::Vertical || effectiveLayoutDirection() == Qt::RightToLeft) + if (d->orientation == Qt::Vertical || isMirrored()) return 1.0 - d->position; return d->position; } @@ -326,14 +326,14 @@ void QQuickSlider::keyPressEvent(QKeyEvent *event) if (d->orientation == Qt::Horizontal) { if (event->key() == Qt::Key_Left) { setPressed(true); - if (effectiveLayoutDirection() == Qt::RightToLeft) + if (isMirrored()) increase(); else decrease(); event->accept(); } else if (event->key() == Qt::Key_Right) { setPressed(true); - if (effectiveLayoutDirection() == Qt::RightToLeft) + if (isMirrored()) decrease(); else increase(); diff --git a/src/imports/controls/CheckBox.qml b/src/imports/controls/CheckBox.qml index f149bcbb..e16eb73a 100644 --- a/src/imports/controls/CheckBox.qml +++ b/src/imports/controls/CheckBox.qml @@ -56,11 +56,9 @@ AbstractCheckBox { padding: Theme.padding indicator: Rectangle { - readonly property bool mirror: control.effectiveLayoutDirection == Qt.RightToLeft - implicitWidth: 20 implicitHeight: 20 - x: text ? (mirror ? parent.width - width - control.rightPadding : control.leftPadding) : (parent.width - width) / 2 + x: text ? (control.mirrored ? parent.width - width - control.rightPadding : control.leftPadding) : (parent.width - width) / 2 y: (parent.height - height) / 2 radius: control.Theme.roundness @@ -83,9 +81,7 @@ AbstractCheckBox { } label: Text { - readonly property bool mirror: control.effectiveLayoutDirection == Qt.RightToLeft - - x: mirror ? control.leftPadding : (indicator.x + indicator.width + control.Theme.spacing) + x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.Theme.spacing) y: control.topPadding width: parent.width - indicator.width - control.Theme.spacing - control.leftPadding - control.rightPadding height: parent.height - control.topPadding - control.bottomPadding diff --git a/src/imports/controls/ProgressBar.qml b/src/imports/controls/ProgressBar.qml index 6cf95a58..cd4b4213 100644 --- a/src/imports/controls/ProgressBar.qml +++ b/src/imports/controls/ProgressBar.qml @@ -55,7 +55,7 @@ AbstractProgressBar { width: parent.width - control.leftPadding - control.rightPadding height: parent.height - control.topPadding - control.bottomPadding - scale: control.effectiveLayoutDirection === Qt.RightToLeft ? -1 : 1 + scale: control.mirrored ? -1 : 1 Repeater { model: indeterminate ? 2 : 1 diff --git a/src/imports/controls/RadioButton.qml b/src/imports/controls/RadioButton.qml index a73605ff..74fea92e 100644 --- a/src/imports/controls/RadioButton.qml +++ b/src/imports/controls/RadioButton.qml @@ -56,11 +56,9 @@ AbstractRadioButton { padding: Theme.padding indicator: Rectangle { - readonly property bool mirror: control.effectiveLayoutDirection == Qt.RightToLeft - implicitWidth: 20 implicitHeight: 20 - x: text ? (mirror ? parent.width - width - control.rightPadding : control.leftPadding) : (parent.width - width) / 2 + x: text ? (control.mirrored ? parent.width - width - control.rightPadding : control.leftPadding) : (parent.width - width) / 2 y: (parent.height - height) / 2 radius: width / 2 @@ -84,9 +82,7 @@ AbstractRadioButton { } label: Text { - readonly property bool mirror: control.effectiveLayoutDirection == Qt.RightToLeft - - x: mirror ? control.leftPadding : (indicator.x + indicator.width + control.Theme.spacing) + x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.Theme.spacing) y: control.topPadding width: parent.width - indicator.width - control.Theme.spacing - control.leftPadding - control.rightPadding height: parent.height - control.topPadding - control.bottomPadding diff --git a/src/imports/controls/Slider.qml b/src/imports/controls/Slider.qml index 284a0b2f..850791e0 100644 --- a/src/imports/controls/Slider.qml +++ b/src/imports/controls/Slider.qml @@ -89,7 +89,7 @@ AbstractSlider { radius: control.Theme.roundness border.color: control.Theme.frameColor color: control.Theme.backgroundColor - scale: horizontal && control.effectiveLayoutDirection === Qt.RightToLeft ? -1 : 1 + scale: horizontal && control.mirrored ? -1 : 1 Rectangle { x: 2 diff --git a/src/imports/controls/Switch.qml b/src/imports/controls/Switch.qml index 518c07ad..6bc8a02d 100644 --- a/src/imports/controls/Switch.qml +++ b/src/imports/controls/Switch.qml @@ -57,11 +57,9 @@ AbstractSwitch { padding: Theme.padding indicator: Rectangle { - readonly property bool mirror: control.effectiveLayoutDirection == Qt.RightToLeft - implicitWidth: 36 implicitHeight: 20 - x: text ? (mirror ? parent.width - width - control.rightPadding : control.leftPadding) : (parent.width - width) / 2 + x: text ? (control.mirrored ? parent.width - width - control.rightPadding : control.leftPadding) : (parent.width - width) / 2 y: (parent.height - height) / 2 radius: 10 @@ -93,9 +91,7 @@ AbstractSwitch { } label: Text { - readonly property bool mirror: control.effectiveLayoutDirection == Qt.RightToLeft - - x: mirror ? control.leftPadding : (indicator.x + indicator.width + control.Theme.spacing) + x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.Theme.spacing) y: control.topPadding width: parent.width - indicator.width - control.Theme.spacing - control.leftPadding - control.rightPadding height: parent.height - control.topPadding - control.bottomPadding diff --git a/src/imports/controls/ToggleButton.qml b/src/imports/controls/ToggleButton.qml index fdf921e1..185f2eee 100644 --- a/src/imports/controls/ToggleButton.qml +++ b/src/imports/controls/ToggleButton.qml @@ -57,11 +57,9 @@ AbstractToggleButton { padding: Theme.padding indicator: Rectangle { - readonly property bool mirror: control.effectiveLayoutDirection == Qt.RightToLeft - implicitWidth: 36 implicitHeight: 20 - x: text ? (mirror ? parent.width - width - control.rightPadding : control.leftPadding) : (parent.width - width) / 2 + x: text ? (control.mirrored ? parent.width - width - control.rightPadding : control.leftPadding) : (parent.width - width) / 2 y: (parent.height - height) / 2 radius: control.Theme.roundness @@ -92,9 +90,7 @@ AbstractToggleButton { } label: Text { - readonly property bool mirror: control.effectiveLayoutDirection == Qt.RightToLeft - - x: mirror ? control.leftPadding : (indicator.x + indicator.width + control.Theme.spacing) + x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.Theme.spacing) y: control.topPadding width: parent.width - indicator.width - control.Theme.spacing - control.leftPadding - control.rightPadding height: parent.height - control.topPadding - control.bottomPadding |