summaryrefslogtreecommitdiffstats
path: root/ksirc/puke/pmenudta.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ksirc/puke/pmenudta.cpp')
-rw-r--r--ksirc/puke/pmenudta.cpp79
1 files changed, 79 insertions, 0 deletions
diff --git a/ksirc/puke/pmenudta.cpp b/ksirc/puke/pmenudta.cpp
new file mode 100644
index 00000000..30b375fc
--- /dev/null
+++ b/ksirc/puke/pmenudta.cpp
@@ -0,0 +1,79 @@
+#include "pmenudta.h"
+#include "pobject.h"
+#include <qpopupmenu.h>
+
+
+PMenuData::PMenuData(PObject *_child)
+: PObject()
+{
+ child = _child;
+ connect(this, SIGNAL(outputMessage(int, PukeMessage*)),
+ child, SIGNAL(outputMessage(int, PukeMessage*)));
+}
+
+PMenuData::~PMenuData()
+{
+ // We don't nuke anything since we're kind of abstract and we let the parent take care of it
+}
+
+void PMenuData::messageHandler(int , PukeMessage *)
+{
+ // We don't do anything since we should never ben involked directly
+}
+
+bool PMenuData::menuMessageHandler(int fd, PukeMessage *pm)
+{
+ PukeMessage pmRet;
+ int id = 0;
+ switch(pm->iCommand){
+ case PUKE_MENUDATA_INSERT_TEXT:
+ {
+ QPopupMenu *widget = (QPopupMenu *) child->widget();
+ id = widget->insertItem(pm->cArg);
+ if(pm->iArg > 0){
+ widget->setAccel(pm->iArg, id);
+ }
+
+ pmRet.iCommand = PUKE_MENUDATA_INSERT_TEXT_ACK;
+ pmRet.iWinId = pm->iWinId;
+ pmRet.iArg = id;
+ pmRet.cArg = 0;
+ emit outputMessage(fd, &pmRet);
+ break;
+ }
+ case PUKE_MENUDATA_INSERT_PIXMAP:
+ {
+ QPopupMenu *widget = (QPopupMenu *) child->widget();
+ id = widget->insertItem(QPixmap(pm->cArg));
+ if(pm->iArg > 0){
+ widget->setAccel(pm->iArg, id);
+ }
+
+ pmRet.iCommand = PUKE_MENUDATA_INSERT_PIXMAP_ACK;
+ pmRet.iWinId = pm->iWinId;
+ pmRet.iArg = id;
+ pmRet.cArg = 0;
+ emit outputMessage(fd, &pmRet);
+ break;
+ }
+ case PUKE_MENUDATA_REMOVE_ITEM:
+ {
+ QPopupMenu *widget = (QPopupMenu *) child->widget();
+ widget->removeItem(pm->iArg);
+
+ pmRet.iCommand = PUKE_MENUDATA_REMOVE_ITEM_ACK;
+ pmRet.iWinId = pm->iWinId;
+ pmRet.iArg = pm->iArg;
+ pmRet.cArg = 0;
+ emit outputMessage(fd, &pmRet);
+ break;
+ }
+
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+#include "pmenudta.moc"
+