controlpanelplugins/themeplugin/src/cpthemechanger.cpp
changeset 40 593f946f4fec
parent 22 a5692c68d772
--- 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();
 }