Compare commits

...

5 Commits

Author SHA256 Message Date
fadd3d1b9e Merge branch 'main' into schnacke
merge main
2025-03-20 12:18:39 +01:00
Yuri Becker
fb06cea060 Fix ComboBox popup positioning 2025-03-20 10:46:51 +01:00
648753823f Merge branch 'main' into schnacke
merge main
2025-03-20 10:44:31 +01:00
Yuri Becker
5cf5676d9b Possibly size Combobox correctly 2025-03-20 10:39:35 +01:00
Yuri Becker
9a6d59a19b Add Designs 2025-03-20 10:24:56 +01:00
14 changed files with 45 additions and 32 deletions

View File

@@ -67,7 +67,6 @@ GridLayout
model: address_model model: address_model
textRole: "display" textRole: "display"
popup.height: 300 popup.height: 300
popup.y: postcode.y + 5 - (postcode.height * 2)
currentIndex: -1 currentIndex: -1
onCurrentIndexChanged: city.currentIndex = postcode.currentIndex onCurrentIndexChanged: city.currentIndex = postcode.currentIndex
@@ -95,7 +94,6 @@ GridLayout
model: address_model model: address_model
textRole: "city" textRole: "city"
popup.height: 300 popup.height: 300
popup.y: postcode.y + 5 - (postcode.height * 2)
currentIndex: -1 currentIndex: -1
} }

View File

@@ -118,7 +118,6 @@ GridLayout
model: address_model model: address_model
textRole: "display" textRole: "display"
popup.height: 300 popup.height: 300
popup.y: postcode.y + 5 - (postcode.height * 2)
currentIndex: -1 currentIndex: -1
onCurrentIndexChanged: city.currentIndex = postcode.currentIndex onCurrentIndexChanged: city.currentIndex = postcode.currentIndex
validator: RegularExpressionValidator validator: RegularExpressionValidator
@@ -145,7 +144,6 @@ GridLayout
model: address_model model: address_model
textRole: "city" textRole: "city"
popup.height: 300 popup.height: 300
popup.y: postcode.y + 5 - (postcode.height * 2)
currentIndex: -1 currentIndex: -1
} }

View File

@@ -76,8 +76,6 @@ ColumnLayout
model: address_model model: address_model
textRole: "display" textRole: "display"
popup.height: 300 popup.height: 300
popup.y: zipcode.y + 5 - (zipcode.height * 2)
//currentIndex: -1
onCurrentIndexChanged: city.currentIndex = zipcode.currentIndex onCurrentIndexChanged: city.currentIndex = zipcode.currentIndex
validator: RegularExpressionValidator validator: RegularExpressionValidator
{ {
@@ -100,7 +98,6 @@ ColumnLayout
model: address_model model: address_model
textRole: "city" textRole: "city"
popup.height: 300 popup.height: 300
popup.y: zipcode.y + 5 - (zipcode.height * 2)
currentIndex: -1 currentIndex: -1
} }
} }

View File

@@ -96,7 +96,6 @@ GridLayout
model: address_model model: address_model
textRole: "display" textRole: "display"
popup.height: 300 popup.height: 300
popup.y: postcode.y + 5 - (postcode.height * 2)
currentIndex: -1 currentIndex: -1
onCurrentIndexChanged: city.currentIndex = postcode.currentIndex onCurrentIndexChanged: city.currentIndex = postcode.currentIndex
Layout.columnSpan: 3 Layout.columnSpan: 3
@@ -123,10 +122,8 @@ GridLayout
model: address_model model: address_model
textRole: "city" textRole: "city"
popup.height: 300 popup.height: 300
popup.y: postcode.y + 5 - (postcode.height * 2)
currentIndex: -1 currentIndex: -1
Layout.columnSpan: 3 Layout.columnSpan: 3
// onCurrentIndexChanged: postcode.currentIndex = city.currentIndex
} }
Label Label

View File

@@ -90,7 +90,6 @@ GridLayout
model: address_model model: address_model
textRole: "city" textRole: "city"
popup.height: 300 popup.height: 300
popup.y: postcode.y + 5 - (postcode.height * 2)
currentIndex: -1 currentIndex: -1
} }

View File

@@ -1,31 +1,35 @@
import QtQuick import QtQuick
import QtQuick.Templates as T import QtQuick.Templates as T
import QtQuick.Controls import QtQuick.Controls
import QtQuick.Controls.impl
T.ComboBox { T.ComboBox {
id: control id: control
font: Typography.body font: Typography.body
implicitHeight: background.height implicitHeight: implicitContentHeight + topInset + bottomInset
padding: Dimensions.m
background: Rectangle { background: Rectangle {
border.color: Colors.interactive border.color: Colors.interactive
border.width: 1 border.width: 1
color: Colors.mantle color: Colors.mantle
height: 47 height: parent.height
radius: Dimensions.radius radius: Dimensions.radius
width: parent.width
} }
contentItem: T.TextField { contentItem: T.TextField {
autoScroll: control.editable autoScroll: control.editable
color: Colors.foreground color: Colors.foreground
enabled: control.editable enabled: control.editable
font: Typography.body font: Typography.body
implicitHeight: Typography.body.pointSize + topPadding + bottomPadding
inputMethodHints: control.inputMethodHints inputMethodHints: control.inputMethodHints
padding: Dimensions.m
readOnly: control.down readOnly: control.down
selectByMouse: control.selectTextByMouse selectByMouse: control.selectTextByMouse
text: control.editable ? control.editText : control.displayText text: control.editable ? control.editText : control.displayText
validator: control.validator validator: control.validator
width: control.width - indicator.width
} }
delegate: MenuItem { delegate: MenuItem {
id: menuItem id: menuItem
@@ -44,29 +48,45 @@ T.ComboBox {
width: menuItem.width width: menuItem.width
} }
} }
indicator: Label { indicator: Rectangle {
height: control.height id: indicator
horizontalAlignment: Text.AlignHCenter
padding: Dimensions.s
text: "▼"
verticalAlignment: Text.AlignVCenter
width: contentWidth + Dimensions.s * 2
x: control.width - width
background: Rectangle {
anchors.fill: parent
border.color: Colors.interactive border.color: Colors.interactive
bottomRightRadius: Dimensions.radius bottomRightRadius: Dimensions.radius
color: Colors.primary color: Colors.primary
height: control.height
topRightRadius: Dimensions.radius topRightRadius: Dimensions.radius
width: 20 + Dimensions.s * 2
x: control.width - width
y: 0
z: 2
IconLabel {
anchors.fill: parent
bottomPadding: Dimensions.s
icon.color: Colors.foreground
icon.source: "qrc:/images/ChevronDown.svg"
leftPadding: Dimensions.s
rightPadding: Dimensions.s
topPadding: Dimensions.s
}
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onPressed: () => {
control.popup.visible = true;
control.popup.forceActiveFocus()
}
} }
} }
popup: T.Popup { popup: T.Popup {
width: control.width
height: Math.min(contentItem.implicitHeight + 2, control.Window.height - topMargin - bottomMargin)
topMargin: 6
bottomMargin: 6 bottomMargin: 6
height: Math.min(contentItem.implicitHeight + 2, control.Window.height - topMargin - bottomMargin)
padding: 1 padding: 1
topMargin: 6
width: control.width
y: control.height
background: Rectangle { background: Rectangle {
border.color: Colors.interactive border.color: Colors.interactive
@@ -79,8 +99,8 @@ T.ComboBox {
implicitHeight: contentHeight implicitHeight: contentHeight
model: control.popup.visible ? control.delegateModel : null model: control.popup.visible ? control.delegateModel : null
T.ScrollBar.vertical: ScrollBar { } T.ScrollBar.vertical: ScrollBar {
}
highlight: Rectangle { highlight: Rectangle {
color: Colors.primary color: Colors.primary
opacity: Colors.highlightOpacity opacity: Colors.highlightOpacity

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

3
images/ChevronDown.svg Normal file
View File

@@ -0,0 +1,3 @@
<svg fill="none" stroke-width="1.5" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-slot="icon" data-darkreader-inline-stroke="">
<path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"></path>
</svg>

After

Width:  |  Height:  |  Size: 283 B

View File

@@ -7,6 +7,7 @@
<file>images/filter.svg</file> <file>images/filter.svg</file>
<file>images/menu.svg</file> <file>images/menu.svg</file>
<file>images/search.svg</file> <file>images/search.svg</file>
<file>images/ChevronDown.svg</file>
<file>sounds/error.ogg</file> <file>sounds/error.ogg</file>
<file>sounds/fail2c.ogg</file> <file>sounds/fail2c.ogg</file>
<file>sounds/puzzerr.ogg</file> <file>sounds/puzzerr.ogg</file>