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());
}