From cb85c767de7be8cc4cdee64808d277731a671d62 Mon Sep 17 00:00:00 2001
From: Leo Franchi <lfranchi@kde.org>
Date: Sun, 11 Mar 2012 12:31:22 -0400
Subject: [PATCH] Auto upgrade old spotify to new spotify

---
 src/libtomahawk/accounts/ResolverAccount.h |  2 +-
 src/libtomahawk/tomahawksettings.cpp       | 35 ++++++++++++++++++++++
 src/libtomahawk/tomahawksettings.h         |  2 +-
 3 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/src/libtomahawk/accounts/ResolverAccount.h b/src/libtomahawk/accounts/ResolverAccount.h
index 59b8ef162..b115d8fc4 100644
--- a/src/libtomahawk/accounts/ResolverAccount.h
+++ b/src/libtomahawk/accounts/ResolverAccount.h
@@ -44,7 +44,7 @@ public:
 
     // Used to create a new resolver from a script on disk, either chosen by
     // the user, or installed from synchrotron
-    virtual bool acceptsPath( const QString& path ) const { return true; } // This is the catch-all filesystem account
+    virtual bool acceptsPath( const QString&  ) const { return true; } // This is the catch-all filesystem account
     virtual Account* createFromPath( const QString& path );
 
     // Internal use
diff --git a/src/libtomahawk/tomahawksettings.cpp b/src/libtomahawk/tomahawksettings.cpp
index 8b93906dd..8a7da5509 100644
--- a/src/libtomahawk/tomahawksettings.cpp
+++ b/src/libtomahawk/tomahawksettings.cpp
@@ -361,6 +361,41 @@ TomahawkSettings::doUpgrade( int oldVersion, int newVersion )
 
         setValue( "accounts/allaccounts", accounts );
     }
+    else if ( oldVersion == 7 )
+    {
+        // Upgrade spotify resolver to standalone account, if one exists
+        beginGroup( "accounts" );
+        QStringList allAccounts = value( "allaccounts" ).toStringList();
+        foreach ( const QString& account, allAccounts )
+        {
+            if ( account.startsWith( "resolveraccount_" ) && value( QString( "%1/accountfriendlyname" ).arg( account ) ).toString() == "spotify_tomahawkresolver" )
+            {
+                // This is a spotify resolver, convert!
+                const QVariantHash configuration = value( QString( "%1/configuration" ).arg( account ) ).toHash();
+                const bool enabled = value( QString( "%1/enabled" ).arg( account ) ).toBool();
+                const bool autoconnect = value( QString( "%1/autoconnect" ).arg( account ) ).toBool();
+
+                qDebug() << "Migrating Spotify resolver from legacy resolver type, path is:" << configuration[ "path" ].toString();
+
+                remove( account );
+
+                // Create new account
+                QString newAccount = account;
+                newAccount.replace( "resolveraccount_", "spotifyaccount_" );
+                beginGroup( newAccount );
+                setValue( "enabled", enabled );
+                setValue( "autoconnect", autoconnect );
+                setValue( "types", QStringList() << "ResolverType" );
+                setValue( "configuration", configuration );
+                endGroup();
+
+                allAccounts.replace( allAccounts.indexOf( account ), newAccount );
+            }
+        }
+
+        setValue( "allaccounts", allAccounts );
+        endGroup();
+    }
 }
 
 
diff --git a/src/libtomahawk/tomahawksettings.h b/src/libtomahawk/tomahawksettings.h
index 1a1d67100..578f8a3cc 100644
--- a/src/libtomahawk/tomahawksettings.h
+++ b/src/libtomahawk/tomahawksettings.h
@@ -27,7 +27,7 @@
 
 #include "dllmacro.h"
 
-#define TOMAHAWK_SETTINGS_VERSION 7
+#define TOMAHAWK_SETTINGS_VERSION 8
 
 /**
  * Convenience wrapper around QSettings for tomahawk-specific config