Diffstat (limited to 'noncore/unsupported/mail2/libmail/imapbase.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/unsupported/mail2/libmail/imapbase.cpp | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/noncore/unsupported/mail2/libmail/imapbase.cpp b/noncore/unsupported/mail2/libmail/imapbase.cpp index 9a2ba47..4753f43 100644 --- a/noncore/unsupported/mail2/libmail/imapbase.cpp +++ b/noncore/unsupported/mail2/libmail/imapbase.cpp @@ -55,3 +55,3 @@ void IMAPBase::writeCommands() #ifndef QT_NO_DEBUG - qDebug("IMAP > " + (*it).stripWhiteSpace()); + qDebug("IMAP > " + (*it).stripWhiteSpace().local8Bit ()); #endif @@ -59,2 +59,6 @@ void IMAPBase::writeCommands() _writingAllowed = false; + if (( *it ). find ( QRegExp ( "^[a-z][0-9]+ " )) == 0 ) + _lasttag = (*it).left(2); + + connect(_socket, SIGNAL(readyRead()), SLOT(slotDataAvailiable())); _commandQueue.remove(it); @@ -95,13 +99,24 @@ void IMAPBase::slotDisconnected() +#include <unistd.h> + void IMAPBase::slotDataAvailiable() { + static bool firstline = true; + while (_socket->canReadLine()) { - _data += _socket->readLine(); - if (_socket->atEnd()) { -#ifndef QT_NO_DEBUG - qDebug("IMAP < " + _data.stripWhiteSpace()); -#endif + QString tmp = _socket-> readLine ( ); + + _data += tmp; + qDebug ( "New Line [%d]: '%s'\n", _connected ? 1 : 0, tmp.latin1( )); + + if ( firstline || tmp. left(2) == _lasttag ) { + firstline = false; + +// if ( _socket-> atEnd ( )) + qDebug ( "at end -> emitting\n" ); + + QObject::disconnect(_socket, SIGNAL(readyRead()), this, SLOT(slotDataAvailiable())); emit dataReceived(_data); + _data = QString::null; _writingAllowed = true; - _data = QString(0); } @@ -110 +125,8 @@ void IMAPBase::slotDataAvailiable() +void IMAPBase::tryRead ( QString &data ) +{ + qDebug ( "Trying to read...\n" ); + + while ( _socket-> canReadLine ( )) + data += _socket-> readLine ( ); +} |