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

Class Index

kcontrol'KThemeListBox (./kdebase/kcontrol/display/general.h:29)

class KThemeListBox : public QListView
{
    Q_OBJECT

public:
    KThemeListBox(QWidget *parent=0, const char *name=0);
    ~KThemeListBox();

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

private:
    void readThemeDir(const QString &directory);

    QString curName;
    QListViewItem *curItem, *defItem;
    KConfig *kconfig;
};


/**
 * This is the "Style" tab in kcontrol/Desktop.
 */

kcontrol'KThemeListBox::KThemeListBox() (./kdebase/kcontrol/display/general.cpp:55)

KThemeListBox::KThemeListBox(QWidget *parent, const char *name)
    : QListView(parent, name)
{
    kconfig = new KConfig("kcmdisplayrc");

    addColumn(i18n("Name:"));
    addColumn(i18n("Description:"));
    setAllColumnsShowFocus(true);
    KGlobal::dirs()->addResourceType("themes", KStandardDirs::kde_default("data") + "kstyle/themes");
    QStringList list = KGlobal::dirs()->resourceDirs("themes");
    for (QStringList::ConstIterator it = list.begin(); it != list.end(); it++)
        readThemeDir(*it);

    setFixedHeight(120);

    if (!currentItem())
        setSelected(firstChild(), true);

    ensureItemVisible(currentItem());
}



kcontrol'KThemeListBox::~KThemeListBox() (./kdebase/kcontrol/display/general.cpp:77)

KThemeListBox::~KThemeListBox()
{
    delete kconfig;
}



kcontrol'KThemeListBox::readThemeDir() (./kdebase/kcontrol/display/general.cpp:83)

void KThemeListBox::readThemeDir(const QString &directory)
{
    QString name, desc;

    kconfig->setGroup("KDE");
    QString defName = "Qt Platinum";
    QString curName = kconfig->readEntry("widgetStyleName", defName);

    QDir dir(directory, "*.themerc");
    if (!dir.exists())
	return;

    const QFileInfoList *list = dir.entryInfoList();
    QFileInfoListIterator it(*list);
    QFileInfo *fi;
    while ((fi = it.current())){
	KSimpleConfig config(fi->absFilePath(), true);
	config.setGroup("Misc");
	name = config.readEntry("Name", fi->baseName());
	desc = config.readEntry("Comment", i18n("No description available."));
	QListViewItem *item = new QListViewItem(this, name, desc, fi->absFilePath());
	if (name == curName) {
	    curItem = item;
	    setSelected(item, true);
	    ensureItemVisible(item);
	}
	if (name == defName)
	    defItem = item;
	++it;
    }
}



kcontrol'KThemeListBox::defaults() (./kdebase/kcontrol/display/general.cpp:116)

void KThemeListBox::defaults()
{
    setSelected(defItem, true);
}



kcontrol'KThemeListBox::load() (./kdebase/kcontrol/display/general.cpp:122)

void KThemeListBox::load()
{
    setSelected(curItem, true);
}



kcontrol'KThemeListBox::save() (./kdebase/kcontrol/display/general.cpp:128)

void KThemeListBox::save()
{
    if (currentItem()->text(0) == curName)
        return;

    KThemeBase::applyConfigFile(currentItem()->text(2));
    curItem = currentItem();
    curName = curItem->text(0);
}


/**** KGeneral ****/