From 942e5f892b57a5f2221beb3a0fff2ff2bb8df15a Mon Sep 17 00:00:00 2001
From: Leo Franchi <lfranchi@kde.org>
Date: Sat, 7 May 2011 18:49:38 -0400
Subject: [PATCH 1/2] autodetect and populate resovlers named
 foo_tomahawkresolver* in the binary dir of tomahawk

---
 src/resolversmodel.cpp | 28 ++++++++++++++++++++++++++++
 src/resolversmodel.h   |  2 ++
 src/tomahawkapp.cpp    |  4 ++--
 3 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/src/resolversmodel.cpp b/src/resolversmodel.cpp
index 07e7c8aca..f3664cef9 100644
--- a/src/resolversmodel.cpp
+++ b/src/resolversmodel.cpp
@@ -39,6 +39,7 @@ ResolversModel::ResolversModel( const QStringList& allResolvers, const QStringLi
      if( changed )
         TomahawkSettings::instance()->setEnabledScriptResolvers( m_enabledResolvers );
 
+     addInstalledResolvers();
 }
 
 
@@ -152,3 +153,30 @@ ResolversModel::enabledResolvers() const
     return m_enabledResolvers;
 }
 
+void
+ResolversModel::addInstalledResolvers()
+{
+    QList< QDir > pluginDirs;
+
+    QDir appDir( qApp->applicationDirPath() );
+    QDir libDir( CMAKE_INSTALL_PREFIX "/lib" );
+
+    QDir lib64Dir( appDir );
+    lib64Dir.cdUp();
+    lib64Dir.cd( "lib64" );
+
+    pluginDirs << appDir << libDir << lib64Dir << QDir( qApp->applicationDirPath() );
+    foreach ( const QDir& pluginDir, pluginDirs )
+    {
+        qDebug() << "Checking directory for resolvers:" << pluginDir;
+        foreach ( QString fileName, pluginDir.entryList( QStringList() << "*_tomahawkresolver*", QDir::Files ) ){
+            if ( fileName.contains( "_tomahawkresolver" ) ) {
+                const QString path = pluginDir.absoluteFilePath( fileName );
+                if( !m_allResolvers.contains( path ) ) {
+                    m_allResolvers.append( path );
+                }
+            }
+        }
+    }
+}
+
diff --git a/src/resolversmodel.h b/src/resolversmodel.h
index c6cf8fa73..e7890fabf 100644
--- a/src/resolversmodel.h
+++ b/src/resolversmodel.h
@@ -48,6 +48,8 @@ public:
     QStringList allResolvers() const;
     QStringList enabledResolvers() const;
 private:
+    void addInstalledResolvers();
+
     QStringList m_allResolvers;
     QStringList m_enabledResolvers;
 };
diff --git a/src/tomahawkapp.cpp b/src/tomahawkapp.cpp
index 8059306c2..e3e614b34 100644
--- a/src/tomahawkapp.cpp
+++ b/src/tomahawkapp.cpp
@@ -182,7 +182,7 @@ TomahawkApp::init()
     registerMetaTypes();
 
     new TomahawkSettings( this );
-    
+
 #ifdef LIBLASTFM_FOUND
     qDebug() << "Setting NAM.";
     TomahawkUtils::setNam( lastfm::nam() );
@@ -204,7 +204,7 @@ TomahawkApp::init()
     }
     else
         TomahawkUtils::setProxy( new QNetworkProxy( QNetworkProxy::NoProxy ) );
-    
+
     Echonest::Config::instance()->setAPIKey( "JRIHWEP6GPOER2QQ6" );
 
     m_audioEngine = new AudioEngine;

From 1987b4c378a7a2fa7648d59c028b0372d3161564 Mon Sep 17 00:00:00 2001
From: Christian Muehlhaeuser <muesli@gmail.com>
Date: Sun, 8 May 2011 02:27:56 +0200
Subject: [PATCH 2/2] * Fix result-hint crash.

---
 src/libtomahawk/database/databaseimpl.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/libtomahawk/database/databaseimpl.cpp b/src/libtomahawk/database/databaseimpl.cpp
index b96859edf..269ac78d0 100644
--- a/src/libtomahawk/database/databaseimpl.cpp
+++ b/src/libtomahawk/database/databaseimpl.cpp
@@ -564,8 +564,9 @@ DatabaseImpl::resultFromHint( const Tomahawk::query_ptr& origquery )
         res->setAlbum( Tomahawk::album_ptr( new Tomahawk::Album( 0, origquery->album(), res->artist() ) ) );
         res->setTrack( origquery->track() );
         res->setDuration( origquery->duration() );
-        res->setFriendlySource( url );
-        return res;*/
+        res->setFriendlySource( url );*/
+
+        return res;
     }
 
     res = Tomahawk::result_ptr( new Tomahawk::Result() );