summaryrefslogtreecommitdiffstats
path: root/ksirc/puke/pkfiledialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ksirc/puke/pkfiledialog.cpp')
-rw-r--r--ksirc/puke/pkfiledialog.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/ksirc/puke/pkfiledialog.cpp b/ksirc/puke/pkfiledialog.cpp
new file mode 100644
index 00000000..c99aea9f
--- /dev/null
+++ b/ksirc/puke/pkfiledialog.cpp
@@ -0,0 +1,123 @@
+#include <stdio.h>
+
+
+#include <kdebug.h>
+
+#include "pkfiledialog.h"
+#include "pkfiledialog-cmd.h"
+
+PObject *
+PKFileDialog::createWidget(CreateArgs &ca)
+{
+ PKFileDialog *pw = new PKFileDialog(ca.parent);
+ KFileDialog *kfbd;
+ if(ca.fetchedObj != 0 && ca.fetchedObj->inherits("KFileDialog") == TRUE){
+ kfbd = (KFileDialog *) ca.fetchedObj;
+ pw->setDeleteAble(FALSE);
+ }
+ else // Never takes a parent in Puke
+ kfbd = new KFileDialog("/", QString::null, 0L, "PukeKFileDialog", TRUE);
+ pw->setWidget(kfbd);
+ pw->setWidgetId(ca.pwI);
+ return pw;
+}
+
+
+PKFileDialog::PKFileDialog(PObject *parent)
+ : PWidget(parent)
+{
+ kfbd = 0;
+ setWidget(kfbd);
+}
+
+PKFileDialog::~PKFileDialog()
+{
+ // kdDebug(5008) << "PLineEdit: in destructor" << endl;
+ /*
+ delete widget(); // Delete the frame
+ kfbd=0; // Set it to 0
+ setWidget(kfbd); // Now set all widget() calls to 0.
+ */
+}
+
+void PKFileDialog::messageHandler(int fd, PukeMessage *pm)
+{
+ QString selFile;
+ PukeMessage pmRet;
+ if(widget() == 0){
+ kdDebug(5008) << "PKFileDialog: No Widget set" << endl;
+ return;
+ }
+ switch(pm->iCommand){
+ case PUKE_KBFD_SET_PATH:
+ ((KFileDialog*)widget())->setURL(KURL(pm->cArg));
+
+ pmRet.iCommand = - pm->iCommand;
+ pmRet.iWinId = pm->iWinId;
+ pmRet.iArg = 0;
+ pmRet.iTextSize = widget()->baseURL().path().length();
+#warning check if the cast is okay
+ pmRet.cArg = (char*) widget()->baseURL().path().ascii();
+ emit outputMessage(fd, &pmRet);
+ break;
+ case PUKE_KBFD_SET_FILTER:
+ widget()->setFilter(pm->cArg);
+
+ pmRet.iCommand = - pm->iCommand;
+ pmRet.iWinId = pm->iWinId;
+ pmRet.iArg = 0;
+ pmRet.iTextSize = 0;
+ pmRet.cArg = 0;
+ emit outputMessage(fd, &pmRet);
+ break;
+ case PUKE_KBFD_SET_SELECTION:
+ widget()->setSelection(pm->cArg);
+
+ pmRet.iCommand = - pm->iCommand;
+ pmRet.iWinId = pm->iWinId;
+ pmRet.iArg = 0;
+ selFile = widget()->selectedURL().path();
+ pmRet.iTextSize = selFile.length();
+#warning check if the cast is okay
+ pmRet.cArg = (char*) selFile.ascii();
+ emit outputMessage(fd, &pmRet);
+ break;
+ case PUKE_WIDGET_SHOW:
+ widget()->exec();
+ pmRet.iCommand = PUKE_KBFD_FILE_SELECTED_ACK;
+ pmRet.iWinId = pm->iWinId;
+ pmRet.iArg = 0;
+ pmRet.cArg = new char[selFile.length()];
+ selFile = widget()->selectedURL().path();
+ // #### HPB: using strlen() 'cause we want the length of the .ascii()
+ // string. We should probably replace in the future.
+ memcpy(pmRet.cArg, selFile.ascii(), strlen(selFile.ascii()));
+ pmRet.iTextSize = selFile.length();
+ emit outputMessage(widgetIden().fd, &pmRet);
+ delete pmRet.cArg;
+ break;
+
+ default:
+ PWidget::messageHandler(fd, pm);
+ }
+}
+
+void PKFileDialog::setWidget(QObject *_kbfd)
+{
+ if(_kbfd != 0 && _kbfd->inherits("KFileBaseDialog") == FALSE)
+ {
+ errorInvalidSet(_kbfd);
+ return;
+ }
+
+ kfbd = (KFileDialog *) _kbfd;
+ PWidget::setWidget(kfbd);
+}
+
+
+KFileDialog *PKFileDialog::widget()
+{
+ return kfbd;
+}
+
+#include "pkfiledialog.moc"