summaryrefslogtreecommitdiff
path: root/noncore/net/opieirc/ircmessageparser.cpp
Unidiff
Diffstat (limited to 'noncore/net/opieirc/ircmessageparser.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/opieirc/ircmessageparser.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/noncore/net/opieirc/ircmessageparser.cpp b/noncore/net/opieirc/ircmessageparser.cpp
index ad9de2b..939cdae 100644
--- a/noncore/net/opieirc/ircmessageparser.cpp
+++ b/noncore/net/opieirc/ircmessageparser.cpp
@@ -1,10 +1,15 @@
1#include <qtextstream.h> 1#include <qtextstream.h>
2#include <qdatetime.h> 2#include <qdatetime.h>
3 3
4#include <opie2/ofiledialog.h>
5#include <opie2/ofileselector.h>
6#include <opie2/odebug.h>
7
4#include "ircmessageparser.h" 8#include "ircmessageparser.h"
5#include "ircversion.h" 9#include "ircversion.h"
6#include "ircchannelperson.h" 10#include "ircchannelperson.h"
7//#include "transferreceiver.h" 11#include "dcctransfertab.h"
12#include "ircservertab.h"
8 13
9/* Lookup table for literal commands */ 14/* Lookup table for literal commands */
10IRCLiteralMessageParserStruct IRCMessageParser::literalParserProcTable[] = { 15IRCLiteralMessageParserStruct IRCMessageParser::literalParserProcTable[] = {
@@ -461,12 +466,25 @@ void IRCMessageParser::parseCTCPAction(IRCMessage *message) {
461 466
462void IRCMessageParser::parseCTCPDCC(IRCMessage *message) { 467void IRCMessageParser::parseCTCPDCC(IRCMessage *message) {
463 QStringList params = QStringList::split(' ', message->param(0).stripWhiteSpace()); 468 QStringList params = QStringList::split(' ', message->param(0).stripWhiteSpace());
469
470 if(params[0] == "SEND") {
471 QString nickname = IRCPerson(message->prefix()).nick();
464 if( params.count() != 5) { 472 if( params.count() != 5) {
465 emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Malformed DCC request from ") + IRCPerson(message->prefix()).nick())); 473 emit outputReady(IRCOutput(OUTPUT_ERROR, tr("Malformed DCC request from %1").arg(nickname)));
466 return; 474 return;
467 } 475 }
476 bool accepted = DCCTransferTab::confirm(static_cast<QWidget*>(m_session->parent()), nickname, params[1], params[4].toUInt());
477 if(!accepted)
478 return;
479 QString filename = Opie::Ui::OFileDialog::getSaveFileName(Opie::Ui::OFileSelector::EXTENDED_ALL,
480 QString::null, params[1], MimeTypes(), 0, tr("Save As"));
481 if(filename.isEmpty())
482 return;
468 483
469 //TransferReceiver *foo = new TransferReceiver(params[2].toUInt(), params[3].toUInt(), params[1], params[4].toUInt()); 484 odebug << "Receiving file " << filename << " from " << nickname << oendl;
485 static_cast<IRCServerTab*>(m_session->parent())->mainwindow()->addDCC(DCCTransfer::Recv, params[2].toUInt(), params[3].toUInt(),
486 filename, nickname, params[4].toUInt());
487 }
470} 488}
471 489
472void IRCMessageParser::parseLiteralMode(IRCMessage *message) { 490void IRCMessageParser::parseLiteralMode(IRCMessage *message) {