controlpanelplugins/themeplugin/src/cpthemecontrol.cpp
changeset 14 23411a3be0db
parent 12 624337f114fe
child 17 4a9568303383
child 21 2883a5458389
--- a/controlpanelplugins/themeplugin/src/cpthemecontrol.cpp	Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelplugins/themeplugin/src/cpthemecontrol.cpp	Fri May 14 15:53:07 2010 +0300
@@ -34,6 +34,8 @@
 #include <QStandardItem>
 #include <QTranslator>
 #include <QSortFilterProxyModel>
+#include <QDebug>
+#include <QThread>
 
 #include <hbmainwindow.h>
 #include <hbinstance.h>
@@ -65,7 +67,8 @@
     mThemePreview(0), 
     mThemeChanger(0),
     mListModel(0),
-    mSortModel(0)
+    mSortModel(0),
+    mIdleTimer(0)
 {
     mThemeChanger = new CpThemeChanger();
    
@@ -75,7 +78,11 @@
     QString path = "Z:/resource/qt/translations/";
     translator->load("control_panel_" + lang, path);
     qApp->installTranslator(translator);
-
+    
+    mIdleTimer = new QTimer(this);
+    connect(mIdleTimer, SIGNAL(timeout()), this, SLOT(themeChangeTimeout()));
+    connect(hbInstance->theme(),SIGNAL(changeFinished()), this, SLOT(themeChangeFinished()));
+   
 }
 
 
@@ -229,6 +236,7 @@
     success = mThemeChanger->connectToServer();
     
     if (success) {
+        QThread::currentThread()->setPriority(QThread::HighPriority);  
         mThemeChanger->changeTheme(theme);
         emit themeUpdated(mThemeChanger->currentTheme().name, mThemeChanger->currentTheme().icon);
     }
@@ -279,6 +287,20 @@
     mThemeListView->closeView();
 }
 
+void CpThemeControl::themeChangeTimeout()
+{
+    //qDebug() << "ThemeChangeTimeout " ;
+    mIdleTimer->stop();
+    QThread::currentThread()->setPriority(QThread::NormalPriority);    
+        
+}
+
+void CpThemeControl::themeChangeFinished()
+{
+    //qDebug() << "ThemeChangeFinished " ;
+    mIdleTimer->start(0);
+}
+
 /*!
  * Private function that sets the current index of theme list view to indicate
  * the active theme.