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

Class Index

kicker'TaskButton (./kdebase/kicker/internalapplets/taskbar/taskbar.h:41)

class TaskButton: public QPushButton
{
    Q_OBJECT
public:
    TaskButton( WId w, QWidget * parent, const char *name = 0 );
    ~TaskButton();

    WId window() const { return win; }
    void setActiveButton();
    void refresh();
    bool onCurrentDesktop() const;
    QSizePolicy sizePolicy() const;
    QSize sizeHint() const;
    static void noActiveButton();

protected:
    enum WindowOperation {
        MaximizeOp = 100,
        IconifyOp,
        CloseOp
    };
    void drawButton(QPainter *p);
    void mousePressEvent( QMouseEvent *e );

private slots:
    void toggled();
    void clientPopupAboutToShow();
    void desktopPopupAboutToShow();

    void clientPopupActivated(int);
    void sendToDesktop(int);

private:
    static TaskButton* activeButton;
    WId win;
    QPixmap pixmap;
    int desktop;
    bool sticky;

    QPopupMenu *popup;
    QPopupMenu *desk_popup;
};


kicker'TaskButton::setActiveButton() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:227)

void TaskButton::setActiveButton()
{
    setOn( TRUE );
    if ( activeButton && activeButton != this )
	activeButton->setOn( FALSE );
    setOn( TRUE );
    activeButton = this;
}


kicker'TaskButton::noActiveButton() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:236)

void TaskButton::noActiveButton()
{
    if ( activeButton )
	activeButton->setOn( FALSE );
    activeButton = 0;
}


kicker'TaskButton::TaskButton() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:243)

TaskButton::TaskButton( WId w, QWidget * parent, const char *name )
    : QPushButton( parent, name )
{
    setToggleButton( TRUE );
    win = w;

    refresh();
    connect( this, SIGNAL( clicked() ), this, SLOT( toggled() ) );

    popup = 0;
    desk_popup = 0;
}


kicker'TaskButton::~TaskButton() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:256)

TaskButton::~TaskButton()
{
    if ( activeButton == this )
	activeButton = 0;
    delete popup; popup = 0;
}


kicker'TaskButton::onCurrentDesktop() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:263)

bool TaskButton::onCurrentDesktop() const
{
    return sticky || kwin_module->currentDesktop() == desktop;
}


kicker'TaskButton::refresh() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:268)

void TaskButton::refresh()
{
    pixmap = KWM::miniIcon( win, 16, 16 );
    if(pixmap.isNull())
        pixmap = SmallIcon("bx2");
    QString t = KWM::titleWithState( win );
    setText( t );
    QToolTip::add( this, t );
    desktop = KWM::desktop( win );
    sticky = KWM::isSticky( win );
}


kicker'TaskButton::drawButton() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:280)

void TaskButton::drawButton(QPainter *p)
{
    bool sunken = isOn() || isDown();
    kDrawNextButton(p, rect(), colorGroup(), sunken, sunken ?
                    &colorGroup().brush(QColorGroup::Mid) :
                    &colorGroup().brush(QColorGroup::Button));

    const int pxWidth = 20;
    QRect br( style().buttonRect( 0, 0, width(), height() ) );

    if ( !pixmap.isNull() ) {
        int dx = ( pxWidth - pixmap.width() ) / 2;
        int dy = ( height() - pixmap.height() ) / 2;
        if ( isDown() ) {
            dx++;
            dy++;
        }
        p->drawPixmap( br.x()+dx, dy, pixmap );
    }
    if(isOn() || isDown())
        p->setPen(colorGroup().light());
    else
        p->setPen(colorGroup().buttonText());

    if (!text().isNull()){
        QString s2 = text();
        if (fontMetrics().width(s2) > br.width()-pxWidth){
            while (s2.length()>0 &&
                   fontMetrics().width(s2) > br.width() - pxWidth
                   - fontMetrics().width("...")) {
                s2.truncate( s2.length() - 1 );
            }
            s2.append("...");
        }
        p->drawText(br.x()+ pxWidth, 0, width()-pxWidth, height(), AlignLeft|AlignVCenter, s2);
    }
}


kicker'TaskButton::toggled() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:318)

void TaskButton::toggled()
{
    if ( isOn() ) {
	setActiveButton();
	KWin::setActiveWindow( win );
    }
    else
	KWM::setIconify( win, TRUE );
}


kicker'TaskButton::clientPopupAboutToShow() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:328)

void TaskButton::clientPopupAboutToShow()
{
    if ( !popup )
        return;
    popup->setItemChecked( IconifyOp, KWM::isIconified( win ) );
    popup->setItemChecked( MaximizeOp, KWM::isMaximized( win ) );
}


kicker'TaskButton::desktopPopupAboutToShow() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:336)

void TaskButton::desktopPopupAboutToShow()
{
    if ( !desk_popup )
        return;
    desk_popup->clear();
    desk_popup->insertItem( i18n("&All desktops"), 0 );
    desk_popup->insertSeparator();
    if ( KWM::isSticky(win) )
        desk_popup->setItemChecked( 0, true );
    int id;
    for ( int i = 1; i <= KWin::numberOfDesktops(); i++ ) {
        id = desk_popup->insertItem( QString("&")+QString::number(i ), i );
        if ( !KWM::isSticky(win) && KWM::currentDesktop() == i )
            desk_popup->setItemChecked( id, TRUE );
    }
}


kicker'TaskButton::clientPopupActivated() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:353)

void TaskButton::clientPopupActivated( int id )
{
    switch ( id )
    {
    case MaximizeOp:
        KWM::setMaximize( win, !KWM::isMaximized( win ) );
        break;
    case IconifyOp:
        KWM::setIconify( win, !KWM::isIconified( win ) );
        break;
    case CloseOp:
        KWM::close( win );
        break;
    default:
        break;
    }
}


kicker'TaskButton::sendToDesktop() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:371)

void TaskButton::sendToDesktop( int desk )
{
    if ( desk == 0 )
    {
        KWM::setSticky( win, !KWM::isSticky( win ) );
        return;
    }

    if ( KWM::isSticky( win ) )
        KWM::setSticky( win, false );

    if ( desk == KWin::currentDesktop() )
        return;

    KWM::moveToDesktop( win, desk );
}


kicker'TaskButton::mousePressEvent() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:388)

void TaskButton::mousePressEvent(QMouseEvent *e)
{
    if ( e->button() == QMouseEvent::RightButton )
    {
        if (!popup)
        {
            popup = new QPopupMenu;
            popup->setCheckable( TRUE );
            connect( popup, SIGNAL( aboutToShow() ),
                    this,  SLOT( clientPopupAboutToShow() ) );
            connect( popup, SIGNAL( activated(int) ),
                    this,  SLOT( clientPopupActivated(int) ) );

            if (!desk_popup) desk_popup = new QPopupMenu( popup );
            desk_popup->setCheckable( TRUE );
            connect( desk_popup, SIGNAL( aboutToShow() ),
                    this,       SLOT( desktopPopupAboutToShow() ) );
            connect( desk_popup, SIGNAL( activated(int) ),
                    this,       SLOT( sendToDesktop(int) ) );

            popup->insertItem( i18n("Mi&nimize"), IconifyOp );
            popup->insertItem( i18n("Ma&ximize"), MaximizeOp );

            popup->insertSeparator();

            popup->insertItem(i18n("&To desktop"), desk_popup );

            popup->insertSeparator();

            popup->insertItem(i18n("&Close"), CloseOp);
        }
        popup->popup(e->globalPos());
        return;
    }
    QPushButton::mousePressEvent(e);
}


kicker'TaskButton::sizePolicy() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:425)

QSizePolicy TaskButton::sizePolicy() const
{
    return(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred));
}


kicker'TaskButton::sizeHint() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:430)

QSize TaskButton::sizeHint() const
{
    return(minimumSize());
}