mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-06 05:25:41 -05:00
184 lines
5.7 KiB
QML
184 lines
5.7 KiB
QML
import QtQuick
|
|
import qs.Common
|
|
import qs.Widgets
|
|
|
|
StyledRect {
|
|
id: sortMenu
|
|
|
|
property string sortBy: "name"
|
|
property bool sortAscending: true
|
|
|
|
signal sortBySelected(string value)
|
|
signal sortOrderSelected(bool ascending)
|
|
|
|
width: 200
|
|
height: sortColumn.height + Theme.spacingM * 2
|
|
color: Theme.surfaceContainer
|
|
radius: Theme.cornerRadius
|
|
border.color: Theme.outlineMedium
|
|
border.width: 1
|
|
visible: false
|
|
z: 100
|
|
|
|
Column {
|
|
id: sortColumn
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
anchors.top: parent.top
|
|
anchors.margins: Theme.spacingM
|
|
spacing: Theme.spacingXS
|
|
|
|
StyledText {
|
|
text: "Sort By"
|
|
font.pixelSize: Theme.fontSizeSmall
|
|
color: Theme.surfaceTextMedium
|
|
font.weight: Font.Medium
|
|
}
|
|
|
|
Repeater {
|
|
model: [{
|
|
"name": "Name",
|
|
"value": "name"
|
|
}, {
|
|
"name": "Size",
|
|
"value": "size"
|
|
}, {
|
|
"name": "Modified",
|
|
"value": "modified"
|
|
}, {
|
|
"name": "Type",
|
|
"value": "type"
|
|
}]
|
|
|
|
StyledRect {
|
|
width: sortColumn?.width ?? 0
|
|
height: 32
|
|
radius: Theme.cornerRadius
|
|
color: sortMouseArea.containsMouse ? Theme.surfaceVariant : (sortBy === modelData?.value ? Theme.surfacePressed : "transparent")
|
|
|
|
Row {
|
|
anchors.fill: parent
|
|
anchors.leftMargin: Theme.spacingS
|
|
spacing: Theme.spacingS
|
|
|
|
DankIcon {
|
|
name: sortBy === modelData?.value ? "check" : ""
|
|
size: Theme.iconSizeSmall
|
|
color: Theme.primary
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
visible: sortBy === modelData?.value
|
|
}
|
|
|
|
StyledText {
|
|
text: modelData?.name ?? ""
|
|
font.pixelSize: Theme.fontSizeMedium
|
|
color: sortBy === modelData?.value ? Theme.primary : Theme.surfaceText
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
id: sortMouseArea
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: {
|
|
sortMenu.sortBySelected(modelData?.value ?? "name")
|
|
sortMenu.visible = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
StyledRect {
|
|
width: sortColumn.width
|
|
height: 1
|
|
color: Theme.outline
|
|
}
|
|
|
|
StyledText {
|
|
text: "Order"
|
|
font.pixelSize: Theme.fontSizeSmall
|
|
color: Theme.surfaceTextMedium
|
|
font.weight: Font.Medium
|
|
topPadding: Theme.spacingXS
|
|
}
|
|
|
|
StyledRect {
|
|
width: sortColumn?.width ?? 0
|
|
height: 32
|
|
radius: Theme.cornerRadius
|
|
color: ascMouseArea.containsMouse ? Theme.surfaceVariant : (sortAscending ? Theme.surfacePressed : "transparent")
|
|
|
|
Row {
|
|
anchors.fill: parent
|
|
anchors.leftMargin: Theme.spacingS
|
|
spacing: Theme.spacingS
|
|
|
|
DankIcon {
|
|
name: "arrow_upward"
|
|
size: Theme.iconSizeSmall
|
|
color: sortAscending ? Theme.primary : Theme.surfaceText
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
}
|
|
|
|
StyledText {
|
|
text: "Ascending"
|
|
font.pixelSize: Theme.fontSizeMedium
|
|
color: sortAscending ? Theme.primary : Theme.surfaceText
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
id: ascMouseArea
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: {
|
|
sortMenu.sortOrderSelected(true)
|
|
sortMenu.visible = false
|
|
}
|
|
}
|
|
}
|
|
|
|
StyledRect {
|
|
width: sortColumn?.width ?? 0
|
|
height: 32
|
|
radius: Theme.cornerRadius
|
|
color: descMouseArea.containsMouse ? Theme.surfaceVariant : (!sortAscending ? Theme.surfacePressed : "transparent")
|
|
|
|
Row {
|
|
anchors.fill: parent
|
|
anchors.leftMargin: Theme.spacingS
|
|
spacing: Theme.spacingS
|
|
|
|
DankIcon {
|
|
name: "arrow_downward"
|
|
size: Theme.iconSizeSmall
|
|
color: !sortAscending ? Theme.primary : Theme.surfaceText
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
}
|
|
|
|
StyledText {
|
|
text: "Descending"
|
|
font.pixelSize: Theme.fontSizeMedium
|
|
color: !sortAscending ? Theme.primary : Theme.surfaceText
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
id: descMouseArea
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: {
|
|
sortMenu.sortOrderSelected(false)
|
|
sortMenu.visible = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|