Пример #1
0
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();
        }
    }
}
Пример #2
0
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());
}
Пример #3
0
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());
}
Пример #4
0
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;
        }
    }
}