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(); } } }
void AppearanceSettings::themeChanged(int index) { Theme *theme = m_themes.value(index, 0); if (!theme) return; QStringListModel *model; model = qobject_cast<QStringListModel *>(m_colorCombo->model()); model->setStringList(theme->colorSchemeNames()); m_colorCombo->setCurrentIndex(theme->currentColorIndex()); model = qobject_cast<QStringListModel *>(m_backgroundCombo->model()); model->setStringList(theme->backgrounds()); m_backgroundCombo->setCurrentIndex(theme->currentBackgroundIndex()); }
void AppearanceSettings::themeChanged(int index) { // Launch web browser for more themes if(index == (m_themeCombo->count() - 1)) { QProcess::execute("arora", QStringList() << "http://qtmoko.sourceforge.net/apps/category-themes.html"); QStringListModel *model = qobject_cast<QStringListModel *>(m_themeCombo->model()); QStringList oldThemes = model->stringList(); loadThemes(); // Find theme which was installed model = qobject_cast<QStringListModel *>(m_themeCombo->model()); QStringList newThemes = model->stringList(); for(int i = 0; i < newThemes.count(); i++) { if(oldThemes.count() <= i || oldThemes[i] != newThemes[i]) { m_prevIndex = i; break; } } m_themeCombo->setCurrentIndex(m_prevIndex); return; } Theme *theme = m_themes.value(index, 0); if (!theme) return; m_prevIndex = index; QStringListModel *model; model = qobject_cast<QStringListModel *>(m_colorCombo->model()); model->setStringList(theme->colorSchemeNames()); m_colorCombo->setCurrentIndex(theme->currentColorIndex()); model = qobject_cast<QStringListModel *>(m_backgroundCombo->model()); model->setStringList(theme->backgrounds()); m_backgroundCombo->setCurrentIndex(theme->currentBackgroundIndex()); }