feat: add configurable label and text sizing controls
This commit is contained in:
@@ -97,6 +97,7 @@ make hooks-install
|
||||
The widget appearance can be tuned from the Plasma widget settings, including:
|
||||
|
||||
- custom multiline label text
|
||||
- independent label, title, and artist font sizes
|
||||
- title/artist vertical spacing
|
||||
- NOW/PLAYING label vertical spacing
|
||||
- separator gap from labels
|
||||
|
||||
@@ -13,6 +13,18 @@
|
||||
<label>Font family</label>
|
||||
<default>Noto Sans</default>
|
||||
</entry>
|
||||
<entry name="labelFontSize" type="Int">
|
||||
<label>Now Playing label font size</label>
|
||||
<default>16</default>
|
||||
</entry>
|
||||
<entry name="titleFontSize" type="Int">
|
||||
<label>Track title font size</label>
|
||||
<default>28</default>
|
||||
</entry>
|
||||
<entry name="artistFontSize" type="Int">
|
||||
<label>Track artist font size</label>
|
||||
<default>26</default>
|
||||
</entry>
|
||||
<entry name="labelVisibilityMode" type="String">
|
||||
<label>Now Playing label visibility mode</label>
|
||||
<default>auto</default>
|
||||
|
||||
@@ -8,6 +8,9 @@ MouseArea {
|
||||
id: mediaControlsMouseArea
|
||||
|
||||
property string configuredFontFamily: "Noto Sans"
|
||||
property int configuredLabelFontSize: 16
|
||||
property int configuredTitleFontSize: 28
|
||||
property int configuredArtistFontSize: 26
|
||||
property string configuredLabelVisibilityMode: "auto"
|
||||
property string configuredLabelPlacement: "left"
|
||||
property string configuredLabelText: "NOW\nPLAYING"
|
||||
@@ -31,6 +34,9 @@ MouseArea {
|
||||
readonly property string effectiveBackgroundColor: configuredBackgroundColor || "transparent"
|
||||
readonly property int effectiveBackgroundRadius: Math.max(0, configuredBackgroundRadius)
|
||||
readonly property string effectiveForegroundColor: configuredForegroundColor || "white"
|
||||
readonly property int effectiveLabelFontSize: Math.max(1, configuredLabelFontSize)
|
||||
readonly property int effectiveTitleFontSize: Math.max(1, configuredTitleFontSize)
|
||||
readonly property int effectiveArtistFontSize: Math.max(1, configuredArtistFontSize)
|
||||
readonly property int effectiveTrackTextVerticalSpacing: configuredTrackTextVerticalSpacing
|
||||
readonly property int effectiveLabelVerticalSpacing: configuredLabelVerticalSpacing
|
||||
readonly property int effectiveSeparatorGapLabel: Math.max(0, configuredSeparatorGapLabel)
|
||||
@@ -115,6 +121,7 @@ MouseArea {
|
||||
id: nowPlayingLabels
|
||||
|
||||
Layout.alignment: mediaControlsMouseArea.labelsOnRight ? Qt.AlignLeft : Qt.AlignRight
|
||||
Layout.fillWidth: true
|
||||
spacing: mediaControlsMouseArea.effectiveLabelVerticalSpacing
|
||||
visible: mediaControlsMouseArea.nowPlayingLabelsVisible
|
||||
|
||||
@@ -125,11 +132,12 @@ MouseArea {
|
||||
required property string modelData
|
||||
|
||||
Layout.alignment: mediaControlsMouseArea.labelsOnRight ? Qt.AlignLeft : Qt.AlignRight
|
||||
Layout.fillWidth: true
|
||||
shadowEnabled: mediaControlsMouseArea.configuredTextShadowEnabled
|
||||
text: modelData
|
||||
lineHeight: 0.8
|
||||
font.bold: true
|
||||
font.pixelSize: 16
|
||||
font.pixelSize: mediaControlsMouseArea.effectiveLabelFontSize
|
||||
font.family: mediaControlsMouseArea.configuredFontFamily
|
||||
color: mediaControlsMouseArea.effectiveForegroundColor
|
||||
horizontalAlignment: mediaControlsMouseArea.labelsOnRight ? Text.AlignLeft : Text.AlignRight
|
||||
@@ -256,7 +264,7 @@ MouseArea {
|
||||
Layout.fillWidth: true
|
||||
shadowEnabled: mediaControlsMouseArea.configuredTextShadowEnabled
|
||||
text: player.title
|
||||
font.pixelSize: 28
|
||||
font.pixelSize: mediaControlsMouseArea.effectiveTitleFontSize
|
||||
font.bold: true
|
||||
font.family: mediaControlsMouseArea.configuredFontFamily
|
||||
color: mediaControlsMouseArea.effectiveForegroundColor
|
||||
@@ -270,7 +278,7 @@ MouseArea {
|
||||
Layout.alignment: mediaControlsMouseArea.labelsOnRight ? Qt.AlignRight : Qt.AlignLeft
|
||||
shadowEnabled: mediaControlsMouseArea.configuredTextShadowEnabled
|
||||
text: player.artists
|
||||
font.pixelSize: 26
|
||||
font.pixelSize: mediaControlsMouseArea.effectiveArtistFontSize
|
||||
font.family: mediaControlsMouseArea.configuredFontFamily
|
||||
color: mediaControlsMouseArea.effectiveForegroundColor
|
||||
lineHeight: 0.8
|
||||
|
||||
@@ -10,6 +10,9 @@ KCM.SimpleKCM {
|
||||
|
||||
property alias cfg_opacity: opacitySpinBox.value
|
||||
property string cfg_fontFamily
|
||||
property alias cfg_labelFontSize: labelFontSizeSpinBox.value
|
||||
property alias cfg_titleFontSize: titleFontSizeSpinBox.value
|
||||
property alias cfg_artistFontSize: artistFontSizeSpinBox.value
|
||||
property string cfg_labelVisibilityMode
|
||||
property string cfg_labelPlacement
|
||||
property alias cfg_labelText: labelTextArea.text
|
||||
@@ -106,6 +109,30 @@ KCM.SimpleKCM {
|
||||
onActivated: configRoot.cfg_fontFamily = currentText
|
||||
}
|
||||
|
||||
QQC2.SpinBox {
|
||||
id: labelFontSizeSpinBox
|
||||
|
||||
Kirigami.FormData.label: i18n("Label font size:")
|
||||
from: 8
|
||||
to: 72
|
||||
}
|
||||
|
||||
QQC2.SpinBox {
|
||||
id: titleFontSizeSpinBox
|
||||
|
||||
Kirigami.FormData.label: i18n("Title font size:")
|
||||
from: 8
|
||||
to: 96
|
||||
}
|
||||
|
||||
QQC2.SpinBox {
|
||||
id: artistFontSizeSpinBox
|
||||
|
||||
Kirigami.FormData.label: i18n("Artist font size:")
|
||||
from: 8
|
||||
to: 96
|
||||
}
|
||||
|
||||
QQC2.ComboBox {
|
||||
id: labelVisibilityModeComboBox
|
||||
|
||||
@@ -206,23 +233,23 @@ KCM.SimpleKCM {
|
||||
QQC2.SpinBox {
|
||||
id: trackTextVerticalSpacingSpinBox
|
||||
|
||||
Kirigami.FormData.label: i18n("Title/artist spacing:")
|
||||
from: -12
|
||||
to: 24
|
||||
Kirigami.FormData.label: i18n("Title/artist spacing (negatives possible):")
|
||||
from: -200
|
||||
to: 200
|
||||
}
|
||||
|
||||
QQC2.SpinBox {
|
||||
id: labelVerticalSpacingSpinBox
|
||||
|
||||
Kirigami.FormData.label: i18n("NOW/PLAYING spacing:")
|
||||
from: -12
|
||||
to: 24
|
||||
Kirigami.FormData.label: i18n("Label line spacing (negatives possible):")
|
||||
from: -200
|
||||
to: 200
|
||||
}
|
||||
|
||||
QQC2.SpinBox {
|
||||
id: separatorGapLabelSpinBox
|
||||
|
||||
Kirigami.FormData.label: i18n("Separator gap from labels:")
|
||||
Kirigami.FormData.label: i18n("Separator gap from label:")
|
||||
from: 0
|
||||
to: 24
|
||||
}
|
||||
|
||||
@@ -14,8 +14,15 @@ PlasmoidItem {
|
||||
// qmllint disable missing-property
|
||||
property string configuredFontFamily: plasmoid.configuration.fontFamily
|
||||
// qmllint disable missing-property
|
||||
property int configuredLabelFontSize: plasmoid.configuration.labelFontSize
|
||||
// qmllint disable missing-property
|
||||
property int configuredTitleFontSize: plasmoid.configuration.titleFontSize
|
||||
// qmllint disable missing-property
|
||||
property int configuredArtistFontSize: plasmoid.configuration.artistFontSize
|
||||
// qmllint disable missing-property
|
||||
property string configuredLabelVisibilityMode: plasmoid.configuration.labelVisibilityMode
|
||||
// qmllint disable missing-property
|
||||
// qmllint disable missing-property
|
||||
property string configuredLabelPlacement: plasmoid.configuration.labelPlacement
|
||||
// qmllint disable missing-property
|
||||
property string configuredLabelText: plasmoid.configuration.labelText
|
||||
@@ -66,6 +73,9 @@ PlasmoidItem {
|
||||
Layout.preferredWidth: root.width
|
||||
Layout.preferredHeight: root.height
|
||||
configuredFontFamily: root.configuredFontFamily
|
||||
configuredLabelFontSize: root.configuredLabelFontSize
|
||||
configuredTitleFontSize: root.configuredTitleFontSize
|
||||
configuredArtistFontSize: root.configuredArtistFontSize
|
||||
configuredLabelVisibilityMode: root.configuredLabelVisibilityMode
|
||||
configuredLabelPlacement: root.configuredLabelPlacement
|
||||
configuredLabelText: root.configuredLabelText
|
||||
@@ -87,6 +97,9 @@ PlasmoidItem {
|
||||
Layout.preferredWidth: root.width
|
||||
Layout.preferredHeight: root.height
|
||||
configuredFontFamily: root.configuredFontFamily
|
||||
configuredLabelFontSize: root.configuredLabelFontSize
|
||||
configuredTitleFontSize: root.configuredTitleFontSize
|
||||
configuredArtistFontSize: root.configuredArtistFontSize
|
||||
configuredLabelVisibilityMode: root.configuredLabelVisibilityMode
|
||||
configuredLabelPlacement: root.configuredLabelPlacement
|
||||
configuredLabelText: root.configuredLabelText
|
||||
|
||||
Reference in New Issue
Block a user