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

Class Index

kwin'PluginMenu (./kdebase/kwin/plugins.h:34)

class PluginMenu : public QPopupMenu
{
    Q_OBJECT
public:
    PluginMenu(PluginMgr *manager, QWidget *parent=0, const char *name=0);
protected slots:
    void slotAboutToShow();
    void slotActivated(int id);
protected:
    void parseDesktop(QFileInfo *fi);
    QStringList fileList;
    int idCount;
    PluginMgr *mgr;
};


kwin'PluginMenu::PluginMenu() (./kdebase/kwin/plugins.cpp:18)

PluginMenu::PluginMenu(PluginMgr *manager, QWidget *parent, const char *name)
    : QPopupMenu(parent, name)
{
    connect(this, SIGNAL(aboutToShow()), SLOT(slotAboutToShow()));
    connect(this, SIGNAL(activated(int)), SLOT(slotActivated(int)));
    mgr = manager;
}


kwin'PluginMenu::slotAboutToShow() (./kdebase/kwin/plugins.cpp:26)

void PluginMenu::slotAboutToShow()
{
    clear();
    fileList.clear();
    insertItem(i18n("Standard"), 0);
    idCount = 1;

    QDir dir;
    dir.setFilter(QDir::Files);
    const QFileInfoList *list;
    int count = KGlobal::dirs()->findDirs("data", "kwin").count();
    if(count){
        dir.setPath(KGlobal::dirs()->findDirs("data", "kwin")
                    [count > 1 ? 1 : 0]);
        if(dir.exists()){
            list =  dir.entryInfoList();
            if(list){
                QFileInfoListIterator it(*list);
                QFileInfo *fi;
                for(; (fi = it.current()) != NULL; ++it){
                    if(KDesktopFile::isDesktopFile(fi->absFilePath()))
                        parseDesktop(fi);
                }
            }
        }
        if(count > 1){
            dir.setPath(KGlobal::dirs()->findDirs("data", "kwin")[0]);
            if(dir.exists()){
                list = dir.entryInfoList();
                if(list){
                    QFileInfoListIterator it(*list);
                    QFileInfo *fi;
                    for(; (fi = it.current()) != NULL; ++it){
                        if(KDesktopFile::isDesktopFile(fi->absFilePath()))
                            parseDesktop(fi);
                    }
                }
            }
        }
    }
}


kwin'PluginMenu::parseDesktop() (./kdebase/kwin/plugins.cpp:68)

void PluginMenu::parseDesktop(QFileInfo *fi)
{
    QString tmpStr;
    KSimpleConfig config(fi->absFilePath(), true);
    config.setDesktopGroup();
    tmpStr = config.readEntry("X-KDE-Library", "");
    if(tmpStr.isEmpty()){
        warning("KWin: Invalid plugin: %s", fi->absFilePath().latin1());
        return;
    }
    fileList.append(tmpStr);
    tmpStr = config.readEntry("Name", "");
    if(tmpStr.isEmpty())
        tmpStr = fi->baseName();
    insertItem(tmpStr, idCount);
    ++idCount;
}


kwin'PluginMenu::slotActivated() (./kdebase/kwin/plugins.cpp:86)

void PluginMenu::slotActivated(int id)
{
    if(id == 0)
        mgr->loadPlugin(QString::null);
    else
        mgr->loadPlugin(fileList[id-1]);
}