From 99d84c6489b522c5cea807013812cb13d045c5cf Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Sun, 10 Jun 2012 09:08:01 +0200 Subject: [PATCH] Only install from attica when checking, even if we have checked + uninstalled --- src/libtomahawk/accounts/AccountModel.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/libtomahawk/accounts/AccountModel.cpp b/src/libtomahawk/accounts/AccountModel.cpp index 2f263b9ac..7b03cbe7d 100644 --- a/src/libtomahawk/accounts/AccountModel.cpp +++ b/src/libtomahawk/accounts/AccountModel.cpp @@ -416,6 +416,9 @@ AccountModel::setData( const QModelIndex& index, const QVariant& value, int role if ( role == CheckboxClickedRole ) { Account* acct = 0; + + Qt::CheckState checkState = static_cast< Qt::CheckState >( value.toInt() ); + switch ( node->type ) { case AccountModelNode::UniqueFactoryType: @@ -453,9 +456,11 @@ AccountModel::setData( const QModelIndex& index, const QVariant& value, int role state = AtticaManager::Uninstalled; } - if ( state == AtticaManager::Installed ) + // Don't install if we're unchecking. This happens if e.g. the user deletes his config file + // and opens tomahawk + if ( state == AtticaManager::Installed || checkState == Qt::Unchecked ) { - qDebug() << "Already installed with resolver, just enabling"; + qDebug() << "Already installed with resolver, or unchecking, just enabling/disabling"; acct = node->atticaAccount; break; } @@ -491,13 +496,10 @@ AccountModel::setData( const QModelIndex& index, const QVariant& value, int role if ( node->type == AccountModelNode::FactoryType ) { - // Turn on or off all accounts for this factory - - Qt::CheckState state = static_cast< Qt::CheckState >( value.toInt() ); - + // Turn on or off all accounts for this factory\ foreach ( Account* acct, node->accounts ) { - state == Qt::Checked ? AccountManager::instance()->enableAccount( acct ) + checkState == Qt::Checked ? AccountManager::instance()->enableAccount( acct ) : AccountManager::instance()->disableAccount( acct ); }