aboutsummaryrefslogtreecommitdiffstats
path: root/share/qtcreator/qmldesigner
diff options
context:
space:
mode:
authorHenning Gruendl <henning.gruendl@qt.io>2020-07-03 16:17:54 +0200
committerHenning Gründl <henning.gruendl@qt.io>2020-07-10 10:09:48 +0000
commit58ea14aea7c676633ffe83afe69d62b3f802e9a0 (patch)
tree76739b31e69230e5dd54584d729b757b91c9e402 /share/qtcreator/qmldesigner
parent245c9c760f04925a063f97c63cc466cf84ca85fd (diff)
QmlDesigner: Controls 1 cleanup
* Replace ScrollView Controls 1 with ScrollView Controls 2 * Replace TabView with TabBar and StackLayout * Remove unused styles * Replace Controls 1 imports * Remove print statement in FontSection * Fix layout width by correcting CheckBox width * Remove TabView from QtObjectPane Task-number: QDS-2454 Task-number: QDS-2455 Task-number: QDS-2456 Change-Id: I913d326afb012375dd5b804171cb8cd67681514c Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'share/qtcreator/qmldesigner')
-rw-r--r--share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml7
-rw-r--r--share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml80
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AdvancedSection.qml4
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AlignDistributeSection.qml46
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AnchorRow.qml12
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml126
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml24
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/QtObjectPane.qml85
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/AnchorButtons.qml4
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/Button.qml111
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ButtonRowButton.qml6
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml3
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/FontSection.qml1
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/GradientPresetList.qml88
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/GradientPresetTabContent.qml483
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/HorizontalScrollBar.qml (renamed from share/qtcreator/qmldesigner/statesEditorQmlSources/DesignerTextFieldStyle.qml)38
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/IconLabel.qml33
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ScrollView.qml36
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/VerticalScrollBar.qml (renamed from share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/Tab.qml)28
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/qmldir4
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/ActionIndicator.qml1
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/CheckBox.qml3
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/TabBar.qml (renamed from share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml)53
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/TabButton.qml (renamed from share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/TabView.qml)62
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/qmldir2
-rw-r--r--share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml5
-rw-r--r--share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml162
-rw-r--r--share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml136
28 files changed, 836 insertions, 807 deletions
diff --git a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml
index cd3ddef34d..1cbec5d802 100644
--- a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml
+++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemDelegate.qml
@@ -23,9 +23,8 @@
**
****************************************************************************/
-import QtQuick 2.1
-import QtQuick.Controls 1.1
-import QtQuick.Controls.Styles 1.0
+import QtQuick 2.15
+import QtQuick.Controls 2.15
import QtQuickDesignerTheme 1.0
import HelperWidgets 2.0
@@ -76,8 +75,6 @@ Item {
id: mouseRegion
anchors.fill: parent
tooltip: itemName
-
-
onPressed: {
rootView.startDragAndDrop(mouseRegion, itemLibraryEntry)
}
diff --git a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml
index 30b741f99d..c761952693 100644
--- a/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml
+++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml
@@ -23,15 +23,11 @@
**
****************************************************************************/
-import QtQuick 2.1
-import QtQuick.Controls 1.1
-import QtQuick.Controls.Styles 1.0
-import "../common"
-
-import QtQuick.Layouts 1.0
-import HelperWidgets 2.0
-
+import QtQuick 2.15
+import QtQuick.Layouts 1.15
import QtQuickDesignerTheme 1.0
+import HelperWidgets 2.0
+import StudioTheme 1.0 as StudioTheme
/* The view displaying the item grid.
@@ -65,9 +61,6 @@ ScrollView {
Item {
id: styleConstants
- readonly property color backgroundColor: Theme.qmlDesignerBackgroundColorDarkAlternate()
- readonly property color lighterBackgroundColor: Theme.color(Theme.FancyToolBarSeparatorColor)
-
property int textWidth: 58
property int textHeight: Theme.smallFontPixelSize() * 2
@@ -81,48 +74,37 @@ ScrollView {
2 * cellVerticalMargin + cellVerticalSpacing
}
- Rectangle {
- id: background
- anchors.fill: parent
- color: styleConstants.backgroundColor
- }
-
- style: DesignerScrollViewStyle {
-
- }
-
- Flickable {
- contentHeight: column.height
- Column {
- id: column
- Repeater {
- model: itemLibraryModel // to be set in Qml context
- delegate: Section {
- width: itemsView.viewport.width
- caption: sectionName // to be set by model
- visible: sectionVisible
- topPadding: 2
- leftPadding: 2
- rightPadding: 1
- expanded: sectionExpanded
- onExpandedChanged: itemLibraryModel.setExpanded(expanded, sectionName);
- Grid {
- id: itemGrid
-
- columns: parent.width / styleConstants.cellWidth
- property int flexibleWidth: (parent.width - styleConstants.cellWidth * columns) / columns
-
- Repeater {
- model: sectionEntries
- delegate: ItemDelegate {
- visible: itemVisible
- width: styleConstants.cellWidth + itemGrid.flexibleWidth
- height: styleConstants.cellHeight
- }
+ Column {
+ id: column
+ Repeater {
+ model: itemLibraryModel // to be set in Qml context
+ delegate: Section {
+ width: itemsView.width -
+ (itemsView.verticalScrollBarVisible ? StudioTheme.Values.scrollBarThickness : 0)
+ caption: sectionName // to be set by model
+ visible: sectionVisible
+ topPadding: 2
+ leftPadding: 2
+ rightPadding: 1
+ expanded: sectionExpanded
+ onExpandedChanged: itemLibraryModel.setExpanded(expanded, sectionName);
+ Grid {
+ id: itemGrid
+
+ columns: parent.width / styleConstants.cellWidth
+ property int flexibleWidth: (parent.width - styleConstants.cellWidth * columns) / columns
+
+ Repeater {
+ model: sectionEntries
+ delegate: ItemDelegate {
+ visible: itemVisible
+ width: styleConstants.cellWidth + itemGrid.flexibleWidth
+ height: styleConstants.cellHeight
}
}
}
}
}
}
+
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AdvancedSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AdvancedSection.qml
index 5434e4705b..22a14efa53 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AdvancedSection.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AdvancedSection.qml
@@ -33,7 +33,7 @@ Section {
caption: qsTr("Advanced")
SectionLayout {
- rows: 4
+ columns: 2
Label {
text: qsTr("Origin")
@@ -171,7 +171,6 @@ Section {
backendValue: backendValues.focus
text: backendValues.focus.valueToString
enabled: backendValues.focus.isAvailable
- implicitWidth: 180
}
ExpandingSpacer {
}
@@ -187,7 +186,6 @@ Section {
backendValue: backendValues.activeFocusOnTab
text: backendValues.activeFocusOnTab.valueToString
enabled: backendValues.activeFocusOnTab.isAvailable
- implicitWidth: 180
}
ExpandingSpacer {
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AlignDistributeSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AlignDistributeSection.qml
index 36f4c02642..e21879057b 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AlignDistributeSection.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AlignDistributeSection.qml
@@ -32,10 +32,10 @@ import StudioTheme 1.0 as StudioTheme
Section {
anchors.left: parent.left
anchors.right: parent.right
+
caption: qsTr("Align")
- ColumnLayout {
- width: parent.width
+ SectionLayout {
enabled: alignDistribute.multiSelection &&
!alignDistribute.selectionHasAnchors &&
alignDistribute.selectionExclusivlyItems &&
@@ -49,8 +49,11 @@ Section {
Label {
text: qsTr("Align objects")
width: 120
+ Layout.columnSpan: 2
}
+
RowLayout {
+ Layout.columnSpan: 2
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
@@ -105,8 +108,11 @@ Section {
Label {
text: qsTr("Distribute objects")
width: 120
+ Layout.columnSpan: 2
}
+
RowLayout {
+ Layout.columnSpan: 2
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
@@ -161,8 +167,11 @@ Section {
Label {
text: qsTr("Distribute spacing")
width: 120
+ Layout.columnSpan: 2
}
+
RowLayout {
+ Layout.columnSpan: 2
Row {
spacing: -StudioTheme.Values.border
AbstractButton {
@@ -242,18 +251,16 @@ Section {
}
}
- SectionLayout {
- columns: 2
-
- ItemFilterModel {
- id: itemFilterModel
- modelNodeBackendProperty: modelNodeBackend
- selectionOnly: true
- }
+ ItemFilterModel {
+ id: itemFilterModel
+ modelNodeBackendProperty: modelNodeBackend
+ selectionOnly: true
+ }
- Label {
- text: qsTr("Align to")
- }
+ Label {
+ text: qsTr("Align to")
+ }
+ SecondColumnLayout {
ComboBox {
id: alignToComboBox
Layout.fillWidth: true
@@ -267,9 +274,14 @@ Section {
}
}
- Label {
- text: qsTr("Key object")
+ ExpandingSpacer {
}
+ }
+
+ Label {
+ text: qsTr("Key object")
+ }
+ SecondColumnLayout {
ComboBox {
id: keyObjectComboBox
enabled: alignToComboBox.currentIndex === 2
@@ -285,11 +297,15 @@ Section {
lastSelectedItem = "" // TODO
}
}
+
+ ExpandingSpacer {
+ }
}
SectionLayout {
columns: 1
Layout.topMargin: 30
+ Layout.columnSpan: 2
visible: alignDistribute.multiSelection &&
(alignDistribute.selectionHasAnchors ||
!alignDistribute.selectionExclusivlyItems ||
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AnchorRow.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AnchorRow.qml
index 7d18d6a1f9..406e5af011 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AnchorRow.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/AnchorRow.qml
@@ -23,9 +23,9 @@
**
****************************************************************************/
-import QtQuick 2.0
+import QtQuick 2.15
import HelperWidgets 2.0
-import QtQuick.Layouts 1.0
+import QtQuick.Layouts 1.15
import QtQuickDesignerTheme 1.0
import StudioControls 1.0 as StudioControls
@@ -34,11 +34,9 @@ import StudioTheme 1.0 as StudioTheme
RowLayout {
id: anchorRow
- anchors.left: parent.left
- anchors.right: parent.right
opacity: enabled ? 1 : 0.5
- property alias iconSource: icon.source
+ property alias iconSource: iconLabel.icon
property variant anchorMargin
@@ -64,8 +62,10 @@ RowLayout {
readonly property color __defaultTextColor: StudioTheme.Values.themeTextColor
IconLabel {
- id: icon
+ id: iconLabel
Layout.alignment: Qt.AlignTop
+ Layout.topMargin: 4
+ Layout.leftMargin: 4
}
GridLayout {
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml
index d66b50da0b..77af9247cf 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/ItemPane.qml
@@ -23,10 +23,11 @@
**
****************************************************************************/
-import QtQuick 2.0
-import HelperWidgets 2.0
-import QtQuick.Layouts 1.0
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Layouts 1.15
import QtQuickDesignerTheme 1.0
+import HelperWidgets 2.0
import StudioControls 1.0 as StudioControls
import StudioTheme 1.0 as StudioTheme
@@ -35,14 +36,15 @@ Rectangle {
width: 320
height: 400
color: Theme.qmlDesignerBackgroundColorDarkAlternate()
+
MouseArea {
anchors.fill: parent
onClicked: forceActiveFocus()
}
ScrollView {
+ clip: true
anchors.fill: parent
- horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
Column {
y: -1
@@ -57,7 +59,6 @@ Rectangle {
SectionLayout {
Label {
text: qsTr("Type")
-
}
SecondColumnLayout {
@@ -280,7 +281,6 @@ Rectangle {
Item {
width: 10
height: 10
-
}
CheckBox {
@@ -319,88 +319,92 @@ Rectangle {
width: 4
}
- TabView {
+ StudioControls.TabBar {
+ id: tabBar
+
anchors.left: parent.left
anchors.right: parent.right
- frameVisible: false
- id: tabView
+ StudioControls.TabButton {
+ text: backendValues.className.value
+ }
+ StudioControls.TabButton {
+ text: qsTr("Layout")
+ }
+ StudioControls.TabButton {
+ text: qsTr("Advanced")
+ }
+ }
- height: currentHeight + extraHeight
+ StackLayout {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ currentIndex: tabBar.currentIndex
- property int currentHeight: getTab(currentIndex).item.implicitHeight
+ property int currentHeight: children[currentIndex].implicitHeight
property int extraHeight: 40
- Tab {
- title: backendValues.className.value
+ height: currentHeight + extraHeight
+
+ Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
- component: Column {
+ Loader {
anchors.left: parent.left
anchors.right: parent.right
+ visible: theSource !== ""
- Loader {
- anchors.left: parent.left
- anchors.right: parent.right
- visible: theSource !== ""
+ id: specificsTwo;
+ sourceComponent: specificQmlComponent
- id: specificsTwo;
- sourceComponent: specificQmlComponent
+ property string theSource: specificQmlData
- property string theSource: specificQmlData
-
- onTheSourceChanged: {
- active = false
- active = true
- }
+ onTheSourceChanged: {
+ active = false
+ active = true
}
+ }
- Loader {
- anchors.left: parent.left
- anchors.right: parent.right
+ Loader {
+ anchors.left: parent.left
+ anchors.right: parent.right
- id: specificsOne;
- source: specificsUrl;
+ id: specificsOne;
+ source: specificsUrl;
- property int loaderHeight: specificsOne.item.height + tabView.extraHeight
- }
+ property int loaderHeight: specificsOne.item.height + tabView.extraHeight
}
}
- Tab {
- title: qsTr("Layout")
- component: Column {
- anchors.left: parent.left
- anchors.right: parent.right
+ Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
- LayoutSection {
- }
+ LayoutSection {
+ }
- MarginSection {
- visible: anchorBackend.isInLayout
- backendValueTopMargin: backendValues.Layout_topMargin
- backendValueBottomMargin: backendValues.Layout_bottomMargin
- backendValueLeftMargin: backendValues.Layout_leftMargin
- backendValueRightMargin: backendValues.Layout_rightMargin
- backendValueMargins: backendValues.Layout_margins
- }
+ MarginSection {
+ visible: anchorBackend.isInLayout
+ backendValueTopMargin: backendValues.Layout_topMargin
+ backendValueBottomMargin: backendValues.Layout_bottomMargin
+ backendValueLeftMargin: backendValues.Layout_leftMargin
+ backendValueRightMargin: backendValues.Layout_rightMargin
+ backendValueMargins: backendValues.Layout_margins
+ }
- AlignDistributeSection {
- visible: !anchorBackend.isInLayout
- }
+ AlignDistributeSection {
+ visible: !anchorBackend.isInLayout
}
}
- Tab {
- anchors.fill: parent
- title: qsTr("Advanced")
- component: Column {
- anchors.left: parent.left
- anchors.right: parent.right
+ Column {
+ anchors.left: parent.left
+ anchors.right: parent.right
- AdvancedSection {
- }
- LayerSection {
- }
+ AdvancedSection {
+ }
+ LayerSection {
}
}
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml
index 7eeb8d2285..458e394fbf 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/LayoutSection.qml
@@ -50,8 +50,8 @@ Section {
}
AnchorRow {
- visible: anchorBackend.topAnchored;
- iconSource: "image://icons/anchor-top"
+ visible: anchorBackend.topAnchored
+ iconSource: StudioTheme.Constants.anchorTop
anchorMargin: backendValues.anchors_topMargin
targetName: anchorBackend.topTarget
onTargetChanged: {
@@ -73,8 +73,8 @@ Section {
}
AnchorRow {
- visible: anchorBackend.bottomAnchored;
- iconSource: "image://icons/anchor-bottom"
+ visible: anchorBackend.bottomAnchored
+ iconSource: StudioTheme.Constants.anchorBottom
anchorMargin: backendValues.anchors_bottomMargin
targetName: anchorBackend.bottomTarget
onTargetChanged: {
@@ -97,8 +97,8 @@ Section {
}
AnchorRow {
- visible: anchorBackend.leftAnchored;
- iconSource: "image://icons/anchor-left"
+ visible: anchorBackend.leftAnchored
+ iconSource: StudioTheme.Constants.anchorLeft
anchorMargin: backendValues.anchors_leftMargin
targetName: anchorBackend.leftTarget
onTargetChanged: {
@@ -120,8 +120,8 @@ Section {
}
AnchorRow {
- visible: anchorBackend.rightAnchored;
- iconSource: "image://icons/anchor-right"
+ visible: anchorBackend.rightAnchored
+ iconSource: StudioTheme.Constants.anchorRight
anchorMargin: backendValues.anchors_rightMargin
targetName: anchorBackend.rightTarget
onTargetChanged: {
@@ -145,8 +145,8 @@ Section {
AnchorRow {
showAlternativeTargets: false
- visible: anchorBackend.horizontalCentered;
- iconSource: "image://icons/anchor-horizontal"
+ visible: anchorBackend.horizontalCentered
+ iconSource: StudioTheme.Constants.centerHorizontal
anchorMargin: backendValues.anchors_horizontalCenterOffset
targetName: anchorBackend.horizontalTarget
onTargetChanged: {
@@ -158,8 +158,8 @@ Section {
AnchorRow {
showAlternativeTargets: false
- visible: anchorBackend.verticalCentered;
- iconSource: "image://icons/anchor-vertical"
+ visible: anchorBackend.verticalCentered
+ iconSource: StudioTheme.Constants.centerVertical
anchorMargin: backendValues.anchors_verticalCenterOffset
targetName: anchorBackend.verticalTarget
onTargetChanged: {
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/QtObjectPane.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/QtObjectPane.qml
index 99efa75c1e..5b3a641f4c 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/QtObjectPane.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/QtQuick/QtObjectPane.qml
@@ -23,10 +23,10 @@
**
****************************************************************************/
-import QtQuick 2.0
-import HelperWidgets 2.0
+import QtQuick 2.15
import QtQuick.Layouts 1.0
import QtQuickDesignerTheme 1.0
+import HelperWidgets 2.0
Rectangle {
id: itemPane
@@ -43,6 +43,7 @@ Rectangle {
anchors.fill: parent
Column {
+ id: rootColumn
y: -1
width: itemPane.width
Section {
@@ -54,7 +55,6 @@ Rectangle {
SectionLayout {
Label {
text: qsTr("Type")
-
}
SecondColumnLayout {
@@ -148,69 +148,30 @@ Rectangle {
width: 4
}
- TabView {
+ Column {
anchors.left: parent.left
anchors.right: parent.right
- frameVisible: false
-
- id: tabView
- height: Math.max(layoutSectionHeight, specficsHeight)
-
- property int layoutSectionHeight: 400
- property int specficsOneHeight: 0
- property int specficsTwoHeight: 0
-
- property int specficsHeight: Math.max(specficsOneHeight, specficsTwoHeight)
-
- property int extraHeight: 40
-
- Tab {
- id: tab
- title: backendValues.className.value
-
- component: Column {
- anchors.left: parent.left
- anchors.right: parent.right
- Loader {
- anchors.left: parent.left
- anchors.right: parent.right
-
- visible: theSource !== ""
-
- id: specificsTwo;
- sourceComponent: specificQmlComponent
-
- property string theSource: specificQmlData
-
- onTheSourceChanged: {
- active = false
- active = true
- }
-
- property int loaderHeight: specificsTwo.item.height + tabView.extraHeight
- onLoaderHeightChanged: tabView.specficsTwoHeight = loaderHeight
-
- onLoaded: {
- tabView.specficsTwoHeight = loaderHeight
- }
- }
-
- Loader {
- anchors.left: parent.left
- anchors.right: parent.right
-
- id: specificsOne;
- source: specificsUrl;
-
- property int loaderHeight: specificsOne.item.height + tabView.extraHeight
- onLoaderHeightChanged: tabView.specficsHeight = loaderHeight
-
- onLoaded: {
- tabView.specficsOneHeight = loaderHeight
- }
- }
+ Loader {
+ id: specificsTwo
+ anchors.left: parent.left
+ anchors.right: parent.right
+ visible: theSource !== ""
+ sourceComponent: specificQmlComponent
+
+ property string theSource: specificQmlData
+
+ onTheSourceChanged: {
+ active = false
+ active = true
}
}
+
+ Loader {
+ id: specificsOne
+ anchors.left: parent.left
+ anchors.right: parent.right
+ source: specificsUrl
+ }
}
}
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/AnchorButtons.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/AnchorButtons.qml
index 84d5090125..483c4947f0 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/AnchorButtons.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/AnchorButtons.qml
@@ -156,7 +156,7 @@ StudioControls.ButtonRow {
buttonIcon: StudioTheme.Constants.centerVertical
tooltip: qsTr("Anchor item vertically.")
- property bool verticalCentered: anchorBackend.verticalCentered;
+ property bool verticalCentered: anchorBackend.verticalCentered
onVerticalCenteredChanged: {
checked = verticalCentered
}
@@ -179,7 +179,7 @@ StudioControls.ButtonRow {
buttonIcon: StudioTheme.Constants.centerHorizontal
tooltip: qsTr("Anchor item horizontally.")
- property bool horizontalCentered: anchorBackend.horizontalCentered;
+ property bool horizontalCentered: anchorBackend.horizontalCentered
onHorizontalCenteredChanged: {
checked = horizontalCentered
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/Button.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/Button.qml
index 5f989d7e5f..a20469966a 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/Button.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/Button.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
@@ -23,48 +23,79 @@
**
****************************************************************************/
-import QtQuick 2.1
-import QtQuick.Controls 1.1 as Controls
-import QtQuick.Controls.Styles 1.1
-import "Constants.js" as Constants
+import QtQuick 2.15
+import QtQuick.Templates 2.15 as T
+import StudioTheme 1.0 as StudioTheme
-Controls.Button {
- property color borderColor: "#222"
- property color highlightColor: "orange"
- property color textColor: "#eee"
- style: ButtonStyle {
- label: Text {
- color: Constants.colorsDefaultText
- anchors.fill: parent
- renderType: Text.NativeRendering
- verticalAlignment: Text.AlignVCenter
- horizontalAlignment: Text.AlignHCenter
- text: control.text
- opacity: enabled ? 1 : 0.7
- }
- background: Rectangle {
- implicitWidth: 100
- implicitHeight: 23
- radius: 3
- gradient: control.pressed ? pressedGradient : gradient
- Gradient{
- id: pressedGradient
- GradientStop{color: "#333" ; position: 0}
+T.AbstractButton {
+ id: myButton
+
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
+
+ background: Rectangle {
+ id: buttonBackground
+ implicitWidth: 100
+ implicitHeight: 23
+ radius: 3
+ color: StudioTheme.Values.themeControlBackground
+ border.color: StudioTheme.Values.themeControlOutline
+ border.width: StudioTheme.Values.border
+ }
+
+ contentItem: Text {
+ id: buttonText
+ color: StudioTheme.Values.themeTextColor
+ font.family: StudioTheme.Constants.font.family
+ font.pixelSize: StudioTheme.Values.myFontSize
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ anchors.fill: parent
+ renderType: Text.QtRendering
+ text: myButton.text
+ }
+
+ states: [
+ State {
+ name: "default"
+ when: myButton.enabled && !myButton.hovered && !myButton.pressed
+ && !myButton.checked
+ PropertyChanges {
+ target: buttonBackground
+ color: StudioTheme.Values.themeControlBackground
+ }
+ },
+ State {
+ name: "hovered"
+ when: myButton.hovered && !myButton.pressed
+ PropertyChanges {
+ target: buttonBackground
+ color: StudioTheme.Values.themeHoverHighlight
}
- Gradient {
- id: gradient
- GradientStop {color: "#606060" ; position: 0}
- GradientStop {color: "#404040" ; position: 0.07}
- GradientStop {color: "#303030" ; position: 1}
+ },
+ State {
+ name: "pressed"
+ when: myButton.hovered && myButton.pressed
+ PropertyChanges {
+ target: buttonBackground
+ color: StudioTheme.Values.themeControlBackgroundPressed
+ border.color: StudioTheme.Values.themeInteraction
}
- Rectangle {
- anchors.fill: parent
- anchors.margins: -1
- color: "transparent"
- radius: 4
- opacity: 0.3
- visible: control.activeFocus
+ },
+ State {
+ name: "disabled"
+ when: !myButton.enabled
+ PropertyChanges {
+ target: buttonBackground
+ color: StudioTheme.Values.themeControlBackgroundDisabled
+ border.color: StudioTheme.Values.themeControlOutlineDisabled
+ }
+ PropertyChanges {
+ target: buttonText
+ color: StudioTheme.Values.themeTextColorDisabled
}
}
- }
+ ]
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ButtonRowButton.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ButtonRowButton.qml
index 6ba9957cd5..a893a12529 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ButtonRowButton.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ButtonRowButton.qml
@@ -23,10 +23,8 @@
**
****************************************************************************/
-import QtQuick 2.1
-import QtQuick.Controls 1.0 as Controls
-import QtQuick.Layouts 1.0
-import QtQuick.Controls.Private 1.0
+import QtQuick 2.15
+import QtQuick.Layouts 1.15
import QtQuickDesignerTheme 1.0
Item {
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml
index 8c12d37bb5..3d8291e7e7 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ColorEditor.qml
@@ -38,7 +38,7 @@ Column {
property bool supportGradient: false
- property string caption: "Color"
+ property string caption: qsTr("Color")
property variant backendValue
@@ -47,7 +47,6 @@ Column {
return Qt.rgba(backendValue.value.x, backendValue.value.y, backendValue.value.z, 1);
else
return backendValue.value;
-
}
property alias gradientPropertyName: gradientLine.gradientPropertyName
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/FontSection.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/FontSection.qml
index 8f1c130089..1261f2ee5e 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/FontSection.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/FontSection.qml
@@ -73,7 +73,6 @@ Section {
Layout.fillWidth: true
width: 160
property string familyName: backendValue.value
- onFamilyNameChanged: print(styleNamesForFamily(familyName))
}
Label {
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/GradientPresetList.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/GradientPresetList.qml
index d756b53fe6..4a0665076a 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/GradientPresetList.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/GradientPresetList.qml
@@ -23,12 +23,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Layouts 1.12
+import QtQuick 2.15
+import QtQuick.Layouts 1.15
import QtQuick.Dialogs 1.3
-
-import HelperWidgets 2.0
import QtQuickDesignerTheme 1.0
+import HelperWidgets 2.0
import StudioControls 1.0 as StudioControls
import StudioTheme 1.0 as StudioTheme
@@ -76,49 +75,52 @@ Dialog {
anchors.margins: 13
anchors.bottomMargin: 71
- TabView {
- id: presetTabView
- Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
- Layout.fillHeight: true
- Layout.fillWidth: true
+ StudioControls.TabBar {
+ id: presetTabBar
- Tab {
- title: qsTr("System Presets")
- anchors.fill: parent
+ anchors.left: parent.left
+ anchors.right: parent.right
- GradientPresetTabContent {
- id: defaultTabContent
- viewModel: defaultPresetListModel
- editableName: false
- }
+ StudioControls.TabButton {
+ text: qsTr("System Presets")
}
+ StudioControls.TabButton {
+ text: qsTr("User Presets")
+ }
+ }
+
+ StackLayout {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ currentIndex: presetTabBar.currentIndex
+
+ GradientPresetTabContent {
+ id: defaultTabContent
+ viewModel: defaultPresetListModel
+ editableName: false
+ }
+
+ GradientPresetTabContent {
+ id: customTabContent
+ viewModel: customPresetListModel
+ editableName: true
+ onPresetNameChanged: customPresetListModel.changePresetName(id, name)
+
+ property int deleteId
+
+ onDeleteButtonClicked: {
+ deleteId = id
+ deleteDialog.open()
+ }
- Tab {
- title: qsTr("User Presets")
- anchors.fill: parent
-
- GradientPresetTabContent {
- id: customTabContent
- viewModel: customPresetListModel
- editableName: true
- onPresetNameChanged: customPresetListModel.changePresetName(id, name)
-
- property int deleteId
-
- onDeleteButtonClicked: {
- deleteId = id
- deleteDialog.open()
- }
-
- MessageDialog {
- id: deleteDialog
- visible: false
- modality: Qt.WindowModal
- standardButtons: Dialog.No | Dialog.Yes
- title: qsTr("Delete preset?")
- text: qsTr("Are you sure you want to delete this preset?")
- onAccepted: customPresetListModel.deletePreset(customTabContent.deleteId)
- }
+ MessageDialog {
+ id: deleteDialog
+ visible: false
+ modality: Qt.WindowModal
+ standardButtons: Dialog.No | Dialog.Yes
+ title: qsTr("Delete preset?")
+ text: qsTr("Are you sure you want to delete this preset?")
+ onAccepted: customPresetListModel.deletePreset(customTabContent.deleteId)
}
}
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/GradientPresetTabContent.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/GradientPresetTabContent.qml
index f26064dd21..fd0fee4cf7 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/GradientPresetTabContent.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/GradientPresetTabContent.qml
@@ -23,12 +23,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Layouts 1.12
-import QtQuick.Dialogs 1.3
-
-import HelperWidgets 2.0
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Layouts 1.15
import QtQuickDesignerTheme 1.0
+import HelperWidgets 2.0
import StudioControls 1.0 as StudioControls
import StudioTheme 1.0 as StudioTheme
@@ -48,271 +47,277 @@ Rectangle {
property real delegateHeight: 178
property real gridCellWidth: 160
- ScrollView {
+ GridView {
+ id: gradientTable
Layout.fillWidth: true
Layout.fillHeight: true
anchors.fill: parent
+ anchors.leftMargin: 10
+ clip: true
+ delegate: gradientDelegate
+
+ property int gridColumns: width / tabBackground.gridCellWidth;
+ cellWidth: width / gridColumns
+ cellHeight: 185
+
+ property bool bothVisible: horizontal.scrollBarVisible && vertical.scrollBarVisible
+
+ ScrollBar.horizontal: HorizontalScrollBar {
+ id: horizontal
+ parent: gradientTable
+ }
+
+ ScrollBar.vertical: VerticalScrollBar {
+ id: vertical
+ parent: gradientTable
+ }
+
+ Component {
+ id: gradientDelegate
+
+ Rectangle {
+ id: backgroundCard
+ color: StudioTheme.Values.themeControlOutline
+ clip: true
- GridView {
- id: gradientTable
- Layout.fillWidth: true
- Layout.fillHeight: true
- anchors.fill: parent
- anchors.leftMargin: 10
- clip: true
- delegate: gradientDelegate
-
- property int gridColumns: width / tabBackground.gridCellWidth;
- cellWidth: width / gridColumns
- cellHeight: 185
-
- Component {
- id: gradientDelegate
-
- Rectangle {
- id: backgroundCard
- color: StudioTheme.Values.themeControlOutline
- clip: true
-
- property real flexibleWidth: (gradientTable.width - gradientTable.cellWidth * gradientTable.gridColumns) / gradientTable.gridColumns
- property bool isSelected: false
-
- width: gradientTable.cellWidth + flexibleWidth - 8
- height: tabBackground.delegateHeight
- radius: 16
-
- function selectPreset(index) {
- gradientTable.currentIndex = index
- gradientData.stops = stopsPosList
- gradientData.colors = stopsColorList
- gradientData.stopsCount = stopListSize
- gradientData.presetID = presetID
- gradientData.presetType = presetTabView.currentIndex
-
- if (gradientData.selectedItem != null)
- gradientData.selectedItem.isSelected = false
-
- backgroundCard.isSelected = true
- gradientData.selectedItem = backgroundCard
+ property real flexibleWidth: (gradientTable.width - gradientTable.cellWidth * gradientTable.gridColumns) / gradientTable.gridColumns
+ property bool isSelected: false
+
+ width: gradientTable.cellWidth + flexibleWidth - 8
+ height: tabBackground.delegateHeight
+ radius: 16
+
+ function selectPreset(index) {
+ gradientTable.currentIndex = index
+ gradientData.stops = stopsPosList
+ gradientData.colors = stopsColorList
+ gradientData.stopsCount = stopListSize
+ gradientData.presetID = presetID
+ gradientData.presetType = presetTabBar.currentIndex
+
+ if (gradientData.selectedItem != null)
+ gradientData.selectedItem.isSelected = false
+
+ backgroundCard.isSelected = true
+ gradientData.selectedItem = backgroundCard
+ }
+
+ MouseArea {
+ id: rectMouseArea
+ anchors.fill: parent
+ hoverEnabled: true
+ onClicked: {
+ presetNameBox.edit = false
+ nameInput.focus = false
+ backgroundCard.selectPreset(index)
}
+ }
- MouseArea {
- id: rectMouseArea
- anchors.fill: parent
- hoverEnabled: true
- onClicked: {
- presetNameBox.edit = false
- nameInput.focus = false
- backgroundCard.selectPreset(index)
+ states: [
+ State {
+ name: "default"
+ when: !(rectMouseArea.containsMouse || removeButton.hovered ||
+ (nameMouseArea.containsMouse && !tabBackground.editableName)) &&
+ !backgroundCard.isSelected
+ PropertyChanges {
+ target: backgroundCard
+ color: StudioTheme.Values.themeControlOutline
+ border.width: 0
+ }
+ },
+ State {
+ name: "hovered"
+ when: (rectMouseArea.containsMouse || removeButton.hovered ||
+ (nameMouseArea.containsMouse && !tabBackground.editableName)) &&
+ !backgroundCard.isSelected
+ PropertyChanges {
+ target: backgroundCard
+ color: StudioTheme.Values.themeControlBackgroundPressed
+ border.width: 1
+ border.color: StudioTheme.Values.themeInteraction
+ }
+ },
+ State {
+ name: "selected"
+ when: backgroundCard.isSelected
+ PropertyChanges {
+ target: backgroundCard
+ color:StudioTheme.Values.themeInteraction
+ border.width: 1
+ border.color: StudioTheme.Values.themeControlBackgroundPressed
}
}
+ ]
+
+ ColumnLayout {
+ spacing: 2
+ anchors.fill: parent
+
+ Rectangle {
+ id: gradientRect
+ width: 150
+ height: 150
+ radius: 16
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+ Layout.topMargin: 2
+
+ gradient: Gradient {
+ id: showGr
+ }
- states: [
- State {
- name: "default"
- when: !(rectMouseArea.containsMouse || removeButton.hovered ||
- (nameMouseArea.containsMouse && !tabBackground.editableName)) &&
- !backgroundCard.isSelected
- PropertyChanges {
- target: backgroundCard
- color: StudioTheme.Values.themeControlOutline
- border.width: 0
- }
- },
- State {
- name: "hovered"
- when: (rectMouseArea.containsMouse || removeButton.hovered ||
- (nameMouseArea.containsMouse && !tabBackground.editableName)) &&
- !backgroundCard.isSelected
- PropertyChanges {
- target: backgroundCard
- color: StudioTheme.Values.themeControlBackgroundPressed
- border.width: 1
- border.color: StudioTheme.Values.themeInteraction
- }
- },
- State {
- name: "selected"
- when: backgroundCard.isSelected
- PropertyChanges {
- target: backgroundCard
- color:StudioTheme.Values.themeInteraction
- border.width: 1
- border.color: StudioTheme.Values.themeControlBackgroundPressed
+ Component {
+ id: stopComponent
+ GradientStop {}
+ }
+
+ Component.onCompleted: {
+ var stopsAmount = stopListSize;
+ var newStops = [];
+ for (var i = 0; i < stopsAmount; i++) {
+ newStops.push( stopComponent.createObject(showGr, { "position": stopsPosList[i], "color": stopsColorList[i] }) );
}
+ showGr.stops = newStops;
}
- ]
- ColumnLayout {
- spacing: 2
- anchors.fill: parent
+ AbstractButton {
+ id: removeButton
+ visible: editableName && (rectMouseArea.containsMouse || removeButton.hovered)
+ backgroundRadius: StudioTheme.Values.smallRectWidth
+ anchors.right: parent.right
+ anchors.rightMargin: 5
+ anchors.top: parent.top
+ anchors.topMargin: 5
+ width: Math.round(StudioTheme.Values.smallRectWidth)
+ height: Math.round(StudioTheme.Values.smallRectWidth)
+ buttonIcon: StudioTheme.Constants.closeCross
+ onClicked: tabBackground.deleteButtonClicked(index)
+ }
+ }
+
+ Item {
+ id: presetNameBox
+ Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
+ Layout.preferredWidth: backgroundCard.width - 2
+ Layout.preferredHeight: backgroundCard.height - gradientRect.height - 4
+ Layout.bottomMargin: 4
+
+ property bool edit: false
Rectangle {
- id: gradientRect
- width: 150
- height: 150
+ id: nameBackgroundColor
+ enabled: tabBackground.editableName
+ color: "transparent"
radius: 16
- Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
- Layout.topMargin: 2
-
- gradient: Gradient {
- id: showGr
- }
+ visible: true
+ anchors.fill: parent
+ }
- Component {
- id: stopComponent
- GradientStop {}
- }
+ ToolTipArea {
+ id: nameMouseArea
+ anchors.fill: parent
+ tooltip: nameText.text
+ propagateComposedEvents: true
- Component.onCompleted: {
- var stopsAmount = stopListSize;
- var newStops = [];
- for (var i = 0; i < stopsAmount; i++) {
- newStops.push( stopComponent.createObject(showGr, { "position": stopsPosList[i], "color": stopsColorList[i] }) );
+ onClicked: {
+ if (!tabBackground.editableName) {
+ backgroundCard.selectPreset(index)
+ return
}
- showGr.stops = newStops;
- }
- AbstractButton {
- id: removeButton
- visible: editableName && (rectMouseArea.containsMouse || removeButton.hovered)
- backgroundRadius: StudioTheme.Values.smallRectWidth
- anchors.right: parent.right
- anchors.rightMargin: 5
- anchors.top: parent.top
- anchors.topMargin: 5
- width: Math.round(StudioTheme.Values.smallRectWidth)
- height: Math.round(StudioTheme.Values.smallRectWidth)
- buttonIcon: StudioTheme.Constants.closeCross
- onClicked: tabBackground.deleteButtonClicked(index)
+ presetNameBox.edit = true
+ nameInput.forceActiveFocus()
+ // have to select text like this, otherwise there is an issue with long names
+ nameInput.cursorPosition = 0
+ nameInput.cursorPosition = nameInput.length
+ nameInput.selectAll()
}
}
- Item {
- id: presetNameBox
- Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
- Layout.preferredWidth: backgroundCard.width - 2
- Layout.preferredHeight: backgroundCard.height - gradientRect.height - 4
- Layout.bottomMargin: 4
-
- property bool edit: false
-
- Rectangle {
- id: nameBackgroundColor
- enabled: tabBackground.editableName
- color: "transparent"
- radius: 16
- visible: true
- anchors.fill: parent
- }
-
- ToolTipArea {
- id: nameMouseArea
- anchors.fill: parent
- tooltip: nameText.text
- propagateComposedEvents: true
-
- onClicked: {
- if (!tabBackground.editableName) {
- backgroundCard.selectPreset(index)
- return
- }
-
- presetNameBox.edit = true
- nameInput.forceActiveFocus()
- // have to select text like this, otherwise there is an issue with long names
- nameInput.cursorPosition = 0
- nameInput.cursorPosition = nameInput.length
- nameInput.selectAll()
- }
- }
+ Text {
+ id: nameText
+ text: presetName
+ anchors.fill: parent
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ color: StudioTheme.Values.themeTextColor
+ elide: Text.ElideMiddle
+ maximumLineCount: 1
+ }
- Text {
- id: nameText
- text: presetName
- anchors.fill: parent
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- color: StudioTheme.Values.themeTextColor
- elide: Text.ElideMiddle
- maximumLineCount: 1
+ TextInput {
+ id: nameInput
+ enabled: tabBackground.editableName
+ visible: false
+ text: presetName
+ anchors.fill: parent
+ anchors.leftMargin: 5
+ anchors.rightMargin: 5
+ horizontalAlignment: TextInput.AlignHCenter
+ verticalAlignment: TextInput.AlignVCenter
+ color: StudioTheme.Values.themeTextColor
+ selectionColor: StudioTheme.Values.themeInteraction
+ selectByMouse: true
+ activeFocusOnPress: true
+ wrapMode: TextInput.NoWrap
+ clip: true
+
+ onEditingFinished: {
+ nameText.text = text
+ tabBackground.presetNameChanged(index, text)
+ presetNameBox.edit = false
}
- TextInput {
- id: nameInput
- enabled: tabBackground.editableName
- visible: false
- text: presetName
- anchors.fill: parent
- anchors.leftMargin: 5
- anchors.rightMargin: 5
- horizontalAlignment: TextInput.AlignHCenter
- verticalAlignment: TextInput.AlignVCenter
- color: StudioTheme.Values.themeTextColor
- selectionColor: StudioTheme.Values.themeInteraction
- selectByMouse: true
- activeFocusOnPress: true
- wrapMode: TextInput.NoWrap
- clip: true
-
- onEditingFinished: {
- nameText.text = text
- tabBackground.presetNameChanged(index, text)
- presetNameBox.edit = false
+ Keys.onPressed: {
+ if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return) {
+ event.accepted = true
+ nameInput.editingFinished()
+ nameInput.focus = false
}
- Keys.onPressed: {
- if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return) {
- event.accepted = true
- nameInput.editingFinished()
- nameInput.focus = false
- }
-
- if (event.key === Qt.Key_Escape) {
- event.accepted = true
- nameInput.text = nameText.text
- nameInput.focus = false
- }
+ if (event.key === Qt.Key_Escape) {
+ event.accepted = true
+ nameInput.text = nameText.text
+ nameInput.focus = false
}
}
+ }
- states: [
- State {
- name: "default"
- when: tabBackground.editableName && !nameMouseArea.containsMouse && !presetNameBox.edit
- PropertyChanges {
- target: nameBackgroundColor
- color: "transparent"
- border.width: 0
- }
- PropertyChanges { target: nameText; visible: true }
- PropertyChanges { target: nameInput; visible: false }
- },
- State {
- name: "hovered"
- when: tabBackground.editableName && nameMouseArea.containsMouse && !presetNameBox.edit
- PropertyChanges {
- target: nameBackgroundColor
- color: StudioTheme.Values.themeControlBackgroundPressed
- border.width: 0
- }
- PropertyChanges { target: nameText; visible: true }
- PropertyChanges { target: nameInput; visible: false }
- },
- State {
- name: "edit"
- when: tabBackground.editableName && presetNameBox.edit
- PropertyChanges {
- target: nameBackgroundColor
- color: StudioTheme.Values.themeControlBackgroundPressed
- border.color: StudioTheme.Values.themeInteraction
- border.width: 1
- }
- PropertyChanges { target: nameText; visible: false }
- PropertyChanges { target: nameInput; visible: true }
+ states: [
+ State {
+ name: "default"
+ when: tabBackground.editableName && !nameMouseArea.containsMouse && !presetNameBox.edit
+ PropertyChanges {
+ target: nameBackgroundColor
+ color: "transparent"
+ border.width: 0
}
- ]
- }
+ PropertyChanges { target: nameText; visible: true }
+ PropertyChanges { target: nameInput; visible: false }
+ },
+ State {
+ name: "hovered"
+ when: tabBackground.editableName && nameMouseArea.containsMouse && !presetNameBox.edit
+ PropertyChanges {
+ target: nameBackgroundColor
+ color: StudioTheme.Values.themeControlBackgroundPressed
+ border.width: 0
+ }
+ PropertyChanges { target: nameText; visible: true }
+ PropertyChanges { target: nameInput; visible: false }
+ },
+ State {
+ name: "edit"
+ when: tabBackground.editableName && presetNameBox.edit
+ PropertyChanges {
+ target: nameBackgroundColor
+ color: StudioTheme.Values.themeControlBackgroundPressed
+ border.color: StudioTheme.Values.themeInteraction
+ border.width: 1
+ }
+ PropertyChanges { target: nameText; visible: false }
+ PropertyChanges { target: nameInput; visible: true }
+ }
+ ]
}
}
}
diff --git a/share/qtcreator/qmldesigner/statesEditorQmlSources/DesignerTextFieldStyle.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/HorizontalScrollBar.qml
index 64a8835db7..12111f7e1c 100644
--- a/share/qtcreator/qmldesigner/statesEditorQmlSources/DesignerTextFieldStyle.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/HorizontalScrollBar.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
@@ -23,25 +23,29 @@
**
****************************************************************************/
-import QtQuick 2.2
-import QtQuick.Controls 1.1
-import QtQuick.Controls.Styles 1.1
-import QtQuickDesignerTheme 1.0
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import StudioTheme 1.0 as StudioTheme
-TextFieldStyle {
- selectionColor: Theme.color(Theme.PanelTextColorLight)
- selectedTextColor: Theme.color(Theme.PanelTextColorDark)
- textColor: Theme.color(Theme.PanelTextColorLight)
- placeholderTextColor: Theme.color(Theme.PanelTextColorMid)
+ScrollBar {
+ id: scrollBar
- padding.top: 4
- padding.bottom: 4
+ property bool scrollBarVisible: parent.childrenRect.width > parent.width
+
+ orientation: Qt.Horizontal
+ policy: scrollBar.scrollBarVisible ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
+ x: 0
+ y: parent.height - height
+ width: parent.availableWidth
+ - (parent.bothVisible ? parent.verticalThickness : 0)
+ padding: 0
background: Rectangle {
- implicitWidth: 100
- implicitHeight: font.pixelSize + padding.top + padding.bottom
- color: Theme.color(Theme.FancyToolButtonSelectedColor)
- border.color: Theme.qmlDesignerBackgroundColorDarker()
+ color: StudioTheme.Values.themeSectionHeadBackground
+ }
+
+ contentItem: Rectangle {
+ implicitHeight: StudioTheme.Values.scrollBarThickness
+ color: StudioTheme.Values.themeScrollBarHandle
}
- renderType: Text.NativeRendering
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/IconLabel.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/IconLabel.qml
index f61a057ae0..85ed936a6b 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/IconLabel.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/IconLabel.qml
@@ -23,31 +23,16 @@
**
****************************************************************************/
-import QtQuick 2.1
-import QtQuick.Controls 2.0 as Controls
-import QtQuick.Layouts 1.0
+import QtQuick 2.15
+import HelperWidgets 2.0
+import StudioTheme 1.0 as StudioTheme
-Item {
- id: label
- width: parent.width < 300 ? 80 : Math.min(140, parent.width - 220)
- height: 16
- property alias source: image.source
+Label {
+ id: myLabel
- Item {
- width: 16
- height: 16
- Image {
- id: image
- anchors.fill: parent
- }
+ property alias icon: myLabel.text
- }
-
- Layout.preferredWidth: width
- Layout.minimumWidth: width
- Layout.maximumWidth: width
-
-// Component.onCompleted: {
-// label.Layout.preferredWidth = width
-// }
+ text: StudioTheme.Constants.actionIcon
+ font.family: StudioTheme.Constants.iconFont.family
+ font.pixelSize: StudioTheme.Values.myIconFontSize
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ScrollView.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ScrollView.qml
index 7dc4a0e395..c101bff09c 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ScrollView.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/ScrollView.qml
@@ -23,13 +23,37 @@
**
****************************************************************************/
-import QtQuick 2.1
-import QtQuick.Controls 1.0 as Controls
-import "../../../common/"
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import StudioTheme 1.0 as StudioTheme
-Controls.ScrollView {
- style: DesignerScrollViewStyle {
+Flickable {
+ id: flickable
+ property alias horizontalThickness: horizontalScrollBar.height
+ property alias verticalThickness: verticalScrollBar.width
+ property bool bothVisible: verticalScrollBar.scrollBarVisible
+ && horizontalScrollBar.scrollBarVisible
+
+ contentWidth: areaItem.childrenRect.width
+ contentHeight: areaItem.childrenRect.height
+ boundsBehavior: Flickable.StopAtBounds
+
+ default property alias content: areaItem.children
+
+ Item {
+ id: areaItem
+ }
+
+ ScrollBar.horizontal: HorizontalScrollBar {
+ id: horizontalScrollBar
+ parent: flickable
+ scrollBarVisible: areaItem.childrenRect.width > flickable.width
+ }
+
+ ScrollBar.vertical: VerticalScrollBar {
+ id: verticalScrollBar
+ parent: flickable
+ scrollBarVisible: areaItem.childrenRect.height > flickable.height
}
- frameVisible: false
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/Tab.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/VerticalScrollBar.qml
index 79806d2bcc..97234524d4 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/Tab.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/VerticalScrollBar.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
@@ -23,9 +23,29 @@
**
****************************************************************************/
-import QtQuick 2.1
-import QtQuick.Controls 1.0 as Controls
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import StudioTheme 1.0 as StudioTheme
-Controls.Tab {
+ScrollBar {
+ id: scrollBar
+ property bool scrollBarVisible: parent.childrenRect.height > parent.height
+
+ orientation: Qt.Vertical
+ policy: scrollBar.scrollBarVisible ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
+ x: parent.width - width
+ y: 0
+ height: parent.availableHeight
+ - (parent.bothVisible ? parent.horizontalThickness : 0)
+ padding: 0
+
+ background: Rectangle {
+ color: StudioTheme.Values.themeSectionHeadBackground
+ }
+
+ contentItem: Rectangle {
+ implicitWidth: StudioTheme.Values.scrollBarThickness
+ color: StudioTheme.Values.themeScrollBarHandle
+ }
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/qmldir b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/qmldir
index f77c9e1934..59573217c5 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/qmldir
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/qmldir
@@ -39,11 +39,11 @@ SimpleColorPalette 2.0 SimpleColorPalette.qml
DoubleSpinBox 2.0 DoubleSpinBox.qml
SpinBox 2.0 SpinBox.qml
StandardTextSection 2.0 StandardTextSection.qml
-Tab 2.0 Tab.qml
-TabView 2.0 TabView.qml
ToolTipArea 2.0 ToolTipArea.qml
UrlChooser 2.0 UrlChooser.qml
PaddingSection 2.0 PaddingSection.qml
RoundedPanel 2.0 RoundedPanel.qml
ExpressionTextField 2.0 ExpressionTextField.qml
MarginSection 2.0 MarginSection.qml
+HorizontalScrollBar 2.0 HorizontalScrollBar.qml
+VerticalScrollBar 2.0 VerticalScrollBar.qml
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/ActionIndicator.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/ActionIndicator.qml
index 908f2274e6..a055447d96 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/ActionIndicator.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/ActionIndicator.qml
@@ -116,7 +116,6 @@ Rectangle {
color: StudioTheme.Values.themeHoverHighlight
border.color: StudioTheme.Values.themeControlOutline
}
-
},
State {
name: "edit"
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/CheckBox.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/CheckBox.qml
index 0faaf7e0a8..5e55a4855b 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/CheckBox.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/CheckBox.qml
@@ -46,8 +46,7 @@ T.CheckBox {
implicitWidth: Math.max(
implicitBackgroundWidth + leftInset + rightInset,
- implicitContentWidth + leftPadding + rightPadding
- + implicitIndicatorWidth + spacing + actionIndicator.width)
+ implicitContentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(
implicitBackgroundHeight + topInset + bottomInset,
implicitContentHeight + topPadding + bottomPadding,
diff --git a/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/TabBar.qml
index b8284e7d4d..1b71f1f4de 100644
--- a/share/qtcreator/qmldesigner/common/DesignerScrollViewStyle.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/TabBar.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
@@ -23,38 +23,33 @@
**
****************************************************************************/
-import QtQuick 2.2
-import QtQuick.Controls 1.1
-import QtQuick.Controls.Styles 1.1
-import QtQuickDesignerTheme 1.0
+import QtQuick 2.15
+import QtQuick.Templates 2.15 as T
+import StudioTheme 1.0 as StudioTheme
-ScrollViewStyle {
- readonly property color scrollbarColor: Theme.color(Theme.BackgroundColorDark)
- readonly property color scrollBarHandleColor: Theme.color(Theme.QmlDesigner_ScrollBarHandleColor)
+T.TabBar {
+ id: myButton
- padding {left: 0; top: 0; right: 0; bottom: 0}
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
- scrollBarBackground: Rectangle {
- height: 10
- width: 10
- color: scrollbarColor
- }
- handle: Item {
- implicitWidth: 10
- implicitHeight: 10
- Rectangle {
- anchors.fill: parent
- color: scrollBarHandleColor
- }
- }
+ spacing: 0
+ bottomPadding: 4
- decrementControl: Item {}
- incrementControl: Item {}
- corner: Item {}
+ contentItem: ListView {
+ model: myButton.contentModel
+ currentIndex: myButton.currentIndex
+
+ spacing: myButton.spacing
+ orientation: ListView.Horizontal
+ boundsBehavior: Flickable.StopAtBounds
+ flickableDirection: Flickable.AutoFlickIfNeeded
+ snapMode: ListView.SnapToItem
+ }
- //Even if the platform style reports touch support a scrollview should not be flickable.
- Component.onCompleted: {
- control.flickableItem.interactive = false
+ background: Rectangle {
+ color: StudioTheme.Values.themeTabLight
}
- transientScrollBars: false
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/TabView.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/TabButton.qml
index b5e0ac0221..3b8efdfe55 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/HelperWidgets/TabView.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/TabButton.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
@@ -23,40 +23,38 @@
**
****************************************************************************/
-import QtQuick 2.1
-import QtQuick.Controls 1.0 as Controls
-import QtQuick.Controls.Styles 1.1
-import QtQuickDesignerTheme 1.0
+import QtQuick 2.15
+import QtQuick.Templates 2.15 as T
import StudioTheme 1.0 as StudioTheme
-Controls.TabView {
- id: root
+T.TabButton {
+ id: myButton
- frameVisible: false
- style: TabViewStyle {
- frameOverlap: 0
- frame: Item { }
- tab: Rectangle {
- color: styleData.selected ? Theme.qmlDesignerTabLight() : Theme.qmlDesignerTabDark()
- implicitWidth: root.width/root.count + 2
- implicitHeight: 28
- Text {
- id: text
- font.bold: true
- font.pixelSize: StudioTheme.Values.myFontSize
- anchors.centerIn: parent
- anchors.verticalCenterOffset: -1
- text: styleData.title
- renderType: Text.NativeRendering
- color: styleData.selected ? Theme.qmlDesignerTabDark() : Theme.qmlDesignerTabLight()
- }
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
- Rectangle {
- color:Theme.qmlDesignerTabLight()
- width: parent.width
- height: 4
- anchors.bottom: parent.bottom
- }
- }
+ padding: 1
+
+ background: Rectangle {
+ id: buttonBackground
+ color: myButton.checked ? StudioTheme.Values.themeTabLight : StudioTheme.Values.themeTabDark
+ border.color: StudioTheme.Values.themeControlOutline
+ border.width: 0
+ }
+
+ contentItem: T.Label {
+ id: buttonIcon
+ color: myButton.checked ? StudioTheme.Values.themeTabDark : StudioTheme.Values.themeTabLight
+ font.weight: Font.Bold
+ //font.family: StudioTheme.Constants.font.family
+ font.pixelSize: StudioTheme.Values.myFontSize
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ anchors.fill: parent
+ renderType: Text.QtRendering
+
+ text: myButton.text
}
}
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/qmldir b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/qmldir
index ee876cc935..75cf4f0cfa 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/qmldir
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioControls/qmldir
@@ -28,6 +28,8 @@ SliderPopup 1.0 SliderPopup.qml
SpinBox 1.0 SpinBox.qml
SpinBoxIndicator 1.0 SpinBoxIndicator.qml
SpinBoxInput 1.0 SpinBoxInput.qml
+TabBar 1.0 TabBar.qml
+TabButton 1.0 TabButton.qml
TextArea 1.0 TextArea.qml
TextField 1.0 TextField.qml
TranslationIndicator 1.0 TranslationIndicator.qml
diff --git a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml
index 9f04812af9..65cc7f3cfc 100644
--- a/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml
+++ b/share/qtcreator/qmldesigner/propertyEditorQmlSources/imports/StudioTheme/Values.qml
@@ -79,6 +79,8 @@ QtObject {
property real inputHorizontalPadding: Math.round(4 * values.scaleFactor)
+ property real scrollBarThickness: 10
+
// Theme Colors
// COLORS NOW COME FROM THE THEME FILES
@@ -117,6 +119,9 @@ QtObject {
property string themeTranslationIndicatorBorder: Theme.color(Theme.DStranlsationIndicatorBorder)
property string themeSectionHeadBackground: Theme.color(Theme.DSsectionHeadBackground)
+ property string themeTabDark: Theme.color(Theme.QmlDesigner_TabDark)
+ property string themeTabLight: Theme.color(Theme.QmlDesigner_TabLight)
+
// Taken out of Constants.js
property string themeChangedStateText: Theme.color(Theme.DSchangedStateText)
}
diff --git a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml
index e6e5be7523..29f019e6c6 100644
--- a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml
+++ b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesDelegate.qml
@@ -23,13 +23,15 @@
**
****************************************************************************/
-import QtQuick 2.2
-import QtQuick.Controls 1.1
-import QtQuick.Controls.Styles 1.1
-import HelperWidgets 2.0
+import QtQuick 2.15
import QtQuickDesignerTheme 1.0
+import HelperWidgets 2.0
+import StudioControls 1.0 as StudioControls
+import StudioTheme 1.0 as StudioTheme
Rectangle {
+ id: myRoot
+
border.width: 1
property bool isBaseState
property bool isCurrentState
@@ -41,6 +43,8 @@ Rectangle {
property string delegateWhenConditionString
readonly property bool isDefaultState: isDefault
+ signal delegateInteraction
+
color: baseColor
border.color: Theme.qmlDesignerBorderColor()
@@ -50,38 +54,28 @@ Rectangle {
}
MouseArea {
+ id: mouseArea
anchors.fill: parent
acceptedButtons: Qt.LeftButton
onClicked: {
focus = true
root.currentStateInternalId = internalNodeId
+ contextMenu.dismiss() // close potentially open context menu
+ myRoot.delegateInteraction()
}
}
- ToolButton {
+ StudioControls.AbstractButton {
id: removeStateButton
-
- style: ButtonStyle {
- background: Rectangle {
- color: control.hovered ? Qt.lighter(baseColor, 1.2) : "transparent"
- Image {
- source: "image://icons/close"
- height: 16
- width: 16
- }
- }
- }
-
-
+ buttonIcon: StudioTheme.Constants.closeCross
anchors.right: parent.right
- anchors.rightMargin: 2
+ anchors.rightMargin: 4
anchors.verticalCenter: stateNameField.verticalCenter
- height: 16
- width: 16
visible: !isBaseState
onClicked: {
+ myRoot.delegateInteraction()
if (isDefaultState)
statesEditorModel.resetDefaultState()
@@ -89,86 +83,78 @@ Rectangle {
}
}
- Image {
- id: whenButton
- visible: !isBaseState || (isBaseState && modelHasDefaultState)
- width: 14
- height: 14
- x: 4
- y: 6
- source: {
- if (whenMouseArea.containsMouse)
- return "image://icons/submenu"
-
- return delegateHasWhenCondition ? "image://icons/expression" : "image://icons/placeholder"
+ StudioControls.Menu {
+ id: contextMenu
+ StudioControls.MenuItem {
+ enabled: !isBaseState
+ text: qsTr("Set when Condition")
+ onTriggered: {
+ bindingEditor.showWidget()
+ bindingEditor.text = delegateWhenConditionString
+ bindingEditor.prepareBindings()
+ }
}
- MouseArea {
- id: whenMouseArea
- hoverEnabled: true
- anchors.fill: parent
- onClicked: contextMenu.popup()
- }
- Menu {
- id: contextMenu
-
- MenuItem {
- visible: !isBaseState
- text: qsTr("Set when Condition")
- onTriggered: {
- bindingEditor.showWidget()
- bindingEditor.text = delegateWhenConditionString
- bindingEditor.prepareBindings()
- }
+ StudioControls.MenuItem {
+ enabled: !isBaseState && delegateHasWhenCondition
+ text: qsTr("Reset when Condition")
+ onTriggered: {
+ statesEditorModel.resetWhenCondition(internalNodeId)
}
+ }
- MenuItem {
- visible: !isBaseState && delegateHasWhenCondition
- text: qsTr("Reset when Condition")
- onTriggered: {
- statesEditorModel.resetWhenCondition(internalNodeId)
- }
+ StudioControls.MenuItem {
+ enabled: !isBaseState && !isDefaultState
+ text: qsTr("Set as Default")
+ onTriggered: {
+ statesEditorModel.setStateAsDefault(internalNodeId)
}
+ }
- MenuItem {
- visible: !isBaseState && !isDefaultState
- text: qsTr("Set as Default")
- onTriggered: {
- statesEditorModel.setStateAsDefault(internalNodeId)
- }
+ StudioControls.MenuItem {
+ enabled: (!isBaseState && isDefaultState) || (isBaseState && modelHasDefaultState)
+ text: qsTr("Reset Default")
+ onTriggered: {
+ statesEditorModel.resetDefaultState()
}
+ }
- MenuItem {
- visible: (!isBaseState && isDefaultState) || (isBaseState && modelHasDefaultState)
- text: qsTr("Reset Default")
- onTriggered: {
- statesEditorModel.resetDefaultState()
- }
- }
+ onClosed: {
+ stateNameField.actionIndicator.forceVisible = false
+ }
+
+ onOpened: {
+ myRoot.delegateInteraction()
}
}
- TextField {
+
+ StudioControls.TextField {
id: stateNameField
+ actionIndicatorVisible: !isBaseState || (isBaseState && modelHasDefaultState)
+
+ actionIndicator.onClicked: {
+ stateNameField.actionIndicator.forceVisible = true
+ contextMenu.popup()
+ }
+
+ onEditChanged: {
+ if (contextMenu.open && stateNameField.edit)
+ contextMenu.dismiss()
+ }
+
+ actionIndicator.icon.text: delegateHasWhenCondition
+ ? StudioTheme.Constants.actionIconBinding : StudioTheme.Constants.actionIcon
+
+ translationIndicatorVisible: false
y: 4
- font.pixelSize: Theme.smallFontPixelSize()
- anchors.left: whenButton.right
+ anchors.left: parent.left
// use the spacing which the image to the delegate rectangle has
- anchors.leftMargin: 4
+ anchors.leftMargin: (isBaseState ? StudioTheme.Values.height : 0) + 4
anchors.right: removeStateButton.left
- anchors.rightMargin: 4
- style: DesignerTextFieldStyle {
- background: Rectangle {
- implicitWidth: 100
- implicitHeight: font.pixelSize + padding.top + padding.bottom
- color: ((isBaseState && modelHasDefaultState) ? "transparent"
- : Theme.color(Theme.FancyToolButtonSelectedColor))
- border.color: ((isBaseState && !modelHasDefaultState) || isDefaultState) ? "#ffd700"
- : (isBaseState && modelHasDefaultState) ? "transparent"
- : Theme.qmlDesignerBackgroundColorDarker()
- }
- }
+ anchors.rightMargin: 2
+
readOnly: isBaseState
onActiveFocusChanged: {
@@ -188,7 +174,7 @@ Rectangle {
stateNameField.oldValue = stateNameField.text
- if (stateNameField.text != delegateStateName)
+ if (stateNameField.text !== delegateStateName)
statesEditorModel.renameState(internalNodeId, stateNameField.text)
}
}
@@ -220,8 +206,8 @@ Rectangle {
Text {
id: stateDefaultIndicator
- anchors.left: whenButton.left
- anchors.leftMargin: 0
+ anchors.left: parent.left
+ anchors.leftMargin: StudioTheme.Values.height
anchors.right: removeStateButton.left
anchors.rightMargin: 4
anchors.bottom: parent.bottom
diff --git a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml
index c512b7098a..8eb80fbfc6 100644
--- a/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml
+++ b/share/qtcreator/qmldesigner/statesEditorQmlSources/StatesList.qml
@@ -23,32 +23,33 @@
**
****************************************************************************/
-import QtQuick 2.2
-import QtQuick.Controls 1.1
-import QtQuick.Controls.Styles 1.1
-import "../common"
+import QtQuick 2.15
+import QtQuick.Controls 2.15
import QtQuickDesignerTheme 1.0
+import HelperWidgets 2.0
+import StudioControls 1.0 as StudioControls
+import StudioTheme 1.0 as StudioTheme
FocusScope {
id: root
- height: expanded ? 192 : 40
+ height: (root.expanded ? 192 : 40) + StudioTheme.Values.scrollBarThickness
signal createNewState
signal deleteState(int internalNodeId)
signal duplicateCurrentState
property int stateImageSize: 180
- property int delegateWidth: stateImageSize + 44
property int padding: 2
- property int delegateHeight: root.height - padding * 2 + 1
+ property int delegateWidth: root.stateImageSize + 44
+ property int delegateHeight: root.height - StudioTheme.Values.scrollBarThickness - root.padding * 2 + 1
property int innerSpacing: 0
- property int currentStateInternalId : 0
+ property int currentStateInternalId: 0
property bool expanded: true
Connections {
target: statesEditorModel
- onChangedToState: root.currentStateInternalId = n
+ function onChangedToState(n) { root.currentStateInternalId = n }
}
SystemPalette {
@@ -66,35 +67,41 @@ FocusScope {
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
- if (mouse.button === Qt.LeftButton)
+ if (mouse.button === Qt.LeftButton) {
+ contextMenu.dismiss()
focus = true
- else if (mouse.button === Qt.RightButton)
+ } else if (mouse.button === Qt.RightButton) {
contextMenu.popup()
+ }
}
- Menu {
+ StudioControls.Menu {
id: contextMenu
- MenuItem {
+ StudioControls.MenuItem {
text: root.expanded ? qsTr("Collapse") : qsTr("Expand")
onTriggered: {
root.expanded = !root.expanded
}
-
}
}
}
+ function closeContextMenu() {
+ if (contextMenu.open)
+ contextMenu.dismiss()
+ }
+
Item {
id: addStateItem
- property int buttonLeftSpacing: 8 * (expanded ? 1 : 2)
+ property int buttonLeftSpacing: 8 * (root.expanded ? 1 : 2)
anchors.right: parent.right
- width: delegateHeight / 2 + buttonLeftSpacing
- height: delegateHeight
+ width: root.delegateHeight / 2 + buttonLeftSpacing
+ height: root.delegateHeight
- Button {
+ AbstractButton {
id: addStateButton
visible: canAddNewStates
@@ -106,56 +113,69 @@ FocusScope {
width: Math.max(parent.height / 2 - 8, 18)
height: width
- onClicked: root.createNewState()
-
- style: ButtonStyle {
- background: Rectangle {
- property color buttonBaseColor: Qt.darker(Theme.qmlDesignerBackgroundColorDarkAlternate(), 1.1)
- color: control.hovered ? Qt.lighter(buttonBaseColor, 1.2) : buttonBaseColor
- border.color: Theme.qmlDesignerBorderColor()
- border.width: 1
- Image {
- source: "image://icons/plus"
- width: 16
- height: 16
- anchors.centerIn: parent
- smooth: false
- }
+ onClicked: {
+ root.closeContextMenu()
+ root.createNewState()
+ }
+
+ background: Rectangle {
+ property color buttonBaseColor: Qt.darker(Theme.qmlDesignerBackgroundColorDarkAlternate(), 1.1)
+ color: addStateButton.hovered ? Qt.lighter(buttonBaseColor, 1.2) : buttonBaseColor
+ border.color: Theme.qmlDesignerBorderColor()
+ border.width: 1
+ Image {
+ source: "image://icons/plus"
+ width: 16
+ height: 16
+ anchors.centerIn: parent
+ smooth: false
}
}
}
}
- ScrollView {
+ ListView {
+ id: flickable
+
+ boundsBehavior: Flickable.StopAtBounds
+ clip: true
+
anchors.left: parent.left
anchors.right: addStateItem.left
- height: delegateHeight
- y: padding
- anchors.leftMargin: padding
- anchors.rightMargin: padding
+ height: root.delegateHeight + StudioTheme.Values.scrollBarThickness
+ y: root.padding
+ anchors.leftMargin: root.padding
+ anchors.rightMargin: root.padding
+
+ model: statesEditorModel
+ orientation: ListView.Horizontal
+ spacing: root.innerSpacing
+
+ delegate: StatesDelegate {
+ id: statesDelegate
+ width: root.delegateWidth
+ height: root.delegateHeight
+ isBaseState: 0 == internalNodeId
+ isCurrentState: root.currentStateInternalId == internalNodeId
+ baseColor: isCurrentState ? Theme.color(Theme.QmlDesigner_HighlightColor) : background.color
+ delegateStateName: stateName
+ delegateStateImageSource: stateImageSource
+ delegateStateImageSize: stateImageSize
+ delegateHasWhenCondition: hasWhenCondition
+ delegateWhenConditionString: whenConditionString
+ onDelegateInteraction: root.closeContextMenu()
+ }
- style: DesignerScrollViewStyle {
+ property bool bothVisible: horizontal.scrollBarVisible && vertical.scrollBarVisible
+
+ ScrollBar.horizontal: HorizontalScrollBar {
+ id: horizontal
+ parent: flickable
}
- ListView {
- anchors.fill: parent
- model: statesEditorModel
- orientation: ListView.Horizontal
- spacing: innerSpacing
-
- delegate: StatesDelegate {
- id: statesDelegate
- width: delegateWidth
- height: delegateHeight
- isBaseState: 0 == internalNodeId
- isCurrentState: root.currentStateInternalId == internalNodeId
- baseColor: isCurrentState ? Theme.color(Theme.QmlDesigner_HighlightColor) : background.color
- delegateStateName: stateName
- delegateStateImageSource: stateImageSource
- delegateStateImageSize: stateImageSize
- delegateHasWhenCondition: hasWhenCondition
- delegateWhenConditionString: whenConditionString
- }
+ ScrollBar.vertical: VerticalScrollBar {
+ id: vertical
+ parent: flickable
}
}
}