void AppearanceSettings::applyCurrentSettings() { Theme *theme = currentTheme(); if (!theme) return; bool needsRestart = themeNeedsRestart(theme); if (needsRestart) { if (QMessageBox::warning(this, tr("Restart?"), tr("Device will be restarted for theme to be fully applied.<br>Apply Now?"), QMessageBox::Yes, QMessageBox::No) != QMessageBox::Yes) { return; } } bool themeChanged = (theme->uniqueName() + ".conf" != m_savedTheme); bool colorSchemeChanged = (theme->colorSchemeNames()[theme->currentColorIndex()] + ".scheme" != m_savedColorScheme); bool backgroundChanged = (theme->backgrounds()[theme->currentBackgroundIndex()] != m_savedBackground); bool softKeyLabelTypeChanged = (m_softKeyIconCheck->isChecked() ? QSoftMenuBar::IconLabel : QSoftMenuBar::TextLabel) != m_savedLabelType; qLog(UI) << "Theme settings changed?" << themeChanged << colorSchemeChanged << backgroundChanged <<softKeyLabelTypeChanged; // write config settings if (themeChanged) theme->writeThemeSettings(theme->uniqueName() + ".conf" != m_themeCombo->currentText()); if (colorSchemeChanged) theme->writeColorSchemeSettings(); // apply changes if (themeChanged || colorSchemeChanged) { QtopiaChannel::send("QPE/System", "applyStyle()"); if (themeChanged) QtopiaChannel::send("QPE/System", "applyStyleSplash()"); else QtopiaChannel::send("QPE/System", "applyStyleNoSplash()"); } if (backgroundChanged) applyBackgroundImage(); if (softKeyLabelTypeChanged) applySoftKeyLabels(); if (!theme->stringValue(Theme::ServerWidgets).isEmpty()) { QSettings serverWidgetsConfig("Trolltech", "ServerWidgets"); serverWidgetsConfig.beginGroup("Mapping"); serverWidgetsConfig.remove(""); //delete all entries in current grp serverWidgetsConfig.setValue("Default", theme->stringValue(Theme::ServerWidgets)); if (needsRestart) { QtopiaIpcEnvelope env("QPE/System", "restart()"); QtopiaApplication::quit(); } } }