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