Exemplo n.º 1
0
void BGDialog::slotPrimaryColor(const QColor &color)
{
    KBackgroundRenderer *r = eRenderer();

    if (color == r->colorA())
        return;

    r->stop();
    r->setColorA(color);
    r->start(true);
    m_copyAllScreens = true;
    emit changed(true);
}
Exemplo n.º 2
0
void BGDialog::updateUI()
{
    KBackgroundRenderer *r = eRenderer();
    m_comboScreen->setCurrentIndex(m_eScreen);

    m_colorPrimary->setColor(r->colorA());
    m_colorSecondary->setColor(r->colorB());

    int wallpaperMode = r->wallpaperMode();
    int multiMode = r->multiWallpaperMode();

    if (r->backgroundMode() == KBackgroundSettings::Program &&
            wallpaperMode == KBackgroundSettings::NoWallpaper)
        groupBox3->setEnabled(false);
    else
        groupBox3->setEnabled(true);

    if ((multiMode == KBackgroundSettings::NoMultiRandom) ||
            (multiMode == KBackgroundSettings::NoMulti)) {
        // No wallpaper
        if (wallpaperMode == KBackgroundSettings::NoWallpaper) {
            if (!m_readOnly) {
                m_urlWallpaperBox->setEnabled(false);
                m_urlWallpaperButton->setEnabled(false);
                m_buttonSetupWallpapers->setEnabled(false);
                m_comboWallpaperPos->setEnabled(false);
                m_lblWallpaperPos->setEnabled(false);
            }
            m_buttonGroupBackground->setSelected(
                m_buttonGroupBackground->id(m_radioNoPicture));
        }

        // 1 Picture
        else {
            if (!m_readOnly) {
                m_urlWallpaperBox->setEnabled(true);
                m_urlWallpaperButton->setEnabled(true);
                m_buttonSetupWallpapers->setEnabled(false);
                m_comboWallpaperPos->setEnabled(true);
                m_lblWallpaperPos->setEnabled(true);
            }
            setWallpaper(r->wallpaper());
            m_buttonGroupBackground->setSelected(
                m_buttonGroupBackground->id(m_radioPicture));
        }
    }

    // Slide show
    else {
        if (!m_readOnly) {
            m_urlWallpaperBox->setEnabled(false);
            m_urlWallpaperButton->setEnabled(false);
            m_buttonSetupWallpapers->setEnabled(true);
            m_comboWallpaperPos->setEnabled(true);
            m_lblWallpaperPos->setEnabled(true);
        }
        m_buttonGroupBackground->setSelected(
            m_buttonGroupBackground->id(m_radioSlideShow));
    }

    m_comboWallpaperPos->setCurrentIndex(r->wallpaperMode() - 1);

    bool bSecondaryEnabled = true;
    m_comboPattern->blockSignals(true);
    switch (r->backgroundMode()) {
    case KBackgroundSettings::Flat:
        m_comboPattern->setCurrentIndex(0);
        bSecondaryEnabled = false;
        break;

    case KBackgroundSettings::Pattern: {
        int i = m_patterns.indexOf(r->KBackgroundPattern::name());
        if (i >= 0)
            m_comboPattern->setCurrentIndex(NR_PREDEF_PATTERNS + i);
        else
            m_comboPattern->setCurrentIndex(0);
    }
    break;

    case KBackgroundSettings::Program:
        m_comboPattern->setCurrentIndex(0);
        bSecondaryEnabled = false;
        break;

    default: // Gradient
        m_comboPattern->setCurrentIndex(
            1 + r->backgroundMode() - KBackgroundSettings::HorizontalGradient);
        break;
    }
    m_comboPattern->blockSignals(false);

    m_colorSecondary->setEnabled(bSecondaryEnabled && !m_readOnly);

    int mode = r->blendMode();

    m_comboBlend->blockSignals(true);
    m_sliderBlend->blockSignals(true);

    m_comboBlend->setCurrentIndex(mode);
    m_cbBlendReverse->setChecked(r->reverseBlending());
    m_sliderBlend->setValue(r->blendBalance() / 10);

    m_comboBlend->blockSignals(false);
    m_sliderBlend->blockSignals(false);

    // turn it off if there is no background picture set!
    setBlendingEnabled(wallpaperMode != KBackgroundSettings::NoWallpaper);

    // Start preview renderer(s)
    if (m_eScreen == 0) {
        r->setPreview(m_pMonitorArrangement->combinedPreviewSize());
        r->start(true);
    } else if (m_eScreen == 1) {
        r->setPreview(m_pMonitorArrangement->maxPreviewSize());
        r->start(true);
    } else {
        for (unsigned j = 0; j < m_numScreens; ++j) {
            m_renderer[j+2]->stop();
            m_renderer[j+2]->setPreview(m_pMonitorArrangement->monitor(j)->previewRect().size());
            m_renderer[j+2]->start(true);
        }
    }
}