controlcenter: font subsections collapsiblesections

This commit is contained in:
ATMDA 2025-11-16 13:04:03 -05:00
parent b05650b451
commit 76029cd8a0

View file

@ -533,210 +533,207 @@ RowLayout {
sidebarFlickable.collapseAllSections(fontsSection); sidebarFlickable.collapseAllSections(fontsSection);
} }
StyledText { CollapsibleSection {
Layout.topMargin: Appearance.spacing.normal id: materialFontSection
text: qsTr("Material font family") title: qsTr("Material font family")
font.pointSize: Appearance.font.size.larger expanded: true
font.weight: 500
}
StyledListView { StyledListView {
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredHeight: Math.min(contentHeight, 300) Layout.preferredHeight: Math.min(contentHeight, 300)
clip: true clip: true
spacing: Appearance.spacing.small / 2 spacing: Appearance.spacing.small / 2
model: Qt.fontFamilies() model: Qt.fontFamilies()
delegate: StyledRect { delegate: StyledRect {
required property string modelData required property string modelData
required property int index required property int index
width: ListView.view.width width: ListView.view.width
readonly property bool isCurrent: modelData === rootPane.fontFamilyMaterial readonly property bool isCurrent: modelData === rootPane.fontFamilyMaterial
color: Qt.alpha(Colours.tPalette.m3surfaceContainer, isCurrent ? Colours.tPalette.m3surfaceContainer.a : 0) color: Qt.alpha(Colours.tPalette.m3surfaceContainer, isCurrent ? Colours.tPalette.m3surfaceContainer.a : 0)
radius: Appearance.rounding.normal radius: Appearance.rounding.normal
border.width: isCurrent ? 1 : 0 border.width: isCurrent ? 1 : 0
border.color: Colours.palette.m3primary border.color: Colours.palette.m3primary
StateLayer { StateLayer {
function onClicked(): void { function onClicked(): void {
rootPane.fontFamilyMaterial = modelData; rootPane.fontFamilyMaterial = modelData;
rootPane.saveConfig(); rootPane.saveConfig();
}
}
RowLayout {
id: fontFamilyMaterialRow
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.margins: Appearance.padding.normal
spacing: Appearance.spacing.normal
StyledText {
text: modelData
font.pointSize: Appearance.font.size.normal
}
Item {
Layout.fillWidth: true
}
Loader {
active: isCurrent
asynchronous: true
sourceComponent: MaterialIcon {
text: "check"
color: Colours.palette.m3onSurfaceVariant
font.pointSize: Appearance.font.size.large
} }
} }
}
implicitHeight: fontFamilyMaterialRow.implicitHeight + Appearance.padding.normal * 2 RowLayout {
id: fontFamilyMaterialRow
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.margins: Appearance.padding.normal
spacing: Appearance.spacing.normal
StyledText {
text: modelData
font.pointSize: Appearance.font.size.normal
}
Item {
Layout.fillWidth: true
}
Loader {
active: isCurrent
asynchronous: true
sourceComponent: MaterialIcon {
text: "check"
color: Colours.palette.m3onSurfaceVariant
font.pointSize: Appearance.font.size.large
}
}
}
implicitHeight: fontFamilyMaterialRow.implicitHeight + Appearance.padding.normal * 2
}
} }
} }
StyledText { CollapsibleSection {
Layout.topMargin: Appearance.spacing.normal id: monoFontSection
text: qsTr("Monospace font family") title: qsTr("Monospace font family")
font.pointSize: Appearance.font.size.larger expanded: false
font.weight: 500
}
StyledListView { StyledListView {
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredHeight: Math.min(contentHeight, 300) Layout.preferredHeight: Math.min(contentHeight, 300)
clip: true clip: true
spacing: Appearance.spacing.small / 2 spacing: Appearance.spacing.small / 2
model: Qt.fontFamilies() model: Qt.fontFamilies()
delegate: StyledRect { delegate: StyledRect {
required property string modelData required property string modelData
required property int index required property int index
width: ListView.view.width width: ListView.view.width
readonly property bool isCurrent: modelData === rootPane.fontFamilyMono readonly property bool isCurrent: modelData === rootPane.fontFamilyMono
color: Qt.alpha(Colours.tPalette.m3surfaceContainer, isCurrent ? Colours.tPalette.m3surfaceContainer.a : 0) color: Qt.alpha(Colours.tPalette.m3surfaceContainer, isCurrent ? Colours.tPalette.m3surfaceContainer.a : 0)
radius: Appearance.rounding.normal radius: Appearance.rounding.normal
border.width: isCurrent ? 1 : 0 border.width: isCurrent ? 1 : 0
border.color: Colours.palette.m3primary border.color: Colours.palette.m3primary
StateLayer { StateLayer {
function onClicked(): void { function onClicked(): void {
rootPane.fontFamilyMono = modelData; rootPane.fontFamilyMono = modelData;
rootPane.saveConfig(); rootPane.saveConfig();
}
}
RowLayout {
id: fontFamilyMonoRow
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.margins: Appearance.padding.normal
spacing: Appearance.spacing.normal
StyledText {
text: modelData
font.pointSize: Appearance.font.size.normal
}
Item {
Layout.fillWidth: true
}
Loader {
active: isCurrent
asynchronous: true
sourceComponent: MaterialIcon {
text: "check"
color: Colours.palette.m3onSurfaceVariant
font.pointSize: Appearance.font.size.large
} }
} }
}
implicitHeight: fontFamilyMonoRow.implicitHeight + Appearance.padding.normal * 2 RowLayout {
id: fontFamilyMonoRow
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.margins: Appearance.padding.normal
spacing: Appearance.spacing.normal
StyledText {
text: modelData
font.pointSize: Appearance.font.size.normal
}
Item {
Layout.fillWidth: true
}
Loader {
active: isCurrent
asynchronous: true
sourceComponent: MaterialIcon {
text: "check"
color: Colours.palette.m3onSurfaceVariant
font.pointSize: Appearance.font.size.large
}
}
}
implicitHeight: fontFamilyMonoRow.implicitHeight + Appearance.padding.normal * 2
}
} }
} }
StyledText { CollapsibleSection {
Layout.topMargin: Appearance.spacing.normal id: sansFontSection
text: qsTr("Sans-serif font family") title: qsTr("Sans-serif font family")
font.pointSize: Appearance.font.size.larger expanded: false
font.weight: 500
}
StyledListView { StyledListView {
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredHeight: Math.min(contentHeight, 300) Layout.preferredHeight: Math.min(contentHeight, 300)
clip: true clip: true
spacing: Appearance.spacing.small / 2 spacing: Appearance.spacing.small / 2
model: Qt.fontFamilies() model: Qt.fontFamilies()
delegate: StyledRect { delegate: StyledRect {
required property string modelData required property string modelData
required property int index required property int index
width: ListView.view.width width: ListView.view.width
readonly property bool isCurrent: modelData === rootPane.fontFamilySans readonly property bool isCurrent: modelData === rootPane.fontFamilySans
color: Qt.alpha(Colours.tPalette.m3surfaceContainer, isCurrent ? Colours.tPalette.m3surfaceContainer.a : 0) color: Qt.alpha(Colours.tPalette.m3surfaceContainer, isCurrent ? Colours.tPalette.m3surfaceContainer.a : 0)
radius: Appearance.rounding.normal radius: Appearance.rounding.normal
border.width: isCurrent ? 1 : 0 border.width: isCurrent ? 1 : 0
border.color: Colours.palette.m3primary border.color: Colours.palette.m3primary
StateLayer { StateLayer {
function onClicked(): void { function onClicked(): void {
rootPane.fontFamilySans = modelData; rootPane.fontFamilySans = modelData;
rootPane.saveConfig(); rootPane.saveConfig();
}
}
RowLayout {
id: fontFamilySansRow
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.margins: Appearance.padding.normal
spacing: Appearance.spacing.normal
StyledText {
text: modelData
font.pointSize: Appearance.font.size.normal
}
Item {
Layout.fillWidth: true
}
Loader {
active: isCurrent
asynchronous: true
sourceComponent: MaterialIcon {
text: "check"
color: Colours.palette.m3onSurfaceVariant
font.pointSize: Appearance.font.size.large
} }
} }
}
implicitHeight: fontFamilySansRow.implicitHeight + Appearance.padding.normal * 2 RowLayout {
id: fontFamilySansRow
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.margins: Appearance.padding.normal
spacing: Appearance.spacing.normal
StyledText {
text: modelData
font.pointSize: Appearance.font.size.normal
}
Item {
Layout.fillWidth: true
}
Loader {
active: isCurrent
asynchronous: true
sourceComponent: MaterialIcon {
text: "check"
color: Colours.palette.m3onSurfaceVariant
font.pointSize: Appearance.font.size.large
}
}
}
implicitHeight: fontFamilySansRow.implicitHeight + Appearance.padding.normal * 2
}
} }
} }