diff options
Diffstat (limited to 'ksirc/puke/ppopmenu.cpp')
-rw-r--r-- | ksirc/puke/ppopmenu.cpp | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/ksirc/puke/ppopmenu.cpp b/ksirc/puke/ppopmenu.cpp new file mode 100644 index 00000000..4c07d800 --- /dev/null +++ b/ksirc/puke/ppopmenu.cpp @@ -0,0 +1,120 @@ +#include <kdebug.h> +#include <qcursor.h> + +#include "ppopmenu.h" + +PObject * +PPopupMenu::createWidget(CreateArgs &ca) +{ + PPopupMenu *pm = new PPopupMenu(ca.parent); + QPopupMenu *qpm; + if(ca.fetchedObj != 0 && ca.fetchedObj->inherits("QPopupMenu") == TRUE){ + qpm= (QPopupMenu *) ca.fetchedObj; + pm->setDeleteAble(FALSE); + } + else if(ca.parent != 0 && ca.parent->widget()->isWidgetType() == TRUE) + qpm = new QPopupMenu((QWidget *) ca.parent->widget()); + else + qpm = new QPopupMenu(); + pm->setWidget(qpm); + pm->setWidgetId(ca.pwI); + return pm; +} + + +PPopupMenu::PPopupMenu(PObject *parent) + : PFrame(parent) +{ + // kdDebug(5008) << "PLineEdit PLineEdit called" << endl; + menu = 0; + setWidget(menu); + pmd = new PMenuData(this); +} + +PPopupMenu::~PPopupMenu() +{ + // kdDebug(5008) << "PLineEdit: in destructor" << endl; +/* delete widget(); // Delete the frame + menu = 0; // Set it to 0 + setWidget(menu); // Now set all widget() calls to 0. +*/ + delete pmd; +} + +void PPopupMenu::messageHandler(int fd, PukeMessage *pm) +{ + PukeMessage pmRet; + switch(pm->iCommand){ + /* + case PUKE_LINED_SET_MAXLENGTH: + if(widget() == 0){ + kdDebug(5008) << "PLineEdit: No Widget set" << endl; + return; + } + widget()->setMaxLength(pm->iArg); + pmRet.iCommand = - pm->iCommand; + pmRet.iWinId = pm->iWinId; + pmRet.iArg = widget()->maxLength(); + emit outputMessage(fd, &pmRet); + break; + */ + case PUKE_POPUPMENU_POPUP_CURRENT: + if(widget() == 0){ + kdDebug(5008) << "PPopupMenu: No Widget set" << endl; + return; + } + + widget()->popup(QCursor::pos(), 0); + + pmRet.iCommand = - pm->iCommand; + pmRet.iWinId = pm->iWinId; + pmRet.iArg = 1; + pmRet.cArg = 0; + emit outputMessage(fd, &pmRet); + break; + + default: + if(pmd->menuMessageHandler(fd, pm) == FALSE) // Call pmd's even filter + PFrame::messageHandler(fd, pm); + } +} + +void PPopupMenu::setWidget(QObject *_menu) +{ + if(_menu != 0 && _menu->inherits("QPopupMenu") == FALSE) + { + errorInvalidSet(_menu); + return; + } + + menu = (QPopupMenu *) _menu; + if(menu != 0x0){ + connect(menu, SIGNAL(activated(int)), + this, SLOT(got_activated(int))); + } + PFrame::setWidget(menu); +} + + +QPopupMenu *PPopupMenu::widget() +{ + return menu; +} + +void PPopupMenu::got_activated(int itemId){ + qWarning("Item got activated: %d", itemId); + + widgetId wI; + PukeMessage pmRet; + + wI = widgetIden(); + pmRet.iCommand = PUKE_POPUPMENU_ACTIVATED_ACK; + pmRet.iWinId = wI.iWinId; + pmRet.iArg = itemId; + pmRet.cArg = 0; + emit outputMessage(wI.fd, &pmRet); + +} + +#include "ppopmenu.moc" + |