diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | bcb704366cb5e333a626c18c308c7e0448a8e69f (patch) | |
tree | f0d6ab7d78ecdd9207cf46536376b44b91a1ca71 /ksirc/puke/plistbox.cpp | |
download | tdenetwork-bcb704366cb5e333a626c18c308c7e0448a8e69f.tar.gz tdenetwork-bcb704366cb5e333a626c18c308c7e0448a8e69f.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdenetwork@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'ksirc/puke/plistbox.cpp')
-rw-r--r-- | ksirc/puke/plistbox.cpp | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/ksirc/puke/plistbox.cpp b/ksirc/puke/plistbox.cpp new file mode 100644 index 00000000..482e08c7 --- /dev/null +++ b/ksirc/puke/plistbox.cpp @@ -0,0 +1,224 @@ +#include <kdebug.h> + + +#include "plistbox.h" + +PObject * +PListBox::createWidget(CreateArgs &ca) +{ + PListBox *plb = new PListBox(ca.parent); + QListBox *lb; + if(ca.fetchedObj != 0 && ca.fetchedObj->inherits("QListBox") == TRUE){ + lb = (QListBox *) ca.fetchedObj; + plb->setDeleteAble(FALSE); + } + else if(ca.parent != 0 && ca.parent->widget()->isWidgetType() == TRUE) + lb = new QListBox((QWidget *) ca.parent->widget()); + else + lb = new QListBox(); + plb->setWidget(lb); + plb->setWidgetId(ca.pwI); + return plb; +} + + +PListBox::PListBox(PObject *parent) + : PFrame(parent) +{ + // kdDebug(5008) << "PListBox PListBox called" << endl; + lb = 0; + setWidget(lb); +} + +PListBox::~PListBox() +{ + // kdDebug(5008) << "PListBox: in destructor" << endl; + /* + delete widget(); // Delete the frame + lb=0; // Set it to 0 + setWidget(lb); // Now set all widget() calls to 0. + */ +} + +void PListBox::messageHandler(int fd, PukeMessage *pm) +{ + PukeMessage pmRet; + switch(pm->iCommand){ + case PUKE_LISTBOX_INSERT: + if(!checkWidget()) + return; + + widget()->insertItem(pm->cArg, pm->iArg); + pmRet.iCommand = - pm->iCommand; + pmRet.iWinId = pm->iWinId; + pmRet.iArg = widget()->count(); + pmRet.cArg = 0; + emit outputMessage(fd, &pmRet); + break; + case PUKE_LISTBOX_INSERT_SORT: + if(!checkWidget()) + return; + + widget()->insertItem(pm->cArg); + widget()->sort(); + pmRet.iCommand = - pm->iCommand; + pmRet.iWinId = pm->iWinId; + pmRet.iArg = widget()->count(); + pmRet.cArg = 0; + emit outputMessage(fd, &pmRet); + break; + case PUKE_LISTBOX_INSERT_PIXMAP: + if(!checkWidget()) + return; + + widget()->insertItem(QPixmap(pm->cArg), pm->iArg); + pmRet.iCommand = - pm->iCommand; + pmRet.iWinId = pm->iWinId; + pmRet.iArg = widget()->count(); + pmRet.cArg = 0; + emit outputMessage(fd, &pmRet); + break; + case PUKE_LISTBOX_HIGHLIGHT: + if(!checkWidget()) + return; + + widget()->setCurrentItem(pm->iArg); + pmRet.iCommand = - pm->iCommand; + pmRet.iWinId = pm->iWinId; + pmRet.iArg = widget()->currentItem(); + pmRet.cArg = 0; + emit outputMessage(fd, &pmRet); + break; + case PUKE_LISTBOX_REMOVE: + if(!checkWidget()) + return; + + widget()->removeItem(pm->iArg); + + pmRet.iCommand = - pm->iCommand; + pmRet.iWinId = pm->iWinId; + pmRet.iArg = 0; + pmRet.cArg = 0; + emit outputMessage(fd, &pmRet); + break; + case PUKE_LISTBOX_GETTEXT: + if(!checkWidget()) + return; + + pmRet.iCommand = - pm->iCommand; + pmRet.iWinId = pm->iWinId; + if(widget()->text(pm->iArg) != 0x0){ + pmRet.iArg = 1; + pmRet.iTextSize = strlen(widget()->text(pm->iArg)); + pmRet.cArg = new char[strlen(widget()->text(pm->iArg))+1]; + strcpy(pmRet.cArg, widget()->text(pm->iArg)); + emit outputMessage(fd, &pmRet); + delete[] pmRet.cArg; + } + else{ + pmRet.iArg = 0; + pmRet.cArg = 0; + emit outputMessage(fd, &pmRet); + } + break; + case PUKE_LISTBOX_SET_SCROLLBAR: + widget()->setVScrollBarMode( (bool) pm->iArg ? QListBox::AlwaysOn : QListBox::AlwaysOff ); + pmRet.iCommand = PUKE_LISTBOX_SET_SCROLLBAR_ACK; + pmRet.iWinId = pm->iWinId; + pmRet.iArg = 0; + pmRet.cArg = 0; + emit outputMessage(fd, &pmRet); + break; + case PUKE_LISTBOX_SET_AUTO_SCROLLBAR: + widget()->setVScrollBarMode( (bool) pm->iArg ? QListBox::Auto : QListBox::AlwaysOff ); + pmRet.iCommand = PUKE_LISTBOX_SET_AUTO_SCROLLBAR_ACK; + pmRet.iWinId = pm->iWinId; + pmRet.iArg = 0; + pmRet.cArg = 0; + emit outputMessage(fd, &pmRet); + break; + case PUKE_LISTBOX_CLEAR: + widget()->clear(); + pmRet.iCommand = PUKE_LISTBOX_CLEAR_ACK; + pmRet.iWinId = pm->iWinId; + pmRet.iArg = 0; + pmRet.cArg = 0; + emit outputMessage(fd, &pmRet); + break; + default: + PFrame::messageHandler(fd, pm); + } +} + +void PListBox::setWidget(QObject *_lb) +{ + if(_lb != 0 && _lb->inherits("QListBox") == FALSE) + { + errorInvalidSet(_lb); + return; + } + + lb = (QListBox *) _lb; + if(lb != 0){ + connect(lb, SIGNAL(highlighted(int)), + this, SLOT(highlighted(int))); + connect(lb, SIGNAL(selected(int)), + this, SLOT(selected(int))); + } + PFrame::setWidget(lb); + +} + + +QListBox *PListBox::widget() +{ + return lb; +} + + +void PListBox::highlighted(int index) { + PukeMessage pmRet; + + kdDebug(5008) << "Got highlight" << endl; + pmRet.iCommand = PUKE_LISTBOX_HIGHLIGHTED_ACK; + pmRet.iWinId = widgetIden().iWinId; + pmRet.iArg = index; + if(widget()->text(index) != 0){ + pmRet.iTextSize = strlen(widget()->text(index)); + pmRet.cArg = new char[strlen(widget()->text(index)) + 1]; + strcpy(pmRet.cArg, widget()->text(index)); + } + else + pmRet.cArg = 0; + emit outputMessage(widgetIden().fd, &pmRet); + delete[] pmRet.cArg; +} + +void PListBox::selected(int index) { + PukeMessage pmRet; + + kdDebug(5008) << "Got selected" << endl; + pmRet.iCommand = PUKE_LISTBOX_SELECTED_ACK; + pmRet.iWinId = widgetIden().iWinId; + pmRet.iArg = index; + if(widget()->text(index) != 0){ + pmRet.iTextSize = strlen(widget()->text(index)); + pmRet.cArg = new char[strlen(widget()->text(index)) + 1]; + strcpy(pmRet.cArg, widget()->text(index)); + } + else + pmRet.cArg = 0; + emit outputMessage(widgetIden().fd, &pmRet); + delete[] pmRet.cArg; +} + +bool PListBox::checkWidget(){ + if(widget() == 0){ + kdDebug(5008) << "PListBox: No Widget set" << endl; + return FALSE; + } + return TRUE; +} + +#include "plistbox.moc" + |