author | sandman <sandman> | 2002-08-06 00:55:56 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-08-06 00:55:56 (UTC) |
commit | b980135ff5ce5447ca41411b6ace74ce2803fadb (patch) (side-by-side diff) | |
tree | c02cdd16e1435855bff16e2c2707f5d5484d43f4 /noncore/unsupported/mail2/libmail/imapbase.cpp | |
parent | d96244956f42782f987acc2b5efb32dc1f1dd70a (diff) | |
download | opie-b980135ff5ce5447ca41411b6ace74ce2803fadb.zip opie-b980135ff5ce5447ca41411b6ace74ce2803fadb.tar.gz opie-b980135ff5ce5447ca41411b6ace74ce2803fadb.tar.bz2 |
mail2 should display (most) mails now with these workarounds. imap handling
is still buggy by design though.
Diffstat (limited to 'noncore/unsupported/mail2/libmail/imapbase.cpp') (more/less context) (show 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 @@ -52,12 +52,16 @@ void IMAPBase::writeCommands() QStringList::Iterator it; for (it = _commandQueue.begin(); it != _commandQueue.end(); it++) { if (!(*it).isEmpty() && _writingAllowed) { #ifndef QT_NO_DEBUG - qDebug("IMAP > " + (*it).stripWhiteSpace()); + qDebug("IMAP > " + (*it).stripWhiteSpace().local8Bit ()); #endif _socket->writeBlock((*it).latin1(), (*it).length()); _writingAllowed = false; + if (( *it ). find ( QRegExp ( "^[a-z][0-9]+ " )) == 0 ) + _lasttag = (*it).left(2); + + connect(_socket, SIGNAL(readyRead()), SLOT(slotDataAvailiable())); _commandQueue.remove(it); break; } } @@ -92,19 +96,37 @@ void IMAPBase::slotDisconnected() _connected = false; emit disconnected(); } +#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); } } } +void IMAPBase::tryRead ( QString &data ) +{ + qDebug ( "Trying to read...\n" ); + + while ( _socket-> canReadLine ( )) + data += _socket-> readLine ( ); +} |