Add Universal style
https://dev.windows.com/design Change-Id: I1d8c633ae246724649a6ed71b300a56ba9572405 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
|
@ -20,6 +20,7 @@
|
|||
/tests/auto/sanity/tst_sanity
|
||||
/tests/auto/snippets/tst_snippets
|
||||
/tests/auto/theme/tst_theme
|
||||
/tests/auto/universal/tst_universal
|
||||
/tests/benchmarks/creationtime/tst_creationtime
|
||||
/tests/benchmarks/objectcount/tst_objectcount
|
||||
/tests/manual/gifs/tst_gifs
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.ApplicationWindow {
|
||||
id: window
|
||||
|
||||
color: Universal.altHighColor
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
import Qt.labs.controls.universal.impl 1.0
|
||||
|
||||
T.BusyIndicator {
|
||||
id: control
|
||||
|
||||
implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding
|
||||
implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding
|
||||
|
||||
//! [contentItem]
|
||||
contentItem: ProgressRing {
|
||||
id: ring
|
||||
|
||||
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.accentColor
|
||||
|
||||
ProgressRingAnimator {
|
||||
target: ring
|
||||
running: control.visible && control.running
|
||||
}
|
||||
}
|
||||
//! [contentItem]
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.Button {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
label ? label.implicitWidth + leftPadding + rightPadding : 0)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
label ? label.implicitHeight + topPadding + bottomPadding : 0)
|
||||
|
||||
topPadding: 4
|
||||
leftPadding: 8
|
||||
rightPadding: 8
|
||||
bottomPadding: 4
|
||||
|
||||
font.pixelSize: Universal.fontSize
|
||||
font.family: Universal.fontFamily
|
||||
|
||||
//! [label]
|
||||
label: Text {
|
||||
x: control.leftPadding
|
||||
y: control.topPadding
|
||||
width: control.availableWidth
|
||||
height: control.availableHeight
|
||||
|
||||
text: control.text
|
||||
font: control.font
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor
|
||||
}
|
||||
//! [label]
|
||||
|
||||
//! [background]
|
||||
background: Rectangle {
|
||||
implicitWidth: 32
|
||||
implicitHeight: 32
|
||||
|
||||
color: control.pressed ? control.Universal.baseMediumLowColor :
|
||||
control.enabled && control.checkable && control.checked ? control.Universal.accentColor :
|
||||
control.Universal.baseLowColor
|
||||
}
|
||||
//! [background]
|
||||
}
|
|
@ -0,0 +1,113 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.CheckBox {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
(label ? label.implicitWidth : 0) +
|
||||
(indicator ? indicator.implicitWidth : 0) +
|
||||
(label && indicator ? spacing : 0) + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
Math.max(label ? label.implicitHeight : 0,
|
||||
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
|
||||
|
||||
padding: 6
|
||||
spacing: 8
|
||||
|
||||
font.pixelSize: Universal.fontSize
|
||||
font.family: Universal.fontFamily
|
||||
|
||||
//! [indicator]
|
||||
indicator: Rectangle {
|
||||
id: normalRectangle
|
||||
implicitWidth: 20
|
||||
implicitHeight: 20
|
||||
x: 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.enabled ? "transparent" :
|
||||
control.pressed && control.checkState !== Qt.PartiallyChecked ? control.Universal.baseMediumColor :
|
||||
control.checkState === Qt.Checked ? control.Universal.accentColor : "transparent"
|
||||
border.color: !control.enabled ? control.Universal.baseLowColor :
|
||||
control.pressed ? control.Universal.baseMediumColor :
|
||||
control.checked ? control.Universal.accentColor : control.Universal.baseMediumHighColor
|
||||
border.width: 2 // CheckBoxBorderThemeThickness
|
||||
|
||||
Image {
|
||||
x: (parent.width - width) / 2
|
||||
y: (parent.height - height) / 2
|
||||
|
||||
visible: control.checkState === Qt.Checked
|
||||
source: "image://universal/checkmark/" + (!control.enabled ? control.Universal.baseLowColor : control.Universal.chromeWhiteColor)
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
x: (parent.width - width) / 2
|
||||
y: (parent.height - height) / 2
|
||||
width: parent.width / 2
|
||||
height: parent.height / 2
|
||||
|
||||
visible: control.checkState === Qt.PartiallyChecked
|
||||
color: !control.enabled ? control.Universal.baseLowColor :
|
||||
control.pressed ? control.Universal.baseMediumColor : control.Universal.baseMediumHighColor
|
||||
}
|
||||
}
|
||||
//! [indicator]
|
||||
|
||||
//! [label]
|
||||
label: Text {
|
||||
x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
|
||||
y: control.topPadding
|
||||
width: control.availableWidth - indicator.width - control.spacing
|
||||
height: control.availableHeight
|
||||
|
||||
text: control.text
|
||||
font: control.font
|
||||
elide: Text.ElideRight
|
||||
visible: control.text
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor
|
||||
}
|
||||
//! [label]
|
||||
}
|
|
@ -0,0 +1,80 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.Dial {
|
||||
id: control
|
||||
|
||||
implicitWidth: 100
|
||||
implicitHeight: 100
|
||||
|
||||
//! [background]
|
||||
background: Rectangle {
|
||||
radius: width / 2
|
||||
color: "transparent"
|
||||
border.color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseMediumColor
|
||||
border.width: 2
|
||||
}
|
||||
//! [background]
|
||||
|
||||
//! [handle]
|
||||
handle: Rectangle {
|
||||
implicitWidth: 20
|
||||
implicitHeight: 20
|
||||
|
||||
x: background.width / 2 - handle.width / 2
|
||||
y: background.height / 2 - handle.height / 2
|
||||
|
||||
radius: width / 2
|
||||
color: !control.enabled ? control.Universal.baseLowColor :
|
||||
control.pressed ? control.Universal.baseMediumColor : control.Universal.baseMediumHighColor
|
||||
|
||||
transform: [
|
||||
Translate {
|
||||
y: -control.height * 0.35
|
||||
},
|
||||
Rotation {
|
||||
angle: control.angle
|
||||
origin.x: handle.width / 2
|
||||
origin.y: handle.height / 2
|
||||
}
|
||||
]
|
||||
}
|
||||
//! [handle]
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.Frame {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
|
||||
|
||||
contentWidth: contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0
|
||||
contentHeight: contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0
|
||||
|
||||
padding: 12
|
||||
|
||||
//! [contentItem]
|
||||
contentItem: Item { }
|
||||
//! [contentItem]
|
||||
|
||||
//! [frame]
|
||||
frame: Rectangle {
|
||||
width: parent.width
|
||||
height: parent.height
|
||||
|
||||
color: "transparent"
|
||||
border.color: control.Universal.chromeDisabledLowColor
|
||||
}
|
||||
//! [frame]
|
||||
}
|
|
@ -0,0 +1,87 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.GroupBox {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
|
||||
|
||||
contentWidth: contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0
|
||||
contentHeight: contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0
|
||||
|
||||
spacing: 12
|
||||
padding: 12
|
||||
topPadding: 12 + (label && title ? label.implicitHeight + spacing : 0)
|
||||
|
||||
font.pixelSize: Universal.fontSize
|
||||
font.family: Universal.fontFamily
|
||||
// font.weight: Font.DemiBold (TODO: don't want this to inherit...)
|
||||
|
||||
//! [contentItem]
|
||||
contentItem: Item { }
|
||||
//! [contentItem]
|
||||
|
||||
//! [label]
|
||||
label: Text {
|
||||
x: control.leftPadding
|
||||
width: control.availableWidth
|
||||
|
||||
text: control.title
|
||||
font: control.font
|
||||
color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
//! [label]
|
||||
|
||||
//! [frame]
|
||||
frame: Rectangle {
|
||||
y: control.topPadding - control.padding
|
||||
width: parent.width
|
||||
height: parent.height - control.topPadding + control.padding
|
||||
|
||||
color: "transparent"
|
||||
border.color: control.Universal.chromeDisabledLowColor
|
||||
}
|
||||
//! [frame]
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.Label {
|
||||
id: control
|
||||
|
||||
font.pixelSize: Universal.fontSize
|
||||
font.family: Universal.fontFamily
|
||||
|
||||
color: !control.enabled ? Universal.baseLowColor : Universal.baseHighColor
|
||||
linkColor: Universal.accentColor
|
||||
renderType: Text.NativeRendering
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.PageIndicator {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
contentItem.implicitWidth + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
contentItem.implicitHeight + topPadding + bottomPadding)
|
||||
|
||||
padding: 6
|
||||
spacing: 7
|
||||
|
||||
//! [delegate]
|
||||
delegate: Rectangle {
|
||||
implicitWidth: 5
|
||||
implicitHeight: 5
|
||||
|
||||
radius: width / 2
|
||||
color: index === control.currentIndex ? control.Universal.baseMediumHighColor :
|
||||
pressed ? control.Universal.baseMediumLowColor : control.Universal.baseLowColor
|
||||
}
|
||||
//! [delegate]
|
||||
|
||||
//! [contentItem]
|
||||
contentItem: Row {
|
||||
spacing: control.spacing
|
||||
|
||||
Repeater {
|
||||
model: control.count
|
||||
delegate: control.delegate
|
||||
}
|
||||
}
|
||||
//! [contentItem]
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
import Qt.labs.controls.universal.impl 1.0
|
||||
|
||||
T.ProgressBar {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
indicator ? indicator.implicitWidth : 0) + leftPadding + rightPadding
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding
|
||||
|
||||
//! [indicator]
|
||||
indicator: Rectangle {
|
||||
x: control.leftPadding
|
||||
y: control.topPadding
|
||||
width: control.indeterminate ? 0 : control.position * control.availableWidth
|
||||
height: control.availableHeight
|
||||
|
||||
scale: control.mirrored ? -1 : 1
|
||||
color: control.Universal.accentColor
|
||||
|
||||
ProgressStrip {
|
||||
id: strip
|
||||
|
||||
width: control.availableWidth
|
||||
height: control.availableHeight
|
||||
|
||||
clip: control.indeterminate
|
||||
visible: control.indeterminate
|
||||
color: control.Universal.accentColor
|
||||
|
||||
ProgressStripAnimator {
|
||||
target: strip
|
||||
running: strip.visible
|
||||
}
|
||||
}
|
||||
}
|
||||
//! [indicator]
|
||||
|
||||
//! [background]
|
||||
background: Rectangle {
|
||||
implicitWidth: 100
|
||||
implicitHeight: 10
|
||||
|
||||
x: control.leftPadding
|
||||
y: control.topPadding
|
||||
width: control.availableWidth
|
||||
height: control.availableHeight
|
||||
|
||||
visible: !control.indeterminate
|
||||
color: control.Universal.baseLowColor
|
||||
}
|
||||
//! [background]
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
# 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).
|
|
@ -0,0 +1,119 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.RadioButton {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
(label ? label.implicitWidth : 0) +
|
||||
(indicator ? indicator.implicitWidth : 0) +
|
||||
(label && indicator ? spacing : 0) + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
Math.max(label ? label.implicitHeight : 0,
|
||||
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
|
||||
|
||||
padding: 6
|
||||
spacing: 8
|
||||
|
||||
font.pixelSize: Universal.fontSize
|
||||
font.family: Universal.fontFamily
|
||||
|
||||
//! [indicator]
|
||||
indicator: Rectangle {
|
||||
id: outerEllipse
|
||||
implicitWidth: 20
|
||||
implicitHeight: 20
|
||||
x: 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: "transparent"
|
||||
border.width: 2 // RadioButtonBorderThemeThickness
|
||||
border.color: control.checked ? "transparent" :
|
||||
!control.enabled ? control.Universal.baseLowColor :
|
||||
control.pressed ? control.Universal.baseMediumColor : control.Universal.baseMediumHighColor
|
||||
|
||||
Rectangle {
|
||||
id: checkOuterEllipse
|
||||
width: parent.width
|
||||
height: parent.height
|
||||
|
||||
radius: width / 2
|
||||
opacity: control.checked ? 1 : 0
|
||||
color: "transparent"
|
||||
border.width: 2 // RadioButtonBorderThemeThickness
|
||||
border.color: !control.enabled ? control.Universal.baseLowColor :
|
||||
control.pressed ? control.Universal.baseMediumColor : control.Universal.accentColor
|
||||
}
|
||||
|
||||
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: control.checked ? 1 : 0
|
||||
color: !control.enabled ? control.Universal.baseLowColor :
|
||||
control.pressed ? control.Universal.baseMediumColor : control.Universal.baseMediumHighColor
|
||||
}
|
||||
}
|
||||
//! [indicator]
|
||||
|
||||
//! [label]
|
||||
label: Text {
|
||||
x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
|
||||
y: control.topPadding
|
||||
width: control.availableWidth - indicator.width - control.spacing
|
||||
height: control.availableHeight
|
||||
|
||||
text: control.text
|
||||
font: control.font
|
||||
elide: Text.ElideRight
|
||||
visible: control.text
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor
|
||||
}
|
||||
//! [label]
|
||||
}
|
|
@ -0,0 +1,118 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.RangeSlider {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
Math.max(track ? track.implicitWidth : 0,
|
||||
first.handle ? first.handle.implicitWidth : 0,
|
||||
second.handle ? second.handle.implicitWidth : 0) + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
Math.max(track ? track.implicitHeight : 0,
|
||||
first.handle ? first.handle.implicitHeight : 0,
|
||||
second.handle ? second.handle.implicitHeight : 0) + topPadding + bottomPadding)
|
||||
|
||||
padding: 6
|
||||
|
||||
//! [firstHandle]
|
||||
first.handle: Rectangle {
|
||||
implicitWidth: horizontal ? 8 : 24
|
||||
implicitHeight: horizontal ? 24 : 8
|
||||
|
||||
readonly property bool horizontal: control.orientation === Qt.Horizontal
|
||||
|
||||
x: control.leftPadding + (horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2)
|
||||
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height))
|
||||
|
||||
radius: 4
|
||||
color: control.first.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accentColor : control.Universal.chromeDisabledHighColor
|
||||
}
|
||||
//! [firstHandle]
|
||||
|
||||
//! [secondHandle]
|
||||
second.handle: Rectangle {
|
||||
implicitWidth: horizontal ? 8 : 24
|
||||
implicitHeight: horizontal ? 24 : 8
|
||||
|
||||
readonly property bool horizontal: control.orientation === Qt.Horizontal
|
||||
|
||||
x: control.leftPadding + (horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2)
|
||||
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height))
|
||||
|
||||
radius: 4
|
||||
color: control.second.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accentColor : control.Universal.chromeDisabledHighColor
|
||||
}
|
||||
//! [secondHandle]
|
||||
|
||||
//! [track]
|
||||
track: Item {
|
||||
implicitWidth: horizontal ? 200 : 18
|
||||
implicitHeight: horizontal ? 18 : 200
|
||||
|
||||
readonly property bool horizontal: control.orientation === Qt.Horizontal
|
||||
|
||||
x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2)
|
||||
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0)
|
||||
width: horizontal ? control.availableWidth : implicitWidth
|
||||
height: horizontal ? implicitHeight : control.availableHeight
|
||||
|
||||
scale: horizontal && control.mirrored ? -1 : 1
|
||||
|
||||
Rectangle {
|
||||
x: parent.horizontal ? 0 : (parent.width - width) / 2
|
||||
y: parent.horizontal ? (parent.height - height) / 2 : 0
|
||||
width: parent.horizontal ? parent.width : 2 // SliderTrackThemeHeight
|
||||
height: !parent.horizontal ? parent.height : 2 // SliderTrackThemeHeight
|
||||
|
||||
color: control.enabled ? control.Universal.baseMediumLowColor : control.Universal.chromeDisabledHighColor
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
x: parent.horizontal ? control.first.position * parent.width : 0
|
||||
y: parent.horizontal ? (parent.height - height) / 2 : control.second.visualPosition * parent.height
|
||||
width: parent.horizontal ? control.second.position * parent.width - control.first.position * parent.width : 2 // SliderTrackThemeHeight
|
||||
height: !parent.horizontal ? control.second.position * parent.height - control.first.position * parent.height : 2 // SliderTrackThemeHeight
|
||||
|
||||
color: control.enabled ? control.Universal.accentColor : control.Universal.chromeDisabledHighColor
|
||||
}
|
||||
}
|
||||
//! [track]
|
||||
}
|
|
@ -0,0 +1,99 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.ScrollBar {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
handle.implicitWidth + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
handle.implicitHeight + topPadding + bottomPadding)
|
||||
|
||||
// TODO: arrows
|
||||
|
||||
//! [handle]
|
||||
handle: Rectangle {
|
||||
implicitWidth: 12
|
||||
implicitHeight: 12
|
||||
|
||||
color: control.pressed ? control.Universal.baseMediumColor : control.Universal.chromeHighColor
|
||||
visible: control.size < 1.0
|
||||
opacity: 0.0
|
||||
|
||||
readonly property bool horizontal: control.orientation === Qt.Horizontal
|
||||
x: control.leftPadding + (horizontal ? control.position * control.width : 0)
|
||||
y: control.topPadding + (horizontal ? 0 : control.position * control.height)
|
||||
width: horizontal ? control.size * control.availableWidth : implicitWidth
|
||||
height: horizontal ? implicitHeight : control.size * control.availableHeight
|
||||
}
|
||||
//! [handle]
|
||||
|
||||
//! [background]
|
||||
background: Rectangle {
|
||||
implicitWidth: 12
|
||||
implicitHeight: 12
|
||||
|
||||
color: control.Universal.chromeLowColor
|
||||
visible: control.size < 1.0
|
||||
opacity: 0.0
|
||||
}
|
||||
//! [background]
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "active"
|
||||
when: control.active
|
||||
}
|
||||
]
|
||||
|
||||
transitions: [
|
||||
Transition {
|
||||
to: "active"
|
||||
NumberAnimation { targets: [handle, background]; property: "opacity"; to: 1.0 }
|
||||
},
|
||||
Transition {
|
||||
from: "active"
|
||||
SequentialAnimation {
|
||||
PauseAnimation { duration: 3000 }
|
||||
NumberAnimation { targets: [handle, background]; property: "opacity"; to: 0.0 }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.ScrollIndicator {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
indicator.implicitWidth + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
indicator.implicitHeight + topPadding + bottomPadding)
|
||||
|
||||
//! [indicator]
|
||||
indicator: Rectangle {
|
||||
implicitWidth: 6
|
||||
implicitHeight: 6
|
||||
|
||||
color: control.Universal.baseMediumLowColor
|
||||
visible: control.size < 1.0
|
||||
opacity: 0.0
|
||||
|
||||
readonly property bool horizontal: control.orientation === Qt.Horizontal
|
||||
x: control.leftPadding + (horizontal ? control.position * control.width : 0)
|
||||
y: control.topPadding + (horizontal ? 0 : control.position * control.height)
|
||||
width: horizontal ? control.size * control.availableWidth : implicitWidth
|
||||
height: horizontal ? implicitHeight : control.size * control.availableHeight
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "active"
|
||||
when: control.active
|
||||
}
|
||||
]
|
||||
|
||||
transitions: [
|
||||
Transition {
|
||||
to: "active"
|
||||
NumberAnimation { target: indicator; property: "opacity"; to: 1.0 }
|
||||
},
|
||||
Transition {
|
||||
from: "active"
|
||||
SequentialAnimation {
|
||||
PauseAnimation { duration: 5000 }
|
||||
NumberAnimation { target: indicator; property: "opacity"; to: 0.0 }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
//! [indicator]
|
||||
}
|
|
@ -0,0 +1,101 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.Slider {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
Math.max(track ? track.implicitWidth : 0,
|
||||
handle ? handle.implicitWidth : 0) + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
Math.max(track ? track.implicitHeight : 0,
|
||||
handle ? handle.implicitHeight : 0) + topPadding + bottomPadding)
|
||||
|
||||
padding: 6
|
||||
|
||||
//! [handle]
|
||||
handle: Rectangle {
|
||||
implicitWidth: horizontal ? 8 : 24
|
||||
implicitHeight: horizontal ? 24 : 8
|
||||
|
||||
readonly property bool horizontal: control.orientation === Qt.Horizontal
|
||||
|
||||
x: control.leftPadding + (horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2)
|
||||
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height))
|
||||
|
||||
radius: 4
|
||||
color: control.pressed ? control.Universal.chromeHighColor : control.enabled ? control.Universal.accentColor : control.Universal.chromeDisabledHighColor
|
||||
}
|
||||
//! [handle]
|
||||
|
||||
//! [track]
|
||||
track: Item {
|
||||
implicitWidth: horizontal ? 200 : 18
|
||||
implicitHeight: horizontal ? 18 : 200
|
||||
|
||||
readonly property bool horizontal: control.orientation === Qt.Horizontal
|
||||
|
||||
x: control.leftPadding + (horizontal ? 0 : (control.availableWidth - width) / 2)
|
||||
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : 0)
|
||||
width: horizontal ? control.availableWidth : implicitWidth
|
||||
height: horizontal ? implicitHeight : control.availableHeight
|
||||
|
||||
scale: horizontal && control.mirrored ? -1 : 1
|
||||
|
||||
Rectangle {
|
||||
x: parent.horizontal ? 0 : (parent.width - width) / 2
|
||||
y: parent.horizontal ? (parent.height - height) / 2 : 0
|
||||
width: parent.horizontal ? parent.width : 2 // SliderTrackThemeHeight
|
||||
height: !parent.horizontal ? parent.height : 2 // SliderTrackThemeHeight
|
||||
|
||||
color: control.enabled ? control.Universal.baseMediumLowColor : control.Universal.chromeDisabledHighColor
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
x: parent.horizontal ? 0 : (parent.width - width) / 2
|
||||
y: parent.horizontal ? (parent.height - height) / 2 : control.visualPosition * parent.height
|
||||
width: parent.horizontal ? control.position * parent.width : 2 // SliderTrackThemeHeight
|
||||
height: !parent.horizontal ? control.position * parent.height : 2 // SliderTrackThemeHeight
|
||||
|
||||
color: control.enabled ? control.Universal.accentColor : control.Universal.chromeDisabledHighColor
|
||||
}
|
||||
}
|
||||
//! [track]
|
||||
}
|
|
@ -0,0 +1,149 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.SpinBox {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
contentItem.implicitWidth + 16 +
|
||||
(up.indicator ? up.indicator.implicitWidth : 0) +
|
||||
(down.indicator ? down.indicator.implicitWidth : 0))
|
||||
implicitHeight: Math.max(contentItem.implicitHeight + topPadding + bottomPadding,
|
||||
background ? background.implicitHeight : 0,
|
||||
up.indicator ? up.indicator.implicitHeight : 0,
|
||||
down.indicator ? down.indicator.implicitHeight : 0)
|
||||
|
||||
// TextControlThemePadding + 2 (border)
|
||||
topPadding: 5
|
||||
bottomPadding: 7
|
||||
leftPadding: 12 + (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0))
|
||||
rightPadding: 8 + (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0))
|
||||
|
||||
Universal.theme: activeFocus ? Universal.Light : undefined
|
||||
|
||||
font.pixelSize: Universal.fontSize
|
||||
font.family: Universal.fontFamily
|
||||
|
||||
//! [validator]
|
||||
validator: IntValidator {
|
||||
locale: control.locale.name
|
||||
bottom: Math.min(control.from, control.to)
|
||||
top: Math.max(control.from, control.to)
|
||||
}
|
||||
//! [validator]
|
||||
|
||||
//! [contentItem]
|
||||
contentItem: TextInput {
|
||||
text: control.textFromValue(control.value, control.locale)
|
||||
|
||||
font: control.font
|
||||
color: !enabled ? control.Universal.chromeDisabledLowColor :
|
||||
activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor
|
||||
selectionColor: control.Universal.accentColor
|
||||
selectedTextColor: control.Universal.chromeWhiteColor
|
||||
horizontalAlignment: Qt.AlignHCenter
|
||||
verticalAlignment: TextInput.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
validator: control.validator
|
||||
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
||||
}
|
||||
//! [contentItem]
|
||||
|
||||
//! [up.indicator]
|
||||
up.indicator: Item {
|
||||
implicitWidth: 26
|
||||
height: parent.height
|
||||
x: control.mirrored ? 0 : parent.width - width
|
||||
|
||||
Rectangle {
|
||||
x: 2; y: 2
|
||||
width: parent.width - 4
|
||||
height: parent.height - 4
|
||||
color: !control.up.pressed ? "transparent" :
|
||||
control.activeFocus ? control.Universal.accentColor
|
||||
: control.Universal.chromeDisabledLowColor
|
||||
}
|
||||
|
||||
Image {
|
||||
x: (parent.width - width) / 2
|
||||
y: (parent.height - height) / 2
|
||||
source: "image://universal/rightarrow/" + (!control.enabled ? control.Universal.chromeDisabledLowColor :
|
||||
control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor)
|
||||
}
|
||||
}
|
||||
//! [up.indicator]
|
||||
|
||||
//! [down.indicator]
|
||||
down.indicator: Item {
|
||||
implicitWidth: 26
|
||||
height: parent.height
|
||||
x: control.mirrored ? parent.width - width : 0
|
||||
|
||||
Rectangle {
|
||||
x: 2; y: 2
|
||||
width: parent.width - 4
|
||||
height: parent.height - 4
|
||||
color: !control.down.pressed ? "transparent" :
|
||||
control.activeFocus ? control.Universal.accentColor
|
||||
: control.Universal.chromeDisabledLowColor
|
||||
}
|
||||
|
||||
Image {
|
||||
x: (parent.width - width) / 2
|
||||
y: (parent.height - height) / 2
|
||||
source: "image://universal/leftarrow/" + (!control.enabled ? control.Universal.chromeDisabledLowColor :
|
||||
control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor)
|
||||
}
|
||||
}
|
||||
//! [down.indicator]
|
||||
|
||||
//! [background]
|
||||
background: Rectangle {
|
||||
implicitWidth: 60 + 26 // TextControlThemeMinWidth - 4 (border)
|
||||
implicitHeight: 28 // TextControlThemeMinHeight - 4 (border)
|
||||
|
||||
border.width: 2 // TextControlBorderThemeThickness
|
||||
border.color: !control.enabled ? control.Universal.baseLowColor :
|
||||
control.activeFocus ? control.Universal.accentColor : control.Universal.chromeDisabledLowColor
|
||||
color: control.enabled ? control.Universal.altHighColor : control.Universal.baseLowColor
|
||||
}
|
||||
//! [background]
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.StackView {
|
||||
id: root
|
||||
|
||||
//! [popEnter]
|
||||
popEnter: Transition {
|
||||
ParallelAnimation {
|
||||
NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint }
|
||||
NumberAnimation { property: "x"; from: -root.width / 3; to: 0; duration: 400; easing.type: Easing.OutCubic }
|
||||
}
|
||||
}
|
||||
//! [popEnter]
|
||||
|
||||
//! [popExit]
|
||||
popExit: Transition {
|
||||
NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint }
|
||||
}
|
||||
//! [popExit]
|
||||
|
||||
//! [pushEnter]
|
||||
pushEnter: Transition {
|
||||
ParallelAnimation {
|
||||
NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint }
|
||||
NumberAnimation { property: "x"; from: root.width / 3; to: 0; duration: 400; easing.type: Easing.OutCubic }
|
||||
}
|
||||
}
|
||||
//! [pushEnter]
|
||||
|
||||
//! [pushExit]
|
||||
pushExit: Transition {
|
||||
NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint }
|
||||
}
|
||||
//! [pushExit]
|
||||
|
||||
//! [replaceEnter]
|
||||
replaceEnter: Transition {
|
||||
ParallelAnimation {
|
||||
NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint }
|
||||
NumberAnimation { property: "x"; from: root.width / 3; to: 0; duration: 400; easing.type: Easing.OutCubic }
|
||||
}
|
||||
}
|
||||
//! [replaceEnter]
|
||||
|
||||
//! [replaceExit]
|
||||
replaceExit: Transition {
|
||||
NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint }
|
||||
}
|
||||
//! [replaceExit]
|
||||
}
|
|
@ -0,0 +1,111 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.Switch {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
(label ? label.implicitWidth : 0) +
|
||||
(indicator ? indicator.implicitWidth : 0) +
|
||||
(label && indicator ? spacing : 0) + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
Math.max(label ? label.implicitHeight : 0,
|
||||
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
|
||||
|
||||
padding: 5
|
||||
spacing: 8
|
||||
|
||||
font.pixelSize: Universal.fontSize
|
||||
font.family: Universal.fontFamily
|
||||
|
||||
//! [indicator]
|
||||
indicator: Rectangle {
|
||||
implicitWidth: 44
|
||||
implicitHeight: 20
|
||||
x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2
|
||||
y: control.topPadding + (control.availableHeight - height) / 2
|
||||
|
||||
radius: 10
|
||||
color: !control.enabled ? "transparent" :
|
||||
control.pressed ? control.Universal.baseMediumColor :
|
||||
control.checked ? control.Universal.accentColor : "transparent"
|
||||
border.color: !control.enabled ? control.Universal.baseLowColor :
|
||||
control.checked && !control.pressed ? control.Universal.accentColor : control.Universal.baseMediumColor
|
||||
border.width: 2
|
||||
|
||||
Rectangle {
|
||||
width: 10
|
||||
height: 10
|
||||
radius: 5
|
||||
|
||||
color: !control.enabled ? control.Universal.baseLowColor :
|
||||
control.pressed || control.checked ? control.Universal.chromeWhiteColor : control.Universal.baseMediumHighColor
|
||||
|
||||
x: Math.max(5, Math.min(parent.width - width - 5,
|
||||
control.visualPosition * parent.width - (width / 2)))
|
||||
y: (parent.height - height) / 2
|
||||
|
||||
Behavior on x {
|
||||
enabled: !control.pressed
|
||||
SmoothedAnimation { velocity: 200 }
|
||||
}
|
||||
}
|
||||
}
|
||||
//! [indicator]
|
||||
|
||||
//! [label]
|
||||
label: Text {
|
||||
x: control.mirrored ? control.leftPadding : (indicator.x + indicator.width + control.spacing)
|
||||
y: control.topPadding
|
||||
width: control.availableWidth - indicator.width - control.spacing
|
||||
height: control.availableHeight
|
||||
|
||||
text: control.text
|
||||
font: control.font
|
||||
elide: Text.ElideRight
|
||||
visible: control.text
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor
|
||||
}
|
||||
//! [label]
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.TabBar {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
contentItem.implicitWidth + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
contentItem.implicitHeight + topPadding + bottomPadding)
|
||||
|
||||
//! [contentItem]
|
||||
contentItem: PathView {
|
||||
implicitWidth: 200
|
||||
implicitHeight: 48
|
||||
|
||||
model: control.contentModel
|
||||
currentIndex: control.currentIndex
|
||||
|
||||
interactive: false
|
||||
snapMode: PathView.SnapToItem
|
||||
highlightMoveDuration: 100
|
||||
|
||||
path: Path {
|
||||
startX: control.count ? control.availableWidth / control.count / 2 : 0
|
||||
startY: control.availableHeight / 2
|
||||
PathLine {
|
||||
x: control.count ? control.availableWidth + (control.availableWidth / control.count / 2) : 0
|
||||
y: control.availableHeight / 2
|
||||
}
|
||||
}
|
||||
}
|
||||
//! [contentItem]
|
||||
|
||||
//! [background]
|
||||
background: Rectangle {
|
||||
implicitWidth: 200
|
||||
implicitHeight: 48
|
||||
color: control.Universal.altHighColor
|
||||
}
|
||||
//! [background]
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.TabButton {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
label ? label.implicitWidth + leftPadding + rightPadding : 0)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
label ? label.implicitHeight + topPadding + bottomPadding : 0)
|
||||
|
||||
padding: 12 // PivotItemMargin
|
||||
|
||||
font.pixelSize: 24 // PivotHeaderItemFontSize
|
||||
font.family: Universal.fontFamily
|
||||
font.weight: Font.Light
|
||||
|
||||
//! [label]
|
||||
label: Text {
|
||||
x: control.leftPadding
|
||||
y: control.topPadding
|
||||
width: control.availableWidth
|
||||
height: control.availableHeight
|
||||
|
||||
text: control.text
|
||||
font: control.font
|
||||
elide: Text.ElideRight
|
||||
color: control.checked || control.pressed ? control.Universal.baseHighColor : control.Universal.baseLowColor
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
//! [label]
|
||||
}
|
|
@ -0,0 +1,97 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.TextArea {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(contentWidth + leftPadding + rightPadding,
|
||||
background ? background.implicitWidth : 0,
|
||||
placeholder.implicitWidth + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(contentHeight + topPadding + bottomPadding,
|
||||
background ? background.implicitHeight : 0,
|
||||
placeholder.implicitHeight + topPadding + bottomPadding)
|
||||
|
||||
// TextControlThemePadding + 2 (border)
|
||||
topPadding: 5
|
||||
leftPadding: 12
|
||||
rightPadding: 8
|
||||
bottomPadding: 7
|
||||
|
||||
Universal.theme: activeFocus ? Universal.Light : undefined
|
||||
|
||||
font.pixelSize: Universal.fontSize
|
||||
font.family: Universal.fontFamily
|
||||
|
||||
color: !enabled ? Universal.chromeDisabledLowColor :
|
||||
activeFocus ? Universal.chromeBlackHighColor : Universal.baseHighColor
|
||||
selectionColor: Universal.accentColor
|
||||
selectedTextColor: Universal.chromeWhiteColor
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
Text {
|
||||
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.enabled ? control.Universal.chromeDisabledLowColor :
|
||||
control.activeFocus ? control.Universal.chromeBlackMediumLowColor : control.Universal.baseMediumColor
|
||||
visible: !control.length && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
|
||||
horizontalAlignment: control.horizontalAlignment
|
||||
verticalAlignment: control.verticalAlignment
|
||||
renderType: Text.NativeRendering
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
|
||||
//! [background]
|
||||
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.accentColor : control.Universal.chromeDisabledLowColor
|
||||
color: control.enabled ? control.Universal.altHighColor : control.Universal.baseLowColor
|
||||
}
|
||||
//! [background]
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.TextField {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(contentWidth + leftPadding + rightPadding,
|
||||
background ? background.implicitWidth : 0,
|
||||
placeholder.implicitWidth + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(contentHeight + topPadding + bottomPadding,
|
||||
background ? background.implicitHeight : 0,
|
||||
placeholder.implicitHeight + topPadding + bottomPadding)
|
||||
|
||||
// TextControlThemePadding + 2 (border)
|
||||
topPadding: 5
|
||||
leftPadding: 12
|
||||
rightPadding: 8
|
||||
bottomPadding: 7
|
||||
|
||||
Universal.theme: activeFocus ? Universal.Light : undefined
|
||||
|
||||
font.pixelSize: Universal.fontSize
|
||||
font.family: Universal.fontFamily
|
||||
|
||||
color: !enabled ? Universal.chromeDisabledLowColor :
|
||||
activeFocus ? Universal.chromeBlackHighColor : Universal.baseHighColor
|
||||
selectionColor: Universal.accentColor
|
||||
selectedTextColor: Universal.chromeWhiteColor
|
||||
verticalAlignment: TextInput.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
Text {
|
||||
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.enabled ? control.Universal.chromeDisabledLowColor :
|
||||
control.activeFocus ? control.Universal.chromeBlackMediumLowColor : control.Universal.baseMediumColor
|
||||
visible: !control.displayText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
|
||||
horizontalAlignment: control.horizontalAlignment
|
||||
verticalAlignment: control.verticalAlignment
|
||||
renderType: Text.NativeRendering
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
|
||||
//! [background]
|
||||
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.accentColor : control.Universal.chromeDisabledLowColor
|
||||
color: control.enabled ? control.Universal.altHighColor : control.Universal.baseLowColor
|
||||
}
|
||||
//! [background]
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.ToolBar {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
|
||||
|
||||
contentWidth: contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0
|
||||
contentHeight: contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0
|
||||
|
||||
//! [contentItem]
|
||||
contentItem: Item { }
|
||||
//! [contentItem]
|
||||
|
||||
//! [background]
|
||||
background: Rectangle {
|
||||
implicitHeight: 48 // AppBarThemeCompactHeight
|
||||
color: control.Universal.chromeMediumColor
|
||||
}
|
||||
//! [background]
|
||||
}
|
|
@ -0,0 +1,80 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
T.ToolButton {
|
||||
id: control
|
||||
|
||||
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||
label ? label.implicitWidth + leftPadding + rightPadding : 0)
|
||||
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||
label ? label.implicitHeight + topPadding + bottomPadding : 0)
|
||||
|
||||
padding: 6
|
||||
|
||||
font.pixelSize: Universal.fontSize
|
||||
font.family: Universal.fontFamily
|
||||
|
||||
//! [label]
|
||||
label: Text {
|
||||
x: control.leftPadding
|
||||
y: control.topPadding
|
||||
width: control.availableWidth
|
||||
height: control.availableHeight
|
||||
|
||||
text: control.text
|
||||
font: control.font
|
||||
color: control.enabled ? control.Universal.baseHighColor : control.Universal.baseLowColor
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
//! [label]
|
||||
|
||||
//! [background]
|
||||
background: Rectangle {
|
||||
implicitWidth: 68
|
||||
implicitHeight: 48 // AppBarThemeCompactHeight
|
||||
|
||||
color: control.pressed ? control.Universal.listMediumColor :
|
||||
control.checkable && control.checked ? control.Universal.accentColor : "transparent"
|
||||
}
|
||||
//! [background]
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure the GNU General Public License version 2.0 requirements will be
|
||||
** met: http://www.gnu.org/licenses/gpl-2.0.html.
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
import QtQuick 2.6
|
||||
import Qt.labs.templates 1.0 as T
|
||||
import Qt.labs.controls.universal 1.0
|
||||
import Qt.labs.controls 1.0
|
||||
|
||||
T.Tumbler {
|
||||
id: control
|
||||
|
||||
implicitWidth: 60
|
||||
implicitHeight: 200
|
||||
|
||||
font.pixelSize: Universal.fontSize
|
||||
font.family: Universal.fontFamily
|
||||
|
||||
//! [delegate]
|
||||
delegate: Text {
|
||||
text: modelData
|
||||
color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor
|
||||
font: control.font
|
||||
opacity: 0.4 + Math.max(0, 1 - Math.abs(Tumbler.displacement)) * 0.6
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
//! [delegate]
|
||||
|
||||
//! [contentItem]
|
||||
contentItem: PathView {
|
||||
id: pathView
|
||||
model: control.model
|
||||
delegate: control.delegate
|
||||
clip: true
|
||||
pathItemCount: control.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: control.availableHeight / control.visibleItemCount
|
||||
}
|
||||
//! [contentItem]
|
||||
}
|
After Width: | Height: | Size: 243 B |
After Width: | Height: | Size: 367 B |
After Width: | Height: | Size: 817 B |
After Width: | Height: | Size: 634 B |
After Width: | Height: | Size: 179 B |
After Width: | Height: | Size: 243 B |
After Width: | Height: | Size: 304 B |
After Width: | Height: | Size: 343 B |
After Width: | Height: | Size: 173 B |
After Width: | Height: | Size: 247 B |
After Width: | Height: | Size: 279 B |
After Width: | Height: | Size: 359 B |
|
@ -0,0 +1,4 @@
|
|||
module Qt.labs.controls.universal
|
||||
plugin qtlabsuniversalstyleplugin
|
||||
classname QtLabsUniversalStylePlugin
|
||||
depends Qt.labs.controls 1.0
|
|
@ -0,0 +1,79 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure 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 "qquickuniversalimageprovider_p.h"
|
||||
|
||||
#include <QtCore/qdebug.h>
|
||||
#include <QtGui/qpainter.h>
|
||||
#include <QtGui/qguiapplication.h>
|
||||
#include <QtGui/qscreen.h>
|
||||
#include <QtGui/qicon.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
QQuickUniversalImageProvider::QQuickUniversalImageProvider() : QQuickImageProvider(Image)
|
||||
{
|
||||
}
|
||||
|
||||
QImage QQuickUniversalImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
|
||||
{
|
||||
Q_UNUSED(requestedSize);
|
||||
|
||||
int sep = id.indexOf('/');
|
||||
QString name = id.left(sep);
|
||||
QString color = id.mid(sep + 1);
|
||||
qreal dpr = qApp->primaryScreen()->devicePixelRatio();
|
||||
QString file = qt_findAtNxFile(":/org.qt-project/imports/Qt/labs/controls/universal/images/" + name + ".png", dpr);
|
||||
|
||||
QImage image(file);
|
||||
if (image.isNull()) {
|
||||
qWarning() << "QQuickUniversalImageProvider: unknown id:" << id;
|
||||
return QImage();
|
||||
}
|
||||
|
||||
if (size)
|
||||
*size = image.size();
|
||||
|
||||
if (!color.isEmpty()) {
|
||||
QPainter painter(&image);
|
||||
painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
|
||||
painter.fillRect(image.rect(), QColor(color));
|
||||
}
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
|
@ -0,0 +1,67 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure 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 QQUICKUNIVERSALIMAGEPROVIDER_P_H
|
||||
#define QQUICKUNIVERSALIMAGEPROVIDER_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/qquickimageprovider.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QQuickUniversalImageProvider : public QQuickImageProvider
|
||||
{
|
||||
public:
|
||||
QQuickUniversalImageProvider();
|
||||
|
||||
QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize) Q_DECL_OVERRIDE;
|
||||
};
|
||||
|
||||
Q_DECLARE_TYPEINFO(QQuickUniversalImageProvider, Q_COMPLEX_TYPE);
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QQUICKUNIVERSALIMAGEPROVIDER_P_H
|
|
@ -0,0 +1,269 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure 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 "qquickuniversalprogressring_p.h"
|
||||
|
||||
#include <QtCore/qmath.h>
|
||||
#include <QtCore/qeasingcurve.h>
|
||||
#include <QtQuick/private/qquickitem_p.h>
|
||||
#include <QtQuick/private/qquickanimatorjob_p.h>
|
||||
#include <QtQuick/private/qsgadaptationlayer_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
static const int PhaseCount = 6;
|
||||
static const int Interval = 167;
|
||||
static const int TotalDuration = 4052;
|
||||
|
||||
class QQuickUniversalProgressRingAnimatorJob : public QQuickAnimatorJob
|
||||
{
|
||||
public:
|
||||
QQuickUniversalProgressRingAnimatorJob();
|
||||
|
||||
void initialize(QQuickAnimatorController *controller) Q_DECL_OVERRIDE;
|
||||
void updateCurrentTime(int time) Q_DECL_OVERRIDE;
|
||||
void writeBack() Q_DECL_OVERRIDE;
|
||||
void nodeWasDestroyed() Q_DECL_OVERRIDE;
|
||||
void afterNodeSync() Q_DECL_OVERRIDE;
|
||||
|
||||
private:
|
||||
struct Phase {
|
||||
Phase() : duration(0), from(0), to(0), curve(QEasingCurve::Linear) { }
|
||||
Phase(int d, qreal f, qreal t, QEasingCurve::Type c) : duration(d), from(f), to(t), curve(c) { }
|
||||
int duration;
|
||||
qreal from;
|
||||
qreal to;
|
||||
QEasingCurve curve;
|
||||
};
|
||||
|
||||
QSGNode *m_node;
|
||||
Phase m_phases[PhaseCount];
|
||||
};
|
||||
|
||||
QQuickUniversalProgressRingAnimatorJob::QQuickUniversalProgressRingAnimatorJob() : m_node(Q_NULLPTR)
|
||||
{
|
||||
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 QQuickUniversalProgressRingAnimatorJob::initialize(QQuickAnimatorController *controller)
|
||||
{
|
||||
QQuickAnimatorJob::initialize(controller);
|
||||
m_node = QQuickItemPrivate::get(m_target)->childContainerNode();
|
||||
}
|
||||
|
||||
void QQuickUniversalProgressRingAnimatorJob::updateCurrentTime(int time)
|
||||
{
|
||||
if (!m_node)
|
||||
return;
|
||||
|
||||
QSGNode *containerNode = m_node->firstChild();
|
||||
Q_ASSERT(!containerNode || containerNode->type() == QSGNode::TransformNodeType);
|
||||
if (!containerNode)
|
||||
return;
|
||||
|
||||
int nodeIndex = 0;
|
||||
int count = containerNode->childCount();
|
||||
QSGTransformNode *transformNode = static_cast<QSGTransformNode *>(containerNode->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; ++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 QQuickUniversalProgressRingAnimatorJob::writeBack()
|
||||
{
|
||||
}
|
||||
|
||||
void QQuickUniversalProgressRingAnimatorJob::nodeWasDestroyed()
|
||||
{
|
||||
m_node = Q_NULLPTR;
|
||||
}
|
||||
|
||||
void QQuickUniversalProgressRingAnimatorJob::afterNodeSync()
|
||||
{
|
||||
m_node = QQuickItemPrivate::get(m_target)->childContainerNode();
|
||||
}
|
||||
|
||||
QQuickUniversalProgressRingAnimator::QQuickUniversalProgressRingAnimator(QObject *parent)
|
||||
: QQuickAnimator(parent)
|
||||
{
|
||||
setDuration(TotalDuration);
|
||||
setLoops(QQuickAnimator::Infinite);
|
||||
}
|
||||
|
||||
QString QQuickUniversalProgressRingAnimator::propertyName() const
|
||||
{
|
||||
return QString();
|
||||
}
|
||||
|
||||
QQuickAnimatorJob *QQuickUniversalProgressRingAnimator::createJob() const
|
||||
{
|
||||
return new QQuickUniversalProgressRingAnimatorJob;
|
||||
}
|
||||
|
||||
QQuickUniversalProgressRing::QQuickUniversalProgressRing(QQuickItem *parent)
|
||||
: QQuickItem(parent), m_count(5), m_color(Qt::black)
|
||||
{
|
||||
setFlag(ItemHasContents);
|
||||
}
|
||||
|
||||
int QQuickUniversalProgressRing::count() const
|
||||
{
|
||||
return m_count;
|
||||
}
|
||||
|
||||
void QQuickUniversalProgressRing::setCount(int count)
|
||||
{
|
||||
if (m_count != count) {
|
||||
m_count = count;
|
||||
update();
|
||||
emit countChanged();
|
||||
}
|
||||
}
|
||||
|
||||
QColor QQuickUniversalProgressRing::color() const
|
||||
{
|
||||
return m_color;
|
||||
}
|
||||
|
||||
void QQuickUniversalProgressRing::setColor(const QColor &color)
|
||||
{
|
||||
if (m_color != color) {
|
||||
m_color = color;
|
||||
update();
|
||||
emit colorChanged();
|
||||
}
|
||||
}
|
||||
|
||||
QSGNode *QQuickUniversalProgressRing::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
|
||||
{
|
||||
QQuickItemPrivate *d = QQuickItemPrivate::get(this);
|
||||
|
||||
if (!oldNode)
|
||||
oldNode = new QSGTransformNode;
|
||||
Q_ASSERT(oldNode->type() == QSGNode::TransformNodeType);
|
||||
|
||||
QMatrix4x4 matrix;
|
||||
matrix.translate(width() / 2, height() / 2);
|
||||
static_cast<QSGTransformNode *>(oldNode)->setMatrix(matrix);
|
||||
|
||||
qreal size = qMin(width(), height());
|
||||
qreal diameter = size / 10.0;
|
||||
qreal radius = diameter / 2;
|
||||
qreal offset = (size - diameter * 2) / M_PI;
|
||||
|
||||
QSGNode *transformNode = oldNode->firstChild();
|
||||
for (int i = 0; i < m_count; ++i) {
|
||||
if (!transformNode) {
|
||||
transformNode = new QSGTransformNode;
|
||||
oldNode->appendChildNode(transformNode);
|
||||
|
||||
QSGOpacityNode *opacityNode = new QSGOpacityNode;
|
||||
transformNode->appendChildNode(opacityNode);
|
||||
|
||||
QSGRectangleNode *rectNode = d->sceneGraphContext()->createRectangleNode();
|
||||
rectNode->setAntialiasing(true);
|
||||
opacityNode->appendChildNode(rectNode);
|
||||
}
|
||||
|
||||
QSGNode *opacityNode = transformNode->firstChild();
|
||||
Q_ASSERT(opacityNode->type() == QSGNode::OpacityNodeType);
|
||||
|
||||
QSGRectangleNode *rectNode = static_cast<QSGRectangleNode *>(opacityNode->firstChild());
|
||||
Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType);
|
||||
|
||||
rectNode->setRect(QRectF(offset, offset, diameter, diameter));
|
||||
rectNode->setColor(m_color);
|
||||
rectNode->setRadius(radius);
|
||||
rectNode->update();
|
||||
|
||||
transformNode = transformNode->nextSibling();
|
||||
}
|
||||
|
||||
while (transformNode) {
|
||||
QSGNode *nextSibling = transformNode->nextSibling();
|
||||
delete transformNode;
|
||||
transformNode = nextSibling;
|
||||
}
|
||||
|
||||
return oldNode;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
|
@ -0,0 +1,100 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure 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 QQUICKUNIVERSALPROGRESSRING_P_H
|
||||
#define QQUICKUNIVERSALPROGRESSRING_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 <QtQuick/private/qquickanimator_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QQuickUniversalProgressRing : public QQuickItem
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(int count READ count WRITE setCount NOTIFY countChanged FINAL)
|
||||
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL)
|
||||
|
||||
public:
|
||||
QQuickUniversalProgressRing(QQuickItem *parent = Q_NULLPTR);
|
||||
|
||||
int count() const;
|
||||
void setCount(int count);
|
||||
|
||||
QColor color() const;
|
||||
void setColor(const QColor &color);
|
||||
|
||||
Q_SIGNALS:
|
||||
void countChanged();
|
||||
void colorChanged();
|
||||
|
||||
protected:
|
||||
QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
|
||||
|
||||
private:
|
||||
int m_count;
|
||||
QColor m_color;
|
||||
};
|
||||
|
||||
class QQuickUniversalProgressRingAnimator : public QQuickAnimator
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QQuickUniversalProgressRingAnimator(QObject *parent = Q_NULLPTR);
|
||||
|
||||
protected:
|
||||
QString propertyName() const Q_DECL_OVERRIDE;
|
||||
QQuickAnimatorJob *createJob() const Q_DECL_OVERRIDE;
|
||||
};
|
||||
|
||||
Q_DECLARE_TYPEINFO(QQuickUniversalProgressRing, Q_COMPLEX_TYPE);
|
||||
Q_DECLARE_TYPEINFO(QQuickUniversalProgressRingAnimator, Q_COMPLEX_TYPE);
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QQUICKUNIVERSALPROGRESSRING_P_H
|
|
@ -0,0 +1,304 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure 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 "qquickuniversalprogressstrip_p.h"
|
||||
|
||||
#include <QtCore/qmath.h>
|
||||
#include <QtCore/qeasingcurve.h>
|
||||
#include <QtQuick/qsgsimplerectnode.h>
|
||||
#include <QtQuick/private/qquickitem_p.h>
|
||||
#include <QtQuick/private/qquickanimatorjob_p.h>
|
||||
#include <QtQuick/private/qsgadaptationlayer_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 QQuickUniversalProgressStripAnimatorJob : public QQuickAnimatorJob
|
||||
{
|
||||
public:
|
||||
QQuickUniversalProgressStripAnimatorJob();
|
||||
|
||||
void initialize(QQuickAnimatorController *controller) Q_DECL_OVERRIDE;
|
||||
void updateCurrentTime(int time) Q_DECL_OVERRIDE;
|
||||
void writeBack() Q_DECL_OVERRIDE;
|
||||
void nodeWasDestroyed() Q_DECL_OVERRIDE;
|
||||
void afterNodeSync() Q_DECL_OVERRIDE;
|
||||
|
||||
private:
|
||||
struct Phase {
|
||||
Phase() : duration(0), from(0), to(0) { }
|
||||
Phase(int d, qreal f, qreal t) : duration(d), from(f), to(t) { }
|
||||
int duration;
|
||||
qreal from;
|
||||
qreal to;
|
||||
};
|
||||
|
||||
QSGNode *m_node;
|
||||
Phase m_borderPhases[PhaseCount];
|
||||
Phase m_ellipsePhases[PhaseCount];
|
||||
};
|
||||
|
||||
QQuickUniversalProgressStripAnimatorJob::QQuickUniversalProgressStripAnimatorJob() : m_node(Q_NULLPTR)
|
||||
{
|
||||
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 QQuickUniversalProgressStripAnimatorJob::initialize(QQuickAnimatorController *controller)
|
||||
{
|
||||
QQuickAnimatorJob::initialize(controller);
|
||||
m_node = QQuickItemPrivate::get(m_target)->childContainerNode();
|
||||
}
|
||||
|
||||
void QQuickUniversalProgressStripAnimatorJob::updateCurrentTime(int time)
|
||||
{
|
||||
if (!m_node)
|
||||
return;
|
||||
|
||||
QSGSimpleRectNode *geometryNode = static_cast<QSGSimpleRectNode *>(m_node->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; ++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; ++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 QQuickUniversalProgressStripAnimatorJob::writeBack()
|
||||
{
|
||||
}
|
||||
|
||||
void QQuickUniversalProgressStripAnimatorJob::nodeWasDestroyed()
|
||||
{
|
||||
m_node = Q_NULLPTR;
|
||||
}
|
||||
|
||||
void QQuickUniversalProgressStripAnimatorJob::afterNodeSync()
|
||||
{
|
||||
m_node = QQuickItemPrivate::get(m_target)->childContainerNode();
|
||||
}
|
||||
|
||||
QQuickUniversalProgressStripAnimator::QQuickUniversalProgressStripAnimator(QObject *parent)
|
||||
: QQuickAnimator(parent)
|
||||
{
|
||||
setDuration(TotalDuration);
|
||||
setLoops(QQuickAnimator::Infinite);
|
||||
}
|
||||
|
||||
QString QQuickUniversalProgressStripAnimator::propertyName() const
|
||||
{
|
||||
return QString();
|
||||
}
|
||||
|
||||
QQuickAnimatorJob *QQuickUniversalProgressStripAnimator::createJob() const
|
||||
{
|
||||
return new QQuickUniversalProgressStripAnimatorJob;
|
||||
}
|
||||
|
||||
QQuickUniversalProgressStrip::QQuickUniversalProgressStrip(QQuickItem *parent)
|
||||
: QQuickItem(parent), m_color(Qt::black)
|
||||
{
|
||||
setFlag(ItemHasContents);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalProgressStrip::color() const
|
||||
{
|
||||
return m_color;
|
||||
}
|
||||
|
||||
void QQuickUniversalProgressStrip::setColor(const QColor &color)
|
||||
{
|
||||
if (m_color != color) {
|
||||
m_color = color;
|
||||
update();
|
||||
emit colorChanged();
|
||||
}
|
||||
}
|
||||
|
||||
QSGNode *QQuickUniversalProgressStrip::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
|
||||
{
|
||||
QQuickItemPrivate *d = QQuickItemPrivate::get(this);
|
||||
|
||||
if (!oldNode)
|
||||
oldNode = new QSGSimpleRectNode(boundingRect(), Qt::transparent);
|
||||
static_cast<QSGSimpleRectNode *>(oldNode)->setRect(boundingRect());
|
||||
|
||||
QSGTransformNode *gridNode = static_cast<QSGTransformNode *>(oldNode->firstChild());
|
||||
if (!gridNode) {
|
||||
gridNode = new QSGTransformNode;
|
||||
oldNode->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);
|
||||
|
||||
QSGRectangleNode *rectNode = d->sceneGraphContext()->createRectangleNode();
|
||||
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);
|
||||
|
||||
QSGRectangleNode *rectNode = static_cast<QSGRectangleNode *>(opacityNode->firstChild());
|
||||
Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType);
|
||||
|
||||
rectNode->setRect(QRectF((EllipseCount - i - 1) * (EllipseDiameter + EllipseOffset), (height() - EllipseDiameter) / 2, EllipseDiameter, EllipseDiameter));
|
||||
rectNode->setColor(m_color);
|
||||
rectNode->update();
|
||||
|
||||
borderNode = borderNode->nextSibling();
|
||||
}
|
||||
|
||||
return oldNode;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
|
@ -0,0 +1,94 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure 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 QQUICKUNIVERSALPROGRESSSTRIP_P_H
|
||||
#define QQUICKUNIVERSALPROGRESSSTRIP_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 <QtQuick/private/qquickanimator_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QQuickUniversalProgressStrip : public QQuickItem
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL)
|
||||
|
||||
public:
|
||||
QQuickUniversalProgressStrip(QQuickItem *parent = Q_NULLPTR);
|
||||
|
||||
QColor color() const;
|
||||
void setColor(const QColor &color);
|
||||
|
||||
Q_SIGNALS:
|
||||
void colorChanged();
|
||||
|
||||
protected:
|
||||
QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
|
||||
|
||||
private:
|
||||
QColor m_color;
|
||||
};
|
||||
|
||||
class QQuickUniversalProgressStripAnimator : public QQuickAnimator
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QQuickUniversalProgressStripAnimator(QObject *parent = Q_NULLPTR);
|
||||
|
||||
protected:
|
||||
QString propertyName() const Q_DECL_OVERRIDE;
|
||||
QQuickAnimatorJob *createJob() const Q_DECL_OVERRIDE;
|
||||
};
|
||||
|
||||
Q_DECLARE_TYPEINFO(QQuickUniversalProgressStrip, Q_COMPLEX_TYPE);
|
||||
Q_DECLARE_TYPEINFO(QQuickUniversalProgressStripAnimator, Q_COMPLEX_TYPE);
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif // QQUICKUNIVERSALPROGRESSSTRIP_P_H
|
|
@ -0,0 +1,412 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure 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 "qquickstyle_p.h"
|
||||
|
||||
#include <QtGui/qfont.h>
|
||||
#include <QtGui/qguiapplication.h>
|
||||
#include <QtQuick/private/qquickitem_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
static const QQuickUniversalStyle::Theme DefaultTheme = QQuickUniversalStyle::Light;
|
||||
static const QQuickUniversalStyle::Accent DefaultAccent = QQuickUniversalStyle::Cobalt;
|
||||
|
||||
static QColor qquickuniversal_light_color(QQuickUniversalStyle::SystemColor role)
|
||||
{
|
||||
static const QColor colors[] = {
|
||||
"#FFFFFFFF", // SystemAltHighColor
|
||||
"#33FFFFFF", // SystemAltLowColor
|
||||
"#99FFFFFF", // SystemAltMediumColor
|
||||
"#CCFFFFFF", // SystemAltMediumHighColor
|
||||
"#66FFFFFF", // SystemAltMediumLowColor
|
||||
"#FF000000", // SystemBaseHighColor
|
||||
"#33000000", // SystemBaseLowColor
|
||||
"#99000000", // SystemBaseMediumColor
|
||||
"#CC000000", // SystemBaseMediumHighColor
|
||||
"#66000000", // SystemBaseMediumLowColor
|
||||
"#FF171717", // SystemChromeAltLowColor
|
||||
"#FF000000", // SystemChromeBlackHighColor
|
||||
"#33000000", // SystemChromeBlackLowColor
|
||||
"#66000000", // SystemChromeBlackMediumLowColor
|
||||
"#CC000000", // SystemChromeBlackMediumColor
|
||||
"#FFCCCCCC", // SystemChromeDisabledHighColor
|
||||
"#FF7A7A7A", // SystemChromeDisabledLowColor
|
||||
"#FFCCCCCC", // SystemChromeHighColor
|
||||
"#FFF2F2F2", // SystemChromeLowColor
|
||||
"#FFE6E6E6", // SystemChromeMediumColor
|
||||
"#FFF2F2F2", // SystemChromeMediumLowColor
|
||||
"#FFFFFFFF", // SystemChromeWhiteColor
|
||||
"#19000000", // SystemListLowColor
|
||||
"#33000000" // SystemListMediumColor
|
||||
};
|
||||
return colors[role];
|
||||
}
|
||||
|
||||
static QColor qquickuniversal_dark_color(QQuickUniversalStyle::SystemColor role)
|
||||
{
|
||||
static const QColor colors[] = {
|
||||
"#FF000000", // SystemAltHighColor
|
||||
"#33000000", // SystemAltLowColor
|
||||
"#99000000", // SystemAltMediumColor
|
||||
"#CC000000", // SystemAltMediumHighColor
|
||||
"#66000000", // SystemAltMediumLowColor
|
||||
"#FFFFFFFF", // SystemBaseHighColor
|
||||
"#33FFFFFF", // SystemBaseLowColor
|
||||
"#99FFFFFF", // SystemBaseMediumColor
|
||||
"#CCFFFFFF", // SystemBaseMediumHighColor
|
||||
"#66FFFFFF", // SystemBaseMediumLowColor
|
||||
"#FFF2F2F2", // SystemChromeAltLowColor
|
||||
"#FF000000", // SystemChromeBlackHighColor
|
||||
"#33000000", // SystemChromeBlackLowColor
|
||||
"#66000000", // SystemChromeBlackMediumLowColor
|
||||
"#CC000000", // SystemChromeBlackMediumColor
|
||||
"#FF333333", // SystemChromeDisabledHighColor
|
||||
"#FF858585", // SystemChromeDisabledLowColor
|
||||
"#FF767676", // SystemChromeHighColor
|
||||
"#FF171717", // SystemChromeLowColor
|
||||
"#FF1F1F1F", // SystemChromeMediumColor
|
||||
"#FF2B2B2B", // SystemChromeMediumLowColor
|
||||
"#FFFFFFFF", // SystemChromeWhiteColor
|
||||
"#19FFFFFF", // SystemListLowColor
|
||||
"#33FFFFFF" // SystemListMediumColor
|
||||
};
|
||||
return colors[role];
|
||||
}
|
||||
|
||||
static QColor qquickuniversal_accent_color(QQuickUniversalStyle::Accent accent)
|
||||
{
|
||||
static const QColor colors[] = {
|
||||
"#A4C400", // Lime
|
||||
"#60A917", // Green
|
||||
"#008A00", // Emerald
|
||||
"#00ABA9", // Teal
|
||||
"#1BA1E2", // Cyan
|
||||
"#3E65FF", // Cobalt
|
||||
"#6A00FF", // Indigo
|
||||
"#AA00FF", // Violet
|
||||
"#F472D0", // Pink
|
||||
"#D80073", // Magenta
|
||||
"#A20025", // Crimson
|
||||
"#E51400", // Red
|
||||
"#FA6800", // Orange
|
||||
"#F0A30A", // Amber
|
||||
"#E3C800", // Yellow
|
||||
"#825A2C", // Brown
|
||||
"#6D8764", // Olive
|
||||
"#647687", // Steel
|
||||
"#76608A", // Mauve
|
||||
"#87794E" // Taupe
|
||||
};
|
||||
return colors[accent];
|
||||
}
|
||||
|
||||
QQuickUniversalStyle::QQuickUniversalStyle(QObject *parent) : QObject(parent),
|
||||
m_hasTheme(false), m_hasAccent(false), m_theme(DefaultTheme), m_accent(DefaultAccent)
|
||||
{
|
||||
QQuickItem *item = qobject_cast<QQuickItem *>(parent);
|
||||
if (item)
|
||||
QQuickItemPrivate::get(item)->addItemChangeListener(this, QQuickItemPrivate::Parent);
|
||||
}
|
||||
|
||||
QQuickUniversalStyle::~QQuickUniversalStyle()
|
||||
{
|
||||
QQuickItem *item = qobject_cast<QQuickItem *>(parent());
|
||||
if (item)
|
||||
QQuickItemPrivate::get(item)->removeItemChangeListener(this, QQuickItemPrivate::Parent);
|
||||
|
||||
reparent(Q_NULLPTR);
|
||||
}
|
||||
|
||||
QQuickUniversalStyle *QQuickUniversalStyle::qmlAttachedProperties(QObject *object)
|
||||
{
|
||||
QQuickUniversalStyle *style = new QQuickUniversalStyle(object);
|
||||
QQuickUniversalStyle *parentStyle = QQuickStyle::findParent<QQuickUniversalStyle>(object);
|
||||
if (parentStyle)
|
||||
style->reparent(parentStyle);
|
||||
|
||||
QList<QQuickUniversalStyle *> children = QQuickStyle::findChildren<QQuickUniversalStyle>(object);
|
||||
foreach (QQuickUniversalStyle *child, children)
|
||||
child->reparent(style);
|
||||
return style;
|
||||
}
|
||||
|
||||
QQuickUniversalStyle::Theme QQuickUniversalStyle::theme() const
|
||||
{
|
||||
return m_theme;
|
||||
}
|
||||
|
||||
void QQuickUniversalStyle::setTheme(Theme theme)
|
||||
{
|
||||
m_hasTheme = true;
|
||||
if (m_theme != theme) {
|
||||
m_theme = theme;
|
||||
foreach (QQuickUniversalStyle *child, m_childStyles)
|
||||
child->inheritTheme(theme);
|
||||
emit themeChanged();
|
||||
emit paletteChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void QQuickUniversalStyle::inheritTheme(Theme theme)
|
||||
{
|
||||
if (!m_hasTheme && m_theme != theme) {
|
||||
m_theme = theme;
|
||||
foreach (QQuickUniversalStyle *child, m_childStyles)
|
||||
child->inheritTheme(theme);
|
||||
emit themeChanged();
|
||||
emit paletteChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void QQuickUniversalStyle::resetTheme()
|
||||
{
|
||||
if (m_hasTheme) {
|
||||
m_hasTheme = false;
|
||||
QQuickUniversalStyle *parentStyle = QQuickStyle::findParent<QQuickUniversalStyle>(parent());
|
||||
inheritTheme(parentStyle ? parentStyle->theme() : DefaultTheme);
|
||||
}
|
||||
}
|
||||
|
||||
QQuickUniversalStyle::Accent QQuickUniversalStyle::accent() const
|
||||
{
|
||||
return m_accent;
|
||||
}
|
||||
|
||||
void QQuickUniversalStyle::setAccent(Accent accent)
|
||||
{
|
||||
if (accent < Lime || accent > Taupe) {
|
||||
qWarning() << "QQuickUniversalStyle: unknown accent" << accent;
|
||||
return;
|
||||
}
|
||||
m_hasAccent = true;
|
||||
if (m_accent != accent) {
|
||||
m_accent = accent;
|
||||
foreach (QQuickUniversalStyle *child, m_childStyles)
|
||||
child->inheritAccent(accent);
|
||||
emit accentChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void QQuickUniversalStyle::inheritAccent(Accent accent)
|
||||
{
|
||||
if (!m_hasAccent && m_accent != accent) {
|
||||
m_accent = accent;
|
||||
foreach (QQuickUniversalStyle *child, m_childStyles)
|
||||
child->inheritAccent(accent);
|
||||
emit accentChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void QQuickUniversalStyle::resetAccent()
|
||||
{
|
||||
if (m_hasAccent) {
|
||||
m_hasAccent = false;
|
||||
QQuickUniversalStyle *parentStyle = QQuickStyle::findParent<QQuickUniversalStyle>(parent());
|
||||
inheritAccent(parentStyle ? parentStyle->accent() : DefaultAccent);
|
||||
}
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::accentColor() const
|
||||
{
|
||||
return qquickuniversal_accent_color(m_accent);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::altHighColor() const
|
||||
{
|
||||
return getColor(AltHigh);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::altLowColor() const
|
||||
{
|
||||
return getColor(AltLow);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::altMediumColor() const
|
||||
{
|
||||
return getColor(AltMedium);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::altMediumHighColor() const
|
||||
{
|
||||
return getColor(AltMediumHigh);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::altMediumLowColor() const
|
||||
{
|
||||
return getColor(AltMediumLow);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::baseHighColor() const
|
||||
{
|
||||
return getColor(BaseHighColor);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::baseLowColor() const
|
||||
{
|
||||
return getColor(BaseLow);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::baseMediumColor() const
|
||||
{
|
||||
return getColor(BaseMedium);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::baseMediumHighColor() const
|
||||
{
|
||||
return getColor(BaseMediumHigh);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::baseMediumLowColor() const
|
||||
{
|
||||
return getColor(BaseMediumLow);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::chromeAltLowColor() const
|
||||
{
|
||||
return getColor(ChromeAltLow);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::chromeBlackHighColor() const
|
||||
{
|
||||
return getColor(ChromeBlackHigh);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::chromeBlackLowColor() const
|
||||
{
|
||||
return getColor(ChromeBlackLow);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::chromeBlackMediumLowColor() const
|
||||
{
|
||||
return getColor(ChromeBlackMediumLow);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::chromeBlackMediumColor() const
|
||||
{
|
||||
return getColor(ChromeBlackMedium);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::chromeDisabledHighColor() const
|
||||
{
|
||||
return getColor(ChromeDisabledHigh);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::chromeDisabledLowColor() const
|
||||
{
|
||||
return getColor(ChromeDisabledLow);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::chromeHighColor() const
|
||||
{
|
||||
return getColor(ChromeHigh);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::chromeLowColor() const
|
||||
{
|
||||
return getColor(ChromeLow);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::chromeMediumColor() const
|
||||
{
|
||||
return getColor(ChromeMedium);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::chromeMediumLowColor() const
|
||||
{
|
||||
return getColor(ChromeMediumLow);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::chromeWhiteColor() const
|
||||
{
|
||||
return getColor(ChromeWhite);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::listLowColor() const
|
||||
{
|
||||
return getColor(ListLow);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::listMediumColor() const
|
||||
{
|
||||
return getColor(ListMedium);
|
||||
}
|
||||
|
||||
QColor QQuickUniversalStyle::getColor(SystemColor role) const
|
||||
{
|
||||
return m_theme == QQuickUniversalStyle::Dark ? qquickuniversal_dark_color(role) : qquickuniversal_light_color(role);
|
||||
}
|
||||
|
||||
int QQuickUniversalStyle::fontSize() const
|
||||
{
|
||||
return 15; // ControlContentThemeFontSize
|
||||
}
|
||||
|
||||
QString QQuickUniversalStyle::fontFamily() const
|
||||
{
|
||||
#ifdef Q_OS_WIN
|
||||
return QStringLiteral("Segoe UI"); // ContentControlThemeFontFamily
|
||||
#else
|
||||
return QGuiApplication::font().family();
|
||||
#endif
|
||||
}
|
||||
|
||||
void QQuickUniversalStyle::reparent(QQuickUniversalStyle *style)
|
||||
{
|
||||
if (m_parentStyle != style) {
|
||||
if (m_parentStyle)
|
||||
m_parentStyle->m_childStyles.remove(this);
|
||||
m_parentStyle = style;
|
||||
if (style) {
|
||||
style->m_childStyles.insert(this);
|
||||
inheritTheme(style->theme());
|
||||
inheritAccent(style->accent());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void QQuickUniversalStyle::itemParentChanged(QQuickItem *item, QQuickItem *parent)
|
||||
{
|
||||
QQuickUniversalStyle *style = QQuickStyle::instance<QQuickUniversalStyle>(item);
|
||||
if (style) {
|
||||
QQuickUniversalStyle *parentStyle = QQuickStyle::findParent<QQuickUniversalStyle>(parent);
|
||||
if (parentStyle)
|
||||
style->reparent(parentStyle);
|
||||
}
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
|
@ -0,0 +1,221 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure 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 <QtCore/qset.h>
|
||||
#include <QtCore/qpointer.h>
|
||||
#include <QtCore/qobject.h>
|
||||
#include <QtGui/qcolor.h>
|
||||
#include <QtQml/qqml.h>
|
||||
#include <QtQuick/private/qquickitemchangelistener_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QQuickUniversalStylePrivate;
|
||||
|
||||
class QQuickUniversalStyle : public QObject, public QQuickItemChangeListener
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(Theme theme READ theme WRITE setTheme RESET resetTheme NOTIFY themeChanged FINAL)
|
||||
Q_PROPERTY(Accent accent READ accent WRITE setAccent RESET resetAccent NOTIFY accentChanged FINAL)
|
||||
|
||||
Q_PROPERTY(QColor accentColor READ accentColor NOTIFY accentChanged 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)
|
||||
|
||||
Q_PROPERTY(int fontSize READ fontSize CONSTANT FINAL)
|
||||
Q_PROPERTY(QString fontFamily READ fontFamily CONSTANT FINAL)
|
||||
|
||||
public:
|
||||
explicit QQuickUniversalStyle(QObject *parent = Q_NULLPTR);
|
||||
~QQuickUniversalStyle();
|
||||
|
||||
static QQuickUniversalStyle *qmlAttachedProperties(QObject *object);
|
||||
|
||||
enum Theme { Light, Dark };
|
||||
Q_ENUM(Theme)
|
||||
|
||||
Theme theme() const;
|
||||
void setTheme(Theme theme);
|
||||
void inheritTheme(Theme theme);
|
||||
void resetTheme();
|
||||
|
||||
enum Accent {
|
||||
Lime,
|
||||
Green,
|
||||
Emerald,
|
||||
Teal,
|
||||
Cyan,
|
||||
Cobalt,
|
||||
Indigo,
|
||||
Violet,
|
||||
Pink,
|
||||
Magenta,
|
||||
Crimson,
|
||||
Red,
|
||||
Orange,
|
||||
Amber,
|
||||
Yellow,
|
||||
Brown,
|
||||
Olive,
|
||||
Steel,
|
||||
Mauve,
|
||||
Taupe
|
||||
};
|
||||
Q_ENUM(Accent)
|
||||
|
||||
Accent accent() const;
|
||||
void setAccent(Accent accent);
|
||||
void inheritAccent(Accent accent);
|
||||
void resetAccent();
|
||||
|
||||
QColor accentColor() 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,
|
||||
BaseHighColor,
|
||||
BaseLow,
|
||||
BaseMedium,
|
||||
BaseMediumHigh,
|
||||
BaseMediumLow,
|
||||
ChromeAltLow,
|
||||
ChromeBlackHigh,
|
||||
ChromeBlackLow,
|
||||
ChromeBlackMediumLow,
|
||||
ChromeBlackMedium,
|
||||
ChromeDisabledHigh,
|
||||
ChromeDisabledLow,
|
||||
ChromeHigh,
|
||||
ChromeLow,
|
||||
ChromeMedium,
|
||||
ChromeMediumLow,
|
||||
ChromeWhite,
|
||||
ListLow,
|
||||
ListMedium
|
||||
};
|
||||
|
||||
QColor getColor(SystemColor role) const;
|
||||
|
||||
int fontSize() const;
|
||||
QString fontFamily() const;
|
||||
|
||||
Q_SIGNALS:
|
||||
void themeChanged();
|
||||
void accentChanged();
|
||||
void paletteChanged();
|
||||
|
||||
protected:
|
||||
void reparent(QQuickUniversalStyle *parent);
|
||||
void itemParentChanged(QQuickItem *item, QQuickItem *parent) Q_DECL_OVERRIDE;
|
||||
|
||||
private:
|
||||
bool m_hasTheme;
|
||||
bool m_hasAccent;
|
||||
QQuickUniversalStyle::Theme m_theme;
|
||||
QQuickUniversalStyle::Accent m_accent;
|
||||
QPointer<QQuickUniversalStyle> m_parentStyle;
|
||||
QSet<QQuickUniversalStyle *> m_childStyles;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
QML_DECLARE_TYPEINFO(QQuickUniversalStyle, QML_HAS_ATTACHED_PROPERTIES)
|
||||
|
||||
#endif // QQUICKUNIVERSALSTYLE_P_H
|
|
@ -0,0 +1,79 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the Qt Labs Controls module of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure 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 "qquickuniversalimageprovider_p.h"
|
||||
#include "qquickuniversalprogressring_p.h"
|
||||
#include "qquickuniversalprogressstrip_p.h"
|
||||
#include "qquickuniversalstyle_p.h"
|
||||
|
||||
void initResources()
|
||||
{
|
||||
Q_INIT_RESOURCE(qtlabsuniversalstyleplugin);
|
||||
}
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QtLabsUniversalStylePlugin: public QQmlExtensionPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0")
|
||||
|
||||
public:
|
||||
void registerTypes(const char *uri) Q_DECL_OVERRIDE;
|
||||
void initializeEngine(QQmlEngine *engine, const char *uri) Q_DECL_OVERRIDE;
|
||||
};
|
||||
|
||||
void QtLabsUniversalStylePlugin::registerTypes(const char *uri)
|
||||
{
|
||||
qmlRegisterUncreatableType<QQuickUniversalStyle>(uri, 1, 0, "Universal", "Universal is an attached property");
|
||||
}
|
||||
|
||||
void QtLabsUniversalStylePlugin::initializeEngine(QQmlEngine *engine, const char *uri)
|
||||
{
|
||||
initResources();
|
||||
engine->addImageProvider("universal", new QQuickUniversalImageProvider);
|
||||
|
||||
QByteArray import = QByteArray(uri) + ".impl";
|
||||
qmlRegisterType<QQuickUniversalProgressRing>(import, 1, 0, "ProgressRing");
|
||||
qmlRegisterType<QQuickUniversalProgressRingAnimator>(import, 1, 0, "ProgressRingAnimator");
|
||||
qmlRegisterType<QQuickUniversalProgressStrip>(import, 1, 0, "ProgressStrip");
|
||||
qmlRegisterType<QQuickUniversalProgressStripAnimator>(import, 1, 0, "ProgressStripAnimator");
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#include "qtlabsuniversalstyleplugin.moc"
|
|
@ -0,0 +1,16 @@
|
|||
<!DOCTYPE RCC><RCC version="1.0">
|
||||
<qresource prefix="org.qt-project/imports/Qt/labs/controls/universal">
|
||||
<file>images/checkmark.png</file>
|
||||
<file>images/checkmark@2x.png</file>
|
||||
<file>images/checkmark@3x.png</file>
|
||||
<file>images/checkmark@4x.png</file>
|
||||
<file>images/leftarrow.png</file>
|
||||
<file>images/leftarrow@2x.png</file>
|
||||
<file>images/leftarrow@3x.png</file>
|
||||
<file>images/leftarrow@4x.png</file>
|
||||
<file>images/rightarrow.png</file>
|
||||
<file>images/rightarrow@2x.png</file>
|
||||
<file>images/rightarrow@3x.png</file>
|
||||
<file>images/rightarrow@4x.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
|
@ -0,0 +1,38 @@
|
|||
QML_FILES += \
|
||||
$$PWD/ApplicationWindow.qml \
|
||||
$$PWD/BusyIndicator.qml \
|
||||
$$PWD/Button.qml \
|
||||
$$PWD/CheckBox.qml \
|
||||
$$PWD/Dial.qml \
|
||||
$$PWD/Frame.qml \
|
||||
$$PWD/GroupBox.qml \
|
||||
$$PWD/Label.qml \
|
||||
$$PWD/PageIndicator.qml \
|
||||
$$PWD/ProgressBar.qml \
|
||||
$$PWD/RadioButton.qml \
|
||||
$$PWD/RangeSlider.qml \
|
||||
$$PWD/ScrollBar.qml \
|
||||
$$PWD/ScrollIndicator.qml \
|
||||
$$PWD/Slider.qml \
|
||||
$$PWD/SpinBox.qml \
|
||||
$$PWD/StackView.qml \
|
||||
$$PWD/Switch.qml \
|
||||
$$PWD/TabBar.qml \
|
||||
$$PWD/TabButton.qml \
|
||||
$$PWD/TextArea.qml \
|
||||
$$PWD/TextField.qml \
|
||||
$$PWD/ToolBar.qml \
|
||||
$$PWD/ToolButton.qml \
|
||||
$$PWD/Tumbler.qml
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/qquickuniversalimageprovider_p.h \
|
||||
$$PWD/qquickuniversalprogressring_p.h \
|
||||
$$PWD/qquickuniversalprogressstrip_p.h \
|
||||
$$PWD/qquickuniversalstyle_p.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/qquickuniversalimageprovider.cpp \
|
||||
$$PWD/qquickuniversalprogressring.cpp \
|
||||
$$PWD/qquickuniversalprogressstrip.cpp \
|
||||
$$PWD/qquickuniversalstyle.cpp
|
|
@ -0,0 +1,21 @@
|
|||
TARGET = qtlabsuniversalstyleplugin
|
||||
TARGETPATH = Qt/labs/controls/universal
|
||||
IMPORT_VERSION = 1.0
|
||||
|
||||
QT += qml quick
|
||||
QT += core-private gui-private qml-private quick-private labstemplates-private
|
||||
|
||||
OTHER_FILES += \
|
||||
qmldir
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/qtlabsuniversalstyleplugin.cpp
|
||||
|
||||
RESOURCES += \
|
||||
$$PWD/qtlabsuniversalstyleplugin.qrc
|
||||
|
||||
include(universal.pri)
|
||||
include(../shared/shared.pri)
|
||||
|
||||
CONFIG += no_cxx_module
|
||||
load(qml_plugin)
|
|
@ -4,3 +4,6 @@ SUBDIRS += \
|
|||
controls/material/material.pro \
|
||||
calendar \
|
||||
templates
|
||||
|
||||
SUBDIRS += \
|
||||
controls/universal/universal.pro
|
||||
|
|
|
@ -8,4 +8,5 @@ SUBDIRS += \
|
|||
pressandhold \
|
||||
sanity \
|
||||
snippets \
|
||||
theme
|
||||
theme \
|
||||
universal
|
||||
|
|
|
@ -0,0 +1,225 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the test suite of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** 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 2.2
|
||||
import QtQuick.Window 2.2
|
||||
import QtTest 1.0
|
||||
import Qt.labs.controls 1.0
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
TestCase {
|
||||
id: testCase
|
||||
width: 200
|
||||
height: 200
|
||||
visible: true
|
||||
when: windowShown
|
||||
name: "Universal"
|
||||
|
||||
Component {
|
||||
id: button
|
||||
Button { }
|
||||
}
|
||||
|
||||
Component {
|
||||
id: styledButton
|
||||
Button {
|
||||
Universal.theme: Universal.Dark
|
||||
Universal.accent: Universal.Violet
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: window
|
||||
Window { }
|
||||
}
|
||||
|
||||
Component {
|
||||
id: styledWindow
|
||||
Window {
|
||||
Universal.theme: Universal.Dark
|
||||
Universal.accent: Universal.Green
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: loader
|
||||
Loader {
|
||||
active: false
|
||||
sourceComponent: Button { }
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: swipeView
|
||||
SwipeView {
|
||||
Universal.theme: Universal.Dark
|
||||
Button { }
|
||||
}
|
||||
}
|
||||
|
||||
function test_defaults() {
|
||||
var control = button.createObject(testCase)
|
||||
verify(control)
|
||||
verify(control.Universal)
|
||||
compare(control.Universal.accent, Universal.Cobalt)
|
||||
compare(control.Universal.theme, Universal.Light)
|
||||
control.destroy()
|
||||
}
|
||||
|
||||
function test_set() {
|
||||
var control = button.createObject(testCase)
|
||||
verify(control)
|
||||
control.Universal.accent = Universal.Steel
|
||||
control.Universal.theme = Universal.Dark
|
||||
compare(control.Universal.accent, Universal.Steel)
|
||||
compare(control.Universal.theme, Universal.Dark)
|
||||
control.destroy()
|
||||
}
|
||||
|
||||
function test_reset() {
|
||||
var control = styledButton.createObject(testCase)
|
||||
verify(control)
|
||||
compare(control.Universal.accent, Universal.Violet)
|
||||
compare(control.Universal.theme, Universal.Dark)
|
||||
control.Universal.accent = undefined
|
||||
control.Universal.theme = undefined
|
||||
compare(control.Universal.accent, testCase.Universal.accent)
|
||||
compare(control.Universal.theme, testCase.Universal.theme)
|
||||
control.destroy()
|
||||
}
|
||||
|
||||
function test_inheritance_data() {
|
||||
return [
|
||||
{ tag: "accent", value1: Universal.Crimson, value2: Universal.Indigo },
|
||||
{ tag: "theme", value1: Universal.Dark, value2: Universal.Light },
|
||||
]
|
||||
}
|
||||
|
||||
function test_inheritance(data) {
|
||||
var prop = data.tag
|
||||
var parent = button.createObject(testCase)
|
||||
parent.Universal[prop] = data.value1
|
||||
compare(parent.Universal[prop], data.value1)
|
||||
|
||||
var child1 = button.createObject(parent)
|
||||
compare(child1.Universal[prop], data.value1)
|
||||
|
||||
parent.Universal[prop] = data.value2
|
||||
compare(parent.Universal[prop], data.value2)
|
||||
compare(child1.Universal[prop], data.value2)
|
||||
|
||||
var child2 = button.createObject(parent)
|
||||
compare(child2.Universal[prop], data.value2)
|
||||
|
||||
child2.Universal[prop] = data.value1
|
||||
compare(child2.Universal[prop], data.value1)
|
||||
compare(child1.Universal[prop], data.value2)
|
||||
compare(parent.Universal[prop], data.value2)
|
||||
|
||||
parent.Universal[prop] = undefined
|
||||
verify(parent.Universal[prop] !== data.value1)
|
||||
verify(parent.Universal[prop] !== undefined)
|
||||
compare(child1.Universal[prop], parent.Universal[prop])
|
||||
verify(child2.Universal[prop] !== parent.Universal[prop])
|
||||
|
||||
var grandChild1 = button.createObject(child1)
|
||||
var grandChild2 = button.createObject(child2)
|
||||
compare(grandChild1.Universal[prop], child1.Universal[prop])
|
||||
compare(grandChild2.Universal[prop], child2.Universal[prop])
|
||||
|
||||
var themelessGrandGrandChild = button.createObject(grandChild1)
|
||||
var grandGrandGrandChild1 = button.createObject(themelessGrandGrandChild)
|
||||
compare(grandGrandGrandChild1.Universal[prop], parent.Universal[prop])
|
||||
|
||||
child1.Universal[prop] = data.value2
|
||||
compare(child1.Universal[prop], data.value2)
|
||||
compare(grandChild1.Universal[prop], data.value2)
|
||||
compare(grandGrandGrandChild1.Universal[prop], data.value2)
|
||||
|
||||
parent.destroy()
|
||||
}
|
||||
|
||||
function test_window() {
|
||||
var parent = window.createObject()
|
||||
|
||||
var control = button.createObject(parent.contentItem)
|
||||
compare(control.Universal.accent, parent.Universal.accent)
|
||||
compare(control.Universal.theme, parent.Universal.theme)
|
||||
|
||||
var styledChild = styledWindow.createObject(window)
|
||||
verify(styledChild.Universal.accent !== parent.Universal.accent)
|
||||
verify(styledChild.Universal.theme !== parent.Universal.theme)
|
||||
|
||||
var unstyledChild = window.createObject(window)
|
||||
compare(unstyledChild.Universal.accent, parent.Universal.accent)
|
||||
compare(unstyledChild.Universal.theme, parent.Universal.theme)
|
||||
|
||||
parent.Universal.accent = Universal.Cyan
|
||||
compare(control.Universal.accent, Universal.Cyan)
|
||||
verify(styledChild.Universal.accent !== Universal.Cyan)
|
||||
// ### TODO: compare(unstyledChild.Universal.accent, Universal.Cyan)
|
||||
|
||||
parent.destroy()
|
||||
}
|
||||
|
||||
function test_loader() {
|
||||
var control = loader.createObject(testCase)
|
||||
control.Universal.accent = Universal.Lime
|
||||
control.active = true
|
||||
compare(control.item.Universal.accent, Universal.Lime)
|
||||
control.Universal.accent = Universal.Pink
|
||||
compare(control.item.Universal.accent, Universal.Pink)
|
||||
control.active = false
|
||||
control.Universal.accent = Universal.Brown
|
||||
control.active = true
|
||||
compare(control.item.Universal.accent, Universal.Brown)
|
||||
control.destroy()
|
||||
}
|
||||
|
||||
function test_swipeView() {
|
||||
var control = swipeView.createObject(testCase)
|
||||
verify(control)
|
||||
var child = control.itemAt(0)
|
||||
verify(child)
|
||||
compare(control.Universal.theme, Universal.Dark)
|
||||
compare(child.Universal.theme, Universal.Dark)
|
||||
control.destroy()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2015 The Qt Company Ltd.
|
||||
** Contact: http://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the test suite of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL3$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see http://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at http://www.qt.io/contact-us.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/lgpl.html.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU
|
||||
** General Public License version 2.0 or later as published by the Free
|
||||
** Software Foundation and appearing in the file LICENSE.GPL included in
|
||||
** the packaging of this file. Please review the following information to
|
||||
** ensure 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 <QtQuickTest/quicktest.h>
|
||||
QUICK_TEST_MAIN(tst_universal)
|
|
@ -0,0 +1,12 @@
|
|||
TEMPLATE = app
|
||||
TARGET = tst_universal
|
||||
CONFIG += qmltestcase
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/tst_universal.cpp
|
||||
|
||||
OTHER_FILES += \
|
||||
$$PWD/data/*
|
||||
|
||||
TESTDATA += \
|
||||
$$PWD/data/tst_*
|
|
@ -47,6 +47,9 @@ private slots:
|
|||
void controls();
|
||||
void controls_data();
|
||||
|
||||
void universal();
|
||||
void universal_data();
|
||||
|
||||
void calendar();
|
||||
void calendar_data();
|
||||
|
||||
|
@ -93,6 +96,20 @@ void tst_CreationTime::controls_data()
|
|||
addTestRows(QQC2_IMPORT_PATH "/controls");
|
||||
}
|
||||
|
||||
void tst_CreationTime::universal()
|
||||
{
|
||||
QFETCH(QUrl, url);
|
||||
QQmlComponent component(&engine);
|
||||
component.loadUrl(url);
|
||||
doBenchmark(&component);
|
||||
}
|
||||
|
||||
void tst_CreationTime::universal_data()
|
||||
{
|
||||
QTest::addColumn<QUrl>("url");
|
||||
addTestRows(QQC2_IMPORT_PATH "/controls/universal");
|
||||
}
|
||||
|
||||
void tst_CreationTime::calendar()
|
||||
{
|
||||
QFETCH(QUrl, url);
|
||||
|
|
|
@ -69,6 +69,9 @@ private slots:
|
|||
void controls();
|
||||
void controls_data();
|
||||
|
||||
void universal();
|
||||
void universal_data();
|
||||
|
||||
private:
|
||||
QQmlEngine engine;
|
||||
};
|
||||
|
@ -216,6 +219,18 @@ void tst_ObjectCount::controls_data()
|
|||
addTestRows(QQC2_IMPORT_PATH "/controls");
|
||||
}
|
||||
|
||||
void tst_ObjectCount::universal()
|
||||
{
|
||||
QFETCH(QUrl, url);
|
||||
doBenchmark(&engine, url);
|
||||
}
|
||||
|
||||
void tst_ObjectCount::universal_data()
|
||||
{
|
||||
QTest::addColumn<QUrl>("url");
|
||||
addTestRows(QQC2_IMPORT_PATH "/controls/universal");
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_ObjectCount)
|
||||
|
||||
#include "tst_objectcount.moc"
|
||||
|
|
|
@ -43,7 +43,7 @@ import QtQuick.Window 2.2
|
|||
import QtQuick.Layouts 1.0
|
||||
import Qt.labs.controls 1.0
|
||||
//import Qt.labs.controls.material 1.0
|
||||
//import Qt.labs.controls.universal 1.0
|
||||
import Qt.labs.controls.universal 1.0
|
||||
|
||||
ApplicationWindow {
|
||||
id: window
|
||||
|
@ -58,7 +58,7 @@ ApplicationWindow {
|
|||
Theme.baseColor: themeSwitch.checked ? "#444" : "#eee"
|
||||
|
||||
// Material.theme: themeSwitch.checked ? Material.Dark : Material.Light
|
||||
// Universal.theme: themeSwitch.checked ? Universal.Dark : Universal.Light
|
||||
Universal.theme: themeSwitch.checked ? Universal.Dark : Universal.Light
|
||||
|
||||
property int controlSpacing: 10
|
||||
|
||||
|
|