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

Class Index

ksirc'KGAccel (./kdenetwork/ksirc/kpopupmenu.h:35)

class KGAccel : public QObject
{
    Q_OBJECT
public:
    KGAccel(QObject * parent = 0, const char * name=0 );
    virtual ~KGAccel();

    virtual bool eventFilter(QObject *, QEvent *);
    virtual void insertAccel(int key, int id, KAPopupMenu *);
    virtual void removeAccel(int key);
    virtual void clearAccelForPopup(KAPopupMenu *);

signals:
    void updateAccel();

private:
    QIntDict<accelItem> *accelDict;
    
};


ksirc'KGAccel::KGAccel() (./kdenetwork/ksirc/kpopupmenu.cpp:14)

KGAccel::KGAccel(QObject * parent, const char * name ) /*fold00*/
    : QObject(parent, name)
{
    accelDict = new QIntDict<accelItem>;
    accelDict->setAutoDelete(TRUE);

    kapp->installEventFilter(this);
    
}


ksirc'KGAccel::~KGAccel() (./kdenetwork/ksirc/kpopupmenu.cpp:24)

KGAccel::~KGAccel()
{
  delete accelDict;
}


ksirc'KGAccel::eventFilter() (./kdenetwork/ksirc/kpopupmenu.cpp:29)

bool KGAccel::eventFilter(QObject *, QEvent *e) /*FOLD00*/
{
    if(e->type() == QEvent::KeyPress && KAPopupMenu::popVisible() == false){
    QKeyEvent *ke = (QKeyEvent *)(e);
    if(ke->state() & (ControlButton | AltButton)){
      emit updateAccel();
      
      int key = ke->key();
      if(ke->state() & ControlButton)
	key += CTRL;
      if(ke->state() & AltButton)
	key += ALT;

      debug("Got: %d xlate to %d, we know it as: %p", ke->key(), key, accelDict->find(key));

      accelItem *ai;
      if((ai = accelDict->find(key))){
	ai->menu()->activated(ai->id());
	ke->accept();
	return TRUE;
      }
    }
  }

  return FALSE;
}


ksirc'KGAccel::insertAccel() (./kdenetwork/ksirc/kpopupmenu.cpp:56)

void KGAccel::insertAccel(int key, int id, KAPopupMenu *kp) /*FOLD00*/
{

  removeAccel(key); // clear any old accelerators
  
  // Go Looking for the old accelerator and remove it if needed
  QIntDictIterator<accelItem> it(*accelDict);
  while(it.current()){
    if((it.current()->id() == id) && (it.current()->menu() == kp)){
      debug("Remove: %ld", it.currentKey());
      it.current()->menu()->clearAccel(id);
      accelDict->remove(it.currentKey()); // Moves it ahead one
    }
    else
      ++it;
  }

  accelItem *ai = new accelItem(id, kp);
  accelDict->insert(key, ai);
  
}


ksirc'KGAccel::removeAccel() (./kdenetwork/ksirc/kpopupmenu.cpp:78)

void KGAccel::removeAccel(int key) /*FOLD00*/
{
  if(accelDict->find(key)){
    accelDict->find(key)->menu()->clearAccel(accelDict->find(key)->id());
    accelDict->remove(key);
  }
}


ksirc'KGAccel::clearAccelForPopup() (./kdenetwork/ksirc/kpopupmenu.cpp:86)

void KGAccel::clearAccelForPopup(KAPopupMenu *kp)
{
    QIntDictIterator<accelItem> it(*accelDict);
    while(it.current()){
        if(it.current()->menu() == kp){
            debug("Remove: %ld", it.currentKey());
            accelDict->remove(it.currentKey()); // Moves it ahead one
        }
        else
            ++it;
    }

}