Source Code (Use browser search to find items of interest.)

Class Index

kcontrol'KIconConfig (./kdebase/kcontrol/display/icons.h:32)

class KIconConfig: public KCModule
{
    Q_OBJECT

public:
    KIconConfig(QWidget *parent, const char *name);

    virtual void load();
    virtual void save();
    virtual void defaults();

signals:
    void changed(bool);

private slots:
    void slotUsage(int index);
    void slotState(int index);
    void slotEffect(int index);
    void slotEffectValue(int value);
    void slotSize(int index);
    void slotDPCheck(bool check);

private:
    void init();
    void read();
    void apply();
    void preview();

    bool mbDP[4];
    int mSizes[4];
    QValueList<int> mAvSizes[4];
    int mEffects[4][3];
    float mEffectValues[4][3];

    int mUsage, mState;
    QString mTheme, mExample;
    QStringList mGroups, mStates;

    KIconEffect *mpEffect;
    KIconTheme *mpTheme;
    KIconLoader *mpLoader;
    KConfig *mpConfig;

    QLabel *mpPreview;
    QListBox *mpUsageList, *mpStateList;
    QComboBox *mpEffectBox, *mpSizeBox;
    QSlider *mpEffectSlider;
    QCheckBox *mpDPCheck;
};

kcontrol'KIconConfig::KIconConfig() (./kdebase/kcontrol/display/icons.cpp:51)

KIconConfig::KIconConfig(QWidget *parent, const char *name)
    : KCModule(parent, name)
{
    QGridLayout *top = new QGridLayout(this, 2, 2, 10, 10);
    top->setColStretch(0, 1);
    top->setColStretch(1, 1);

    // Use of Icon
    QGroupBox *gbox = new QGroupBox(i18n("Use of Icon"), this);
    top->addWidget(gbox, 0, 0);
    QBoxLayout *g_lay = new QVBoxLayout(gbox, 10, 10);
    mpUsageList = new QListBox(gbox);
    connect(mpUsageList, SIGNAL(highlighted(int)), SLOT(slotUsage(int)));
    g_lay->addSpacing(10);
    g_lay->addWidget(mpUsageList);

    // Effects
    gbox = new QGroupBox(i18n("Effects for States"), this);
    top->addWidget(gbox, 1, 0);
    g_lay = new QVBoxLayout(gbox, 10, 10);
    mpStateList = new QListBox(gbox);
    connect(mpStateList, SIGNAL(highlighted(int)), SLOT(slotState(int)));
    g_lay->addSpacing(10);
    g_lay->addWidget(mpStateList);

    QGridLayout *grid = new QGridLayout;
    grid->setColStretch(0, 2);
    grid->setColStretch(0, 1);
    g_lay->addLayout(grid);
    QLabel *lbl = new QLabel(i18n("&Effect"), gbox);
    grid->addWidget(lbl, 0, 0);
    mpEffectBox = new QComboBox(gbox);
    connect(mpEffectBox, SIGNAL(activated(int)), SLOT(slotEffect(int)));
    grid->addWidget(mpEffectBox, 0, 1);
    lbl->setBuddy(mpEffectBox);
    lbl = new QLabel(i18n("Value"), gbox);
    grid->addWidget(lbl, 1, 0);
    mpEffectSlider = new QSlider(0, 100, 5, 10, QSlider::Horizontal, gbox);
    connect(mpEffectSlider, SIGNAL(valueChanged(int)), SLOT(slotEffectValue(int)));
    grid->addWidget(mpEffectSlider, 1, 1);

    // Preview
    gbox = new QGroupBox(i18n("Preview"), this);
    top->addWidget(gbox, 0, 1);
    g_lay = new QVBoxLayout(gbox, 10, 10);
    mpPreview = new QLabel(gbox);
    mpPreview->setAlignment(AlignCenter);
    mpPreview->setMinimumSize(128, 128);
    g_lay->addSpacing(10);
    g_lay->addWidget(mpPreview);

    // Size
    gbox = new QGroupBox(i18n("Size"), this);
    top->addWidget(gbox, 1, 1);
    g_lay = new QVBoxLayout(gbox, 10, 10);
    QHBoxLayout *h_lay = new QHBoxLayout;
    g_lay->addSpacing(10);
    g_lay->addLayout(h_lay);
    lbl = new QLabel(i18n("Size"), gbox);
    h_lay->addWidget(lbl);
    mpSizeBox = new QComboBox(gbox);
    connect(mpSizeBox, SIGNAL(activated(int)), SLOT(slotSize(int)));
    h_lay->addWidget(mpSizeBox);
    mpDPCheck = new QCheckBox(i18n("Double sized pixels"), gbox);
    connect(mpDPCheck, SIGNAL(toggled(bool)), SLOT(slotDPCheck(bool)));
    g_lay->addWidget(mpDPCheck);

    init();
    read();
    apply();
    preview();
}

    

kcontrol'KIconConfig::init() (./kdebase/kcontrol/display/icons.cpp:125)

void KIconConfig::init()
{
    mpLoader = KGlobal::iconLoader();
    mpConfig = KGlobal::config();
    mpEffect = new KIconEffect;
    mpTheme = mpLoader->theme();
    mUsage = 0; mState = 0;

    // Fill list/checkboxen
    mpUsageList->insertItem(i18n("Desktop"));
    mpUsageList->insertItem(i18n("Toolbar"));
    mpUsageList->insertItem(i18n("Main Toolbar"));
    mpUsageList->insertItem(i18n("Small Icons"));

    mpStateList->insertItem(i18n("Default"));
    mpStateList->insertItem(i18n("Active"));
    mpStateList->insertItem(i18n("Disabled"));

    mpEffectBox->insertItem(i18n("No Effect"));
    mpEffectBox->insertItem(i18n("To Gray"));
    mpEffectBox->insertItem(i18n("Desaturate"));
    mpEffectBox->insertItem(i18n("SemiTransparent"));

    // For reading the configuration
    mGroups += "Desktop";
    mGroups += "Toolbar";
    mGroups += "MainToolbar";
    mGroups += "Small";

    mStates += "Default";
    mStates += "Active";
    mStates += "Disabled";


}


kcontrol'KIconConfig::read() (./kdebase/kcontrol/display/icons.cpp:161)

void KIconConfig::read()
{
    for (int i=0; i<KIcon::LastGroup; i++)
	mAvSizes[i] = mpTheme->querySizes(i);

    mTheme = mpTheme->current();
    mExample = mpTheme->example();

    int i, j, effect;
    QStringList::ConstIterator it, it2;
    for (it=mGroups.begin(), i=0; it!=mGroups.end(); it++, i++)
    {
	mpConfig->setGroup(*it + "Icons");
	mSizes[i] = mpConfig->readNumEntry("Size", mpTheme->defaultSize(i));
	mbDP[i] = mpConfig->readBoolEntry("DoublePixels");
	mEffects[i][0] = KIconEffect::NoEffect;
	mEffects[i][1] = KIconEffect::NoEffect;
	mEffects[i][2] = KIconEffect::SemiTransparent;
	for (it2=mStates.begin(), j=0; it2!=mStates.end(); it2++, j++)
	{
	    QString tmp = mpConfig->readEntry(*it2 + "Effect");
	    if (tmp == "togray")
		effect = KIconEffect::ToGray;
	    else if (tmp == "desaturate")
		effect = KIconEffect::DeSaturate;
	    else if (tmp == "semitransparent")
		effect = KIconEffect::SemiTransparent;
	    else if (tmp == "none")
		effect = KIconEffect::NoEffect;
	    else
		continue;
	    mEffects[i][j] = effect;
	    mEffectValues[i][j] = mpConfig->readDoubleNumEntry(*it2 + "Value");
	}
    }
}


kcontrol'KIconConfig::apply() (./kdebase/kcontrol/display/icons.cpp:198)

void KIconConfig::apply()
{
    mpUsageList->setCurrentItem(mUsage);
    mpStateList->setCurrentItem(mState);
    mpEffectBox->setCurrentItem(mEffects[mUsage][mState]);
    if (mEffects[mUsage][mState] == KIconEffect::DeSaturate)
    {
	mpEffectSlider->setEnabled(true);
	mpEffectSlider->setValue((int) (100.0 * mEffectValues[mUsage][mState] + 0.5));
    } else
    {
	mpEffectSlider->setEnabled(false);
	mpEffectSlider->setValue(0);
    }

    int delta = 1000, dw, index = -1, size, i;
    QValueList<int>::Iterator it;
    mpSizeBox->clear();
    for (it=mAvSizes[mUsage].begin(), i=0; it!=mAvSizes[mUsage].end(); it++, i++)
    {
	mpSizeBox->insertItem(QString().setNum(*it));
	dw = abs(mSizes[mUsage] - *it);
	if (dw < delta)
	{
	    delta = dw;
	    index = i;
	    size = *it;
	}
	    
    }
    if (index != -1)
    {
	mpSizeBox->setCurrentItem(index);
	mSizes[mUsage] = size; // best or exact match
    }
    mpDPCheck->setChecked(mbDP[mUsage]);
}


kcontrol'KIconConfig::preview() (./kdebase/kcontrol/display/icons.cpp:236)

void KIconConfig::preview()
{
    // Apply effects ourselves because we don't want to sync 
    // the configuratio every preview.
    QPixmap pm = mpLoader->loadIcon(mExample, KIcon::NoGroup, mSizes[mUsage]);
    QImage img = pm.convertToImage();
    img = mpEffect->apply(img, mEffects[mUsage][mState],
	    mEffectValues[mUsage][mState]);
    if (mbDP[mUsage])
    {
	int w = img.width() * 2;
	img = img.smoothScale(w, w);
    }
    pm.convertFromImage(img);
    mpPreview->setPixmap(pm);
}


kcontrol'KIconConfig::load() (./kdebase/kcontrol/display/icons.cpp:253)

void KIconConfig::load()
{
    read();
    apply();
    emit changed(false);
}



kcontrol'KIconConfig::save() (./kdebase/kcontrol/display/icons.cpp:261)

void KIconConfig::save()
{
    int i, j;
    QStringList::ConstIterator it, it2;
    for (it=mGroups.begin(), i=0; it!=mGroups.end(); it++, i++)
    {
	mpConfig->setGroup(*it + "Icons");
	mpConfig->writeEntry("Size", mSizes[i], true, true);
	mpConfig->writeEntry("DoublePixels", mbDP[i], true, true);
	for (it2=mStates.begin(), j=0; it2!=mStates.end(); it2++, j++)
	{
	    QString tmp;
	    switch (mEffects[i][j])
	    {
	    case KIconEffect::ToGray:
		tmp = "togray";
		break;
	    case KIconEffect::DeSaturate:
		tmp = "desaturate";
		break;
	    case KIconEffect::SemiTransparent:
		tmp = "semitransparent";
		break;
	    default:
		tmp = "none";
		break;
	    }
	    mpConfig->writeEntry(*it2 + "Effect", tmp, true, true);
	    mpConfig->writeEntry(*it2 + "Value", mEffectValues[i][j], true, true);
	}
    }
    mpConfig->sync();
    emit changed(false);
}



kcontrol'KIconConfig::defaults() (./kdebase/kcontrol/display/icons.cpp:297)

void KIconConfig::defaults()
{
    for (int i=0; i<KIcon::LastGroup; i++)
    {
	mSizes[i] = mpTheme->defaultSize(i);
	mbDP[i] = false;
	mEffects[i][0] = KIconEffect::NoEffect;
	mEffects[i][1] = KIconEffect::NoEffect;
	mEffects[i][2] = KIconEffect::SemiTransparent;
    }
    apply();
    preview();
    emit changed(true);
}


kcontrol'KIconConfig::slotUsage() (./kdebase/kcontrol/display/icons.cpp:312)

void KIconConfig::slotUsage(int index)
{
    mUsage = index;
    mState = 0;
    apply();
    preview();
    emit changed(true);
}


kcontrol'KIconConfig::slotState() (./kdebase/kcontrol/display/icons.cpp:321)

void KIconConfig::slotState(int index)
{
    mState = index;
    mpEffectBox->setCurrentItem(mEffects[mUsage][mState]);
    mpEffectSlider->setValue((int) (100.0 * mEffectValues[mUsage][mState] + 0.5));
    preview();
    emit changed(true);
}


kcontrol'KIconConfig::slotEffect() (./kdebase/kcontrol/display/icons.cpp:330)

void KIconConfig::slotEffect(int index)
{
    mEffects[mUsage][mState] = index;
    if (mEffects[mUsage][mState] == KIconEffect::DeSaturate)
    {
	mpEffectSlider->setValue((int) (100.0 * mEffectValues[mUsage][mState] + 0.5));
	mpEffectSlider->setEnabled(true);
    } else 
    {
	mpEffectSlider->setEnabled(false);
	mpEffectSlider->setValue(0);
    }
    preview();
    emit changed(true);
}


kcontrol'KIconConfig::slotEffectValue() (./kdebase/kcontrol/display/icons.cpp:346)

void KIconConfig::slotEffectValue(int value)
{
    mEffectValues[mUsage][mState] = 0.01 * value;
    preview();
    emit changed(true);
}


kcontrol'KIconConfig::slotSize() (./kdebase/kcontrol/display/icons.cpp:353)

void KIconConfig::slotSize(int index)
{
    kdDebug(264) << "Index: " << index << "\n";
    mSizes[mUsage] = mAvSizes[mUsage][index];
    preview();
    emit changed(true);
}


kcontrol'KIconConfig::slotDPCheck() (./kdebase/kcontrol/display/icons.cpp:361)

void KIconConfig::slotDPCheck(bool check)
{
    mbDP[mUsage] = check;
    preview();
    emit changed(true);
}