diff -up ./amarok/src/statusbar/statusBarBase.cpp.147126 ./amarok/src/statusbar/statusBarBase.cpp
--- ./amarok/src/statusbar/statusBarBase.cpp.147126 2007-08-07 19:48:28.000000000 +0200
+++ ./amarok/src/statusbar/statusBarBase.cpp 2007-09-02 13:55:38.000000000 +0200
@@ -25,6 +25,7 @@
#include "squeezedtextlabel.h"
#include "statusBarBase.h"
#include "threadmanager.h"
+#include "enginecontroller.h"
#include <kio/job.h>
#include <kiconloader.h>
@@ -343,9 +344,13 @@ StatusBar::longMessageThreadSafe( const
void
StatusBar::customEvent( QCustomEvent *e )
{
- QString *s = static_cast<QString*>( e->data() );
- longMessage( *s );
- delete s;
+ if(e->type() == 1000 ){
+ QString *s = static_cast<QString*>( e->data() );
+ longMessage( *s );
+ delete s;
+ }else if(e->type() == 2000 ){
+ EngineController::instance()->unplayableNotification();
+ }
}
diff -up ./amarok/src/enginecontroller.cpp.147126 ./amarok/src/enginecontroller.cpp
--- ./amarok/src/enginecontroller.cpp.147126 2007-08-07 19:48:28.000000000 +0200
+++ ./amarok/src/enginecontroller.cpp 2007-09-02 13:55:38.000000000 +0200
@@ -244,13 +244,10 @@ bool EngineController::canDecode( const
if( engine() != EngineController::instance()->m_voidEngine )
{
//we special case this as otherwise users hate us
- if ( !valid && ext.lower() == "mp3" && !installDistroCodec(AmarokConfig::soundSystem()) )
- Amarok::StatusBar::instance()->longMessageThreadSafe(
- i18n( "<p>The %1 claims it <b>cannot</b> play MP3 files."
- "<p>You may want to choose a different engine from the <i>Configure Dialog</i>, or examine "
- "the installation of the multimedia-framework that the current engine uses. "
- "<p>You may find useful information in the <i>FAQ</i> section of the <i>Amarok HandBook</i>." )
- .arg( AmarokConfig::soundSystem() ), KDE::StatusBar::Error );
+ if ( !valid && ext.lower() == "mp3"){
+ QCustomEvent * e = new QCustomEvent( 2000 );
+ QApplication::postEvent( Amarok::StatusBar::instance(), e );
+ }
// Cache this result for the next lookup
if ( !ext.isEmpty() )
@@ -260,6 +257,17 @@ bool EngineController::canDecode( const
return valid;
}
+void EngineController::unplayableNotification() {
+
+ if( !installDistroCodec(AmarokConfig::soundSystem()))
+ Amarok::StatusBar::instance()->longMessageThreadSafe(
+ i18n( "<p>The %1 claims it <b>cannot</b> play MP3 files."
+ "<p>You may want to choose a different engine from the <i>Configure Dialog</i>, or examine "
+ "the installation of the multimedia-framework that the current engine uses. "
+ "<p>You may find useful information in the <i>FAQ</i> section of the <i>Amarok HandBook</i>." )
+ .arg( AmarokConfig::soundSystem() ), KDE::StatusBar::Error );
+}
+
bool EngineController::installDistroCodec( const QString& engine /*Filetype type*/)
{
KService::Ptr service = KTrader::self()->query( "Amarok/CodecInstall"
diff -up ./amarok/src/enginecontroller.h.147126 ./amarok/src/enginecontroller.h
--- ./amarok/src/enginecontroller.h.147126 2007-08-07 19:48:28.000000000 +0200
+++ ./amarok/src/enginecontroller.h 2007-09-02 13:55:38.000000000 +0200
@@ -52,6 +52,7 @@ public:
uint trackPosition() const;
EngineBase* loadEngine();
+ void unplayableNotification();
uint trackLength() const { return m_bundle.length() * 1000; }
const MetaBundle &bundle() const;