Changeset View
Changeset View
Standalone View
Standalone View
src/dcc/chat.cpp
Show All 34 Lines | |||||
35 | 35 | | |||
36 | namespace Konversation | 36 | namespace Konversation | ||
37 | { | 37 | { | ||
38 | namespace DCC | 38 | namespace DCC | ||
39 | { | 39 | { | ||
40 | Chat::Chat(QObject *parent) | 40 | Chat::Chat(QObject *parent) | ||
41 | : QObject(parent), | 41 | : QObject(parent), | ||
42 | m_selfOpened(true), | 42 | m_selfOpened(true), | ||
43 | m_dccSocket(0), | 43 | m_dccSocket(nullptr), | ||
44 | m_dccServer(0), | 44 | m_dccServer(nullptr), | ||
45 | m_chatStatus(Configuring), | 45 | m_chatStatus(Configuring), | ||
46 | m_chatExtension(Unknown) | 46 | m_chatExtension(Unknown) | ||
47 | { | 47 | { | ||
48 | qDebug(); | 48 | qDebug(); | ||
49 | // set default values | 49 | // set default values | ||
50 | m_reverse = Preferences::self()->dccPassiveSend(); | 50 | m_reverse = Preferences::self()->dccPassiveSend(); | ||
51 | 51 | | |||
52 | setEncoding(Konversation::IRCCharsets::self()->encodingForLocale()); | 52 | setEncoding(Konversation::IRCCharsets::self()->encodingForLocale()); | ||
53 | } | 53 | } | ||
54 | 54 | | |||
55 | Chat::~Chat() | 55 | Chat::~Chat() | ||
56 | { | 56 | { | ||
57 | close(); | 57 | close(); | ||
58 | } | 58 | } | ||
59 | 59 | | |||
60 | void Chat::close() | 60 | void Chat::close() | ||
61 | { | 61 | { | ||
62 | if (!m_dccSocket && !m_dccServer) | 62 | if (!m_dccSocket && !m_dccServer) | ||
63 | { | 63 | { | ||
64 | return; //already closed | 64 | return; //already closed | ||
65 | } | 65 | } | ||
66 | 66 | | |||
67 | emit aboutToClose(); | 67 | emit aboutToClose(); | ||
68 | 68 | | |||
69 | m_textStream.setDevice(0); | 69 | m_textStream.setDevice(nullptr); | ||
70 | 70 | | |||
71 | if (m_dccServer) | 71 | if (m_dccServer) | ||
72 | { | 72 | { | ||
73 | disconnect(m_dccServer, 0, 0, 0); | 73 | disconnect(m_dccServer, nullptr, nullptr, nullptr); | ||
74 | m_dccServer->close(); | 74 | m_dccServer->close(); | ||
75 | 75 | | |||
76 | if (Preferences::self()->dccUPnP()) | 76 | if (Preferences::self()->dccUPnP()) | ||
77 | { | 77 | { | ||
78 | UPnPRouter *router = Application::instance()->getDccTransferManager()->getUPnPRouter(); | 78 | UPnPRouter *router = Application::instance()->getDccTransferManager()->getUPnPRouter(); | ||
79 | if (router) | 79 | if (router) | ||
80 | { | 80 | { | ||
81 | router->undoForward(m_ownPort, QAbstractSocket::TcpSocket); | 81 | router->undoForward(m_ownPort, QAbstractSocket::TcpSocket); | ||
82 | } | 82 | } | ||
83 | } | 83 | } | ||
84 | m_dccServer = 0; | 84 | m_dccServer = nullptr; | ||
85 | } | 85 | } | ||
86 | 86 | | |||
87 | if (m_dccSocket) | 87 | if (m_dccSocket) | ||
88 | { | 88 | { | ||
89 | disconnect(m_dccSocket, 0, 0, 0); | 89 | disconnect(m_dccSocket, nullptr, nullptr, nullptr); | ||
90 | m_dccSocket->close(); | 90 | m_dccSocket->close(); | ||
91 | m_dccSocket = 0; | 91 | m_dccSocket = nullptr; | ||
92 | } | 92 | } | ||
93 | } | 93 | } | ||
94 | 94 | | |||
95 | void Chat::start() | 95 | void Chat::start() | ||
96 | { | 96 | { | ||
97 | Server *server = serverByConnectionId(); | 97 | Server *server = serverByConnectionId(); | ||
98 | if (!server) | 98 | if (!server) | ||
99 | { | 99 | { | ||
▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Line(s) | 142 | { | |||
143 | sendRequest(false, 0); | 143 | sendRequest(false, 0); | ||
144 | } | 144 | } | ||
145 | } | 145 | } | ||
146 | } | 146 | } | ||
147 | else | 147 | else | ||
148 | { | 148 | { | ||
149 | if (!Preferences::self()->dccChatAutoAccept()) | 149 | if (!Preferences::self()->dccChatAutoAccept()) | ||
150 | { | 150 | { | ||
151 | int ret = KMessageBox::questionYesNo(0, | 151 | int ret = KMessageBox::questionYesNo(nullptr, | ||
152 | i18nc("%1=partnerNick, %2=Servername, %3=dcc extension as chat or wboard", "%1 (on %2) offers to DCC %3 with you", m_partnerNick, server->getServerName(), localizedExtensionString()), | 152 | i18nc("%1=partnerNick, %2=Servername, %3=dcc extension as chat or wboard", "%1 (on %2) offers to DCC %3 with you", m_partnerNick, server->getServerName(), localizedExtensionString()), | ||
153 | i18nc("%1=dcc extension as Chat or Whiteboard, %2=partnerNick", "DCC %1 offer from %2", localizedExtensionString(), m_partnerNick), | 153 | i18nc("%1=dcc extension as Chat or Whiteboard, %2=partnerNick", "DCC %1 offer from %2", localizedExtensionString(), m_partnerNick), | ||
154 | KGuiItem(i18n("Accept")), | 154 | KGuiItem(i18n("Accept")), | ||
155 | KGuiItem(i18n("Reject")) | 155 | KGuiItem(i18n("Reject")) | ||
156 | ); | 156 | ); | ||
157 | 157 | | |||
158 | if (ret == KMessageBox::No) | 158 | if (ret == KMessageBox::No) | ||
159 | { | 159 | { | ||
▲ Show 20 Lines • Show All 253 Lines • ▼ Show 20 Line(s) | |||||
413 | 413 | | |||
414 | QString Chat::extensionString() const | 414 | QString Chat::extensionString() const | ||
415 | { | 415 | { | ||
416 | switch (extension()) | 416 | switch (extension()) | ||
417 | { | 417 | { | ||
418 | case Whiteboard: | 418 | case Whiteboard: | ||
419 | return "wboard"; | 419 | return "wboard"; | ||
420 | case SimpleChat: | 420 | case SimpleChat: | ||
421 | case Unknown: | ||||
apol: Why do you need this if you have a default? | |||||
Clang complains about this an you asked to deal with all warnings so here it is :) The rationale behind this is if you want to extend enum then it will fall through to default case which is probably not what you want. I can remove this if you want. Kanedias: Clang complains about this an you asked to deal with all warnings so here it is :)
The… | |||||
If there's no other cases, I'd suggest to drop the default. But then this is @hein's decision. apol: If there's no other cases, I'd suggest to drop the default. But then this is @hein's decision. | |||||
I'm OK-ish with exhaustive matching, maybe getting biased from Rust pattern matching ... hein: I'm OK-ish with exhaustive matching, maybe getting biased from Rust pattern matching ... | |||||
421 | default: | 422 | default: | ||
422 | return "chat"; | 423 | return "chat"; | ||
423 | } | 424 | } | ||
424 | } | 425 | } | ||
425 | 426 | | |||
426 | QString Chat::localizedExtensionString() const | 427 | QString Chat::localizedExtensionString() const | ||
427 | { | 428 | { | ||
428 | switch (extension()) | 429 | switch (extension()) | ||
429 | { | 430 | { | ||
430 | case Whiteboard: | 431 | case Whiteboard: | ||
431 | return i18nc("DCC extension", "Whiteboard"); | 432 | return i18nc("DCC extension", "Whiteboard"); | ||
432 | case SimpleChat: | 433 | case SimpleChat: | ||
434 | case Unknown: | ||||
apol: Why do you need this if you have a default? | |||||
Kanedias: Replied above | |||||
433 | default: | 435 | default: | ||
434 | return i18nc("DCC extension", "Chat"); | 436 | return i18nc("DCC extension", "Chat"); | ||
435 | } | 437 | } | ||
436 | } | 438 | } | ||
437 | 439 | | |||
438 | int Chat::connectionId() const | 440 | int Chat::connectionId() const | ||
439 | { | 441 | { | ||
440 | return m_connectionId; | 442 | return m_connectionId; | ||
▲ Show 20 Lines • Show All 47 Lines • ▼ Show 20 Line(s) | |||||
488 | void Chat::connectionFailed(QAbstractSocket::SocketError/* error*/) | 490 | void Chat::connectionFailed(QAbstractSocket::SocketError/* error*/) | ||
489 | { | 491 | { | ||
490 | setStatus(Chat::Failed, i18n("Socket error: %1", m_dccSocket->errorString())); | 492 | setStatus(Chat::Failed, i18n("Socket error: %1", m_dccSocket->errorString())); | ||
491 | close(); | 493 | close(); | ||
492 | } | 494 | } | ||
493 | 495 | | |||
494 | void Chat::readData() | 496 | void Chat::readData() | ||
495 | { | 497 | { | ||
496 | char *buffer = 0; | 498 | char *buffer = nullptr; | ||
497 | QString line; | 499 | QString line; | ||
498 | QTextCodec *codec = m_textStream.codec(); | 500 | QTextCodec *codec = m_textStream.codec(); | ||
499 | qint64 available = m_dccSocket->bytesAvailable(); | 501 | qint64 available = m_dccSocket->bytesAvailable(); | ||
500 | if (available < 0) | 502 | if (available < 0) | ||
501 | { | 503 | { | ||
502 | failed(m_dccSocket->errorString()); | 504 | failed(m_dccSocket->errorString()); | ||
503 | return; | 505 | return; | ||
504 | } | 506 | } | ||
▲ Show 20 Lines • Show All 49 Lines • ▼ Show 20 Line(s) | 554 | { | |||
554 | return; | 556 | return; | ||
555 | } | 557 | } | ||
556 | 558 | | |||
557 | connect(m_dccSocket, &QTcpSocket::readyRead, this, &Chat::readData); | 559 | connect(m_dccSocket, &QTcpSocket::readyRead, this, &Chat::readData); | ||
558 | connect(m_dccSocket, &QTcpSocket::disconnected, this, &Chat::socketClosed); | 560 | connect(m_dccSocket, &QTcpSocket::disconnected, this, &Chat::socketClosed); | ||
559 | connect(m_dccSocket, static_cast<void (QTcpSocket::*)(QAbstractSocket::SocketError)>(&QTcpSocket::error), this, &Chat::connectionFailed); | 561 | connect(m_dccSocket, static_cast<void (QTcpSocket::*)(QAbstractSocket::SocketError)>(&QTcpSocket::error), this, &Chat::connectionFailed); | ||
560 | 562 | | |||
561 | // the listen socket isn't needed anymore | 563 | // the listen socket isn't needed anymore | ||
562 | disconnect(m_dccServer, 0, 0, 0); | 564 | disconnect(m_dccServer, nullptr, nullptr, nullptr); | ||
563 | m_dccServer->close(); | 565 | m_dccServer->close(); | ||
564 | m_dccServer = 0; | 566 | m_dccServer = nullptr; | ||
565 | 567 | | |||
566 | if (Preferences::self()->dccUPnP()) | 568 | if (Preferences::self()->dccUPnP()) | ||
567 | { | 569 | { | ||
568 | UPnPRouter *router = Application::instance()->getDccTransferManager()->getUPnPRouter(); | 570 | UPnPRouter *router = Application::instance()->getDccTransferManager()->getUPnPRouter(); | ||
569 | if (router) | 571 | if (router) | ||
570 | { | 572 | { | ||
571 | router->undoForward(m_ownPort, QAbstractSocket::TcpSocket); | 573 | router->undoForward(m_ownPort, QAbstractSocket::TcpSocket); | ||
572 | } | 574 | } | ||
▲ Show 20 Lines • Show All 48 Lines • Show Last 20 Lines |
Why do you need this if you have a default?