diff -r 624337f114fe -r 23411a3be0db controlpanelplugins/themeplugin/src/cpthemecontrol.cpp --- 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 #include #include +#include +#include #include #include @@ -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.