diff --git a/data/icons.qrc b/data/icons.qrc
index df5f5ee2a..242c2d300 100644
--- a/data/icons.qrc
+++ b/data/icons.qrc
@@ -6,7 +6,7 @@
icons/128x128/applications-internet.png
icons/128x128/bluetooth.png
icons/128x128/cdcase.png
- icons/128x128/cd.png
+ icons/128x128/media-optical.png
icons/128x128/configure.png
icons/128x128/device-ipod-nano.png
icons/128x128/device-ipod.png
@@ -57,9 +57,9 @@
icons/128x128/mcintosh-player.png
icons/128x128/mcintosh-text.png
icons/128x128/media-eject.png
- icons/128x128/media-pause.png
- icons/128x128/media-play.png
- icons/128x128/media-stop.png
+ icons/128x128/media-playback-pause.png
+ icons/128x128/media-playback-start.png
+ icons/128x128/media-playback-stop.png
icons/128x128/media-skip-forward.png
icons/128x128/media-skip-backward.png
icons/128x128/media-seek-forward.png
@@ -79,7 +79,7 @@
icons/128x128/view-media-playlist.png
icons/128x128/view-media-visualization.png
icons/128x128/view-refresh.png
- icons/128x128/vinyl.png
+ icons/128x128/library-music.png
icons/128x128/vlc.png
icons/128x128/xine.png
icons/128x128/zoom-in.png
@@ -97,7 +97,7 @@
icons/64x64/applications-internet.png
icons/64x64/bluetooth.png
icons/64x64/cdcase.png
- icons/64x64/cd.png
+ icons/64x64/media-optical.png
icons/64x64/configure.png
icons/64x64/device-ipod-nano.png
icons/64x64/device-ipod.png
@@ -148,9 +148,9 @@
icons/64x64/mcintosh-player.png
icons/64x64/mcintosh-text.png
icons/64x64/media-eject.png
- icons/64x64/media-pause.png
- icons/64x64/media-play.png
- icons/64x64/media-stop.png
+ icons/64x64/media-playback-pause.png
+ icons/64x64/media-playback-start.png
+ icons/64x64/media-playback-stop.png
icons/64x64/media-skip-forward.png
icons/64x64/media-skip-backward.png
icons/64x64/media-seek-forward.png
@@ -171,7 +171,7 @@
icons/64x64/view-media-playlist.png
icons/64x64/view-media-visualization.png
icons/64x64/view-refresh.png
- icons/64x64/vinyl.png
+ icons/64x64/library-music.png
icons/64x64/vlc.png
icons/64x64/xine.png
icons/64x64/zoom-in.png
@@ -189,7 +189,7 @@
icons/48x48/applications-internet.png
icons/48x48/bluetooth.png
icons/48x48/cdcase.png
- icons/48x48/cd.png
+ icons/48x48/media-optical.png
icons/48x48/configure.png
icons/48x48/device-ipod-nano.png
icons/48x48/device-ipod.png
@@ -241,11 +241,11 @@
icons/48x48/mcintosh.png
icons/48x48/mcintosh-text.png
icons/48x48/media-eject.png
- icons/48x48/media-pause.png
+ icons/48x48/media-playback-pause.png
icons/48x48/media-playlist-repeat.png
icons/48x48/media-playlist-shuffle.png
- icons/48x48/media-play.png
- icons/48x48/media-stop.png
+ icons/48x48/media-playback-start.png
+ icons/48x48/media-playback-stop.png
icons/48x48/media-skip-forward.png
icons/48x48/media-skip-backward.png
icons/48x48/media-seek-forward.png
@@ -266,7 +266,7 @@
icons/48x48/view-media-playlist.png
icons/48x48/view-media-visualization.png
icons/48x48/view-refresh.png
- icons/48x48/vinyl.png
+ icons/48x48/library-music.png
icons/48x48/vlc.png
icons/48x48/xine.png
icons/48x48/zoom-in.png
@@ -284,7 +284,7 @@
icons/32x32/applications-internet.png
icons/32x32/bluetooth.png
icons/32x32/cdcase.png
- icons/32x32/cd.png
+ icons/32x32/media-optical.png
icons/32x32/configure.png
icons/32x32/device-ipod-nano.png
icons/32x32/device-ipod.png
@@ -336,11 +336,11 @@
icons/32x32/mcintosh.png
icons/32x32/mcintosh-text.png
icons/32x32/media-eject.png
- icons/32x32/media-pause.png
+ icons/32x32/media-playback-pause.png
icons/32x32/media-playlist-repeat.png
icons/32x32/media-playlist-shuffle.png
- icons/32x32/media-play.png
- icons/32x32/media-stop.png
+ icons/32x32/media-playback-start.png
+ icons/32x32/media-playback-stop.png
icons/32x32/media-skip-forward.png
icons/32x32/media-skip-backward.png
icons/32x32/media-seek-forward.png
@@ -361,7 +361,7 @@
icons/32x32/view-media-playlist.png
icons/32x32/view-media-visualization.png
icons/32x32/view-refresh.png
- icons/32x32/vinyl.png
+ icons/32x32/library-music.png
icons/32x32/vlc.png
icons/32x32/xine.png
icons/32x32/zoom-in.png
@@ -379,7 +379,7 @@
icons/22x22/applications-internet.png
icons/22x22/bluetooth.png
icons/22x22/cdcase.png
- icons/22x22/cd.png
+ icons/22x22/media-optical.png
icons/22x22/configure.png
icons/22x22/device-ipod-nano.png
icons/22x22/device-ipod.png
@@ -431,11 +431,11 @@
icons/22x22/mcintosh.png
icons/22x22/mcintosh-text.png
icons/22x22/media-eject.png
- icons/22x22/media-pause.png
+ icons/22x22/media-playback-pause.png
icons/22x22/media-playlist-repeat.png
icons/22x22/media-playlist-shuffle.png
- icons/22x22/media-play.png
- icons/22x22/media-stop.png
+ icons/22x22/media-playback-start.png
+ icons/22x22/media-playback-stop.png
icons/22x22/media-skip-forward.png
icons/22x22/media-skip-backward.png
icons/22x22/media-seek-forward.png
@@ -456,7 +456,7 @@
icons/22x22/view-media-playlist.png
icons/22x22/view-media-visualization.png
icons/22x22/view-refresh.png
- icons/22x22/vinyl.png
+ icons/22x22/library-music.png
icons/22x22/vlc.png
icons/22x22/xine.png
icons/22x22/zoom-in.png
diff --git a/data/icons/128x128/vinyl.png b/data/icons/128x128/library-music.png
similarity index 100%
rename from data/icons/128x128/vinyl.png
rename to data/icons/128x128/library-music.png
diff --git a/data/icons/128x128/cd.png b/data/icons/128x128/media-optical.png
similarity index 100%
rename from data/icons/128x128/cd.png
rename to data/icons/128x128/media-optical.png
diff --git a/data/icons/128x128/media-pause.png b/data/icons/128x128/media-playback-pause.png
similarity index 100%
rename from data/icons/128x128/media-pause.png
rename to data/icons/128x128/media-playback-pause.png
diff --git a/data/icons/128x128/media-play.png b/data/icons/128x128/media-playback-start.png
similarity index 100%
rename from data/icons/128x128/media-play.png
rename to data/icons/128x128/media-playback-start.png
diff --git a/data/icons/128x128/media-stop.png b/data/icons/128x128/media-playback-stop.png
similarity index 100%
rename from data/icons/128x128/media-stop.png
rename to data/icons/128x128/media-playback-stop.png
diff --git a/data/icons/22x22/vinyl.png b/data/icons/22x22/library-music.png
similarity index 100%
rename from data/icons/22x22/vinyl.png
rename to data/icons/22x22/library-music.png
diff --git a/data/icons/22x22/cd.png b/data/icons/22x22/media-optical.png
similarity index 100%
rename from data/icons/22x22/cd.png
rename to data/icons/22x22/media-optical.png
diff --git a/data/icons/22x22/media-pause.png b/data/icons/22x22/media-playback-pause.png
similarity index 100%
rename from data/icons/22x22/media-pause.png
rename to data/icons/22x22/media-playback-pause.png
diff --git a/data/icons/22x22/media-play.png b/data/icons/22x22/media-playback-start.png
similarity index 100%
rename from data/icons/22x22/media-play.png
rename to data/icons/22x22/media-playback-start.png
diff --git a/data/icons/22x22/media-stop.png b/data/icons/22x22/media-playback-stop.png
similarity index 100%
rename from data/icons/22x22/media-stop.png
rename to data/icons/22x22/media-playback-stop.png
diff --git a/data/icons/32x32/vinyl.png b/data/icons/32x32/library-music.png
similarity index 100%
rename from data/icons/32x32/vinyl.png
rename to data/icons/32x32/library-music.png
diff --git a/data/icons/32x32/cd.png b/data/icons/32x32/media-optical.png
similarity index 100%
rename from data/icons/32x32/cd.png
rename to data/icons/32x32/media-optical.png
diff --git a/data/icons/32x32/media-pause.png b/data/icons/32x32/media-playback-pause.png
similarity index 100%
rename from data/icons/32x32/media-pause.png
rename to data/icons/32x32/media-playback-pause.png
diff --git a/data/icons/32x32/media-play.png b/data/icons/32x32/media-playback-start.png
similarity index 100%
rename from data/icons/32x32/media-play.png
rename to data/icons/32x32/media-playback-start.png
diff --git a/data/icons/32x32/media-stop.png b/data/icons/32x32/media-playback-stop.png
similarity index 100%
rename from data/icons/32x32/media-stop.png
rename to data/icons/32x32/media-playback-stop.png
diff --git a/data/icons/48x48/vinyl.png b/data/icons/48x48/library-music.png
similarity index 100%
rename from data/icons/48x48/vinyl.png
rename to data/icons/48x48/library-music.png
diff --git a/data/icons/48x48/cd.png b/data/icons/48x48/media-optical.png
similarity index 100%
rename from data/icons/48x48/cd.png
rename to data/icons/48x48/media-optical.png
diff --git a/data/icons/48x48/media-pause.png b/data/icons/48x48/media-playback-pause.png
similarity index 100%
rename from data/icons/48x48/media-pause.png
rename to data/icons/48x48/media-playback-pause.png
diff --git a/data/icons/48x48/media-play.png b/data/icons/48x48/media-playback-start.png
similarity index 100%
rename from data/icons/48x48/media-play.png
rename to data/icons/48x48/media-playback-start.png
diff --git a/data/icons/48x48/media-stop.png b/data/icons/48x48/media-playback-stop.png
similarity index 100%
rename from data/icons/48x48/media-stop.png
rename to data/icons/48x48/media-playback-stop.png
diff --git a/data/icons/64x64/vinyl.png b/data/icons/64x64/library-music.png
similarity index 100%
rename from data/icons/64x64/vinyl.png
rename to data/icons/64x64/library-music.png
diff --git a/data/icons/64x64/cd.png b/data/icons/64x64/media-optical.png
similarity index 100%
rename from data/icons/64x64/cd.png
rename to data/icons/64x64/media-optical.png
diff --git a/data/icons/64x64/media-pause.png b/data/icons/64x64/media-playback-pause.png
similarity index 100%
rename from data/icons/64x64/media-pause.png
rename to data/icons/64x64/media-playback-pause.png
diff --git a/data/icons/64x64/media-play.png b/data/icons/64x64/media-playback-start.png
similarity index 100%
rename from data/icons/64x64/media-play.png
rename to data/icons/64x64/media-playback-start.png
diff --git a/data/icons/64x64/media-stop.png b/data/icons/64x64/media-playback-stop.png
similarity index 100%
rename from data/icons/64x64/media-stop.png
rename to data/icons/64x64/media-playback-stop.png
diff --git a/data/icons/full/vinyl.png b/data/icons/full/library-music.png
similarity index 100%
rename from data/icons/full/vinyl.png
rename to data/icons/full/library-music.png
diff --git a/data/icons/full/love.png b/data/icons/full/love.png
new file mode 100644
index 000000000..4dc1e7d74
Binary files /dev/null and b/data/icons/full/love.png differ
diff --git a/data/icons/full/cd.png b/data/icons/full/media-optical.png
similarity index 100%
rename from data/icons/full/cd.png
rename to data/icons/full/media-optical.png
diff --git a/data/icons/full/media-pause.png b/data/icons/full/media-playback-pause.png
similarity index 100%
rename from data/icons/full/media-pause.png
rename to data/icons/full/media-playback-pause.png
diff --git a/data/icons/full/media-play.png b/data/icons/full/media-playback-start.png
similarity index 100%
rename from data/icons/full/media-play.png
rename to data/icons/full/media-playback-start.png
diff --git a/data/icons/full/media-stop.png b/data/icons/full/media-playback-stop.png
similarity index 100%
rename from data/icons/full/media-stop.png
rename to data/icons/full/media-playback-stop.png
diff --git a/data/icons/full/subsonic.png b/data/icons/full/subsonic.png
new file mode 100644
index 000000000..1b734d859
Binary files /dev/null and b/data/icons/full/subsonic.png differ
diff --git a/dist/scripts/gen-icons-resource.sh b/dist/scripts/gen-icons-resource.sh
deleted file mode 100755
index 7ef4b5513..000000000
--- a/dist/scripts/gen-icons-resource.sh
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/sh
-
-sizes="128x128 64x64 48x48 32x32 22x22"
-
-#
-
-for i in full/*
-do
- source=$i
- file=`basename $i`
-
- id=`identify "$i"` || exit 1
- if [ "$id" = "" ] ; then
- echo "ERROR: Cannot determine format and geometry for image: \"$i\"."
- continue
- fi
- g=`echo $id | awk '{print $3}'` || exit 1
- if [ "$g" = "" ] ; then
- echo "ERROR: Cannot determine geometry for image: \"$i\"."
- continue
- fi
-
- # Geometry can be 563x144+0+0 or 75x98
- # we need to get rid of the plus (+) and the x characters:
- w=`echo $g | sed 's/[^0-9]/ /g' | awk '{print $1}'` || exit 1
- if [ "$w" = "" ] ; then
- echo "ERROR: Cannot determine width for image: \"$x\"."
- continue
- fi
- h=`echo $g | sed 's/[^0-9]/ /g' | awk '{print $2}'` || exit 1
- if [ "$h" = "" ] ; then
- echo "ERROR: Cannot determine height for image: \"$x\"."
- continue
- fi
-
- for x in $sizes
- do
-
- dest="$x/$file"
- if [ -f $dest ]; then
- continue
- fi
-
- x_w=$(echo $x | cut -d 'x' -f1)
- x_h=$(echo $x | cut -d 'x' -f2)
-
- if [ "$w" -lt "$x_w" ] || [ "$h" -lt "$x_h" ]; then
- continue
- fi
-
- echo "convert -verbose -resize $x $source $dest"
- convert -verbose -resize $x $source $dest
-
- done
-done
-
-
-for i in $sizes
-do
- for x in $i/*
- do
- file=`basename $x`
- if ! [ -f "full/$file" ]; then
- echo "Warning: full/$file does not exist, but $x exists."
- fi
-
- id=`identify "$x"` || exit 1
- if [ "$id" = "" ] ; then
- echo "ERROR: Cannot determine format and geometry for image: \"$x\"."
- continue
- fi
- g=`echo $id | awk '{print $3}'` || exit 1
- if [ "$g" = "" ] ; then
- echo "ERROR: Cannot determine geometry for image: \"$x\"."
- continue
- fi
-
- # Geometry can be 563x144+0+0 or 75x98
- # we need to get rid of the plus (+) and the x characters:
- w=`echo $g | sed 's/[^0-9]/ /g' | awk '{print $1}'` || exit 1
- if [ "$w" = "" ] ; then
- echo "ERROR: Cannot determine width for image: \"$x\"."
- continue
- fi
- h=`echo $g | sed 's/[^0-9]/ /g' | awk '{print $2}'` || exit 1
- if [ "$h" = "" ] ; then
- echo "ERROR: Cannot determine height for image: \"$x\"."
- continue
- fi
-
- if ! [ "${h}x${w}" = "$i" ]; then
- echo "Warning: $x is not $i, but ${h}x${w}!"
- fi
-
- done
-done
-
-file="../icons.qrc"
-rm -rf "$file"
-echo "" >>$file
-echo "" >>$file
-
-for i in full $sizes
-do
- for x in $i/*
- do
- f=`basename $x`
- echo " icons/$i/$f" >>$file
- done
-done
-
-echo "" >>$file
-echo "" >>$file
-
diff --git a/dist/scripts/verify-icons.sh b/dist/scripts/verify-icons.sh
new file mode 100755
index 000000000..1dde489c6
--- /dev/null
+++ b/dist/scripts/verify-icons.sh
@@ -0,0 +1,137 @@
+#!/bin/sh
+#
+# Strawberry Music Player
+# Copyright 2019, Jonas Kvinge
+#
+# Strawberry is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Strawberry is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Strawberry. If not, see .
+
+sizes="128x128 64x64 48x48 32x32 22x22"
+
+#
+
+#for i in full/*
+#do
+# source=$i
+# file=`basename $i`
+
+# id=`identify "$i"` || exit 1
+# if [ "$id" = "" ] ; then
+# echo "ERROR: Cannot determine format and geometry for image: \"$i\"."
+# continue
+# fi
+# g=`echo $id | awk '{print $3}'` || exit 1
+# if [ "$g" = "" ] ; then
+# echo "ERROR: Cannot determine geometry for image: \"$i\"."
+# continue
+# fi
+
+ # Geometry can be 563x144+0+0 or 75x98
+ # we need to get rid of the plus (+) and the x characters:
+# w=`echo $g | sed 's/[^0-9]/ /g' | awk '{print $1}'` || exit 1
+# if [ "$w" = "" ] ; then
+# echo "ERROR: Cannot determine width for image: \"$x\"."
+# continue
+# fi
+# h=`echo $g | sed 's/[^0-9]/ /g' | awk '{print $2}'` || exit 1
+# if [ "$h" = "" ] ; then
+# echo "ERROR: Cannot determine height for image: \"$x\"."
+# continue
+# fi
+
+# for x in $sizes
+# do
+
+# dest="$x/$file"
+# if [ -f $dest ]; then
+# continue
+# fi
+
+# x_w=$(echo $x | cut -d 'x' -f1)
+# x_h=$(echo $x | cut -d 'x' -f2)
+
+# if [ "$w" -lt "$x_w" ] || [ "$h" -lt "$x_h" ]; then
+# continue
+# fi
+
+ #echo "convert -verbose -resize $x $source $dest"
+ #convert -verbose -resize $x $source $dest
+
+# done
+#done
+
+
+for i in $sizes
+do
+ for x in $i/*
+ do
+ file=`basename $x`
+
+ for y in $sizes
+ do
+ if [ "$y" = "$i" ]; then
+ continue
+ fi
+ if ! [ -f "$y/$file" ]; then
+ echo "Warning: $y/$file does not exist, but $x exists."
+ fi
+ done
+
+ id=`identify "$x"` || exit 1
+ if [ "$id" = "" ] ; then
+ echo "ERROR: Cannot determine format and geometry for image: \"$x\"."
+ continue
+ fi
+ g=`echo $id | awk '{print $3}'` || exit 1
+ if [ "$g" = "" ] ; then
+ echo "ERROR: Cannot determine geometry for image: \"$x\"."
+ continue
+ fi
+
+ # Geometry can be 563x144+0+0 or 75x98
+ # we need to get rid of the plus (+) and the x characters:
+ w=`echo $g | sed 's/[^0-9]/ /g' | awk '{print $1}'` || exit 1
+ if [ "$w" = "" ] ; then
+ echo "ERROR: Cannot determine width for image: \"$x\"."
+ continue
+ fi
+ h=`echo $g | sed 's/[^0-9]/ /g' | awk '{print $2}'` || exit 1
+ if [ "$h" = "" ] ; then
+ echo "ERROR: Cannot determine height for image: \"$x\"."
+ continue
+ fi
+
+ if ! [ "${h}x${w}" = "$i" ]; then
+ echo "Warning: $x is not $i, but ${h}x${w}!"
+ fi
+
+ done
+done
+
+#file="../icons.qrc"
+#rm -rf "$file"
+#echo "" >>$file
+#echo "" >>$file
+
+#for i in full $sizes
+#do
+# for x in $i/*
+# do
+# f=`basename $x`
+# echo " icons/$i/$f" >>$file
+# done
+#done
+
+#echo "" >>$file
+#echo "" >>$file
+
diff --git a/src/collection/collectionview.cpp b/src/collection/collectionview.cpp
index df1c0e59b..0e85388bb 100644
--- a/src/collection/collectionview.cpp
+++ b/src/collection/collectionview.cpp
@@ -330,8 +330,8 @@ void CollectionView::contextMenuEvent(QContextMenuEvent *e) {
if (!context_menu_) {
context_menu_ = new QMenu(this);
- add_to_playlist_ = context_menu_->addAction(IconLoader::Load("media-play"), tr("Append to current playlist"), this, SLOT(AddToPlaylist()));
- load_ = context_menu_->addAction(IconLoader::Load("media-play"), tr("Replace current playlist"), this, SLOT(Load()));
+ add_to_playlist_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist()));
+ load_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(Load()));
open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist()));
context_menu_->addSeparator();
diff --git a/src/context/contextalbumsview.cpp b/src/context/contextalbumsview.cpp
index 3c95c0525..963be1c36 100644
--- a/src/context/contextalbumsview.cpp
+++ b/src/context/contextalbumsview.cpp
@@ -355,8 +355,8 @@ void ContextAlbumsView::contextMenuEvent(QContextMenuEvent *e) {
if (!context_menu_) {
context_menu_ = new QMenu(this);
- add_to_playlist_ = context_menu_->addAction(IconLoader::Load("media-play"), tr("Append to current playlist"), this, SLOT(AddToPlaylist()));
- load_ = context_menu_->addAction(IconLoader::Load("media-play"), tr("Replace current playlist"), this, SLOT(Load()));
+ add_to_playlist_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist()));
+ load_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(Load()));
open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist()));
context_menu_->addSeparator();
diff --git a/src/core/iconloader.cpp b/src/core/iconloader.cpp
index 1e81c803e..e1dbd7137 100644
--- a/src/core/iconloader.cpp
+++ b/src/core/iconloader.cpp
@@ -29,6 +29,7 @@
#include
#include "core/logging.h"
+#include "iconmapper.h"
#include "settings/appearancesettingspage.h"
#include "iconloader.h"
@@ -37,12 +38,10 @@ bool IconLoader::custom_icons_ = false;
void IconLoader::Init() {
- // TODO: Fix use system icons option properly.
-
- //QSettings s;
- //s.beginGroup(AppearanceSettingsPage::kSettingsGroup);
- //system_icons_ = s.value("system_icons", false).toBool();
- //s.endGroup();
+ QSettings s;
+ s.beginGroup(AppearanceSettingsPage::kSettingsGroup);
+ system_icons_ = s.value("system_icons", false).toBool();
+ s.endGroup();
QDir dir;
if (dir.exists(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation) + "/icons")) {
@@ -66,7 +65,17 @@ QIcon IconLoader::Load(const QString &name, const int size) {
else sizes << size;
if (system_icons_) {
+ IconMapper::IconProperties icon_prop;
+ if (IconMapper::iconmapper_.contains(name)) {
+ icon_prop = IconMapper::iconmapper_[name];
+ }
ret = QIcon::fromTheme(name);
+ if (ret.isNull()) {
+ for (QString alt_name : icon_prop.names) {
+ ret = QIcon::fromTheme(alt_name);
+ if (!ret.isNull()) break;
+ }
+ }
if (!ret.isNull()) return ret;
qLog(Warning) << "Couldn't load icon" << name << "from system theme icons.";
}
diff --git a/src/core/iconmapper.h b/src/core/iconmapper.h
new file mode 100644
index 000000000..101cd5c70
--- /dev/null
+++ b/src/core/iconmapper.h
@@ -0,0 +1,135 @@
+/*
+ * Strawberry Music Player
+ * Copyright 2019, Jonas Kvinge
+ *
+ * Strawberry is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Strawberry is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Strawberry. If not, see .
+ *
+ */
+
+#include "config.h"
+
+#include
+#include
+
+namespace IconMapper {
+
+struct IconProperties {
+ IconProperties() : min_size(0), max_size(0) {}
+ IconProperties(const QStringList &_names, const int _min_size, const int _max_size) : names(_names), min_size(_min_size), max_size(_max_size) {}
+ QStringList names;
+ int min_size;
+ int max_size;
+};
+
+static const QMap iconmapper_ = {
+
+ { "albums", { {"media-optical"}, 0, 0 } },
+ { "alsa", { {}, 0, 0 } },
+ { "application-exit", { {}, 0, 0 } },
+ { "applications-internet", { {}, 0, 0 } },
+ { "bluetooth", { {}, 0, 0 } },
+ { "cdcase", { {"cdcover", "media-optical"}, 0, 0 } },
+ { "media-optical", { {"cd"}, 0, 0 } },
+ { "configure", { {}, 0, 0 } },
+ { "device-ipod-nano", { {}, 0, 0 } },
+ { "device-ipod", { {}, 0, 0 } },
+ { "device-phone", { {}, 0, 0 } },
+ { "device", { {"drive-removable-media-usb-pendrive"}, 0, 0 } },
+ { "device-usb-drive", { {}, 0, 0 } },
+ { "device-usb-flash", { {}, 0, 0 } },
+ { "dialog-error", { {}, 0, 0 } },
+ { "dialog-information", { {}, 0, 0 } },
+ { "dialog-ok-apply", { {}, 0, 0 } },
+ { "dialog-password", { {}, 0, 0 } },
+ { "dialog-warning", { {}, 0, 0 } },
+ { "document-download", { {}, 0, 0 } },
+ { "document-new", { {}, 0, 0 } },
+ { "document-open-folder", { {}, 0, 0 } },
+ { "document-open", { {}, 0, 0 } },
+ { "document-save", { {}, 0, 0 } },
+ { "document-search", { {}, 0, 0 } },
+ { "download", { {}, 0, 0 } },
+ { "edit-clear-list", { {}, 0, 0 } },
+ { "edit-clear-locationbar-ltr", { {}, 0, 0 } },
+ { "edit-copy", { {}, 0, 0 } },
+ { "edit-delete", { {}, 0, 0 } },
+ { "edit-find", { {}, 0, 0 } },
+ { "edit-redo", { {}, 0, 0 } },
+ { "edit-rename", { {}, 0, 0 } },
+ { "edit-undo", { {}, 0, 0 } },
+ { "electrocompaniet", { {}, 0, 0 } },
+ { "equalizer", { {}, 0, 0 } },
+ { "folder-new", { {}, 0, 0 } },
+ { "folder", { {}, 0, 0 } },
+ { "folder-sound", { {"folder-music"}, 0, 0 } },
+ { "footsteps", { {}, 0, 0 } },
+ { "go-down", { {}, 0, 0 } },
+ { "go-home", { {}, 0, 0 } },
+ { "go-jump", { {}, 0, 0 } },
+ { "go-next", { {}, 0, 0 } },
+ { "go-previous", { {}, 0, 0 } },
+ { "go-up", { {}, 0, 0 } },
+ { "gstreamer", { {}, 0, 0 } },
+ { "headset", { {}, 0, 0 } },
+ { "help-hint", { {}, 0, 0 } },
+ { "intel", { {}, 0, 0 } },
+ { "jack", { {}, 0, 0 } },
+ { "keyboard", { {}, 0, 0 } },
+ { "list-add", { {}, 0, 0 } },
+ { "list-remove", { {}, 0, 0 } },
+ { "love", { {"heart", "emblem-favorite"}, 0, 0 } },
+ { "mcintosh-player", { {}, 0, 0 } },
+ { "mcintosh", { {}, 0, 0 } },
+ { "mcintosh-text", { {}, 0, 0 } },
+ { "media-eject", { {}, 0, 0 } },
+ { "media-playback-pause", { {"media-pause"}, 0, 0 } },
+ { "media-playlist-repeat", { {}, 0, 0 } },
+ { "media-playlist-shuffle", { {""}, 0, 0 } },
+ { "media-playback-start", { {"media-play", "media-playback-playing"}, 0, 0 } },
+ { "media-seek-backward", { {}, 0, 0 } },
+ { "media-seek-forward", { {}, 0, 0 } },
+ { "media-skip-backward", { {}, 0, 0 } },
+ { "media-skip-forward", { {}, 0, 0 } },
+ { "media-playback-stop", { {"media-stop"}, 0, 0 } },
+ { "moodbar", { {"preferences-desktop-icons"}, 0, 0 } },
+ { "nvidia", { {}, 0, 0 } },
+ { "pulseaudio", { {}, 0, 0 } },
+ { "qobuz", { {}, 0, 0 } },
+ { "realtek", { {}, 0, 0 } },
+ { "scrobble-disabled", { {}, 0, 0 } },
+ { "scrobble", { {}, 0, 0 } },
+ { "search", { {}, 0, 0 } },
+ { "soundcard", { {"audiocard", "audio-card"}, 0, 0 } },
+ { "speaker", { {}, 0, 0 } },
+ { "star-grey", { {}, 0, 0 } },
+ { "star", { {}, 0, 0 } },
+ { "strawberry", { {}, 0, 0 } },
+ { "subsonic", { {}, 0, 0 } },
+ { "tidal", { {}, 0, 0 } },
+ { "tools-wizard", { {}, 0, 0 } },
+ { "view-choose", { {}, 0, 0 } },
+ { "view-fullscreen", { {}, 0, 0 } },
+ { "view-media-lyrics", { {}, 0, 0 } },
+ { "view-media-playlist", { {}, 0, 0 } },
+ { "view-media-visualization", { {"preferences-desktop-theme"}, 0, 0 } },
+ { "view-refresh", { {}, 0, 0 } },
+ { "library-music", { {"vinyl"}, 0, 0 } },
+ { "vlc", { {}, 0, 0 } },
+ { "xine", { {}, 0, 0 } },
+ { "zoom-in", { {}, 0, 0 } },
+ { "zoom-out", { {}, 0, 0 } }
+
+};
+
+} // namespace
diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp
index cc3ec3def..408416283 100644
--- a/src/core/mainwindow.cpp
+++ b/src/core/mainwindow.cpp
@@ -273,7 +273,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co
// Add tabs to the fancy tab widget
ui_->tabs->AddTab(context_view_, "context", IconLoader::Load("strawberry"), tr("Context"));
- ui_->tabs->AddTab(collection_view_, "collection", IconLoader::Load("vinyl"), tr("Collection"));
+ ui_->tabs->AddTab(collection_view_, "collection", IconLoader::Load("library-music"), tr("Collection"));
ui_->tabs->AddTab(file_view_, "files", IconLoader::Load("document-open"), tr("Files"));
ui_->tabs->AddTab(playlist_list_, "playlists", IconLoader::Load("view-media-playlist"), tr("Playlists"));
ui_->tabs->AddTab(queue_view_, "queue", IconLoader::Load("footsteps"), tr("Queue"));
@@ -346,11 +346,11 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co
// Music menu
ui_->action_open_file->setIcon(IconLoader::Load("document-open"));
- ui_->action_open_cd->setIcon(IconLoader::Load("cd"));
+ ui_->action_open_cd->setIcon(IconLoader::Load("media-optical"));
ui_->action_previous_track->setIcon(IconLoader::Load("media-skip-backward"));
- ui_->action_play_pause->setIcon(IconLoader::Load("media-play"));
- ui_->action_stop->setIcon(IconLoader::Load("media-stop"));
- ui_->action_stop_after_this_track->setIcon(IconLoader::Load("media-stop"));
+ ui_->action_play_pause->setIcon(IconLoader::Load("media-playback-start"));
+ ui_->action_stop->setIcon(IconLoader::Load("media-playback-stop"));
+ ui_->action_stop_after_this_track->setIcon(IconLoader::Load("media-playback-stop"));
ui_->action_next_track->setIcon(IconLoader::Load("media-skip-forward"));
ui_->action_quit->setIcon(IconLoader::Load("application-exit"));
@@ -594,7 +594,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co
connect(playlist_menu_, SIGNAL(aboutToHide()), SLOT(PlaylistMenuHidden()));
playlist_play_pause_ = playlist_menu_->addAction(tr("Play"), this, SLOT(PlaylistPlay()));
playlist_menu_->addAction(ui_->action_stop);
- playlist_stop_after_ = playlist_menu_->addAction(IconLoader::Load("media-stop"), tr("Stop after this track"), this, SLOT(PlaylistStopAfter()));
+ playlist_stop_after_ = playlist_menu_->addAction(IconLoader::Load("media-playback-stop"), tr("Stop after this track"), this, SLOT(PlaylistStopAfter()));
playlist_queue_ = playlist_menu_->addAction(IconLoader::Load("go-next"), tr("Toggle queue status"), this, SLOT(PlaylistQueue()));
playlist_queue_->setShortcut(QKeySequence("Ctrl+D"));
ui_->playlist->addAction(playlist_queue_);
@@ -1040,7 +1040,7 @@ void MainWindow::MediaStopped() {
ui_->action_stop->setEnabled(false);
ui_->action_stop_after_this_track->setEnabled(false);
- ui_->action_play_pause->setIcon(IconLoader::Load("media-play"));
+ ui_->action_play_pause->setIcon(IconLoader::Load("media-playback-start"));
ui_->action_play_pause->setText(tr("Play"));
ui_->action_play_pause->setEnabled(true);
@@ -1069,7 +1069,7 @@ void MainWindow::MediaPaused() {
ui_->action_stop->setEnabled(true);
ui_->action_stop_after_this_track->setEnabled(true);
- ui_->action_play_pause->setIcon(IconLoader::Load("media-play"));
+ ui_->action_play_pause->setIcon(IconLoader::Load("media-playback-start"));
ui_->action_play_pause->setText(tr("Play"));
ui_->action_play_pause->setEnabled(true);
@@ -1087,7 +1087,7 @@ void MainWindow::MediaPlaying() {
ui_->action_stop->setEnabled(true);
ui_->action_stop_after_this_track->setEnabled(true);
- ui_->action_play_pause->setIcon(IconLoader::Load("media-pause"));
+ ui_->action_play_pause->setIcon(IconLoader::Load("media-playback-pause"));
ui_->action_play_pause->setText(tr("Pause"));
bool enable_play_pause(false);
@@ -1527,11 +1527,11 @@ void MainWindow::PlaylistRightClick(const QPoint &global_pos, const QModelIndex
// Is this song currently playing?
if (app_->playlist_manager()->current()->current_row() == source_index.row() && app_->player()->GetState() == Engine::Playing) {
playlist_play_pause_->setText(tr("Pause"));
- playlist_play_pause_->setIcon(IconLoader::Load("media-pause"));
+ playlist_play_pause_->setIcon(IconLoader::Load("media-playback-pause"));
}
else {
playlist_play_pause_->setText(tr("Play"));
- playlist_play_pause_->setIcon(IconLoader::Load("media-play"));
+ playlist_play_pause_->setIcon(IconLoader::Load("media-playback-start"));
}
// Are we allowed to pause?
@@ -1644,7 +1644,7 @@ void MainWindow::PlaylistRightClick(const QPoint &global_pos, const QModelIndex
else playlist_queue_->setIcon(IconLoader::Load("go-next"));
if (in_skipped < selected) playlist_skip_->setIcon(IconLoader::Load("media-skip-forward"));
- else playlist_skip_->setIcon(IconLoader::Load("media-play"));
+ else playlist_skip_->setIcon(IconLoader::Load("media-playback-start"));
if (!index.isValid()) {
diff --git a/src/core/qtsystemtrayicon.cpp b/src/core/qtsystemtrayicon.cpp
index ed920b401..cd62cc707 100644
--- a/src/core/qtsystemtrayicon.cpp
+++ b/src/core/qtsystemtrayicon.cpp
@@ -190,7 +190,7 @@ void QtSystemTrayIcon::SetPaused() {
action_stop_->setEnabled(true);
action_stop_after_this_track_->setEnabled(true);
- action_play_pause_->setIcon(IconLoader::Load("media-play"));
+ action_play_pause_->setIcon(IconLoader::Load("media-playback-start"));
action_play_pause_->setText(tr("Play"));
action_play_pause_->setEnabled(true);
@@ -203,7 +203,7 @@ void QtSystemTrayIcon::SetPlaying(bool enable_play_pause) {
action_stop_->setEnabled(true);
action_stop_after_this_track_->setEnabled(true);
- action_play_pause_->setIcon(IconLoader::Load("media-pause"));
+ action_play_pause_->setIcon(IconLoader::Load("media-playback-pause"));
action_play_pause_->setText(tr("Pause"));
action_play_pause_->setEnabled(enable_play_pause);
@@ -215,7 +215,7 @@ void QtSystemTrayIcon::SetStopped() {
action_stop_->setEnabled(false);
action_stop_after_this_track_->setEnabled(false);
- action_play_pause_->setIcon(IconLoader::Load("media-play"));
+ action_play_pause_->setIcon(IconLoader::Load("media-playback-start"));
action_play_pause_->setText(tr("Play"));
action_play_pause_->setEnabled(true);
diff --git a/src/core/song.cpp b/src/core/song.cpp
index b1e7548e6..24fba48ea 100644
--- a/src/core/song.cpp
+++ b/src/core/song.cpp
@@ -489,8 +489,8 @@ QIcon Song::IconForSource(Source source) {
switch (source) {
case Song::Source_LocalFile: return IconLoader::Load("folder-sound");
- case Song::Source_Collection: return IconLoader::Load("vinyl");
- case Song::Source_CDDA: return IconLoader::Load("cd");
+ case Song::Source_Collection: return IconLoader::Load("library-music");
+ case Song::Source_CDDA: return IconLoader::Load("media-optical");
case Song::Source_Device: return IconLoader::Load("device");
case Song::Source_Stream: return IconLoader::Load("applications-internet");
case Song::Source_Tidal: return IconLoader::Load("tidal");
diff --git a/src/covermanager/albumcovermanager.cpp b/src/covermanager/albumcovermanager.cpp
index 1525a65a3..c9fc0e0e5 100644
--- a/src/covermanager/albumcovermanager.cpp
+++ b/src/covermanager/albumcovermanager.cpp
@@ -95,8 +95,8 @@ AlbumCoverManager::AlbumCoverManager(Application *app, CollectionBackend *collec
cover_searcher_(nullptr),
cover_export_(nullptr),
cover_exporter_(new AlbumCoverExporter(this)),
- artist_icon_(IconLoader::Load("folder-sound" )),
- all_artists_icon_(IconLoader::Load("vinyl" )),
+ artist_icon_(IconLoader::Load("folder-sound")),
+ all_artists_icon_(IconLoader::Load("library-music")),
no_cover_icon_(":/pictures/cdcase.png"),
no_cover_image_(GenerateNoCoverImage(no_cover_icon_)),
no_cover_item_icon_(QPixmap::fromImage(no_cover_image_)),
@@ -110,12 +110,12 @@ AlbumCoverManager::AlbumCoverManager(Application *app, CollectionBackend *collec
ui_->albums->set_cover_manager(this);
// Icons
- ui_->action_fetch->setIcon(IconLoader::Load("download" ));
- ui_->export_covers->setIcon(IconLoader::Load("document-save" ));
- ui_->view->setIcon(IconLoader::Load("view-choose" ));
- ui_->button_fetch->setIcon(IconLoader::Load("download" ));
- ui_->action_add_to_playlist->setIcon(IconLoader::Load("media-play" ));
- ui_->action_load->setIcon(IconLoader::Load("media-play" ));
+ ui_->action_fetch->setIcon(IconLoader::Load("download"));
+ ui_->export_covers->setIcon(IconLoader::Load("document-save"));
+ ui_->view->setIcon(IconLoader::Load("view-choose"));
+ ui_->button_fetch->setIcon(IconLoader::Load("download"));
+ ui_->action_add_to_playlist->setIcon(IconLoader::Load("media-playback-start"));
+ ui_->action_load->setIcon(IconLoader::Load("media-playback-start"));
album_cover_choice_controller_->Init(app_);
diff --git a/src/device/cddalister.cpp b/src/device/cddalister.cpp
index 0ae257578..949b73cf8 100644
--- a/src/device/cddalister.cpp
+++ b/src/device/cddalister.cpp
@@ -41,7 +41,7 @@ QStringList CddaLister::DeviceUniqueIDs() { return devices_list_; }
QVariantList CddaLister::DeviceIcons(const QString &) {
QVariantList icons;
- icons << QString("cd");
+ icons << QString("media-optical");
return icons;
}
diff --git a/src/device/deviceproperties.cpp b/src/device/deviceproperties.cpp
index e27be6a70..7b1f2d4d2 100644
--- a/src/device/deviceproperties.cpp
+++ b/src/device/deviceproperties.cpp
@@ -97,7 +97,7 @@ void DeviceProperties::ShowDevice(QModelIndex idx) {
<< "device"
<< "device-usb-drive"
<< "device-usb-flash"
- << "cd"
+ << "media-optical"
<< "device-ipod"
<< "device-ipod-nano"
<< "device-phone";
diff --git a/src/device/deviceview.cpp b/src/device/deviceview.cpp
index b7bb11eb1..a63add191 100644
--- a/src/device/deviceview.cpp
+++ b/src/device/deviceview.cpp
@@ -225,8 +225,8 @@ void DeviceView::contextMenuEvent(QContextMenuEvent *e) {
properties_action_ = device_menu_->addAction(IconLoader::Load("configure"), tr("Device properties..."), this, SLOT(Properties()));
// Collection menu
- add_to_playlist_action_ = collection_menu_->addAction(IconLoader::Load("media-play"), tr("Append to current playlist"), this, SLOT(AddToPlaylist()));
- load_action_ = collection_menu_->addAction(IconLoader::Load("media-play"), tr("Replace current playlist"), this, SLOT(Load()));
+ add_to_playlist_action_ = collection_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist()));
+ load_action_ = collection_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(Load()));
open_in_new_playlist_ = collection_menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist()));
collection_menu_->addSeparator();
diff --git a/src/device/macosdevicelister.mm b/src/device/macosdevicelister.mm
index 7e7611399..9f69a4d7c 100644
--- a/src/device/macosdevicelister.mm
+++ b/src/device/macosdevicelister.mm
@@ -755,7 +755,7 @@ QVariantList MacOsDeviceLister::DeviceIcons(const QString& serial) {
}
if (IsCDDevice(serial)) {
- return QVariantList() << "cd";
+ return QVariantList() << "media-optical";
}
QString bsd_name = current_devices_[serial];
diff --git a/src/internet/internetcollectionview.cpp b/src/internet/internetcollectionview.cpp
index 59ac3eb57..299593a8e 100644
--- a/src/internet/internetcollectionview.cpp
+++ b/src/internet/internetcollectionview.cpp
@@ -299,8 +299,8 @@ void InternetCollectionView::contextMenuEvent(QContextMenuEvent *e) {
if (!context_menu_) {
context_menu_ = new QMenu(this);
- add_to_playlist_ = context_menu_->addAction(IconLoader::Load("media-play"), tr("Append to current playlist"), this, SLOT(AddToPlaylist()));
- load_ = context_menu_->addAction(IconLoader::Load("media-play"), tr("Replace current playlist"), this, SLOT(Load()));
+ add_to_playlist_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylist()));
+ load_ = context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(Load()));
open_in_new_playlist_ = context_menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, SLOT(OpenInNewPlaylist()));
context_menu_->addSeparator();
diff --git a/src/internet/internetsearchview.cpp b/src/internet/internetsearchview.cpp
index c1cb3fc38..3a47c4301 100644
--- a/src/internet/internetsearchview.cpp
+++ b/src/internet/internetsearchview.cpp
@@ -430,8 +430,8 @@ bool InternetSearchView::SearchKeyEvent(QKeyEvent *event) {
bool InternetSearchView::ResultsContextMenuEvent(QContextMenuEvent *event) {
context_menu_ = new QMenu(this);
- context_actions_ << context_menu_->addAction( IconLoader::Load("media-play"), tr("Append to current playlist"), this, SLOT(AddSelectedToPlaylist()));
- context_actions_ << context_menu_->addAction( IconLoader::Load("media-play"), tr("Replace current playlist"), this, SLOT(LoadSelected()));
+ context_actions_ << context_menu_->addAction( IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddSelectedToPlaylist()));
+ context_actions_ << context_menu_->addAction( IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(LoadSelected()));
context_actions_ << context_menu_->addAction( IconLoader::Load("document-new"), tr("Open in new playlist"), this, SLOT(OpenSelectedInNewPlaylist()));
context_menu_->addSeparator();
diff --git a/src/settings/appearancesettingspage.cpp b/src/settings/appearancesettingspage.cpp
index b8f5a1913..524e693be 100644
--- a/src/settings/appearancesettingspage.cpp
+++ b/src/settings/appearancesettingspage.cpp
@@ -110,8 +110,6 @@ AppearanceSettingsPage::AppearanceSettingsPage(SettingsDialog *dialog)
connect(ui_->select_tabbar_color, SIGNAL(pressed()), SLOT(TabBarSelectBGColor()));
connect(ui_->tabbar_system_color, SIGNAL(toggled(bool)), SLOT(TabBarSystemColor(bool)));
- ui_->checkbox_system_icons->hide();
-
Load();
}
diff --git a/src/settings/collectionsettingspage.cpp b/src/settings/collectionsettingspage.cpp
index ceb261cfc..c4f4d791e 100644
--- a/src/settings/collectionsettingspage.cpp
+++ b/src/settings/collectionsettingspage.cpp
@@ -54,7 +54,7 @@ CollectionSettingsPage::CollectionSettingsPage(SettingsDialog *dialog)
ui_->list->setItemDelegate(new NativeSeparatorsDelegate(this));
// Icons
- setWindowIcon(IconLoader::Load("vinyl"));
+ setWindowIcon(IconLoader::Load("library-music"));
ui_->add->setIcon(IconLoader::Load("document-open-folder"));
connect(ui_->add, SIGNAL(clicked()), SLOT(Add()));
diff --git a/src/widgets/fileviewlist.cpp b/src/widgets/fileviewlist.cpp
index 5da81fec0..57ec6df07 100644
--- a/src/widgets/fileviewlist.cpp
+++ b/src/widgets/fileviewlist.cpp
@@ -40,8 +40,8 @@ FileViewList::FileViewList(QWidget *parent)
menu_(new QMenu(this))
{
- menu_->addAction(IconLoader::Load("media-play"), tr("Append to current playlist"), this, SLOT(AddToPlaylistSlot()));
- menu_->addAction(IconLoader::Load("media-play"), tr("Replace current playlist"), this, SLOT(LoadSlot()));
+ menu_->addAction(IconLoader::Load("media-playback-start"), tr("Append to current playlist"), this, SLOT(AddToPlaylistSlot()));
+ menu_->addAction(IconLoader::Load("media-playback-start"), tr("Replace current playlist"), this, SLOT(LoadSlot()));
menu_->addAction(IconLoader::Load("document-new"), tr("Open in new playlist"), this, SLOT(OpenInNewPlaylistSlot()));
menu_->addSeparator();
menu_->addAction(IconLoader::Load("edit-copy"), tr("Copy to collection..."), this, SLOT(CopyToCollectionSlot()));