Source Code (Use browser search to find items of interest.)
Class Index
kicker'AppStartButton (./kdebase/kicker/internalapplets/taskbar/taskbar.h:15)
class AppStartButton : public QPushButton
{
Q_OBJECT
public:
AppStartButton(const QString &text, const QString &icon, const QString &altResName, int pid, QWidget * parent);
QSizePolicy sizePolicy() const;
QSize sizeHint() const;
QString resName() const;
signals:
void killMe(int);
protected slots:
void animTimerFired();
protected:
void timerEvent(QTimerEvent *);
void drawButton( QPainter *p );
void mousePressEvent( QMouseEvent *e );
private:
QPixmap pixmap;
QString appResName;
QList<QPixmap> anim;
int frame;
QTimer animTimer;
int pid_;
};
kicker'AppStartButton::AppStartButton() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:485)
AppStartButton::AppStartButton(
const QString & text,
const QString & /*icon*/,
const QString & resName,
int pid,
QWidget * parent
)
: QPushButton(text, parent), appResName(resName), frame(0), pid_(pid)
{
QString appName(text);
KService::Ptr service = KService::serviceByDesktopName(text);
if (0 != service) {
KDesktopFile desktopFile(service->desktopEntryPath(), true);
appName = desktopFile.readName();
setText(appName);
}
QToolTip::add(this, i18n("Starting %1").arg(appName));
anim.setAutoDelete(true);
for (int i = 1; i < 9; i++)
anim.append(new QPixmap(UserIcon(QString("disk") + QString::number(i))));
connect(&animTimer, SIGNAL(timeout()), this, SLOT(animTimerFired()));
animTimer.start(100);
// Go away after 20s if we weren't removed before.
startTimer(20000);
}
kicker'AppStartButton::timerEvent() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:521)
void AppStartButton::timerEvent(QTimerEvent *)
{
killTimers();
emit(killMe(pid_));
}
kicker'AppStartButton::animTimerFired() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:527)
void AppStartButton::animTimerFired()
{
QPainter p(this);
p.drawPixmap(4, 4, *anim.at(frame));
if (frame == 7)
frame = 0;
else
++frame;
}
kicker'AppStartButton::drawButton() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:539)
void AppStartButton::drawButton(QPainter *p)
{
kDrawNextButton(
p,
rect(),
colorGroup(),
false,
&colorGroup().brush(QColorGroup::Button)
);
const int pxWidth = 20;
QRect br(style().buttonRect(0, 0, width(), height()));
if (isOn() || isDown())
p->setPen(colorGroup().light());
else
p->setPen(colorGroup().buttonText());
int ellipsisWidth = fontMetrics().width("...");
if (!text().isNull()) {
QString s(text());
if (fontMetrics().width(s) > br.width() - pxWidth) {
while (
!s.isEmpty() &&
fontMetrics().width(s) > br.width() - pxWidth - ellipsisWidth
)
{
s.truncate( s.length() - 1 );
}
s.append("...");
}
p->drawText(
br.x() + pxWidth, 0,
width() - pxWidth, height(),
AlignLeft | AlignVCenter,
s
);
}
if (!text().isNull()) {
QString s(text());
if (fontMetrics().width(s) > br.width()) {
while(
!s.isEmpty() && fontMetrics().width(s) > br.width() - ellipsisWidth
)
{
s.truncate( s.length() - 1 );
}
s.append("...");
}
p->drawText(
br.x() + pxWidth, 0,
width() - pxWidth, height(),
AlignLeft | AlignVCenter,
s
);
}
}
kicker'AppStartButton::mousePressEvent() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:610)
void AppStartButton::mousePressEvent(QMouseEvent *)
{
//Don't call default handler ... we literally want to do nothing!
}
kicker'AppStartButton::sizePolicy() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:615)
QSizePolicy AppStartButton::sizePolicy() const
{
return(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred));
}
kicker'AppStartButton::sizeHint() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:620)
QSize AppStartButton::sizeHint() const
{
return(minimumSize());
}
kicker'AppStartButton::resName() (./kdebase/kicker/internalapplets/taskbar/taskbar.cpp:625)
QString AppStartButton::resName() const
{
return appResName;
}