diff -r a5692c68d772 -r 593f946f4fec controlpanelplugins/themeplugin/src/cpthemechanger.cpp --- a/controlpanelplugins/themeplugin/src/cpthemechanger.cpp Fri Jun 25 17:12:20 2010 +0800 +++ b/controlpanelplugins/themeplugin/src/cpthemechanger.cpp Wed Sep 29 10:09:58 2010 +0800 @@ -39,7 +39,9 @@ QObject(p), mCurrentTheme(0) { - connect(hbInstance->theme(),SIGNAL(changeFinished()), this, SLOT(changeFinished())); + if(hbInstance->theme()) { + connect(hbInstance->theme(),SIGNAL(changeFinished()), this, SLOT(changeFinished())); + } setCurrentTheme(); } @@ -73,8 +75,7 @@ if(mCurrentTheme && mCurrentTheme->name() == themeName) { return; - } - else { + } else { //buildThemeInfo creates new theme info. CpThemeInfo* tmpTheme = CpThemeUtil::buildThemeInfo(HbThemeServices::themePath(), themeName); @@ -92,15 +93,15 @@ /*! Change a theme. Returns true on success, false otherwise. */ -bool CpThemeChanger::changeTheme(const QString& newTheme) +bool CpThemeChanger::changeTheme(const CpThemeInfo& newTheme) { bool result = false; // Skip doing this if the request is for the current theme - if (newTheme.isEmpty() || newTheme == mCurrentTheme->name()) { + if (newTheme.name().isEmpty() || (mCurrentTheme && newTheme.name() == mCurrentTheme->name())) { return result; } - QString themePath = CpThemeUtil::themePath(newTheme); + QString themePath = newTheme.itemData(); if(!themePath.isEmpty()) { HbThemeServices::setTheme(themePath); @@ -124,9 +125,7 @@ */ void CpThemeChanger::changeFinished() { - setCurrentTheme(); - emit themeChangeFinished(); }