diff --git a/package/contents/config/main.xml b/package/contents/config/main.xml
index ac567bd..46b6508 100644
--- a/package/contents/config/main.xml
+++ b/package/contents/config/main.xml
@@ -74,6 +74,10 @@ PLAYING]]>
+
+
+ false
+
5
diff --git a/package/contents/ui/Player.qml b/package/contents/ui/Player.qml
index 2064321..ca46d4f 100644
--- a/package/contents/ui/Player.qml
+++ b/package/contents/ui/Player.qml
@@ -14,6 +14,7 @@ QtObject {
readonly property int containerRole: Qt.UserRole + 1
property string sourceName: "any"
property string sourcePriority: ""
+ property bool sourceWhitelist: false
property var mpris2Model
property int modelRevision: 0
readonly property var normalizedSourcePriority: parseSourcePriority(sourcePriority)
@@ -99,6 +100,9 @@ QtObject {
return matchedPlayer;
}
+ if (sourceWhitelist && normalizedSourcePriority.length > 0)
+ return null;
+
return mpris2Model.currentPlayer || null;
}
diff --git a/package/contents/ui/configGeneral.qml b/package/contents/ui/configGeneral.qml
index a26bedb..3340512 100644
--- a/package/contents/ui/configGeneral.qml
+++ b/package/contents/ui/configGeneral.qml
@@ -26,6 +26,7 @@ KCM.SimpleKCM {
property alias cfg_textShadowEnabled: textShadowCheckBox.checked
property alias cfg_showMediaControls: showMediaControlsCheckBox.checked
property alias cfg_sourcePriority: sourcePriorityField.text
+ property alias cfg_sourceWhitelist: sourceWhitelistCheckBox.checked
property alias cfg_trackTextVerticalSpacing: trackTextVerticalSpacingSpinBox.value
property alias cfg_labelVerticalSpacing: labelVerticalSpacingSpinBox.value
property alias cfg_separatorGapLabel: separatorGapLabelSpinBox.value
@@ -59,6 +60,9 @@ KCM.SimpleKCM {
"text": i18n("Solid background"),
"value": "default"
}]
+ readonly property bool hasSourcePriorityEntries: sourcePriorityField.text.split(",").some((entry) => {
+ return normalizeDesktopEntry(entry).length > 0;
+ })
function syncComboByValue(comboBox, options, configuredValue, fallbackValue) {
const requestedValue = configuredValue || fallbackValue;
@@ -97,6 +101,7 @@ KCM.SimpleKCM {
detectedSources = sources;
}
+ Component.onCompleted: cfg_sourceWhitelist = hasSourcePriorityEntries && cfg_sourceWhitelist
onCfg_fontFamilyChanged: {
const index = availableFonts.indexOf(cfg_fontFamily);
if (index >= 0 && fontFamilyComboBox.currentIndex !== index)
@@ -222,7 +227,16 @@ KCM.SimpleKCM {
Kirigami.FormData.label: i18n("Source priority:")
Layout.fillWidth: true
- placeholderText: i18n("spotify, firefox")
+ placeholderText: i18n("example: spotify, firefox")
+ onTextChanged: configRoot.cfg_sourceWhitelist = configRoot.hasSourcePriorityEntries && configRoot.cfg_sourceWhitelist
+ }
+
+ QQC2.CheckBox {
+ id: sourceWhitelistCheckBox
+
+ Kirigami.FormData.label: ""
+ text: i18n("Only use listed sources")
+ enabled: configRoot.hasSourcePriorityEntries
}
QQC2.Label {
diff --git a/package/contents/ui/main.qml b/package/contents/ui/main.qml
index 5c8a7c4..2c296ac 100644
--- a/package/contents/ui/main.qml
+++ b/package/contents/ui/main.qml
@@ -45,6 +45,8 @@ PlasmoidItem {
// qmllint disable missing-property
property string configuredSourcePriority: plasmoid.configuration.sourcePriority
// qmllint disable missing-property
+ property bool configuredSourceWhitelist: plasmoid.configuration.sourceWhitelist
+ // qmllint disable missing-property
property int configuredTrackTextVerticalSpacing: plasmoid.configuration.trackTextVerticalSpacing
// qmllint disable missing-property
property int configuredLabelVerticalSpacing: plasmoid.configuration.labelVerticalSpacing
@@ -77,6 +79,7 @@ PlasmoidItem {
id: player
sourcePriority: root.configuredSourcePriority
+ sourceWhitelist: root.configuredSourceWhitelist
}
fullRepresentation: Representation {