From ddd0af895f75bc7ee656cf35cce47713aa5b9f99 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Fri, 20 Apr 2012 15:10:45 -0400 Subject: [PATCH] account dedup --- src/libtomahawk/tomahawksettings.cpp | 36 ++++++++++++++++++++++++++++ src/libtomahawk/tomahawksettings.h | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/libtomahawk/tomahawksettings.cpp b/src/libtomahawk/tomahawksettings.cpp index c61acf2be..d93a4fc8c 100644 --- a/src/libtomahawk/tomahawksettings.cpp +++ b/src/libtomahawk/tomahawksettings.cpp @@ -408,6 +408,42 @@ TomahawkSettings::doUpgrade( int oldVersion, int newVersion ) setValue( "allaccounts", allAccounts ); endGroup(); } + else if ( oldVersion == 8 ) + { + // Some users got duplicate accounts for some reason, so make them unique if we can + QSet< QString > uniqueFriendlyNames; + beginGroup("accounts"); + const QStringList accounts = childGroups(); + QStringList allAccounts = value( "allaccounts" ).toStringList(); + +// qDebug() << "Got accounts to migrate:" << accounts; + foreach ( const QString& account, accounts ) + { + if ( !allAccounts.contains( account ) ) // orphan + { + qDebug() << "Found account not in allaccounts list!" << account << "is a dup!"; + remove( account ); + continue; + } + + const QString friendlyName = value( QString( "%1/accountfriendlyname" ).arg( account ) ).toString(); + if ( !uniqueFriendlyNames.contains( friendlyName ) ) + { + uniqueFriendlyNames.insert( friendlyName ); + continue; + } + else + { + // Duplicate..? + qDebug() << "Found duplicate account friendly name:" << account << friendlyName << "is a dup!"; + remove( account ); + allAccounts.removeAll( account ); + } + } + qDebug() << "Ended up with all accounts list:" << allAccounts << "and all accounts:" << childGroups(); + setValue( "allaccounts", allAccounts ); + endGroup(); + } } diff --git a/src/libtomahawk/tomahawksettings.h b/src/libtomahawk/tomahawksettings.h index de42f7c81..65f6016e0 100644 --- a/src/libtomahawk/tomahawksettings.h +++ b/src/libtomahawk/tomahawksettings.h @@ -28,7 +28,7 @@ #include "dllmacro.h" -#define TOMAHAWK_SETTINGS_VERSION 8 +#define TOMAHAWK_SETTINGS_VERSION 9 /** * Convenience wrapper around QSettings for tomahawk-specific config