diff options
Diffstat (limited to 'src/modules/dcc/DccCanvasWindow.cpp')
| -rw-r--r-- | src/modules/dcc/DccCanvasWindow.cpp | 291 |
1 files changed, 149 insertions, 142 deletions
diff --git a/src/modules/dcc/DccCanvasWindow.cpp b/src/modules/dcc/DccCanvasWindow.cpp index 4f1129303..7701c0ce1 100644 --- a/src/modules/dcc/DccCanvasWindow.cpp +++ b/src/modules/dcc/DccCanvasWindow.cpp @@ -28,153 +28,160 @@ #ifdef COMPILE_DCC_CANVAS - #include "DccDialog.h" - #include "DccMarshal.h" - #include "canvaswidget.h" +#include "DccDialog.h" +#include "DccMarshal.h" +#include "canvaswidget.h" - #define _KVI_DEBUG_CHECK_RANGE_ - #include "kvi_debug.h" - #include "KviOptions.h" - #include "KviInput.h" - #include "KviIrcView.h" - #include "KviIconManager.h" - #include "KviLocale.h" - #include "KviError.h" - #include "kvi_out.h" - #include "KviNetUtils.h" - #include "KviConsoleWindow.h" - #include "KviMainWindow.h" - #include "KviMemory.h" - #include "KviThread.h" - #include "KviIrcSocket.h" - #include "kvi_settings.h" - #include "KviIrcConnection.h" +#define _KVI_DEBUG_CHECK_RANGE_ +#include "kvi_debug.h" +#include "KviOptions.h" +#include "KviInput.h" +#include "KviIrcView.h" +#include "KviIconManager.h" +#include "KviLocale.h" +#include "KviError.h" +#include "kvi_out.h" +#include "KviNetUtils.h" +#include "KviConsoleWindow.h" +#include "KviMainWindow.h" +#include "KviMemory.h" +#include "KviThread.h" +#include "KviIrcSocket.h" +#include "kvi_settings.h" +#include "KviIrcConnection.h" - #include <QSplitter> +#include <QSplitter> - extern DccBroker * g_pDccBroker; +extern DccBroker * g_pDccBroker; +DccCanvasWindow::DccCanvasWindow(DccDescriptor * dcc, const char * name) + : DccWindow(KVI_WINDOW_TYPE_DCCCANVAS, name, dcc) +{ + m_pSplitter = new QSplitter(QSplitter::Vertical, this, "splitter"); - DccCanvasWindow::DccCanvasWindow(DccDescriptor * dcc,const char * name) - : DccWindow(KVI_WINDOW_TYPE_DCCCANVAS,name,dcc) - { - m_pSplitter = new QSplitter(QSplitter::Vertical,this,"splitter"); - - m_pCanvas = new DccCanvasWidget(m_pSplitter); + m_pCanvas = new DccCanvasWidget(m_pSplitter); - m_pIrcView = new KviIrcView(m_pSplitter,this); - m_pInput = new KviInput(this); + m_pIrcView = new KviIrcView(m_pSplitter, this); + m_pInput = new KviInput(this); // setFocusHandler(m_pInput,this); - m_pMarshal = new DccMarshal(this); - connect(m_pMarshal,SIGNAL(error(int)),this,SLOT(handleMarshalError(int))); - connect(m_pMarshal,SIGNAL(connected()),this,SLOT(connected())); - + m_pMarshal = new DccMarshal(this); + connect(m_pMarshal, SIGNAL(error(int)), this, SLOT(handleMarshalError(int))); + connect(m_pMarshal, SIGNAL(connected()), this, SLOT(connected())); - if(!(m_pDescriptor->bActive)) + if(!(m_pDescriptor->bActive)) + { + // PASSIVE CONNECTION + output(KVI_OUT_DCCMSG, __tr2qs_ctx("Attempting a passive DCC CANVAS connection", "dcc")); + int ret = m_pMarshal->dccListen(dcc->szListenIp, dcc->szListenPort, m_pDescriptor->bDoTimeout); + if(ret != KviError_success) + handleMarshalError(ret); + else { - // PASSIVE CONNECTION - output(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting a passive DCC CANVAS connection","dcc")); - int ret = m_pMarshal->dccListen(dcc->szListenIp,dcc->szListenPort,m_pDescriptor->bDoTimeout); - if(ret != KviError_success)handleMarshalError(ret); - else { - output(KVI_OUT_DCCMSG,__tr2qs_ctx("Listening on interface %Q port %Q","dcc"), - &(m_pMarshal->localIp()),&(m_pMarshal->localPort())); + output(KVI_OUT_DCCMSG, __tr2qs_ctx("Listening on interface %Q port %Q", "dcc"), + &(m_pMarshal->localIp()), &(m_pMarshal->localPort())); - if(dcc->bSendRequest) - { - QString ip = !dcc->szFakeIp.isEmpty() ? dcc->szFakeIp : dcc->szListenIp; - QString port = !dcc->szFakePort.isEmpty() ? dcc->szFakePort.toUtf8().data() : m_pMarshal->localPort(); - //#warning "OPTION FOR SENDING 127.0.0.1 and so on (not an unsigned number)" - struct in_addr a; - if(kvi_stringIpToBinaryIp(ip.toUtf8().data(),&a))ip.setNum(htonl(a.s_addr)); - dcc->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC CANVAS chat %Q %Q%c", - dcc->console()->connection()->encodeText( dcc->szNick.toUtf8().data() ).data(), - 0x01,&ip, - &port, - 0x01); - output(KVI_OUT_DCCMSG,__tr2qs_ctx("Sent DCC CANVAS request to %Q, waiting for the remote client to connect...","dcc"), - &(dcc->szNick)); - } else outputNoFmt(KVI_OUT_DCCMSG,__tr2qs_ctx("DCC CANVAS request not sent: awaiting manual connections","dcc")); + if(dcc->bSendRequest) + { + QString ip = !dcc->szFakeIp.isEmpty() ? dcc->szFakeIp : dcc->szListenIp; + QString port = !dcc->szFakePort.isEmpty() ? dcc->szFakePort.toUtf8().data() : m_pMarshal->localPort(); + //#warning "OPTION FOR SENDING 127.0.0.1 and so on (not an unsigned number)" + struct in_addr a; + if(kvi_stringIpToBinaryIp(ip.toUtf8().data(), &a)) + ip.setNum(htonl(a.s_addr)); + dcc->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC CANVAS chat %Q %Q%c", + dcc->console()->connection()->encodeText(dcc->szNick.toUtf8().data()).data(), + 0x01, &ip, + &port, + 0x01); + output(KVI_OUT_DCCMSG, __tr2qs_ctx("Sent DCC CANVAS request to %Q, waiting for the remote client to connect...", "dcc"), + &(dcc->szNick)); } - } else { - // ACTIVE CONNECTION - outputNoFmt(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting an active DCC CANVAS connection","dcc")); - int ret = m_pMarshal->dccConnect(dcc->szIp.toUtf8().data(),dcc->szPort.toUtf8().data(),m_pDescriptor->bDoTimeout); - if(ret != KviError_success)handleMarshalError(ret); - else output(KVI_OUT_DCCMSG,__tr2qs_ctx("Contacting host %Q on port %Q","dcc"),&(dcc->szIp),&(dcc->szPort)); + else + outputNoFmt(KVI_OUT_DCCMSG, __tr2qs_ctx("DCC CANVAS request not sent: awaiting manual connections", "dcc")); } + } + else + { + // ACTIVE CONNECTION + outputNoFmt(KVI_OUT_DCCMSG, __tr2qs_ctx("Attempting an active DCC CANVAS connection", "dcc")); + int ret = m_pMarshal->dccConnect(dcc->szIp.toUtf8().data(), dcc->szPort.toUtf8().data(), m_pDescriptor->bDoTimeout); + if(ret != KviError_success) + handleMarshalError(ret); + else + output(KVI_OUT_DCCMSG, __tr2qs_ctx("Contacting host %Q on port %Q", "dcc"), &(dcc->szIp), &(dcc->szPort)); + } // m_pSlaveThread = 0; - } +} - DccCanvasWindow::~DccCanvasWindow() - { - g_pDccBroker->unregisterDccWindow(this); +DccCanvasWindow::~DccCanvasWindow() +{ + g_pDccBroker->unregisterDccWindow(this); // if(m_pSlaveThread) // { // m_pSlaveThread->terminate(); // delete m_pSlaveThread; // m_pSlaveThread = 0; // } - KviThreadManager::killPendingEvents(this); + KviThreadManager::killPendingEvents(this); // delete m_pDescriptor; // delete m_pMarshal; - } +} - const QString & DccCanvasWindow::target() - { - // This may change on the fly... - m_szTarget.sprintf("%s@%s:%s", - m_pDescriptor->szNick.toUtf8().data(),m_pDescriptor->szIp.toUtf8().data(),m_pDescriptor->szPort.toUtf8().data()); - return m_szTarget; - } +const QString & DccCanvasWindow::target() +{ + // This may change on the fly... + m_szTarget.sprintf("%s@%s:%s", + m_pDescriptor->szNick.toUtf8().data(), m_pDescriptor->szIp.toUtf8().data(), m_pDescriptor->szPort.toUtf8().data()); + return m_szTarget; +} - void DccCanvasWindow::fillCaptionBuffers() - { - KviCString tmp(KviCString::Format,"DCC Canvas %s@%s:%s", - m_pDescriptor->szNick.toUtf8().data(),m_pDescriptor->szIp.toUtf8().data(),m_pDescriptor->szPort.toUtf8().data()); +void DccCanvasWindow::fillCaptionBuffers() +{ + KviCString tmp(KviCString::Format, "DCC Canvas %s@%s:%s", + m_pDescriptor->szNick.toUtf8().data(), m_pDescriptor->szIp.toUtf8().data(), m_pDescriptor->szPort.toUtf8().data()); - m_szPlainTextCaption = tmp; + m_szPlainTextCaption = tmp; - m_szHtmlActiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>", - KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name().ascii(),tmp.ptr()); - m_szHtmlInactiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>", - KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name().ascii(),tmp.ptr()); - } + m_szHtmlActiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>", + KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name().ascii(), tmp.ptr()); + m_szHtmlInactiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>", + KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name().ascii(), tmp.ptr()); +} - QPixmap * DccCanvasWindow::myIconPtr() - { - return g_pIconManager->getSmallIcon(KVI_SMALLICON_CANVAS); - } +QPixmap * DccCanvasWindow::myIconPtr() +{ + return g_pIconManager->getSmallIcon(KVI_SMALLICON_CANVAS); +} - void DccCanvasWindow::getBaseLogFileName(KviCString &buffer) - { - buffer.sprintf("%s_%s_%s",m_pDescriptor->szNick.toUtf8().data(),m_pDescriptor->szIp.toUtf8().data(),m_pDescriptor->szPort.toUtf8().data()); - } +void DccCanvasWindow::getBaseLogFileName(KviCString & buffer) +{ + buffer.sprintf("%s_%s_%s", m_pDescriptor->szNick.toUtf8().data(), m_pDescriptor->szIp.toUtf8().data(), m_pDescriptor->szPort.toUtf8().data()); +} - void DccCanvasWindow::ownMessage(const char * text, bool bUserFeedback) - { - KviCString buf(KviCString::Format,"%s\r\n",text); +void DccCanvasWindow::ownMessage(const char * text, bool bUserFeedback) +{ + KviCString buf(KviCString::Format, "%s\r\n", text); // m_pSlaveThread->sendRawData(buf.ptr(),buf.len()); - if(bUserFeedback) - m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG, - m_pDescriptor->szLocalNick.toUtf8().data(),m_pDescriptor->szLocalUser.toUtf8().data(), - m_pDescriptor->szLocalHost.toUtf8().data(),text); - } + if(bUserFeedback) + m_pFrm->firstConsole()->outputPrivmsg(this, KVI_OUT_OWNPRIVMSG, + m_pDescriptor->szLocalNick.toUtf8().data(), m_pDescriptor->szLocalUser.toUtf8().data(), + m_pDescriptor->szLocalHost.toUtf8().data(), text); +} - void DccCanvasWindow::ownAction(const char * text) - { - KviCString buf(KviCString::Format,"%cACTION %s%c\r\n",text); +void DccCanvasWindow::ownAction(const char * text) +{ + KviCString buf(KviCString::Format, "%cACTION %s%c\r\n", text); // m_pSlaveThread->sendRawData(buf.ptr(),buf.len()); - output(KVI_OUT_ACTION,"%Q %s",&(m_pDescriptor->szLocalNick),text); - } + output(KVI_OUT_ACTION, "%Q %s", &(m_pDescriptor->szLocalNick), text); +} - bool DccCanvasWindow::event(QEvent *e) - { +bool DccCanvasWindow::event(QEvent * e) +{ // if(e->type() == KVI_THREAD_EVENT) // { // switch(((KviThreadEvent *)e)->id()) @@ -253,47 +260,47 @@ // break; // } // } - return KviWindow::event(e); - } + return KviWindow::event(e); +} - void DccCanvasWindow::resizeEvent(QResizeEvent *e) - { - int hght = m_pInput->heightHint(); +void DccCanvasWindow::resizeEvent(QResizeEvent * e) +{ + int hght = m_pInput->heightHint(); // int hght2 = m_pTopSplitter->sizeHint().height(); // m_pTopSplitter->setGeometry(0,0,width(),hght2); - m_pSplitter->setGeometry(0,0,width(),height() - hght); - m_pInput->setGeometry(0,height() - hght,width(),hght); - } + m_pSplitter->setGeometry(0, 0, width(), height() - hght); + m_pInput->setGeometry(0, height() - hght, width(), hght); +} - QSize DccCanvasWindow::sizeHint() const - { - QSize ret(m_pIrcView->sizeHint().width(), - m_pIrcView->sizeHint().height() + m_pInput->heightHint()); - return ret; - } +QSize DccCanvasWindow::sizeHint() const +{ + QSize ret(m_pIrcView->sizeHint().width(), + m_pIrcView->sizeHint().height() + m_pInput->heightHint()); + return ret; +} - void DccCanvasWindow::handleMarshalError(int err) - { - QString sss = KviError::getDescription(err); - output(KVI_OUT_DCCERROR,__tr2qs_ctx("DCC failed: %Q","dcc"),&sss); - } +void DccCanvasWindow::handleMarshalError(int err) +{ + QString sss = KviError::getDescription(err); + output(KVI_OUT_DCCERROR, __tr2qs_ctx("DCC failed: %Q", "dcc"), &sss); +} - void DccCanvasWindow::connected() +void DccCanvasWindow::connected() +{ + output(KVI_OUT_DCCMSG, __tr2qs_ctx("Connected to %Q:%Q", "dcc"), + &(m_pMarshal->remoteIp()), &(m_pMarshal->remotePort())); + output(KVI_OUT_DCCMSG, __tr2qs_ctx("Local end is %Q:%Q", "dcc"), + &(m_pMarshal->localIp()), &(m_pMarshal->localPort())); + if(!(m_pDescriptor->bActive)) { - output(KVI_OUT_DCCMSG,__tr2qs_ctx("Connected to %Q:%Q","dcc"), - &(m_pMarshal->remoteIp()),&(m_pMarshal->remotePort())); - output(KVI_OUT_DCCMSG,__tr2qs_ctx("Local end is %Q:%Q","dcc"), - &(m_pMarshal->localIp()),&(m_pMarshal->localPort())); - if(!(m_pDescriptor->bActive)) - { - // PASSIVE CONNECTION...Find out the remote end - m_pDescriptor->szIp = m_pMarshal->remoteIp(); - m_pDescriptor->szPort = m_pMarshal->remotePort(); - m_pDescriptor->szHost = m_pMarshal->remoteIp(); - } - updateCaption(); + // PASSIVE CONNECTION...Find out the remote end + m_pDescriptor->szIp = m_pMarshal->remoteIp(); + m_pDescriptor->szPort = m_pMarshal->remotePort(); + m_pDescriptor->szHost = m_pMarshal->remoteIp(); + } + updateCaption(); // m_pSlaveThread = new KviDccCanvasThread(this,m_pMarshal->releaseSocket()); // m_pSlaveThread->start(); - } +} #endif |
