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

Class Index

kdesktop'KBackgroundDockWidget (./kdebase/kdesktop/bgmanager.h:34)

class KBackgroundDockWidget
    : public KDockWindow
{
    Q_OBJECT

public:
    KBackgroundDockWidget();

    void setCommon(bool);
    void setExport(bool);

protected:
    virtual void dropEvent(QDropEvent *e);
    virtual void mousePressEvent(QMouseEvent *e);
    virtual void dragEnterEvent(QDragEnterEvent *e);

public slots:
    void slotModeSelected(int);
    void slotBackgroundSettings();
    void slotAdvancedSettings();
    void slotCommon();
    void slotExport();
    void slotUndock();

signals:
    void changeWallpaper();
    void wallpaperDropped(QString wallpaper, int mode);
    void unDocked();
    void commonChanged(bool);
    void exportChanged(bool);

private:
    bool m_bExport, m_bCommon;
    int m_Export, m_Common;

    QString m_Wallpaper;
    KPopupMenu *m_pMainMenu, *m_pModeMenu;
};



/**
 * Internal struct for KBackgroundManager.
 */

kdesktop'KBackgroundDockWidget::KBackgroundDockWidget() (./kdebase/kdesktop/bgmanager.cc:53)

KBackgroundDockWidget::KBackgroundDockWidget()
{
    m_bCommon = m_bExport = false;

    m_pMainMenu = new KPopupMenu(this);
    m_pMainMenu->insertTitle(SmallIcon("background"), i18n("Desktop Background"));
    m_pMainMenu->insertItem(i18n("Background Settings"), this,
	    SLOT(slotBackgroundSettings()));
    m_pMainMenu->insertItem(i18n("Advanced Settings"), this,
	    SLOT(slotAdvancedSettings()));
    m_pMainMenu->insertSeparator();
    m_Common = m_pMainMenu->insertItem(i18n("Common Background"),
	    this, SLOT(slotCommon()));
    m_Export = m_pMainMenu->insertItem(i18n("Export Background"),
	    this, SLOT(slotExport()));
    m_pMainMenu->insertSeparator();
    m_pMainMenu->insertItem(i18n("Undock"), this, SLOT(slotUndock()));

    m_pModeMenu = new KPopupMenu(this);
    m_pModeMenu->insertTitle(SmallIcon("background"), i18n("Arrangement"));
    m_pModeMenu->insertItem(i18n("Centred"), KBackgroundSettings::Centred);
    m_pModeMenu->insertItem(i18n("Tiled"), KBackgroundSettings::Tiled);
    m_pModeMenu->insertItem(i18n("CenterTiled"), KBackgroundSettings::CenterTiled);
    m_pModeMenu->insertItem(i18n("Maxpect"), KBackgroundSettings::CentredMaxpect);
    m_pModeMenu->insertItem(i18n("Scaled"), KBackgroundSettings::Scaled);
    connect(m_pModeMenu, SIGNAL(activated(int)), SLOT(slotModeSelected(int)));

    setPixmap(SmallIcon("background"));
    setAlignment(AlignCenter);
    setAcceptDrops(true);

    QToolTip::add(this, i18n("Desktop Background"));
    QWhatsThis::add(this, i18n(
	    "<qt><h2>Desktop background control</h2>\n"
	    "You can control some features of the desktop background with \n"
	    "this dock window. You can:\n"
	    "<ul><li>Left click on it. This will change the wallpaper if \n"
	    "you are using multi wallpaper mode.</li>\n"
	    "<li>Right click on it. This will give you a context menu where \n"
	    "you can set export, common and docking mode.</li>\n"
	    "<li>Drop an image onto it. This will set the image as the desktop \n"
	    "wallpaper.</li></ul></qt>"));
}


/*
 * Drag enter event: accept if it's an image.
 */

kdesktop'KBackgroundDockWidget::dragEnterEvent() (./kdebase/kdesktop/bgmanager.cc:101)

void KBackgroundDockWidget::dragEnterEvent(QDragEnterEvent *e)
{
    if (QUriDrag::canDecode(e))
	e->accept(rect());
    else
	e->ignore(rect());
}

/*
 * Handle a wallpaper dropped on the docking icon.
 */

kdesktop'KBackgroundDockWidget::dropEvent() (./kdebase/kdesktop/bgmanager.cc:112)

void KBackgroundDockWidget::dropEvent(QDropEvent *e)
{
    QStringList uris;

    if (QUriDrag::decodeLocalFiles(e, uris) && (uris.count() > 0)) {
        m_Wallpaper = *uris.begin();
        m_pModeMenu->popup(mapToGlobal(e->pos()));
        m_pModeMenu->exec();
    }
}



kdesktop'KBackgroundDockWidget::mousePressEvent() (./kdebase/kdesktop/bgmanager.cc:124)

void KBackgroundDockWidget::mousePressEvent(QMouseEvent *e)
{
    if (e->button() == LeftButton) {
	emit changeWallpaper();
        return;
    }
    if (e->button() == RightButton) {
        m_pMainMenu->popup(mapToGlobal(e->pos()));
        m_pMainMenu->exec();
    }
}



kdesktop'KBackgroundDockWidget::slotModeSelected() (./kdebase/kdesktop/bgmanager.cc:137)

void KBackgroundDockWidget::slotModeSelected(int m)
{
    emit wallpaperDropped(m_Wallpaper, m);
}



kdesktop'KBackgroundDockWidget::slotUndock() (./kdebase/kdesktop/bgmanager.cc:143)

void KBackgroundDockWidget::slotUndock()
{
    emit unDocked();
}



kdesktop'KBackgroundDockWidget::slotCommon() (./kdebase/kdesktop/bgmanager.cc:149)

void KBackgroundDockWidget::slotCommon()
{
    m_bCommon = !m_bCommon;
    m_pMainMenu->setItemChecked(m_Common, m_bCommon);
    emit commonChanged(m_bCommon);
}



kdesktop'KBackgroundDockWidget::slotExport() (./kdebase/kdesktop/bgmanager.cc:157)

void KBackgroundDockWidget::slotExport()
{
    m_bExport = !m_bExport;
    m_pMainMenu->setItemChecked(m_Export, m_bExport);
    emit exportChanged(m_bExport);
}



kdesktop'KBackgroundDockWidget::setCommon() (./kdebase/kdesktop/bgmanager.cc:165)

void KBackgroundDockWidget::setCommon(bool common)
{
    m_bCommon = common;
    m_pMainMenu->setItemChecked(m_Common, m_bCommon);
}



kdesktop'KBackgroundDockWidget::setExport() (./kdebase/kdesktop/bgmanager.cc:172)

void KBackgroundDockWidget::setExport(bool _export)
{
    m_bExport = _export;
    m_pMainMenu->setItemChecked(m_Export, m_bExport);
}



kdesktop'KBackgroundDockWidget::slotBackgroundSettings() (./kdebase/kdesktop/bgmanager.cc:179)

void KBackgroundDockWidget::slotBackgroundSettings()
{
    KShellProcess proc;
    proc << "kcmshell Desktop/background";
    proc.start(KShellProcess::DontCare);
}



kdesktop'KBackgroundDockWidget::slotAdvancedSettings() (./kdebase/kdesktop/bgmanager.cc:187)

void KBackgroundDockWidget::slotAdvancedSettings()
{
    KShellProcess proc;
    proc << "kcmshell Desktop/advanced";
    proc.start(KShellProcess::DontCare);
}


/**** KBackgroundManager ****/