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

Class Index

kcontrol'KBackgroundPattern (./kdebase/kcontrol/display/bgsettings.h:31)

class KBackgroundPattern
{
public:
    KBackgroundPattern(QString name=QString::null);
    ~KBackgroundPattern();

    QString name() const { return m_Name; }
    void load(QString name);

    void setComment(QString comment);
    QString comment() const {return m_Comment; }

    void setPattern(QString file);
    QString pattern() const { return m_Pattern; }

    void readSettings();
    void writeSettings();

    bool isAvailable();
    bool isGlobal() { return m_bReadOnly; }
    bool remove();

    int hash();

    static QStringList list();

private:
    void init(bool force_rw=false);
    QString fingerprint();

    bool dirty, hashdirty;
    bool m_bReadOnly;
    int m_Hash;
    QString m_Name, m_Comment;
    QString m_Pattern, m_File;
    KStandardDirs *m_pDirs;
    KSimpleConfig *m_pConfig;
};


/**
 * A class to manipulate/read/write/list KDE desktop programs (a la xearth).
 *
 * A program is described by a string like:
 *
 *   a_program -xres %x -yres %y -outfile %f
 *
 * Possible escape sequences:
 *
 *   %x    Horizontal resolution in pixels.
 *   %y    Vertical resulution in pixels.
 *   %f    Filename to dump to.
 *
 * An entry for each program is stored as a .desktop file in
 * $(datadir)/kdesktop/programs.
 */

kcontrol'KBackgroundPattern::KBackgroundPattern() (./kdebase/kcontrol/display/bgsettings.cc:57)

KBackgroundPattern::KBackgroundPattern(QString name)
{
    dirty = false;
    hashdirty = true;

    m_pDirs = KGlobal::dirs();
    m_pDirs->addResourceType("dtop_pattern", m_pDirs->kde_default("data") +
                             "kdesktop/patterns");
    m_pConfig = 0L;
    
    m_Name = name;
    if (m_Name.isEmpty())
        return;
    
    init();
    readSettings();
}



kcontrol'KBackgroundPattern::~KBackgroundPattern() (./kdebase/kcontrol/display/bgsettings.cc:76)

KBackgroundPattern::~KBackgroundPattern()
{
    delete m_pConfig;
}



kcontrol'KBackgroundPattern::load() (./kdebase/kcontrol/display/bgsettings.cc:82)

void KBackgroundPattern::load(QString name)
{
    m_Name = name;
    init();
    readSettings();
}



kcontrol'KBackgroundPattern::init() (./kdebase/kcontrol/display/bgsettings.cc:90)

void KBackgroundPattern::init(bool force_rw)
{
    delete m_pConfig;
    
    m_File = m_pDirs->findResource("dtop_pattern", m_Name + ".desktop");
    if (force_rw || m_File.isEmpty()) {
        m_File = m_pDirs->saveLocation("dtop_pattern") + m_Name + ".desktop";
        m_pConfig = new KSimpleConfig(m_File);
    } else
        m_pConfig = new KSimpleConfig(m_File);
    
    m_pConfig->setGroup("KDE Desktop Pattern");
    
    QFileInfo fi(m_File);
    m_bReadOnly = !fi.isWritable();
}



kcontrol'KBackgroundPattern::setComment() (./kdebase/kcontrol/display/bgsettings.cc:108)

void KBackgroundPattern::setComment(QString comment)
{
    if (m_Comment == comment)
        return;
    dirty = true;
    m_Comment = comment;
}



kcontrol'KBackgroundPattern::setPattern() (./kdebase/kcontrol/display/bgsettings.cc:117)

void KBackgroundPattern::setPattern(QString pattern)
{
    if (m_Pattern == pattern)
        return;
    dirty = hashdirty = true;
    m_Pattern = pattern;
}



kcontrol'KBackgroundPattern::readSettings() (./kdebase/kcontrol/display/bgsettings.cc:126)

void KBackgroundPattern::readSettings()
{
    dirty = false;
    hashdirty = true;
    
    m_Pattern = m_pConfig->readEntry("File");
    m_Comment = m_pConfig->readEntry("Comment");
}



kcontrol'KBackgroundPattern::writeSettings() (./kdebase/kcontrol/display/bgsettings.cc:136)

void KBackgroundPattern::writeSettings()
{
    if (!dirty)
        return;
    if (m_bReadOnly)
        init(true);
    
    m_pConfig->writeEntry("File", m_Pattern);
    m_pConfig->writeEntry("Comment", m_Comment);
    m_pConfig->sync();
    dirty = false;
}



kcontrol'KBackgroundPattern::isAvailable() (./kdebase/kcontrol/display/bgsettings.cc:150)

bool KBackgroundPattern::isAvailable()
{
    QString file = m_Pattern;
    if (file.at(0) != '/')
        file = m_pDirs->findResource("dtop_pattern", file);
    QFileInfo fi(file);
    return (fi.exists());
}



kcontrol'KBackgroundPattern::remove() (./kdebase/kcontrol/display/bgsettings.cc:160)

bool KBackgroundPattern::remove()
{
    if (m_bReadOnly)
        return false;
    return !unlink(m_File.latin1());
}



kcontrol'KBackgroundPattern::fingerprint() (./kdebase/kcontrol/display/bgsettings.cc:168)

QString KBackgroundPattern::fingerprint()
{
    return m_File;
}



kcontrol'KBackgroundPattern::hash() (./kdebase/kcontrol/display/bgsettings.cc:174)

int KBackgroundPattern::hash()
{
    if (hashdirty) {
	m_Hash = QHash(fingerprint());
	hashdirty = false;
    }
    return m_Hash;
}


/* static */

kcontrol'KBackgroundPattern::list() (./kdebase/kcontrol/display/bgsettings.cc:185)

QStringList KBackgroundPattern::list()
{
    KStandardDirs *dirs = KGlobal::dirs();
    dirs->addResourceType("dtop_pattern", dirs->kde_default("data") +
                          "kdesktop/patterns");
    QStringList lst = dirs->findAllResources("dtop_pattern", "*.desktop",
                                             false, true);
    QStringList::Iterator it;
    for (it=lst.begin(); it!=lst.end(); it++) {
        // Strip path and suffix
        int pos = (*it).findRev('/');
        if (pos != -1)
            (*it) = (*it).mid(pos+1);
        pos = (*it).findRev('.');
        if (pos != -1)
            (*it) = (*it).left(pos);
    }
    return lst;
}


/**** KBackgroundProgram ****/