diff --git a/Assets/Translations/en.json b/Assets/Translations/en.json index 73aff4b3..e1d7f25b 100644 --- a/Assets/Translations/en.json +++ b/Assets/Translations/en.json @@ -202,6 +202,10 @@ "description": "Display the album artwork for the currently playing track.", "label": "Show album art" }, + "show-artist-first": { + "description": "Display artist - title instead of title - artist.", + "label": "Show artist first" + }, "show-visualizer": { "description": "Display an audio visualizer when music is playing.", "label": "Show visualizer" diff --git a/Modules/Bar/Widgets/MediaMini.qml b/Modules/Bar/Widgets/MediaMini.qml index 01c6bfc0..80626cf1 100644 --- a/Modules/Bar/Widgets/MediaMini.qml +++ b/Modules/Bar/Widgets/MediaMini.qml @@ -37,6 +37,7 @@ Item { // Backward compatibility: honor legacy hideWhenIdle setting if present readonly property bool hideWhenIdle: (widgetSettings.hideWhenIdle !== undefined) ? widgetSettings.hideWhenIdle : (widgetMetadata.hideWhenIdle !== undefined ? widgetMetadata.hideWhenIdle : false) readonly property bool showAlbumArt: (widgetSettings.showAlbumArt !== undefined) ? widgetSettings.showAlbumArt : widgetMetadata.showAlbumArt + readonly property bool showArtistFirst: (widgetSettings.showArtistFirst !== undefined) ? widgetSettings.showArtistFirst : widgetMetadata.showArtistFirst readonly property bool showVisualizer: (widgetSettings.showVisualizer !== undefined) ? widgetSettings.showVisualizer : widgetMetadata.showVisualizer readonly property string visualizerType: (widgetSettings.visualizerType !== undefined && widgetSettings.visualizerType !== "") ? widgetSettings.visualizerType : widgetMetadata.visualizerType readonly property string scrollingMode: (widgetSettings.scrollingMode !== undefined) ? widgetSettings.scrollingMode : widgetMetadata.scrollingMode @@ -94,7 +95,11 @@ Item { } function getTitle() { - return MediaService.trackTitle + (MediaService.trackArtist !== "" ? ` - ${MediaService.trackArtist}` : ""); + if (showArtistFirst) { + return (MediaService.trackArtist !== "" ? `${MediaService.trackArtist} - ` : "") + MediaService.trackTitle + } else { + return MediaService.trackTitle + (MediaService.trackArtist !== "" ? ` - ${MediaService.trackArtist}` : "") + } } function calculatedVerticalDimension() { diff --git a/Modules/Panels/Settings/Bar/WidgetSettings/MediaMiniSettings.qml b/Modules/Panels/Settings/Bar/WidgetSettings/MediaMiniSettings.qml index c8e3fa0f..f3efea09 100644 --- a/Modules/Panels/Settings/Bar/WidgetSettings/MediaMiniSettings.qml +++ b/Modules/Panels/Settings/Bar/WidgetSettings/MediaMiniSettings.qml @@ -17,6 +17,7 @@ ColumnLayout { // Deprecated: hideWhenIdle now folded into hideMode = "idle" property bool valueHideWhenIdle: widgetData.hideWhenIdle !== undefined ? widgetData.hideWhenIdle : (widgetMetadata.hideWhenIdle !== undefined ? widgetMetadata.hideWhenIdle : false) property bool valueShowAlbumArt: widgetData.showAlbumArt !== undefined ? widgetData.showAlbumArt : widgetMetadata.showAlbumArt + property bool valueShowArtistFirst: widgetData.showArtistFirst !== undefined ? widgetData.showArtistFirst : widgetMetadata.showArtistFirst property bool valueShowVisualizer: widgetData.showVisualizer !== undefined ? widgetData.showVisualizer : widgetMetadata.showVisualizer property string valueVisualizerType: widgetData.visualizerType || widgetMetadata.visualizerType property string valueScrollingMode: widgetData.scrollingMode || widgetMetadata.scrollingMode @@ -33,13 +34,14 @@ ColumnLayout { var settings = Object.assign({}, widgetData || {}); settings.hideMode = valueHideMode; // No longer store hideWhenIdle separately; kept for backward compatibility only - settings.showAlbumArt = valueShowAlbumArt; - settings.showVisualizer = valueShowVisualizer; - settings.visualizerType = valueVisualizerType; - settings.scrollingMode = valueScrollingMode; - settings.maxWidth = parseInt(widthInput.text) || widgetMetadata.maxWidth; - settings.useFixedWidth = valueUseFixedWidth; - return settings; + settings.showAlbumArt = valueShowAlbumArt + settings.showArtistFirst = valueShowArtistFirst + settings.showVisualizer = valueShowVisualizer + settings.visualizerType = valueVisualizerType + settings.scrollingMode = valueScrollingMode + settings.maxWidth = parseInt(widthInput.text) || widgetMetadata.maxWidth + settings.useFixedWidth = valueUseFixedWidth + return settings } NComboBox { @@ -75,6 +77,13 @@ ColumnLayout { onToggled: checked => valueShowAlbumArt = checked } + NToggle { + label: I18n.tr("bar.widget-settings.media-mini.show-artist-first.label") + description: I18n.tr("bar.widget-settings.media-mini.show-artist-first.description") + checked: valueShowArtistFirst + onToggled: checked => valueShowArtistFirst = checked + } + NToggle { label: I18n.tr("bar.widget-settings.media-mini.show-visualizer.label") description: I18n.tr("bar.widget-settings.media-mini.show-visualizer.description") diff --git a/Services/UI/BarWidgetRegistry.qml b/Services/UI/BarWidgetRegistry.qml index a7691e68..37915480 100644 --- a/Services/UI/BarWidgetRegistry.qml +++ b/Services/UI/BarWidgetRegistry.qml @@ -147,6 +147,7 @@ Singleton { "useFixedWidth": false, "hideWhenIdle": false, "showAlbumArt": false, + "showArtistFirst": false, "showVisualizer": false, "visualizerType": "linear" },