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()); }
void AppearanceSettings::loadSavedTheme() { gConfig.beginGroup("Appearance"); m_savedTheme = gConfig.value("Theme", "qtopia.conf").toString(); m_savedColorScheme = gConfig.value("Scheme", "Qtopia").toString(); m_savedBackground = gConfig.value("BackgroundImage", "").toString(); gConfig.endGroup(); gConfig.beginGroup("ContextMenu"); m_savedLabelType = (QSoftMenuBar::LabelType)gConfig.value( "LabelType", QSoftMenuBar::TextLabel).toInt(); gConfig.endGroup(); m_softKeyIconCheck->setChecked(m_savedLabelType == QSoftMenuBar::IconLabel); for (int i=0; i<m_themes.size(); i++) { if (m_themes[i]->uniqueName() + ".conf" == m_savedTheme) { Theme *theme = m_themes[i]; theme->setCurrentColorIndex(theme->colorSchemeFiles().indexOf(m_savedColorScheme)); theme->setCurrentBackgroundIndex(theme->backgrounds().indexOf(m_savedBackground)); m_themeCombo->setCurrentIndex(i); break; } } }