diff --git a/kmix/kmixdockwidget.cpp b/kmix/kmixdockwidget.cpp index 04b2f0af..fbc28d50 100644 --- a/kmix/kmixdockwidget.cpp +++ b/kmix/kmixdockwidget.cpp @@ -343,15 +343,33 @@ KMixDockWidget::updatePixmap(bool force) TQPixmap origpixmap; TQPixmap scaledpixmap; TQImage newIcon; + + TQStringList fallback; switch ( newPixmapType ) { - // AFAIK no icon theme has an icon analogous to kmixdocked_error - case 'e': origpixmap = isShown() ? loadSizedIcon( "kmixdocked_error" , width() ) : loadIcon( "kmixdocked_error" ); break; - case 'm': origpixmap = isShown() ? loadSizedIcon( "audio-volume-muted" , width() ) : loadIcon( "audio-volume-muted" ); break; - case 'L': origpixmap = isShown() ? loadSizedIcon( "audio-volume-low" , width() ) : loadIcon( "audio-volume-low" ); break; - case 'M': origpixmap = isShown() ? loadSizedIcon( "audio-volume-medium", width() ) : loadIcon( "audio-volume-medium" ); break; - case 'H': origpixmap = isShown() ? loadSizedIcon( "audio-volume-high" , width() ) : loadIcon( "audio-volume-high" ); break; + case 'm': fallback << "audio-volume-muted" << "kmixdocked_mute"; break; + case 'L': fallback << "audio-volume-low" << "kmixdocked"; break; + case 'M': fallback << "audio-volume-medium" << "kmixdocked"; break; + case 'H': fallback << "audio-volume-high" << "kmixdocked"; break; + } + + TQString icon = TQString::null; + for(TQStringList::iterator it = fallback.begin(); it != fallback.end(); ++it) + { + /* Check if icon exists */ + if(!kapp->iconLoader()->iconPath((*it), TDEIcon::User, true).isNull()) + { + icon = (*it); + break; + } } - newIcon = origpixmap; + + if(icon.isNull()) + { + icon = "kmixdocked_error"; + } + + origpixmap = isShown() ? loadSizedIcon(icon, width()) : loadIcon(icon); + newIcon = origpixmap; if (isShown()) { newIcon = newIcon.smoothScale(width(), height()); }