summaryrefslogtreecommitdiffstats
path: root/ksirc/puke/playout.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ksirc/puke/playout.cpp')
-rw-r--r--ksirc/puke/playout.cpp157
1 files changed, 157 insertions, 0 deletions
diff --git a/ksirc/puke/playout.cpp b/ksirc/puke/playout.cpp
new file mode 100644
index 00000000..9690f418
--- /dev/null
+++ b/ksirc/puke/playout.cpp
@@ -0,0 +1,157 @@
+#include <stdio.h>
+
+
+#include "playout.h"
+#include "commands.h"
+
+PLayout::PLayout(QObject *pobject)
+ : PObject(pobject)
+{
+ // Connect slots as needed
+ setWidget();
+}
+
+PLayout::~PLayout()
+{
+ // kdDebug(5008) << "PObject: in destructor" << endl;
+ /*
+ delete widget();
+ layout = 0;
+ setWidget();
+ */
+}
+
+PObject *PLayout::createWidget(CreateArgs &ca)
+{
+ PLayout *pw = new PLayout(ca.parent);
+ QBoxLayout *qbl;
+ int direction, border, iType, iParent;
+ // Retreive the border and direction information out of the
+ // carg string
+ if(sscanf(ca.pm->cArg, "%d\t%d\t%d\t%d", &iParent, &iType, &direction, &border) < 4)
+ throw(errorCommandFailed(-ca.pm->iCommand, -1));
+
+ if((ca.parent != 0) &&
+ (ca.parent->widget()->isWidgetType() == TRUE)){
+ qbl = new QBoxLayout((QWidget *) ca.parent->widget(), (QBoxLayout::Direction) direction, border);
+ // kdDebug(5008) << "Creating layout with parent: " << parent.iWinId << endl;
+
+ }
+ else{
+ qbl = new QBoxLayout((QBoxLayout::Direction) direction, border);
+ // kdDebug(5008) << "Creating layout NO PARENT" << endl;
+ }
+ pw->setWidget(qbl);
+ pw->setWidgetId(ca.pwI);
+ pw->setPukeController(ca.pc);
+ return pw;
+}
+
+void PLayout::messageHandler(int fd, PukeMessage *pm)
+{
+ PukeMessage pmRet;
+
+// kdDebug(5008) << "In PLayout: " << pm->iCommand << endl;
+
+ if(pm->iCommand == PUKE_LAYOUT_ADDWIDGET){
+ if(pm->iTextSize != 2*sizeof(char)){
+ qWarning("PLayout/addwidget: incorrent cArg size, bailing out. Needed: %u wanted: %d\n", sizeof(int), pm->iTextSize);
+ pmRet.iCommand = PUKE_LAYOUT_ADDWIDGET_ACK; // ack the add widget
+ pmRet.iWinId = pm->iWinId;
+ pmRet.iArg = 1;
+ pmRet.cArg = 0;
+ emit outputMessage(fd, &pmRet);
+ return;
+ }
+ widgetId wiWidget;
+ wiWidget.fd = fd;
+ wiWidget.iWinId = pm->iArg;
+ PWidget *pw = controller()->id2pwidget(&wiWidget);
+ // kdDebug(5008) << "Adding widget with stretch: " << (int) pm->cArg[0] << " and align: " << // (int) pm->cArg[1] << endl;
+ widget()->addWidget(pw->widget(), pm->cArg[0], pm->cArg[1]);
+
+ pmRet.iCommand = PUKE_LAYOUT_ADDWIDGET_ACK; // ack the add widget
+ pmRet.iWinId = pm->iWinId;
+ pmRet.iArg = 0;
+ pmRet.cArg = 0;
+ emit outputMessage(fd, &pmRet);
+ }
+ else if(pm->iCommand == PUKE_LAYOUT_ADDLAYOUT){
+ if(pm->iTextSize != sizeof(char)){
+ qWarning("PLayout: incorrent cArg size, bailing out. Needed: %u wanted: %d\n", sizeof(int), pm->iTextSize);
+ pmRet.iCommand = PUKE_LAYOUT_ADDLAYOUT_ACK; // ack the add widget
+ pmRet.iWinId = pm->iWinId;
+ pmRet.iArg = 1;
+ pmRet.cArg = 0;
+ emit outputMessage(fd, &pmRet);
+ return;
+ }
+ PObject *pld = controller()->id2pobject(fd, pm->iWinId);
+ PObject *pls = controller()->id2pobject(fd, pm->iArg);
+ if( (pld->widget()->inherits("QBoxLayout") == FALSE) || (pls->widget()->inherits("QBoxLayout") == FALSE))
+ throw(errorCommandFailed(PUKE_LAYOUT_ADDLAYOUT_ACK, 1));
+ PLayout *plbd = (PLayout *) pld;
+ PLayout *plbs = (PLayout *) pls;
+ plbd->widget()->addLayout(plbs->widget(), pm->cArg[0]);
+
+ pmRet.iCommand = PUKE_LAYOUT_ADDLAYOUT_ACK; // ack the add widget
+ pmRet.iWinId = pm->iWinId;
+ pmRet.iArg = 0;
+ pmRet.cArg = 0;
+ emit outputMessage(fd, &pmRet);
+ }
+ else if(pm->iCommand == PUKE_LAYOUT_ADDSTRUT){
+ PObject *po = controller()->id2pobject(fd, pm->iWinId);
+ if(po->widget()->inherits("PBoxLayout") != TRUE)
+ throw(errorCommandFailed(PUKE_LAYOUT_ADDSTRUT_ACK, 1));
+ PLayout *pl = (PLayout *) po;
+
+ pl->widget()->addStrut(pm->iArg);
+
+ pmRet.iCommand = PUKE_LAYOUT_ADDSTRUT_ACK; // ack the add widget
+ pmRet.iWinId = pm->iWinId;
+ pmRet.cArg = 0;
+ emit outputMessage(fd, &pmRet);
+ }
+ else if(pm->iCommand == PUKE_LAYOUT_ACTIVATE){
+ PObject *po = controller()->id2pobject(fd, pm->iWinId);
+ if(po->widget()->inherits("PBoxLayout") != TRUE)
+ throw(errorCommandFailed(PUKE_LAYOUT_ACTIVATE_ACK, 1));
+ PLayout *pl = (PLayout *) po;
+
+ pmRet.iArg = 0; // setup failure case
+ pl->widget()->activate();
+
+ pmRet.iCommand = PUKE_LAYOUT_ACTIVATE_ACK; // ack the add widget
+ pmRet.iWinId = pm->iWinId;
+ pmRet.cArg = 0;
+ emit outputMessage(fd, &pmRet);
+ }
+ else {
+ PObject::messageHandler(fd, pm);
+ }
+
+}
+
+void PLayout::setWidget(QObject *_layout)
+{
+ // kdDebug(5008) << "PObject setwidget called" << endl;
+ if(_layout != 0 && _layout->inherits("QBoxLayout") == FALSE)
+ {
+ errorInvalidSet(_layout);
+ return;
+ }
+
+ layout = (QBoxLayout *) _layout;
+ PObject::setWidget(_layout);
+
+}
+
+QBoxLayout *PLayout::widget()
+{
+ return layout;
+}
+
+
+#include "playout.moc"
+